Source: https://guthlabs.ai/docs/instruments/black-scholes-option-price-educational/

instrument / verified-clean

# Black-Scholes Option Price (Educational)

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/black-scholes-option-price-educational/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/black-scholes-option-price-educational/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/black-scholes-option-price-educational/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/black-scholes-option-price-educational/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Finance, Economics & Business (educational only — never individualized investment, tax, or legal advice)

**Tranche**: tranche-6

**Evidence ID**: t6-081

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The call pricing formula is standard under Black-Scholes assumptions with q=0, but the instrument specification is incomplete for its stated type and greek outputs. It should not be marked production-ready until put pricing, all greek formulas, dividend treatment, input constraints, CDF accuracy, and unit conventions are explicitly implemented and tested. The educational/non-trading label is appropriate.

### Formula and scope findings

- The supplied price equation is only the European call formula, but the input includes an unspecified option type and the instrument claims to price both calls and puts. The European put formula is missing: P=K*e^(-r*t)*N(-d2)-S*N(-d1).

- No formulas are supplied for delta, gamma, theta, or vega, so the claimed greek outputs are not verifiable from the specification.

- The model omits continuous dividend yield q. For dividend-paying underlyings, the standard formulas use S*e^(-q*t), d1=(ln(S/K)+(r-q+sigma^2/2)*t)/(sigma*sqrt(t)), and corresponding q-adjusted greeks.

- The normal CDF approximation is unspecified, so numerical reproducibility and accuracy cannot be established.

- The formulas require sigma>0 and t>0. At expiry t=0, d1 and d2 are undefined and price should instead be intrinsic value with separately defined or explicitly unavailable greeks.

### Unit assumptions

- spot S and strike K are expressed in the same currency and price units.

- rate r is a continuously compounded annual risk-free rate expressed as a decimal, such as 0.05 for 5% per year.

- volatility sigma is annualized volatility expressed as a decimal, such as 0.20 for 20% per year.

- time to expiry t is in years; a six-month expiry must be entered as 0.5, not 6.

- The vectors assume no dividends, q=0.

- N(x) is the standard normal cumulative distribution function and phi(x) is its standard normal density.

## Boundary hardening

### Recorded hazards

- Division by zero or undefined logarithm behavior occurs when t<=0, sigma<=0, S<=0, or K<=0.

- If r, sigma, or t are entered in percentages, monthly units, or days without conversion, outputs are wrong; the interface should enforce or clearly display decimal annual units.

- The option type must be constrained to call or put, with an explicit formula for each.

- Theta sign and time convention must be stated; the supplied output name does not define whether theta is per year or per day.

- Vega scaling must be stated because some systems report per unit volatility while others report per 1 percentage point.

- The model assumes European exercise, no transaction costs, frictionless markets, constant volatility and interest rate, and no dividends unless q is added.

- At or near expiry, numerical CDF and greek calculations can be unstable; price should use an expiry boundary rule and greeks should be labeled undefined or given an explicit convention.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "spot": 100,
    "strike": 100,
    "rate": 0,
    "volatility": 0.2,
    "time_to_expiry_years": 1,
    "type": "call"
  },
  "expected_outputs": {
    "d1": 0.1,
    "d2": -0.1,
    "price": 7.965567,
    "delta": 0.539828,
    "gamma": 0.0198476,
    "theta_per_year": -3.96953,
    "vega_per_volatility_unit": 39.6953
  },
  "working": "sqrt(t)=sqrt(1)=1. sigma*sqrt(t)=0.2. d1=(ln(100/100)+(0+0.2^2/2)*1)/0.2=(0+0.02)/0.2=0.1. d2=0.1-0.2=-0.1. Using N(0.1)=0.539827837 and N(-0.1)=0.460172163: price=100*0.539827837-100*e^0*0.460172163=53.9827837-46.0172163=7.9655674. phi(0.1)=0.396952547. delta=N(d1)=0.539827837. gamma=phi(d1)/(S*sigma*sqrt(t))=0.396952547/(100*0.2*1)=0.0198476274. vega=S*phi(d1)*sqrt(t)=100*0.396952547*1=39.6952547. theta=-S*phi(d1)*sigma/(2*sqrt(t))-r*K*e^(-r*t)*N(d2)=-(100*0.396952547*0.2/2)-0=-3.96952547."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche6/tranche6-results.json`
