# Implied Volatility from Heston Model

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))

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

## Related Questions

### Is this how stock trading works?

4  Asked on October 27, 2021

### How to connect Bloomberg’s xbbp api to “Bloomberg Anywhere”

1  Asked on October 27, 2021 by gorlomi

### Question about using Ito’s lemma in Gamma PnL

1  Asked on October 27, 2021 by arshdeep

### Operator splitting method on three assets black scholes equation

0  Asked on October 27, 2021 by whatamisaying

### VIX vs S&P: Drift in the hedging residual?

1  Asked on October 27, 2021

### How to compute the historical VaR for a portfolio with long and short positions?

2  Asked on October 27, 2021 by user1131338

### Building Financial Data Time Series Database from scratch

10  Asked on October 27, 2021 by mountainclimber11

### What is the industry standard pricing model for CME-traded Eurodollar future (American) options?

2  Asked on October 27, 2021 by little

### Backtesting Market Making Strategy or Microstructure Strategy

3  Asked on October 27, 2021 by kch

### Hedging with different volatility (Ahmad and Wilmott paper)

2  Asked on October 27, 2021 by user40929

### Why do some mutual funds or indexes have an average effective maturity that is way larger (2-4 times larger) than the average effective duration?

3  Asked on October 27, 2021 by jorget

### Comparison of Carhart alphas (four-factor model)

2  Asked on October 27, 2021 by gauthier-golin

### Historical SPX Intraday data with volume

2  Asked on October 27, 2021 by tim-kim

### Value Option with Forward Volatilities

2  Asked on October 27, 2021 by maths-student-g

1  Asked on October 27, 2021 by j-swartz

1  Asked on October 27, 2021

### List of ticker-symbols of European countries

3  Asked on October 27, 2021 by syed-riaz-mahmood-ali

### Is it possible to match talib’s RSI results down to machine precision using just python?

0  Asked on October 27, 2021 by user165494

### Where to Get the Yield of One Year Constant Duration TIPS ( inflation protected bonds)

1  Asked on October 27, 2021 by lopo

### Modelling Geometric Browian Motion price model with stochastic volatility

1  Asked on October 27, 2021