I am implementing a Monte Carlo engine with the local volatility model based on Dupire.

Obviusly, I obtain the local volatility surface from the implied volatility surface and that surfaces has moneyness and expirys limits. Imagine I have the volatility surfaces values between 0.6 and 1.5 in moneyness and from 0.1 to 2 years in time to expiration.

My question is, since I have to interpolate the local vol surface to know the instantaeous local vol value on the Monte Carlo simulation ($\sigma(moneness, t))$, when I discretize the price equation (Euler) I will have to obtain $\frac{S_{t-1}}{S_{0}}$ between the moneyness values in each time step?

In this case, in each time pass the value of the moneyness would have to be between 0.6 and 1.5, which are the moneyness limits in the volatility surface.


  • 2
    $\begingroup$ You can use extrapolation $\endgroup$ Apr 12, 2021 at 15:21
  • 1
    $\begingroup$ you extrapolate the volatility for moneyness < 0.6 or > 1.5 $\endgroup$ Apr 12, 2021 at 15:44
  • 1
    $\begingroup$ bilinear interpolation on the local volatility is fine as the model will remain arbitrage free. If you were to interpolate the implied volatility you would need something more involved. $\endgroup$ Apr 12, 2021 at 16:50
  • 1
    $\begingroup$ There is no constraint on local volatility being positive, because $+\sigma dW$ and $-\sigma dW$ are both gaussians with mean zero and standard deviation $|\sigma| \sqrt{dt}$. It is just a convention. $\endgroup$ Apr 13, 2021 at 8:02
  • 1
    $\begingroup$ The simplest and most common extrapolation method is flat extrapolation, exactly as you suggest. $\endgroup$ Apr 14, 2021 at 9:32


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy