Calibrating Parametric Local Volatility Surfaces for Monte Carlo
Summary
Dupire’s local volatility formula requires derivatives of option prices across strike and maturity, but market data provide only discrete quotes. Applying the formula therefore depends on interpolating prices, and the chosen interpolation can impose derivative behavior that carries into the resulting local volatility surface. Problems can arise where the interpolation spans market quotes, especially when second derivatives are not continuous.
The proposed alternative is to parameterize the local volatility surface directly, price the observed options together using forward Kolmogorov equations, and calibrate the parameters to the market prices. The calibrated surface can then be used in Monte Carlo simulation. The answer reports that its implementation produced well-behaved surfaces and gives approximate calibration times, while noting the approach is considerably harder to implement robustly than finite differences on interpolated prices. The performance and fit claims reflect the responder’s experience and parameterization; they are not a general comparison across markets or implementations.
Key ideas
- Dupire local volatility requires derivatives that cannot be obtained directly from a finite set of option quotes.
- Price interpolation choices affect the derivatives and can create unwanted behavior in the derived volatility surface.
- A direct alternative is to parameterize local volatility, price options with forward Kolmogorov equations, and calibrate to observed prices.
- The calibrated parametric surface can be queried during Monte Carlo simulation.
- The proposed calibration is reported to work well but requires a substantially more complex implementation.
Tags
Full text
# Methods to compute Local Volatility surface and price # Methods to compute Local Volatility surface and price 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? ## Answer by will (score 4) https://quant.stackexchange.com/a/33550 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...
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.