Can someone with practical experience with implementing and verifying please point me in the right direction. Let's say I have 3 months of data for an underlying. I want to generate theoretical option prices of all the options strikes and expirations. How do I generate the volatility smile across the full set of option strikes and expirations? Let's say I have the historical volatility. Can I use this as the starting poing to generate the volatility surface? Is there any literature on how to do this?
1 Answer
This is a very common real-world task in quantitative finance, because new underlyings or options series pop up frequently.
Single Volatility
At its simplest, a volatility surface can be represented by a single constant parameter, $\sigma_C$, which to first approximation can be taken equal to the historical return volatility of your hypothetical underlying $H$. With a mere 3 months of daily data, and assuming options near the money, I would put a "safety factor" on $\sigma_C$ (positive or negative depending on whether you will be long or short optionality) and stop there. Frankly, even a Bachelier volatility on $H$ (rather than returns on $H$) would be fine.
Volatility Mapping
Your next best method is to "map" a surface from some economically similar underlying $U$ for which options exist. Let's say you get a volatility surface $\sigma_U(K/U_0, T)$ for $U$. note that I have expressed it in terms of relative strike $K/U_0$, the proportion of strike K to current underlying value $U_0$. Let's also choose some canonical volatility representative of $U$, say
$$ \sigma_A := \sigma_U(1, 3/12) $$
From this, your mapping comes from mapping strikes to the same proportions, multiplying the volatility curve by a correcting constant, and adjusting the time parameter
$$ \sigma(K/H_0, T) = \sigma_C\frac{\sigma_U(K/H_0, T\frac{\sigma_A^2}{\sigma_C^2})}{\sigma_U(1, T\frac{\sigma_A^2}{\sigma_C^2})} $$
Stochastic Volatility
If you want to get a fancier surface, you will have to choose some kind of favored stochastic model, other than plain Black-Scholes, for the underlying. Any fit of such a model gives you option prices for your choice of tenors and strikes, and those option prices in turn define a volatility surface.
Given that you lack option prices, you would fit by maximum likelihood techniques, as described in Maximum likelihood estimation of stochastic volatility models by Ait-Sahalia and Kimmel. This sort of fit involves forming a power series approximation for each day's data, which in their paper comes from equation 9,
$$ l_X^{(J)}(\Delta,x|x_0;\theta) = -\frac{m}2 \log(2\pi \Delta) - D_\nu(x;\theta) + \frac{C^{-1}_X(x|x_0;\theta)}{\Delta} + \sum_{k=0}^J C^{(k)}_X(x|x_0;\theta)\frac{\Delta^k}{k!} $$
and then employing a multidimensional optimization algorithm, such as BFGS, to determine the maximum likelihood coefficients.
Using maximum likelihood estimation of stochastic volatility has various practical and theoretical problems, including
- This technique locks you to a picture of stochastic behavior that is probably not realistic, say by ignoring jumps
- Past behavior does not make a good representation of the future
- You need a lot of data, not just a few dozen points, to have a hope of getting low estimation error
- The varvol or "variability of volatility" parameters are latent and always come with large error bars
-
$\begingroup$ This doesn't appear to answer the question ('how to calculate a theoretical option chain') $\endgroup$– ChrisFeb 11, 2020 at 19:37
-
1$\begingroup$ Actually, it does answer my question. Thanks to Brian B for taking the time to answer. Brian: Let's say I am using method A in your answer (Single Volatility). From there, is there any literature that shows how to build the vol surface across strikes and expirations? The center would be the ATM strike. I am trying to understand how to establish a realistic volatility surface. $\endgroup$– KTCFeb 12, 2020 at 4:01
-
$\begingroup$ Form that starting point, you will not be estimating stochastic vol parameters so let's ignore part 3. Start by using $\sigma_C$ as your ATM vol. Find some other similar underlying with observable option prices. Convert the option prices of it to implied volatilities, and then copy over the surface shape. $\endgroup$– Brian BFeb 12, 2020 at 15:45