Quantitative Finance Asked on August 3, 2020

When one construct surface for Implied volatilities using `Heston model`

from different Strike prices and Maturities, we get a surface where long dated volatilities are smaller than the short dated ones.

Is there any business reason for such shape?

This is definitely not generally true

`HestonModel`

's behaviour is controlled by several parameters, but looking at the equation for variance in the Heston model we see that the long term vol is determined by the $theta$ term, variance will tend to equal this because if it goes above the drift pulls it back down, and vice versa (ie. it's mean-reverting).

So, if initial variance `v0`

is lover than $theta$, long term IV will be higher than short-term IV. Below is a snippet that generates a vol surface demonstrating this

```
import QuantLib as ql
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def plot_vol_surface(vol_surface, plot_years=np.arange(0.1, 2, 0.1), plot_strikes=np.arange(80, 120, 1)):
fig = plt.figure()
ax = fig.gca(projection='3d')
X, Y = np.meshgrid(plot_strikes, plot_years)
Z = np.array([vol_surface.blackVol(float(y), float(x))
for xr, yr in zip(X, Y)
for x, y in zip(xr,yr) ]
).reshape(len(X), len(X[0]))
surf = ax.plot_surface(X,Y,Z, rstride=1, cstride=1, linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
spot = 100
rate = 0.0
today = ql.Date(1, 7, 2020)
calendar = ql.NullCalendar()
day_count = ql.Actual365Fixed()
spot_quote = ql.QuoteHandle(ql.SimpleQuote(spot))
# Set up the flat risk-free curves
riskFreeCurve = ql.FlatForward(today, rate, day_count)
flat_ts = ql.YieldTermStructureHandle(riskFreeCurve)
dividend_ts = ql.YieldTermStructureHandle(riskFreeCurve)
# Create new heston model
v0 = 0.01; kappa = 1.0; theta = 0.04; rho = -0.3; sigma = 0.4
heston_process = ql.HestonProcess(flat_ts, dividend_ts, spot_quote, v0, kappa, theta, sigma, rho)
heston_model = ql.HestonModel(heston_process)
# How does the vol surface look at the moment?
heston_handle = ql.HestonModelHandle(heston_model)
heston_vol_surface = ql.HestonBlackVolSurface(heston_handle)
# Plot the vol surface ...
plot_vol_surface(heston_vol_surface)
```

Correct answer by StackG on August 3, 2020

Get help from others!

Recent Questions

- How can I transform graph image into a tikzpicture LaTeX code?
- How Do I Get The Ifruit App Off Of Gta 5 / Grand Theft Auto 5
- Iv’e designed a space elevator using a series of lasers. do you know anybody i could submit the designs too that could manufacture the concept and put it to use
- Need help finding a book. Female OP protagonist, magic
- Why is the WWF pending games (“Your turn”) area replaced w/ a column of “Bonus & Reward”gift boxes?

Recent Answers

- Peter Machado on Why fry rice before boiling?
- Jon Church on Why fry rice before boiling?
- Joshua Engel on Why fry rice before boiling?
- Lex on Does Google Analytics track 404 page responses as valid page views?
- haakon.io on Why fry rice before boiling?

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP