Unit 7, lesson 51

Dupire local volatility

How a smooth call price surface determines a local volatility through the Dupire equation, how local variance follows from maturity and strike derivatives, and why recovering it from noisy quotes is ill-posed.

  • Video 51
  • Local volatility, stochastic volatility and jumps

Suppose European call prices are known at every strike and every maturity, and no single constant volatility reproduces them. Is there one diffusion, with a volatility that depends only on time and the current stock price, that prices all of them correctly, and which volatility function must it use? This lesson derives Dupire’s forward equation for call prices from the density of the stock, solves it for the local variance, checks the formula on a constructed set of derivatives, and shows why reading the formula off noisy quotes is unstable.

Key terms

Local volatility

Definition A local volatility model assumes a constant rate rr, a constant dividend yield qq and, under a pricing measure Q\mathbb{Q} with Brownian motion WQW^{\mathbb{Q}},

dSt=(r−q)St dt+σloc(t,St) St dWtQ,\begin{aligned} dS_t &= (r - q)S_t\,dt \\[0.4em] &\quad + \sigma_{\mathrm{loc}}(t, S_t)\,S_t\,dW^{\mathbb{Q}}_t, \end{aligned}

with S0>0S_0 > 0, where the local volatility σloc\sigma_{\mathrm{loc}} is a deterministic positive function of time and the current price. The model needs conditions that make this equation well posed, for example σloc\sigma_{\mathrm{loc}} bounded and s↦σloc(t,s) ss \mapsto \sigma_{\mathrm{loc}}(t, s)\,s Lipschitz with a constant that does not depend on tt. Then there is a unique solution, it stays positive, and the drift makes e−(r−q)tSte^{-(r - q)t} S_t a Q\mathbb{Q}-martingale. A constant σloc=σ\sigma_{\mathrm{loc}} = \sigma gives the Black-Scholes model. The volatility depends on the path only through (t,St)(t, S_t), so SS is a Markov process driven by one Brownian motion. Calibration asks for the σloc\sigma_{\mathrm{loc}} whose European prices match a given call price surface, which fixes the law of STS_T under Q\mathbb{Q} for each TT, the one-time marginals. It does not fix the joint law of the path. Stochastic volatility and jump models fitted to the same European prices have the same marginals but can give different prices for barrier and forward-start options and different hedges. A local volatility that matches the surface is a model choice, not evidence about the physical dynamics under P\mathbb{P}.

In plain words Local volatility replaces the single constant of Black-Scholes by a table indexed by date and price level. The table is chosen so that every European option is priced correctly, but European prices only describe where the stock may be at each date, not how it travels between dates.

Example With σloc(t,s)=0.2\sigma_{\mathrm{loc}}(t, s) = 0.2 for all tt and ss the model is Black-Scholes, and the call price surface is the Black-Scholes formula at volatility 0.20.2. In a constructed model whose local volatility depends on time only, 0.20.2 for t<1t < 1 and 0.30.3 for t≥1t \ge 1, the log price is Gaussian with total variance 0.04+0.09=0.130.04 + 0.09 = 0.13 at T=2T = 2. Every call with that maturity then has the implied volatility 0.13/2≈0.254951\sqrt{0.13/2} \approx 0.254951, an average over time, while the local variance formula of this lesson, applied to the exact surface at T=2T = 2, away from the switch, returns 0.090.09 at every strike, the instantaneous value 0.30.3 squared.

Call price surface

Definition The call price surface is the function (K,T)↦C(K,T)(K, T) \mapsto C(K, T) of time-00 prices of European calls on one underlying, for K≥0K \ge 0 and T≥0T \ge 0, with C(K,0)=(S0−K)+C(K, 0) = (S_0 - K)^{+}. With a constant rate and a pricing measure,

C(K,T)=e−rT EQ[(ST−K)+].\begin{aligned} &C(K, T) \\[0.4em] &\quad = e^{-rT}\,\mathbb{E}^{\mathbb{Q}}\bigl[(S_T - K)^{+}\bigr]. \end{aligned}

Its coordinates are the strike KK and the maturity TT. They are the variables of a forward equation, in which the contract varies and the starting point (0,S0)(0, S_0) is fixed. This differs from the backward Black-Scholes equation, whose variables are the current time tt and price SS for one fixed contract. Strike derivatives recover the marginal laws. The right derivative is CK(K+,T)=−e−rT Q(ST>K)C_K(K+, T) = -e^{-rT}\,\mathbb{Q}(S_T > K), and when STS_T has a density p(T,⋅)p(T, \cdot) under Q\mathbb{Q},

CKK(K,T)=e−rT p(T,K),C_{KK}(K, T) = e^{-rT}\,p(T, K),

the Breeden-Litzenberger relation. An arbitrage-free surface is nonincreasing and convex in KK, with slopes in [−e−rT,0][-e^{-rT}, 0], and its normalized prices are nondecreasing in TT at fixed normalized strike, as derived in Static arbitrage and volatility surfaces.

In plain words The surface lists the price of every European call at once. Its slope in strike gives risk-neutral probabilities of finishing above each strike, its curvature gives the risk-neutral density, and its change in maturity shows how that distribution spreads out as the horizon grows. These are pricing weights under Q\mathbb{Q}, not forecasts.

Example The constructed local data of this lesson, at K=100K = 100 and T=1T = 1 with r=q=0r = q = 0, are C=8C = 8, CK=−0.46C_K = -0.46, CKK=0.02C_{KK} = 0.02 per currency unit and CT=4C_T = 4 currency units per year. They say Q(ST>100)=0.46\mathbb{Q}(S_T > 100) = 0.46 and p(1,100)=0.02p(1, 100) = 0.02 per currency unit. They are rounded from the Black-Scholes surface with S0=100S_0 = 100 and σ=0.2\sigma = 0.2, where these quantities are about 7.9655677.965567, −0.460172-0.460172, 0.0198480.019848 and 3.9695253.969525.

Dupire equation

Definition Assume the local volatility model of the first card with σloc\sigma_{\mathrm{loc}} continuous, and assume that for every T>0T > 0 the law of STS_T under Q\mathbb{Q} has a density p(T,s)p(T, s) on (0,∞)(0, \infty), once continuously differentiable in TT and twice in ss, that solves the forward Kolmogorov equation

∂Tp=−∂s((r−q)s p)+12∂ssa,\begin{aligned} \partial_T p &= -\partial_s\bigl((r - q)s\,p\bigr) \\[0.4em] &\quad + \tfrac12 \partial_{ss} a, \end{aligned}

where a(T,s)=σloc2(T,s) s2 p(T,s)a(T, s) = \sigma_{\mathrm{loc}}^2(T, s)\,s^2\,p(T, s). Assume also that differentiation under the integral sign is allowed and that the boundary terms below vanish as s→∞s \to \infty, namely (s−K) s p(s - K)\,s\,p, aa and (s−K) ∂sa(s - K)\,\partial_s a. Then for K>0K > 0 and T>0T > 0 the call price surface satisfies the Dupire equation

CT=12σloc2(T,K)K2CKK−(r−q)KCK−qC,\begin{aligned} C_T &= \tfrac12\sigma_{\mathrm{loc}}^2(T, K)K^2 C_{KK} \\[0.4em] &\quad - (r - q)K C_K - qC, \end{aligned}

with the initial condition C(K,0)=(S0−K)+C(K, 0) = (S_0 - K)^{+}. To derive it, write D=e−rTD = e^{-rT} and C=D∫K∞(s−K) p dsC = D\int_K^\infty (s - K)\,p\,ds. Differentiating in TT gives −rC-rC plus D∫K∞(s−K) ∂Tp dsD\int_K^\infty (s - K)\,\partial_T p\,ds, and the forward equation splits this integral into two parts. In the drift part one integration by parts moves the derivative onto s−Ks - K, whose derivative is 11, and the identities ∫K∞(s−K) p ds=C/D\int_K^\infty (s - K)\,p\,ds = C/D and ∫K∞p ds=−CK/D\int_K^\infty p\,ds = -C_K/D give

(r−q)D∫K∞s p ds=(r−q)(C−KCK).\begin{aligned} &(r - q)D\int_K^\infty s\,p\,ds \\[0.4em] &\quad = (r - q)(C - K C_K). \end{aligned}

In the diffusion part two integrations by parts leave only the value at the strike, and D p(T,K)=CKKD\,p(T, K) = C_{KK} gives

12D∫K∞(s−K) ∂ssa ds=12D a(T,K)=12σloc2(T,K)K2CKK.\begin{aligned} &\tfrac12 D\int_K^\infty (s - K)\,\partial_{ss} a\,ds \\[0.4em] &\quad = \tfrac12 D\,a(T, K) \\[0.4em] &\quad = \tfrac12\sigma_{\mathrm{loc}}^2(T, K)K^2 C_{KK}. \end{aligned}

Adding −rC-rC, (r−q)C(r - q)C, −(r−q)KCK-(r - q)KC_K and the diffusion term gives the equation, because −rC+(r−q)C=−qC-rC + (r - q)C = -qC. With deterministic time-dependent rr and qq the same equation holds with their values at the maturity TT. Stochastic rates need a different numeraire and are not covered here.

In plain words As the maturity grows, the risk-neutral distribution of the stock is carried along by the carry drift and spread out by the local variance at each level. Integrating the call payoff against that moving distribution turns the density equation into an equation for call prices, in which the spreading at the strike appears through the curvature in strike.

Example For the Black-Scholes surface with S0=K=100S_0 = K = 100, σ=0.2\sigma = 0.2, r=q=0r = q = 0 and T=1T = 1, the right side is

12⋅0.04⋅1002⋅0.019848≈3.969525,\begin{aligned} &\tfrac12 \cdot 0.04 \cdot 100^2 \cdot 0.019848 \\[0.4em] &\quad \approx 3.969525, \end{aligned}

which equals the maturity derivative CTC_T of the Black-Scholes price to all the digits shown. With zero carry the Dupire equation reads CT=12σloc2K2CKKC_T = \tfrac12 \sigma_{\mathrm{loc}}^2 K^2 C_{KK}, a heat-type equation in strike and maturity.

Local variance

Definition Under the assumptions of the Dupire equation, at a point with CKK(K,T)>0C_{KK}(K, T) > 0, the local variance is

σloc2(T,K)=2AK2CKK,A=CT+(r−q)KCK+qC,\begin{aligned} \sigma_{\mathrm{loc}}^2(T, K) &= \frac{2A}{K^2 C_{KK}}, \\[0.4em] A &= C_T + (r - q)K C_K \\[0.4em] &\quad + qC, \end{aligned}

and the local volatility is its positive square root. The units are per year, since AA is in currency units per year and K2CKKK^2 C_{KK} in currency units. With F(0,T)=S0e(r−q)TF(0, T) = S_0 e^{(r - q)T}, k=K/F(0,T)k = K/F(0, T) and the normalized price c(k,T)=C(K,T)/(e−rTF(0,T))c(k, T) = C(K, T)/(e^{-rT}F(0, T)), the chain rule gives

A=e−rTF(0,T) ∂Tc(k,T),A = e^{-rT}F(0, T)\,\partial_T c(k, T),

the maturity derivative at fixed normalized strike. The numerator is therefore nonnegative exactly when the surface is calendar consistent at that point, and the denominator is nonnegative exactly when it is convex in strike. A given surface with A<0A < 0 or CKK<0C_{KK} < 0 at some point is not the price surface of any such model, contains a static arbitrage, and has no real local volatility there. At a point with CKK=0C_{KK} = 0 the formula is undefined, and where CKKC_{KK} is small it divides by a small number. A positive value at every point still does not prove that the resulting coefficient defines a diffusion, which needs regularity and growth conditions on the whole function.

In plain words The local variance compares two things the surface shows at the strike, how fast the normalized call price grows with maturity and how much risk-neutral density sits there. It is proportional to the first and inversely proportional to the second. Calendar consistency keeps the top nonnegative and strike convexity keeps the bottom nonnegative, so an arbitrage-free surface gives a nonnegative number wherever the density is positive.

Example For the constructed data with r=q=0r = q = 0,

σloc2=2⋅41002⋅0.02=8200=0.04,\begin{aligned} \sigma_{\mathrm{loc}}^2 &= \frac{2 \cdot 4}{100^2 \cdot 0.02} = \frac{8}{200} \\[0.4em] &= 0.04, \end{aligned}

per year, so σloc(1,100)=0.2\sigma_{\mathrm{loc}}(1, 100) = 0.2 per square root of a year. In constructed prices the same data come from a strike stencil and a maturity stencil. With C(99,1)=8.47C(99, 1) = 8.47, C(100,1)=8C(100, 1) = 8 and C(101,1)=7.55C(101, 1) = 7.55, the second difference is 8.47−16+7.55=0.028.47 - 16 + 7.55 = 0.02, and the centered first difference (7.55−8.47)/2=−0.46(7.55 - 8.47)/2 = -0.46 recovers the slope. With C(100,1.01)=8.04C(100, 1.01) = 8.04 and C(100,0.99)=7.96C(100, 0.99) = 7.96, the centered difference (8.04−7.96)/0.02=4(8.04 - 7.96)/0.02 = 4 recovers CTC_T. These five prices are a local stencil, not a complete arbitrage-free surface.

Ill-posed differentiation

Definition A problem is well-posed in the sense of Hadamard when a solution exists, is unique, and depends continuously on the data. Recovering derivatives from prices fails the third condition. A perturbation η(K)=εsin⁡(ωK)\eta(K) = \varepsilon \sin(\omega K) changes every price by at most ε\varepsilon but changes the second derivative by up to εω2\varepsilon\omega^2, which is as large as we like for a fast enough oscillation. On a grid the same effect appears in the stencils. Suppose the quotes C~\widetilde{C} differ from the true prices by at most ε\varepsilon, and CC is four times continuously differentiable in KK with ∣CKKKK∣≤M\lvert C_{KKKK} \rvert \le M on [K−h,K+h][K - h, K + h]. The second difference of the quotes, C^KK=(C~(K+h)−2C~(K)+C~(K−h))/h2\widehat{C}_{KK} = (\widetilde{C}(K + h) - 2\widetilde{C}(K) + \widetilde{C}(K - h))/h^2, then satisfies

∣C^KK−CKK(K)∣≤4εh2+Mh212,\begin{aligned} &\bigl\lvert \widehat{C}_{KK} - C_{KK}(K) \bigr\rvert \\[0.4em] &\quad \le \frac{4\varepsilon}{h^2} + \frac{M h^2}{12}, \end{aligned}

where the first term is amplified quote noise and the second is the truncation error from Taylor’s theorem. The centered maturity difference with step ΔT\Delta T amplifies quote errors by 1/ΔT1/\Delta T. Refining the grid lowers the truncation error and raises the noise, so a finer grid does not by itself give a better local volatility. Local variance divides by the noisy curvature, which makes it most sensitive where CKKC_{KK} is small. That happens in the wings, and at short maturities, where the payoff kink concentrates nearly all the curvature close to S0S_0 and leaves very little elsewhere. Stable recovery fits a smooth surface that satisfies the static arbitrage constraints and controls noise before differentiating. How to do that for market data is outside this lesson.

In plain words Prices can be almost right while their second derivative is badly wrong, because a tiny wiggle in a curve can still bend it sharply. Dupire’s formula needs exactly that second derivative, so quote noise of a cent or two can change the answer completely.

Example Raise only the center price of the constructed stencil from 8 to 8.02. The curvature estimate becomes

8.47−2⋅8.02+7.55=−0.02,8.47 - 2 \cdot 8.02 + 7.55 = -0.02,

so a change of two hundredths in one price reverses the sign, and the formula returns the local variance 8/(104⋅(−0.02))=−0.048/(10^4 \cdot (-0.02)) = -0.04, which no real volatility has. The same three prices contain a butterfly that pays a nonnegative amount and now costs −0.02-0.02. In the maturity direction, raising C(100,1.01)C(100, 1.01) from 8.048.04 to 8.058.05 gives CT=4.5C_T = 4.5 and a local variance of 0.0450.045, a local volatility of about 0.21210.2121 instead of 0.20.2.

Check yourself

  1. For the Black-Scholes surface with S0=100S_0 = 100, σ=0.25\sigma = 0.25, r=0.03r = 0.03 and q=0.01q = 0.01, the data at K=110K = 110 and T=0.5T = 0.5 are about C=3.723010C = 3.723010, CK=−0.279780C_K = -0.279780, CKK=0.0171706C_{KK} = 0.0171706 per currency unit and CT=7.070913C_T = 7.070913 per year. Compute the local volatility, and compare with the value you get if the carry terms are left out.
Show the answer

The carry terms are (r−q)KCK=0.02⋅110⋅(−0.279780)≈−0.615516(r - q)KC_K = 0.02 \cdot 110 \cdot (-0.279780) \approx -0.615516 and qC=0.01⋅3.723010≈0.037230qC = 0.01 \cdot 3.723010 \approx 0.037230, so the numerator is

A≈7.070913−0.615516+0.037230≈6.492627,\begin{aligned} A &\approx 7.070913 \\[0.4em] &\quad - 0.615516 \\[0.4em] &\quad + 0.037230 \\[0.4em] &\approx 6.492627, \end{aligned}

and 12K2CKK=12⋅12100⋅0.0171706≈103.882130\tfrac12 K^2 C_{KK} = \tfrac12 \cdot 12100 \cdot 0.0171706 \approx 103.882130. Their ratio is about 0.06250.0625, so the local volatility is 0.250.25 up to rounding, the constant volatility that generated the surface, as it must be. Leaving out the carry terms gives 7.070913/103.882130≈0.0680677.070913/103.882130 \approx 0.068067 and a local volatility of about 0.26090.2609, an error caused entirely by dropping the drift term (r−q)KCK(r - q)KC_K and the dividend term qCqC.

  1. In the Black-Scholes surface with S0=100S_0 = 100, σ=0.2\sigma = 0.2, r=q=0r = q = 0 and T=1T = 1, take CT≈3.969525C_T \approx 3.969525 as exact, and suppose each call quote near K=100K = 100 has an error of at most 0.0050.005. Bound the local variance obtained from the strike stencil with h=1h = 1 and with h=5h = 5. The exact second differences are about 0.0198440.019844 and 0.0197600.019760.
Show the answer

The noise in a second difference is at most 4⋅0.005/h24 \cdot 0.005/h^2, which is 0.020.02 for h=1h = 1 and 0.00080.0008 for h=5h = 5. With h=1h = 1 the estimate of CKKC_{KK} can be anywhere in about [−0.000156,0.039844][-0.000156, 0.039844]. It can be negative or arbitrarily close to zero, so the local variance can be negative, undefined or arbitrarily large, and the smallest positive value it can take is about 2⋅3.969525/(104⋅0.039844)≈0.0199252 \cdot 3.969525/(10^4 \cdot 0.039844) \approx 0.019925. With h=5h = 5 the estimate lies in about [0.018960,0.020560][0.018960, 0.020560], so the local variance lies in about [0.038614,0.041873][0.038614, 0.041873], a local volatility between about 0.19650.1965 and 0.20460.2046. The coarser stencil carries a truncation bias of about −0.000088-0.000088 in the curvature, much less than the noise it removes. Refining the grid made the estimate worse.

  1. A classmate takes the theta of the call, its derivative in calendar time tt at fixed KK and TT, and puts it into the Dupire formula in place of CTC_T. With the constructed data at K=100K = 100, T=1T = 1 and r=q=0r = q = 0, what comes out, and why?
Show the answer

In a model with constant rr, qq and a time-homogeneous volatility, such as Black-Scholes, the price at time tt depends on tt and TT only through τ=T−t\tau = T - t, so the theta at t=0t = 0 is ∂tC=−CT\partial_t C = -C_T. If the constructed data come from such a model, the theta is −4-4 per year, and the formula returns

2⋅(−4)1002⋅0.02=−0.04,\frac{2 \cdot (-4)}{100^2 \cdot 0.02} = -0.04,

a negative variance. Dupire’s equation is a forward equation in the maturity of the contract, with the valuation date fixed, while theta belongs to the backward equation, in which the contract is fixed and the valuation date moves. Theta quoted per calendar day would add a second error, a factor of about 365365 in size, since CTC_T is measured per year.

How this lesson connects