The Heston option pricing model is supposed to be an improvement to the Black-Scholes model which had taken some assumptions which did not reflect the real world. The main assumption being that volatility remained constant over the time period of the option lifetime.

Of course, we know that the volatility of the underlying asset tends to fluctuate and rarely remains constant. Steven Heston came up with a mathematical model which kept volatility as a value which cannot be predicted and follows a random process. Furthermore, Heston’s model gives us a closed form solution which greatly simplified the process and led to greater adoption among the community. Let us move ahead and see the topics to be covered in this blog.

- Limitation of the Black Scholes Model
- Heston Model Formula with Example
- Heston Model in Python using quantlib Package
- Limitations of the Heston Model

If you would like to brush on options terminology, head on over to our options trading basics blog for a refresher. All right! Let’s start now.

## Limitation of the Black Scholes Model

The Black Scholes model was a revelation for the traders and made options pricing relatively simpler. However, to achieve this simplicity, the Black Scholes model assumes that the volatility remains constant. Furthermore, the risk-free rate of return was also kept constant to get a model which kept the variables at a minimum. The Black Scholes model also assumes that the stock does not payout dividends and the corresponding option cannot be exercised before the maturity date. If you want to see Black Scholes in Excel, head on over to our options trading in Excel blog. Surprisingly, the Black Scholes Model still worked and was adopted worldwide.

But this did not stop researchers from trying to modify the model to keep it as close to the dynamics of the market as possible. Thus, there are methods of factoring in the dividends after the model gives us a price and so on. But Steven Heston took a different approach. He managed to derive a mathematical model which states that volatility is a stochastic process and hence, a random process. This assumption is in line with the general sentiment of the market. Let’s look at it in detail now.

## Heston Model Formula with Example

Let us first understand why we have to be wary of treating volatility as a constant. Let’s say you kept volatility as constant. Now you plot a graph with the x-axis representing different strike prices and the y-axis representing the implied volatility of the group of options. You will find a curved line as a result. We call this the volatility smile. You can refer to this blog to understand implied volatility and how to plot volatility smile. This is due to the fact that implied volatility is higher for deep out-of-money options and is generally reduced as we move towards in or at-the-money options.

Surprisingly, it is said that the volatility smile was rare before the 1987 crash. After the crash, traders realised that OTM options, however rare, could happen.

The graph would look something like this:

According to the Black Scholes model, this should have been a flat line. To make sure the option prices are as close to the real world, the Heston model came up with a stochastic volatility model which would circumvent this limitation as well as keep it as a closed-form solution and thus, retain the relative simplicity of the model.

Now, we know that volatility is quite simply the upward and downward movement of a security over a period. It is technically measured as the standard deviation of the annualised returns over a period of time. Or quite simply the square root of the variance of the returns.

In fact, the Heston model takes two functions which are Brownian motion, the underlying asset price, and the variance of the variance.

The instantaneous variance is based on the Cox-Ingersoll-Ross model (CIR) model which is used for modelling interest rates in the market. Its assumption is that the rates are mean-reverting and never negative. The “square root” over the variance is used to keep only positive values.

Let’s now see the model equation and understand its components:

### Heston model equation and its components

$$ dS_t = rS_t + {\sqrt v_t}S_t*dW_t^S $$Here,
r is the risk-free rate, v_{t} is the instantaneous variance

ξ is the volatility of volatility

k is the rate at which vt returns to 0

θ is the long-run price variance

Note:

$$ W_t^S \text{ is the Brownian motion corresponding to the underlying asset’s price} $$ $$ W_t^v \text{ is the Brownian motion corresponding to the variance} $$Further, both brownian motions are negatively correlated. One way to see is that a sharp drop in equity prices increases the volatility.

$$ W_t^S*W_t^v= ρ dt $$where ρ is the correlation.

Heston has actually provided the following default parameters which he had used in the paper. They are as follows,

- ξ is the volatility of volatility
- k = 2
- θ = 0.01
- Vt = 0.01
- ξ = 0.1
- Option maturity = 0.5 year
- r = 0
- Strike price = 100.
- ρ = 0

Using the equation, Heston came up with the price for a European call option as follows

$$ C_T=e^{-r(T-t)}\int_0^∞dx(e^x-K)+ρ(x) $$Here x = log(S) and p(x) is the probability density function of the underlying asset’s price.

Of course, the time T is the time of maturity for the call option and the time t can be the time you want to calculate the option’s price.

To use this equation in practice, we use the Fast Fourier transform function which converts the probability density function from the x-space to u-space.

The equation is as follows:

$$ \phi_T(u)=E|e^{iux_T}|x_T=x| $$Of course, we will use Monte Carlo to generate various possibilities or paths. Let us now get to the heart of the matter. We will look at the python code for building the Heston model now.To brush up on the basics of Python, you can enrol for the Python for Trading course on Quantra.

## Heston model in Python using quantlib Package

(Thanks to Chamundeswari Koppisetti for providing the code.)

We are going to consider pricing plain vanilla option with no discrete dividends and no barriers.

We have considered the default five Heston parameters here (Note that these parameters can be calibrated to market parameters using various optimization techniques).

We will now construct the stochastic-volatility Heston process.

The current price of the option is calculated using analytic Heston-model engine based on Fourier transformation

The output is as follows:

option_price 7.03

Thus, in this way, we can build the Heston model using the quantlib python package. If you want to build the Heston model without using the package, then read on below.

We are pricing the same option integrating the SDE's using the Euler method, generating Montecarlo paths and then making averages.

The output is similar to the one we received when we used the quantlib package

Output:

7.02

Thus, in this way, we can build the Heston model using python. You can explore more advanced concepts like dispersion trading, exotic options, gamma scalping in the advanced options trading course. While the Heston model can be said as superior to the Black-Scholes model, it has its own limitations. Let’s see it in the next section.

## Limitations of the Heston Model

One of the main limitations of the Heston model is the presence of the parameters in the model which have to be calibrated carefully to provide a decent estimate of the option prices. Further, it is found that the Heston model suffers when it comes to predicting the option prices for short term options as the model fails to capture the high implied volatility. It is also comparatively more complex than the Black Scholes model which deters traders from using this option.

## Conclusion

We have seen how the Heston model improves the Black Scholes option pricing model by assuming that the volatility is a random process. We also went through the components of the model and also learnt its limitations with respect to the Black Scholes model. You can try out your own option trading strategies by starting the options trading learning track on Quantra to start trading.

*Disclaimer: All data and information provided in this article are for informational purposes only. QuantInsti® makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information in this article and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.*