A few years ago Andreasen and Huge have introduced an efficient and arbitrage free volatility interpolation method [1] based on a one step finite difference implicit Euler scheme applied to a local volatility parametrization. Probably the most notable use case is the generation of a local volatility surface from a set of option quotes.

Starting point is Dupire’s forward equation for the prices of European call options at time with strike and maturity is given by

Define the normalized call price in terms of the discount factor , the forward price and the moneyness as

.

The Dupire forward equation for the normalized prices is then given by

.

Rewriting this equation in terms of amd yields

The normalized put prices are fulfilling the same equation, which can easily been shown by inserting the call-put parity into the equation above

.

The numerical stability of the original algorithm [1] can be enhanced for deep ITM options by calibrating to calls and puts instantaneously. Also the interpolation scheme has a significant impact on the stability. This topic has been discussed in [2][3]. Using concentrated meshes along the current spot level for the finite difference scheme is of advantage for the stability and accuracy of the algorithm.

In order to stabilize the calculation of the local volatility function

one should evaluate the first order derivative of w.r.t. time using the fact that the derivative of the inverse of the matrix is given by

As an example, the diagram below shows different calibrations of the Andreasen-Huge volatility interpolation to a SABR volatility skew at discrete strike sets

for the SABR parameter

The QuantLib implementation is part of the pull request #380.

[1] J. Andreasen, B. Huge, Volatility Interpolation

[2] F. Le Floc’h, Andreasen-Huge interpolation – Don’t stay flat

[3] J. Healy, A spline to fill the gaps with Andreasen-Huge one-step method