North Carolina State University (group project) · Jan 2026 – May 2026
Volatility Surface Calibration — SVI, Local Vol & Heston (SPX)
An SPX volatility-surface pipeline: options cleaning, Black-Scholes implied vols via a hand-rolled Secant solver, put-call-parity forwards, an SVI surface calibrated with no-arbitrage penalties, Dupire local vol extracted from it, and a Heston model calibrated to the same surface for a like-for-like comparison.
View code on GitHub
SVIDupireHestonNo-ArbitrageSPX OptionsSciPy
The calibrated surface — SVI implied vol & Dupire local vol
SPX 2023-01 · real fitted surface
Smile fits: market vs. SVI vs. Heston
Market IV
SVI fit
Heston
ATM implied-vol term structure
ATM implied vol
Charts render the project's actual published result files, exported unmodified from the source repository.
Approach & findings
- Cleaned and filtered SPX end-of-day option chains, then computed Black-Scholes implied vols with a Secant-method root finder: 94.1% call / 94.4% put convergence across 5,024 options; per-expiry forwards and discount factors estimated from put-call parity.
- Calibrated a full SVI surface (SSVI seed, then per-slice refinement in total-variance space with Durrleman butterfly and calendar-spread penalties): overall RMSE of 2.38 vol points across 4,655 options and 46 expiries — 1.09 at the money — with 44/46 slices butterfly-arbitrage-free and worst calendar crossedness of 0.0028 in total variance.
- Extracted Dupire local volatility from the calibrated surface via Gatheral's local-variance formula (analytic SVI x-derivatives, finite differences in T): valid on 93.5% of a 37-expiry × 71-strike grid, with failures concentrated where the small calendar crossings make ∂w/∂T negative.
- Calibrated Heston by differential evolution on characteristic-function pricing (little-Heston-trap formulation, Gauss-Legendre integration): IV RMSE of 0.78 vol points vs SVI's 1.29 on the identical subsample (T ≥ 30d, |x| ≤ 0.25), with ρ = −0.99 capturing the SPX skew and the Feller condition satisfied.
- Every number above is computed by scripts in the repo from its committed result files; the interactive surface below renders the actual calibrated parameters.
Results
- SVI surface RMSE
- 2.38 vol pts
- Secant IV convergence
- 94%
- Heston IV RMSE (T≥30d)
- 0.78 vol pts
- Butterfly-arb-free slices
- 44/46