Page actions
instrument mechanism / verified-clean
Black-Scholes Option Price (Educational) mechanism
The inspectable method record for Black-Scholes Option Price (Educational), kept separate from implementation and qualification.
Status: VERIFIED_CLEANLifecycle: verified-clean
Model scope
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.
- 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.
Units and conventions
- 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.
Inspectable vector
One of 4 source-bound review vectors:
{
"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."
}Failure boundary
- 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.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche6/tranche6-results.json