Why Short-Dated Heston Local Volatility Can Be Undefined
Summary
The document describes an attempt to infer local volatility from synthetic option prices generated under a Heston stochastic volatility model. Prices are computed with the COS method, while finite differences estimate the time derivative of call prices and the second derivative with respect to strike, quantities used in local volatility calculations.
The reported issue is an undefined or NaN estimate for a very short-dated, far in-the-money call. The document notes the extreme log-moneyness but provides no diagnosis or numerical evidence establishing the cause. Finite-difference error, sparse or unstable price curvature, and the limits of the local volatility formula near expiry are relevant possibilities, but the text does not resolve among them. It raises the question of whether the chosen strike and maturity are appropriate for this calculation.
Key ideas
- The example generates option prices using a Heston stochastic volatility model.
- The COS method is used for pricing, and finite differences estimate price derivatives.
- Local volatility estimation depends on derivatives with respect to time and strike.
- A very short maturity and far in-the-money strike produce an undefined result in the reported setup.
- The document does not establish whether the cause is market plausibility, numerical differentiation, or another issue.
Tags
Full text
# local volatility not reasonable
# local volatility not reasonable
We are going to generate synthetic option prices using a Heston model, i.e., $$ \begin{gather*} dS_t = \sqrt{v_t} S_t dZ_t,\\ dv_t = \lambda (\mu - v_t) d_t + \eta \sqrt{v_t} dW_t, \end{gather*} $$ where $Z,W$ are standard Brownian motions with $\langle Z,\, W\rangle_t = \rho t$, $S_0 = 1$, $v_0$ as an additional parameter.
Standing assumption: $r = 0$.
We compute option prices by the COS method, and then use finite difference quotients to estimate the derivatives $\partial_t C(t,K)$ and $\partial_{KK} C(t,K)$.
For a very small maturity $T$ of a call option with strike $K$, log-moneyness is given by $log(S/K) =0.8$, where $S$
The local volatility is then not defined and gives an nan values.
$log(S_0/K) =0.8$ would mean that $S_0/K = 2.2$ so the option is far in the money.
Why do I get an undefined local volatility then?
Maybe such a far in the money option is unreasonable for very little maturity?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.