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?

  • $\begingroup$ you need option prices (not underlying) to imply volatilizes. $\endgroup$
    – roz
    Feb 11, 2020 at 15:29

1 Answer 1


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$
    – Chris
    Feb 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$
    – KTC
    Feb 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 B
    Feb 12, 2020 at 15:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.