Local volatility
An arbitrage-consistent diffusion fitted to today’s vanilla surface
01Derive Dupire local variance from the forward equation.
02Explain why call-price derivatives demand smoothing.
03Contrast exact static fit with forward smile dynamics.
04Design stable interpolation and boundary checks.
Build the state before the equation.
Local volatility replaces one constant σ with a deterministic function σloc(S,t). Given a smooth arbitrage-consistent vanilla surface, Dupire identifies a diffusion that matches all European marginal distributions in ideal theory.
Exact vanilla fit is a static statement.
Differentiation amplifies quote noise.
Forward smile dynamics can be less realistic than the initial fit.
The product exists before the model.
Local volatility is a baseline for barrier and path-dependent pricing and a building block for local-stochastic volatility models.
barriers
digitals
autocallables
local-stochastic-volatility hybrids
Surface inputs must share forward, discount, dividend, expiry and strike conventions. Local variance is annualized decimal variance.
Notation, units and exact claims.
σloc(S,t): local volatilityC(K,T): call surfaceD(0,T): discount factor∂KKC: density termLocal-vol diffusion
Volatility is deterministic conditional on current spot and time.
Dupire formula
The call surface determines local variance where derivatives and density are well behaved.
Density requirement
A small or negative denominator makes inversion unstable or invalid.
Do not jump to the final expression.
Inverting the forward equation
Match the Fokker–Planck evolution of the local-vol diffusion to strike derivatives of call prices.
- 01
Start with the diffusion
Specify risk-neutral drift and a state-time diffusion coefficient.
- 02
Write density evolution
The forward Kolmogorov equation evolves terminal density under the diffusion.
- 03
Connect density to calls
Use Breeden–Litzenberger to replace terminal density by the second strike derivative of call prices.
- 04
Differentiate through maturity
Differentiate the discounted payoff expectation in T and substitute the density evolution.
- 05
Isolate local variance
Rearrange the forward PDE to obtain Dupire’s numerator over the convexity denominator.
Dupire converts a full static surface into one diffusion, but the inversion is only as reliable as surface cleaning, smoothing and boundary treatment.
Fit, compute, then challenge the assumptions.
Build an arbitrage-controlled call-price surface, compute stable derivatives, floor diagnostics rather than values, and solve PDEs with consistent boundaries.
The model is implied from the vanilla surface rather than optimized to it; smoothing hyperparameters are the effective calibration choices.
Noise amplification in derivatives.
Unrealistic forward smile dynamics can mis-hedge exotics.
Boundary extrapolation materially changes local vol.
Static fit is not dynamics.
| Question | Black–Scholes | Local volatility | Heston |
|---|---|---|---|
| Volatility state | One constant σ | σ(S,t) deterministic | vₜ stochastic |
| Fits today’s surface | No | Exactly, in ideal theory | Approximately by calibration |
| Forward dynamics | Flat smile | Spot-driven | Variance + correlation driven |
| Primary strength | Transparent baseline | Vanilla-consistent diffusion | Richer smile dynamics |
| Primary failure | No smile | Often unrealistic forward skew | Parameter and calibration instability |
| Compute | Low | Medium: PDE/MC | Medium–high: Fourier/PDE/MC |
| Hedge implication | Greeks at one σ | State-localized vol hedge | Variance and vol-of-vol risk |
Implementation with current QuantLib
Current QuantLib separates market structures, processes, instruments, engines and calibration helpers. Use those abstractions only after the lesson’s conventions, domains and numerical checks are explicit.
API authority: upstream QuantLib reference pinned in the source registry.Theory → implementation → checks.
Dupire denominator diagnostic
Detect unstable density denominators before computing local variance.
from __future__ import annotations import numpy as np def convexity(strikes: np.ndarray, calls: np.ndarray) -> np.ndarray: if strikes.shape != calls.shape or strikes.size < 5: raise ValueError("aligned grid with at least five nodes required") h = np.diff(strikes) if not np.allclose(h, h[0]): raise ValueError("teaching implementation requires uniform strikes") return (calls[:-2] - 2.0 * calls[1:-1] + calls[2:]) / h[0]**2 k = np.arange(80.0, 125.0, 5.0)c = np.array([22.0, 18.0, 14.5, 11.5, 9.0, 7.0, 5.5, 4.5, 3.8])density_term = convexity(k, c)assert np.isfinite(density_term).all()assert np.all(density_term > 0.0)print(float(density_term.min()))Move the state. Challenge the equation.
Dupire stability lab
Change smoothing and grid spacing; inspect call convexity, local variance and failure regions.
Where the model meets the book.
“The calibration is exact because the interpolation made the difficult decisions first.”
clean call surface
curves and forwards
smoothing rule
grid
boundaries
The model is implied from the vanilla surface rather than optimized to it; smoothing hyperparameters are the effective calibration choices.
RISKlocal-vol vega
barrier sensitivity
surface derivative risk
grid risk
- clean prices
- enforce shape
- differentiate
- diagnose denominator
- solve PDE
Production failure modes
- negative density
- noisy time derivative
- wing explosion
- boundary artifacts
Map the transmission channel.
Spot moves through a state-dependent surface
A local-vol model maps today’s skew into spot-dependent future diffusion, linking selloffs to higher instantaneous volatility without an independent variance shock.
defines state dependence
moves into higher local vol
changes barrier probabilities
inherits local dynamics
Most failures begin outside the formula.
Differentiating raw implied vols.
Calling exact vanilla fit a validation of dynamics.
Flooring negative local variance silently.
Ignoring extrapolation in path-dependent pricing.
Attribution with implementation authority.
Volatility, Monte Carlo and stochastic-volatility lectures
Research map for the mathematical progression and numerical experiments; prose, examples and code are original.
- Source
- Computational Finance Course
- Author
- L. A. Grzelak
- Ref
- main
Current volatility structures, processes, calibration helpers and tests
Implementation reference for production abstractions and validation patterns.
- Source
- QuantLib upstream
- Author
- QuantLib contributors
- Ref
- v1.42.1