I am doing some self study on stochastic local volatility modelling and am having a hard time replicating some results from the paper "FX Option Pricing with Stochastic-Local Volatility Model" by Zhu et al (2014).
The paper provides the data used to extract the discrete implied vol. surface which I managed to successfully replicate. My struggle is coming from replicating the local volatility surface on page 11 (Figure 3.2). Here is the output from my implementation:
To create the smooth implied volatility surface I parameterized the volatility in terms of implied variance $w = \sigma_{IV}^2 t$ and log-moneyness $k = log(K/F^t)$ using the SVI approach described in the paper Arbitrage-Free SVI Volatility Surfaces by Gatheral and Jacquier (2013). I then applied linear interpolation across the time dimension which gave me the implied volatility (left most) and implied variance (middle) plots in the figure above.
Now, to compute the local volatility surface I used Dupire's local volatility formula in terms of implied variance and log moneyness described in this QF Stack Exchange question. Since the implied variance is given analytically at each slice, the first and second derivatives were computed analytically at each $k$-slice and interpolated linearly across time. For the time derivative, I used central finite differencing at the interior grid and forward/backward differencing at each boundary.
As you can see, my local volatility surface (right most figure) is nowhere near what is presented in the paper (Figure 3.2). I see in the paper that they define log-moneyness as $log(S/S_0)$. However, even with this convention I am unable to reproduce the same result. Any insight would be helpful as I have not been able to resolve this for some time now.
If you would like me to share my code please let me know.