Estimating σ from history
Eight-year window, daily log-returns, annualized.
lookback_days = 2018 (≈ 8 calendar years). Long enough for statistical stability (n ≈ 2,017 daily returns) and to span the calm of 2019, the COVID crash, the 2022 bear market, and the 2023–2026 rally. Shorter windows are dominated by the current regime; much longer windows contaminate the estimate with structural conditions no longer in force.
| Value | |
|---|---|
| Calendar days requested | 2,018 |
| Daily returns computed | 2,017 |
| Daily std. dev. of log-returns | 0.012257 |
| Annualized volatility σ | 0.1946 (19.46%) |
Annualized volatility
Taylor series for Φ
Build the series for eˣ, substitute, integrate term by term, then evaluate at d₁ and d₂.
Taylor series for eˣ at x = 0
Substitute x = −t²/2
Integrate term-by-term to get Φ(z)
Compute d₁, d₂, and evaluate Φ
Φ(d₁)
Φ(d₂)
Hand-computed call price
e^{-rT} via Taylor series
S₀ · Φ(d₁)
K · e^{-rT} · Φ(d₂)
Hand-computed call price
Python verification
scipy.stats.norm.cdf for Φ, full precision.
import numpy as np
from scipy.stats import norm
def black_scholes_call(S0, K, r, sigma, T):
d1 = (np.log(S0/K) + (r + sigma**2/2) * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
return S0 * norm.cdf(d1) - K * np.exp(-r*T) * norm.cdf(d2)
# Sanity check (expect ~10.45)
print(black_scholes_call(100, 100, 0.05, 0.20, 1)) # -> 10.4506
# Project parameters
S0, K, r, sigma, T = 7414, 7900, 0.036, 0.1946, 0.523
print(black_scholes_call(S0, K, r, sigma, T)) # -> 277.29 | Taylor (hand) | norm.cdf (Python) | Δ | |
|---|---|---|---|
| Φ(d₁) | 0.4026 | 0.4025 | 0.0001 |
| Φ(d₂) | 0.3493 | 0.3491 | 0.0002 |
| Hand | Python | |
|---|---|---|
| C | $276.7325 | $277.2896 |
| difference | $0.5571 |
Market gap — model vs $180.30
| Value | |
|---|---|
| Model C (hand) | $276.7325 |
| Market C | $180.30 |
| Gap (model − market) | +$96.4325 |
The market price sits $96.43 below the model — a discount of roughly 35%. Three factors plausibly account for the gap. First, was estimated from eight years of realized daily returns, which include the COVID crash and the 2022 bear market; the option market is forward-looking and is currently pricing closer to 13–14% implied vol for OTM SPX calls at this maturity. Second, the formula assumes the index pays no dividends, but SPX carries a ~1.3% effective dividend yield from its constituents; including dividends shaves several dollars off the model price. Third, the volatility skew/smile: out-of-the-money calls (the $7,900 strike is $486 above spot) trade at lower implied vols than at-the-money options, because hedging demand concentrates in puts and ATM calls.