I am trying to wrap my head around how exactly Dupire's formula is implemented in practice.

We need $\sigma(S,T)$ for every possible $S$ and $T$. If we had that, then we can just run a monte carlo scheme.

So, do we run monte carlo, and then during the simulation, whenever we need $\sigma(S_i, T_i)$, we run Dupire's formula?

Or, do we use Dupire's formula to first construct a discrete LV surface, and then we run our monte carlo, and then during the simulation, whenever we need $\sigma(S_i, T_i)$, we interpolate from our discrete LV surface?

Or do we do something else? What's best? What's fastest? What's easily implemented?

  • $\begingroup$ I have same problem as you faced. I just wanted to know were you able to solve this issue. If yes can you please share your feedback and let me know if you have practically implemented something with real data. Thanks $\endgroup$
    – Add
    Apr 24, 2019 at 9:57

1 Answer 1


The problem with Dupire's formula is that it requires the derivatives of the option prices, where you do not have a continuum of prices. The reason this is a problem is that you now have to come up with some interpolation scheme for your prices (and even if that involves fitting some term vol surface, it's still an interpolation scheme, it's just more complicated).

The reason Dupire's formula + interpolation is a problem, is that interpolation is done (overwhelmingly often) with constaints on the derivatives - these then filter through into the local vol surface you create from your options at discrete tenors and strikes. You end up with some particular behaviour for derivatives where you're interpolating, and then another - different - behaviour where you straddle an actual data point (especially if your interpolation scheme does not have continuous second derivatives in strike).

The best method i've used is to have some parameterization of the local vol surface, and the ability to price all the options you have based on that parameterization using the forward kolmogorov equations (because you can price them all at once, making it more efficient). This is then calibrated to the option prices that are your input. Peter Jaeckel has a presentation on this approach for SLV here.

This gives a parametric form for the local vol surface to use inside the MC.

The downside to this approach is that the fwd kolmogorov pde approach is far from simple to implement (to get working robustly). The upside is that i get very well behaved local vol surfaces in parametric form. The parameterization we use is flexible enough to fit ~5 tenors perefectly (i.e. all option prices inside bid/offer) with 12 parameters - if you want more and you're not able to fit them all perfectly, then you can just join 2 surfaces together in the local vol space and swap over parameters.

In terms of speed, it's pretty good. Calibration takes about a second, worst case. Often it's about ~0.1s.

In terms of "what's best", this approach blows the "finite difference on interpolated option prices for Dupire" out of the water.

In terms of ease of implementation, i wouldn't put this at the top of the list...

  • $\begingroup$ I should add that you can also fit a parametric global model to al lthe option prices for the term vol ,adn then apply the Dupire formula to that. I find it's hard to globally fit term vol (and be arbitrage free) than to fit a local vol surface. $\endgroup$
    – will
    Apr 7, 2017 at 10:05
  • 2
    $\begingroup$ Regarding your comment: I found the method in Fengler (2009) "Arbitrage-Free Smoothing of the Implied Volatility Surface" to be fast, robust and easy to implement. See tandfonline.com/doi/abs/10.1080/14697680802595585. $\endgroup$ Apr 7, 2017 at 10:40
  • $\begingroup$ @LocalVolatility Just gave it a quick read through - don't have time to read it properly at the moment - how do they deal with the time dimension? $\endgroup$
    – will
    Apr 7, 2017 at 14:24
  • $\begingroup$ The approach constructs a rectangular grid in forward moneyness and time-to-maturity. For each maturity slice, a cubic smoothing spline is fitted subject to no butterfly or calendar spread arbitrage. I.e. you obtain arbitrage-free prices on the original grid. You need to still construct a surface interpolator if you require additional intermediate points (such as in an MC simulation). Typically, I have seen monotone (in time) cubic splines as well as thin plate splines being used. It is not clear to me how to guarantee the absence of arbitrage for all intermediate (interpolated) smiles. $\endgroup$ Apr 7, 2017 at 22:14
  • $\begingroup$ @LocalVolatility i actually don't think it's that important to rule out arbitrage, if you recreate the prices - what i do think is important is that you're not enforcing some conditions on the derivatives that are used to compute the local vol via Dupire's formula. I'd be much more comfortable transforming to some well behaved space for the vols (i.e. log moneyness scaled by atm vol and some power of t - sqrt(t) doesn't get it quite right), and fitting some parameterization that you've chosen specifically because you can differentiate it to give the local vol surface. $\endgroup$
    – will
    Apr 7, 2017 at 22:28

Your Answer

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

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