I want to calculate option prices based on a realistic distribution of the underlying. The underlying is a liquid index such as Eurostoxx50. I think of two aproaches, both of them incorporate assumption of Markov Chains/independet returns:

1) calcualate option prices by monte carlo simulation with historical returns 2) get option prices by montecarlo simulation, simulating returns with a random number generator based on a stochastic variance distribution, such as generalized hyperbolic distribution, that is fitted to historical index returns.

For both approaches I see the problem of how to deal with the vola of the underlying. I assume that in reality vola realisiations are not totally independent from past values. That means that extreme vola changes will occur with both simulation methods more often than in reality. Using the overall historical vola as an estimator for

What is your opinion? Assuming vola being totally random and applying a distribution parameter fit made by using the whole avaiable index history or rather fitting time windows of the index?

Fot the latter I see the problem of how to estimate the whole set of parameters (up to 4) when using only a small dataset (I think of using something like the historical one month vola, but one month of data isn't enough at all to fit a hyperbolic model nor to apply the historical returns itself to simulation). Therefore I would need to scale the simulated returns by local historical vola. Since none of the distribution parameters are directly related to the vola/standard deviation, I would use the following scaling method for simmulated returns:

return scaled = simulated return * (sigma local historic vola) / (sigma calculated from fitted distribution parameters)

Would that be ok or a "no go"?

Furthermore, I didn't find any ready programmed estimators in Python or Scilab, that can fit any of the hyperbolic distributions or Heston like models to emprical returns. Aren't there any? And, I coudln't find any function, that calculates random numbers from the generalized hyperbolic distribution. Isn't there any? If not, how can it be derived from the densitiy function, using Python?

This is a huge bulk of questions, I just emerged myself into those things and need some "hints" into which direction to go. THanks a lot in advance.


1 Answer 1


Historical returns are not to be used 'untreated' for the calculation of option prices.

The expectation that you will be using in Monte Carlo will take the form $$ C(K,T) = E^Q\{D(T)\ \max[0, S_T-K, 0]\} $$ where $T$ is the maturity, $K$ is the strike price, $S$ is the stock price and $D$ is the discount factor. But the expectation is taken under the 'risk neutral' or, perhaps more accurately, the 'risk adjusted' probability measure (hence the $Q$ in $E^Q$). The historical returns are drawn from the 'real world' or 'physical' or 'objective' probability measure, say $E^P$.

The difference between the two reflect a number of factors, including risk preferences and arbitrage (but that is not in the scope of this question). At a minimum, you would like discounted stock prices to be martingales, therefore the expected return of the stock price has to be 'overriden' to match the discount factor. More accurately you would like to apply the 'Radon-Nikodym derivative' or 'state price density' or 'marginal rate of substitution' or 'pricing kernel' to express the option price as an expectation under the 'real world' mesure from which you sample, namely $$ C(K,T) = E^Q\{D(T)\ \max[0, S_T-K, 0]\} = E^P\{m(X_T)\ \max[0, S_T-K, 0]\} $$ where $X$ is a state vector that includes $S$ and $D$ amongst other things (potentially).

But say you follow the minimal approach, then you have to override the mean of your distribution. Hence the number of free parameters goes down from 4 to 3. Then I cannot see why you cannot use the empirical distribution, which the caveat that you will be underpricing OTM puts and overpricing OTM calls with respect to the market.

Now regarding the actual estimation, you mention Hyperbolic Distributions and Heston's model (a Stochastic Volatility model). Although they both are Gaussian models with randomized variance, they are completely different. Hyperbolic Distribution models are 'static' while Stochastic Volatility models are 'dynamic', in terms of the volatility. The former can be estimated using MLE, at least in principle, but they will need a large sample to identify the higher moment parameters. The latter are a real pain to estimate from historical spot prices alone, and also need a long sample to identify the latent volatility dynamics (but you can Goggle for the work of Jacquier, Polson and Rossi/ Eraker, Johannes and Polson/ Bates/ Doucet and Johansen). Or you can use a Garch-type filter instead for the time series, which can give you the spot volatility value.

Your scaling rule seems reasonable.

  • $\begingroup$ I understood that estimating both the static hyperbolic and the dynamic Heston model are quite difficult. I also feel that using a static model might not reflect the reality, I got a correlation of 0.7 between Eursstoxx50 prices and VSTOXX values. Interestingly I didn't find that correlation using historical vola. Anyway, it seems like vola is coupled to the stock price somehow and therefore I'm afraid that even GARCH for estimating vola of the spot might not be suitable. But at least I could use it as a "plug in estimate" of the vola for calculating the option prices. $\endgroup$ Jul 27, 2014 at 19:57
  • $\begingroup$ How do the historical returns have to be modified, when using them into Monte Carlo simulation for option price estimation? shifting the mean of the realworld historical returns to zero or lowering/increasing by the historical risk free rate? Still a bit confused about that. $\endgroup$ Jul 27, 2014 at 20:06
  • $\begingroup$ One has to be carefull when drawing conclusions from the correlation between log-returns of an equity index (like EuroStoxx) and changes of a sticky-delta quantity (like VSTOXX). Actual option volatilities are sticky-strike. A high correlation might be due to the presence of a skew, rather than due to genuine spot/volatility correlation. Not sure what you mean by 'historical vola' as this is not an observed quantity. Volatility can be coupled with spot, and there are Garch variants with asymmetries to do that. What do you want to do with these option prices anyway? $\endgroup$
    – Kiwiakos
    Jul 27, 2014 at 22:53
  • $\begingroup$ I found the correlation between absolute Eurostoxx values and VSTOXX. Correlation between log Eurostoxx returns and VSTOXX was much less for reasons I yet don't understand. I want to calculate option prices that exactly compensate the risk for expiring ITM. Like Black Scholes does, but with more realistic assumptions including the actual dynamic behaviour of the underlying. Is there a Garch Variant, that is implementad in Python or that can be easily implemented in Python, which can do the job I want it to do? I get historical vola by calculating standard deviation of log returns. $\endgroup$ Jul 28, 2014 at 8:48

Your Answer

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

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