In January 1994, Risk published three pages by Bruno Dupire under the title Pricing with a Smile. Those pages answered a precise question: if vanilla call prices are known for every strike and maturity, which one-factor diffusion reproduces them?
The answer is the local volatility surface. It is an inversion of today's option surface, not a forecast of tomorrow's implied volatility. That distinction explains both the method's usefulness and most of its failures.
For context, read our introductions to the volatility smile, implied volatility and the Heston model.
Model and assumptions
With deterministic rates and dividend yield, suppose the ex-dividend spot follows
under the risk-neutral measure. Here and are constant for clarity. With term structures, replace them by and in the forward equation.
Dupire requires more than a screen of option quotes. We need a sufficiently smooth continuum of European call prices, no static arbitrage, a strictly positive density where the formula is evaluated and a diffusion with no jumps. The regular call boundaries are
Calls must also be decreasing and convex in strike. The second condition is not housekeeping: negative call convexity means a negative state-price density, so no real local volatility can repair it.
Forward equation
Let be the risk-neutral density of . Its Fokker-Planck equation is
The discounted call is
Differentiate in , substitute the density equation and integrate by parts. Boundary terms vanish under the call-price limits above. The result is the Dupire forward PDE:
Therefore
The evaluation point on the option surface maps to state in the diffusion. Derman and Kani's local-volatility research note gives a useful parallel account through implied trees.
By Breeden and Litzenberger,
That denominator has units of inverse price; after multiplication by , both numerator and denominator have units of price per year. Their ratio is variance per year. A tiny density in a wing makes the inversion ill-conditioned.
The strike derivatives make the inversion intuitive. Differentiating the payoff once gives
at continuity points. Differentiating again isolates the discounted density at the strike. The forward PDE asks how quickly option value at that strike changes as maturity is extended. After removing carry through , Dupire attributes the remaining time value to diffusion across the strike. Local variance is therefore a ratio of surface evolution to local probability mass. If little probability mass sits near , even a small quote perturbation can cause a large change in the ratio.
This also explains why the formula is a calibration identity rather than a forecasting law. European prices determine each risk-neutral marginal density. Dupire constructs one Markov diffusion consistent with that family of marginals. It does not claim that the market's future implied surface will evolve according to the same one-factor mechanism. Gyöngy's mimicking theorem gives the wider intuition: under suitable regularity, a state-dependent diffusion can match the one-time marginals of a richer Itô process while having different pathwise behaviour.
Raw is not guaranteed to be positive when dividends or unusual rate curves matter. The whole drift-adjusted numerator must be non-negative. Calendar arbitrage is cleanest to test on undiscounted, forward-normalised prices or total variance at fixed forward log-moneyness, not by asserting that every raw call rises with maturity.
Recomputed flat-vol check
A flat Black-Scholes surface is the simplest unit test because Dupire must return the input volatility. Take , , , and . Central differences with and give:
- , and
Substitution gives
The discrepancy in the sixth decimal place is finite-difference error. Wider strike steps or sparse maturities quickly make it larger.
A mesh-refinement check distinguishes truncation error from a bad formula. Using paired steps of , , and gives local volatilities , , and . The error falls by about a factor of four when both centred-difference steps are halved, as second-order differencing predicts. Market data will not display this clean convergence because quote noise grows as the step shrinks. A production diagnostic should therefore plot estimates across several smoothing strengths and bump sizes rather than selecting the smallest available spacing.
A safer Python estimator
This code uses centred differences in the interior and respects non-uniform coordinates. It is still a diagnostic, not a production surface builder.
import numpy as np def dupire_local_vol(calls, maturities, strikes, r, q): """calls[i, j] is the call price at (maturities[i], strikes[j]).""" T, K = np.asarray(maturities), np.asarray(strikes) C = np.asarray(calls, dtype=float) if (C.shape != (T.size, K.size) or min(T.size, K.size) < 3 or np.any(np.diff(T) <= 0) or np.any(np.diff(K) <= 0)): raise ValueError("Use at least a 3x3 rectangular grid with increasing T and K") C_T = np.gradient(C, T, axis=0, edge_order=2) C_K = np.gradient(C, K, axis=1, edge_order=2) C_KK = np.gradient(C_K, K, axis=1, edge_order=2) numer = 2.0 * (C_T + (r - q) * K[None, :] * C_K + q * C) denom = K[None, :] ** 2 * C_KK local_var = np.divide(numer, denom, out=np.full_like(C, np.nan), where=(numer >= 0) & (denom > 1e-12)) return np.sqrt(local_var)
Finite-differencing mid quotes directly is usually a mistake. Fit an arbitrage-controlled surface first, differentiate it analytically where possible and compare repriced vanillas with the inputs. A SABR smile can be useful within its market, while splines need explicit convexity constraints. Extrapolation is part of the model: flat implied-vol wings can violate moment conditions and create explosive local variance.
Other traps are less obvious. Discrete dividends break the smooth proportional-yield setup. American option quotes cannot be inserted without removing early-exercise value. Near expiry, bid-ask noise dominates . At very low density, cap or stop extrapolating local variance rather than trusting a large quotient.
Surface construction and desk diagnostics
A defensible workflow starts before any differentiation. Infer forwards and discount factors from internally consistent curves and put-call parity. Convert liquid puts and calls to one out-of-the-money convention, remove crossed or stale markets and retain bid-ask information. Fit prices or forward-normalised option values under strike monotonicity, strike convexity and cross-maturity constraints. Only then calculate derivatives. Fitting implied volatility without controlling the induced call prices can hide butterfly arbitrage.
The choice of coordinates is practical rather than cosmetic. Forward log-moneyness keeps the liquid smile region aligned as maturity changes. However, Dupire's displayed formula differentiates at fixed strike. If a surface is fitted in coordinates, the maturity derivative needs the chain rule because moves when moves. Omitting that term creates a spurious carry effect. The safest implementation either derives all transformed-coordinate terms explicitly or evaluates smooth call prices on a fixed-strike grid before differentiating.
After extracting local volatility, solve the forward PDE or use Monte Carlo to reprice the calibration vanillas. Repricing error is the end-to-end test: checking only the algebraic quotient misses interpolation, boundary and solver inconsistencies. Then audit:
- positivity and finite values over the region actually visited by simulations;
- stability under quote bumps inside bid-ask spreads;
- convergence under surface-grid and PDE-grid refinement;
- recovered call monotonicity, convexity and calendar consistency;
- sensitivity to wing extrapolation and the maximum local-volatility cap;
- agreement between Monte Carlo and forward-PDE vanilla prices.
A negative numerator and a small positive denominator require different responses. The first usually signals calendar inconsistency, coordinate error or poor smoothing. The second says the inferred density is too small for reliable inversion. Clipping both cases to the same volatility floor conceals the diagnosis and can make repricing worse.
Practitioners must also decide where exact fit ends. It is often better to accept errors comfortably inside bid-ask spreads than to force every mid quote through a highly curved surface. Likewise, a local-volatility cap is a numerical risk control, not an arbitrage repair. Record where it binds and measure the effect on traded instruments. If barrier values change materially when plausible caps or wing rules change, the vanilla market has not identified that exotic price tightly.
What the model misses
Local volatility fits today's European surface exactly only in the idealised continuum and only after a consistent calibration. It says how instantaneous volatility changes with spot and time. It does not supply an independent stochastic volatility factor.
That matters for forward-start options, cliquets and products exposed to future smile dynamics. A local-vol model often produces forward smiles that are too flat and spot-vol moves that are too mechanical. Barrier prices can also be sensitive to the model's conditional dynamics even when all vanillas fit.
Local-stochastic volatility models add a stochastic factor and use a leverage function to preserve the vanilla fit. They are more flexible, but the calibration becomes a conditional-expectation problem rather than a direct Dupire inversion.
Frequently Asked Questions
What is Dupire local volatility?
It is the deterministic function in a one-factor diffusion that reproduces a smooth, arbitrage-free surface of European option prices.
Is local volatility the same as implied volatility?
No. Implied volatility is the Black-Scholes input matching one option. Local volatility is an instantaneous state-dependent diffusion coefficient inferred from derivatives of the whole surface. They coincide on a constant-volatility surface, but not generally.
Why does the second strike derivative appear?
Breeden and Litzenberger showed that . Dupire divides the maturity evolution of call prices by this discounted terminal density.
What conditions make the formula fail?
Negative convexity, a negative drift-adjusted numerator, sparse or noisy quotes, jumps, discrete dividends and a vanishing wing density can all make the inferred variance negative or unstable.
Can Dupire price barrier options?
It can price them once the local-vol surface is calibrated, but matching vanilla prices does not validate the conditional spot-vol dynamics that drive a barrier's value.
Which sources give the original result?
Start with Dupire's 1994 Pricing with a Smile, Derman and Kani's The Local Volatility Surface and Jim Gatheral's The Volatility Surface. The formula is short. Building a surface that deserves to be differentiated is the real work.
Skip the £25k programme - try the alternative
Master's programmes are slow and expensive. Quantt is a self-paced alternative. Start free with a real lesson and interview practice, then unlock 50+ courses and your personalised plan.
Free to start · No credit card required