I'm attempting to calculate local volatility given a set of option prices using $$ \sigma(T,K)=\sqrt{2\frac{\frac{\partial C}{\partial T}+rK\frac{\partial C}{\partial K}}{K^2\frac{\partial^2C}{\partial K^2}}}.$$

Let's say I'm given the following call strikes and maturities and prices:

 Strike    1 Month    2 Month
 10        0.50       0.75
 11        0.35       0.50
 12        0.25       0.35 

Let's say we try to calcalate the 1 month 11 strike local volatility with a risk-free rate of $r=0.01$.

We can estimate theta, $\frac{\partial C}{\partial T}$, as 0.35/30(days) = 0.01.

Next, we have $\frac{\partial C}{\partial K}$ as the difference between the 10 and 11 strike: $\frac{0.50-0.35}{1} = 0.15$.

Next, we calculate $\frac{\partial^2 C}{\partial K^2}$ as the difference between the 12-11 call and the 11-10 call which calculates the rate of change of the call price by strike effectively: (0.50-0.35)-(0.35-0.25) = 0.05.

Then, we plug in as follows for the numerator: $2\cdot(0.01+0.01\cdot11\cdot0.15) = 0.053$. Then, for the denominator we have: $11^2\cdot0.05= 6.05$.

Then, if we divide and take the square root: we get $0.0935$, so a volatility of $9.35\%$.

Am I on the right track here? Most of the times you look up local volatility a lot of it is above my math ability, but I want to understand if I'm at least on the right track?

  • $\begingroup$ @KeSchn I'm so sorry for not formatting it better, I tried and I was looking up how to do it. Thank you very much for taking the time the do it, I'll see if I can understand how you did it $\endgroup$ Mar 4, 2020 at 18:26
  • $\begingroup$ It's just the standard Latex syntax :) $\endgroup$
    – Kevin
    Mar 4, 2020 at 18:39

1 Answer 1


One issue I see: $$2\cdot0.01+0.01\cdot11\cdot0.15 = 0.0365$$ must be replaced by

$$2\cdot \left(0.01+0.01\cdot11\cdot0.15\right) = 0.053$$

Edit: (Detailing my comments a bit) Dupire's equation, as you wrote it, is correct (assumes dividends are null):

$$ \frac{\partial C}{\partial T} = \frac{1}{2}\sigma^2 K^2\frac{\partial^2 C}{\partial K^2} -r K \frac{\partial C}{\partial K}, $$

where $\sigma = \sigma(S_t, t)$, that is, dependent on underlying and time, with underlying following the local volatility dynamics (aka generalized Black-Scholes dynamics):

$$ dS_t = rS_t dt +\sigma S_t dW.$$

A proof can be found here.

You can think of it as a 'dual' companion of Black-Scholes equation (usually uses $t$, not $T$, time to expiry, as variable):

$$ -\frac{\partial C}{\partial t} = \frac{1}{2}\sigma^2 S^2\frac{\partial^2 C}{\partial S^2} +r S \frac{\partial C}{\partial S} - rC.$$

Note that, if you assume $r=0$, we have:

$$ -\frac{\partial C}{\partial t} = \frac{1}{2}\sigma^2 S^2\frac{\partial^2 C}{\partial S^2}.$$

Edit 2: You are computing an instantaneous quantity from raw data using rough finite difference derivative approximations. Usually, one fills in the continuous space of calls parameterized by strike and time to expiry, $C(K,T)$, using smooth interpolations (more precisely, this 'filling' is first done in the BS-implied volatilty space), then gets first and second derivatives and the needed local volatility $\sigma(K,T)$.

  • $\begingroup$ thanks a lot for pointing that out, a bit embarassing...I fixed it. I still think the calculation is wrong, a local vol in the neighborhood of 9 seems too low. On a $10 stock say a 0.50 call 1 month out the implied are closer to 45, so 9 local vol seems way low $\endgroup$ Mar 5, 2020 at 15:52
  • $\begingroup$ @MichaelScarn don't you need to annualise the estimate? Like you got the local volatility for one month, but that needs to be scaled by $\sqrt{12}\approx 3.5$? $\endgroup$
    – Kevin
    Mar 5, 2020 at 16:11
  • $\begingroup$ Oh interesting, I hadn't thought about that, that makes more sense. The other thing I don't get is that if rates go to 0 the numerator would just be theta, which seems confusing to me because it massively changes the local volatility number. I wonder if r is actually e^(r) but I can't be sure. Thanks for pointing this out! I'm spending a ton of time thinking about this $\endgroup$ Mar 5, 2020 at 16:20
  • $\begingroup$ No, it is (negative) theta divided by (dual) gamma (times strike squared). Have a look at Black-Scholes PDE too (where delta and r are set to 0), to see the relationship between BS flat vol, theta and gamma (times spot squared), to get more comfort that Dupire was right (you can also look up his proof for local volatility). $\endgroup$
    – ir7
    Mar 6, 2020 at 1:37
  • $\begingroup$ @ir7 Ok, I'll try. I actually don't know much in the way of PDE, but I'll try. To be clear you're saying to look up the actual PDE, and then manipulate delta and r to 0 to see how it effects the outcome yeah? I've looked at the original Dupire proof but it was quite a bit above my head, I have lots of maths to learn/relearn if I want to understand this subject which is partly why I started with the prices first $\endgroup$ Mar 7, 2020 at 0:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.