The Heston model is used by quants who build option pricing models, and by the staff who validate those models, to obtain prices that match the market smile.

Two stochastic processes for the stock price and the variance

The Heston model replaces the constant volatility of the Black-Scholes model with a variance vtv_t that moves over time, which makes it a stochastic volatility model. The stock price StS_t and the variance vtv_t follow separate stochastic processes, and the two Brownian motions that drive them have a correlation ρ\rho1. The equations below are written under the risk-neutral measure, with the drift of the stock price set to r−qr - q. Read κ\kappa and vˉ\bar v as values that already include the price of variance risk. The assumption about the price of risk is covered in the section "Assumptions and limits".

dSt=(r−q) St dt+vt St dWtSdS_t = (r - q)\,S_t\,dt + \sqrt{v_t}\,S_t\,dW_t^{S} dvt=κ(vˉ−vt) dt+ξvt dWtv,dWtS dWtv=ρ dtdv_t = \kappa(\bar v - v_t)\,dt + \xi\sqrt{v_t}\,dW_t^{v}, \qquad dW_t^{S}\,dW_t^{v} = \rho\,dt

Here rr is the interest rate and qq is the rate of the dividends paid continuously on the stock. In the equation for the variance, the first term on the right side is mean reversion, which pulls the variance back to the long-run level vˉ\bar v at speed κ\kappa. The second term is a random shock proportional to vt\sqrt{v_t}. A process of this form is called a CIR process (square-root process), and it keeps the variance from turning negative2.

The model has five parameters, each with its own role.

Symbol Name Role Effect on the smile (in the source's FX example)
v0v_0 Initial variance Current level of the variance Overall height of the smile
vˉ\bar v Long-run variance Level the variance reverts to Height. Acts much like v0v_0
κ\kappa Speed of mean reversion How fast the variance returns to vˉ\bar v Near the center. The wings barely change
ξ\xi Volatility of variance Size of the random moves in the variance Curvature
ρ\rho Correlation between the stock price and the variance How the two moves are tied together (direction and strength) Slope (asymmetry)

The right-hand column shows how the shape of the smile changes when each parameter is moved one at a time, in the source's FX example3. ξ\xi is also called the volatility of volatility (vol of vol). In the Heston model, however, ξ\xi is the coefficient on the random moves of the variance, and the coefficient on the random moves of the volatility vt\sqrt{v_t} is ξ/2\xi/24. The values cannot be compared directly with the SABR model, where ν\nu is the coefficient on the random moves of the volatility itself.

In equity markets, the correlation ρ\rho is usually set to a negative value. It represents the variance rising when the stock price falls5.

Mean reversion of the variance and the Feller condition

The expected variance approaches vˉ\bar v from v0v_0 exponentially. The expected value at time tt is given by the following formula.

E[vt]=vˉ+(v0−vˉ) e−κtE[v_t] = \bar v + (v_0 - \bar v)\,e^{-\kappa t}

The larger κ\kappa is, the faster the approach. Consider a hypothetical example in which v0=0.0225v_0 = 0.0225 (volatility of 15%), vˉ=0.04\bar v = 0.04 (20%), and κ=2\kappa = 2. The expected values by maturity are as follows6.

Maturity tt (years) e−κte^{-\kappa t} E[vt]E[v_t] E[vt]\sqrt{E[v_t]} (%)
0.25 0.606531 0.029386 17.14
1 0.135335 0.037632 19.40
3 0.002479 0.039957 19.99

The longer the maturity, the closer the expected variance gets to 0.04, which corresponds to 20%. The rightmost column is the square root of the expected variance, and it is not the implied volatility itself.

Deep diveDeriving the formula for the expected variance

Taking the expected value of both sides of the equation for the variance, the expected value of the random term ξvt dWtv\xi\sqrt{v_t}\,dW_t^{v} is 0, which leaves the following differential equation.

ddtE[vt]=κ(vˉ−E[vt])\frac{d}{dt}E[v_t] = \kappa\bigl(\bar v - E[v_t]\bigr)

Solving it with the initial value E[v0]=v0E[v_0] = v_0 gives the formula above.

The Feller condition decides whether the variance reaches 0. If the following condition holds, the CIR process never reaches 0 and stays strictly positive7.

2κvˉ≥ξ22\kappa\bar v \ge \xi^2

The same condition is also written as 4κvˉ/ξ2≥24\kappa\bar v/\xi^2 \ge 2. In the example above, with κ=2\kappa = 2 and vˉ=0.04\bar v = 0.04, the left side is 2×2×0.04=0.162 \times 2 \times 0.04 = 0.16. If ξ=0.3\xi = 0.3, then ξ2=0.09\xi^2 = 0.09 and the condition holds (4κvˉ/ξ2=3.564\kappa\bar v/\xi^2 = 3.56). If ξ=0.5\xi = 0.5, then ξ2=0.25\xi^2 = 0.25 and it does not hold (4κvˉ/ξ2=1.284\kappa\bar v/\xi^2 = 1.28).

If the condition fails, the variance touches 0 repeatedly, but it does not stay there. When the model is fitted to market prices, parameters that violate the condition are not unusual. With those parameters, the volatility repeatedly falls below 1%, a pattern that is not observed in the market8. The condition also bears on whether you need to take care that the variance does not turn negative in a Monte Carlo simulation.

What sets the slope and the curvature of the smile

The Black-Scholes model gives the same implied volatility at every strike price. In the Heston model, two parameters break that flat shape.

  • Raising ξ\xi increases the curvature of the smile. If ξ=0\xi = 0, the variance is deterministic and the smile is flat.
  • Moving ρ\rho from 0 to a negative value makes puts more expensive and gives a downward-sloping shape, in which the implied volatility is higher at lower strikes. Moving it to a positive value makes calls more expensive and gives an upward-sloping shape.

These are descriptions from the source's FX example9. When ρ=0\rho = 0, the smile is nearly symmetric, though not perfectly so.

Here is a numerical look at the effects. Consider a hypothetical example in which a call on a European option has an underlying price of 100, an interest rate of 1%, a maturity of 1 year, and no dividends. The initial variance and the long-run variance are 0.04 (volatility of 20%), and the speed of mean reversion is 2. The prices come from the semi-analytical solution (next section), converted to implied volatilities with the Black-Scholes formula10.

Strike ξ=0.02\xi = 0.02, ρ=0\rho = 0 ξ=0.3\xi = 0.3, ρ=0\rho = 0 ξ=0.3\xi = 0.3, ρ=−0.7\rho = -0.7 ξ=0.3\xi = 0.3, ρ=0.7\rho = 0.7
80 20.00 20.17 22.43 16.48
90 20.00 19.67 20.79 18.00
100 20.00 19.50 19.27 19.54
110 20.00 19.59 17.88 20.94
120 20.00 19.88 16.69 22.19

The implied volatilities in the table are in percent. With ξ\xi close to 0 the smile is flat, and with ξ=0.3\xi = 0.3 and ρ=0\rho = 0 both ends are lifted slightly. ρ=−0.7\rho = -0.7 gives the downward slope common in equities, and ρ=0.7\rho = 0.7 gives an upward slope. The values of ρ\rho are enlarged to make the shapes easy to see. The source states that producing the strong skew typical of equities requires the correlation to be set very high (or very low)11.

The typical pattern in equity option markets is a strongly asymmetric skew, while FX markets show a smile shape12. Because ρ\rho, which creates the slope, and ξ\xi, which creates the curvature, are separate parameters, the model can fit these two features independently.

SimulatorHeston parameters and the shape of the smile
Inputs
yrs
%
14161820222426708090100110120130Implied volatility (%)Strike (underlying 100)
  • Heston smile
  • Flat volatility as ξ → 0

Call price and implied volatility by strike

StrikeCall priceVolatility (%)
8022.331322.43
9014.445920.79
1008.143519.27
1103.816117.88
1201.421316.69
ATM (strike 100) volatility (%)
19.27
Strike 80 minus strike 120 (points; positive means downward sloping)
5.74
Flat volatility as ξ → 0 (√ of the average variance, %)
20.00
√ of the expected variance at expiry (%)
20.00
Feller condition ratio 2κv̄/ξ²
1.78
At least 1: the condition holds (variance never reaches 0).
E[S_T] (characteristic function φ(−i); S₀e^(rT))
101.0050

Simplifications

  • The underlying is 100 with no dividends. Under the risk-neutral measure, the price and the variance follow the two stochastic processes in the article. The ratio of the Feller condition (2κv̄/ξ²) is shown in the results to tell whether variance can reach 0.
  • Prices are the semi-analytic solution: a numerical integral of the characteristic function (the stable form of Albrecher et al.). The integral is split into panels with 8-point Gauss-Legendre quadrature, and its upper limit is extended until the integrand is negligible (about 130 for the default values, several thousand when the variance is small and ξ is large). Even for parameters at the edges of the range, the price differs from an integral of a different formula (the Lewis form) by less than 1e-6.
  • Volatility is backed out from the price with the Black-Scholes formula. Strikes below the forward use the put price (from parity), and higher strikes use the call price; when no value is found (for example, an out-of-the-money price below 1e-8), "—" is shown and the chart draws only the longest continuous stretch.
  • The lower limit of ξ is 0.02 (the formula cannot be used at ξ = 0). ρ goes up to ±0.95. Real calibration (fitting parameters to market prices) is not covered; the parameters you enter are used as they are.

This simulator uses simplified calculations for learning. It cannot be used for valuing actual transactions or managing their risk. (Disclaimer)

About this simulator

Move the initial variance, the long-run variance, the mean-reversion speed, the volatility of variance ξ, the correlation ρ, the expiry, and the rate to see the implied volatility curve by strike. The initial values are the ξ = 0.3, ρ = −0.7 column of the worked example above, a downward-sloping smile. Setting ρ to 0.7 gives an upward-sloping smile, and setting it to 0 lifts both ends slightly. Lowering ξ to 0.02 makes the smile flat (the dashed line on the chart is the flat volatility in the limit ξ → 0). Raising ξ to 0.5 breaks the Feller condition, and the results panel says so. Prices are the semi-analytic solution from a numerical integral of the characteristic function; for short expiries and large ξ, the integration range is wide enough to keep the accuracy.

A semi-analytical solution using the characteristic function

In the Heston model, the characteristic function of the log stock price at maturity, φ(u,T)=E[exp⁡(iuln⁡ST)]\varphi(u, T) = E[\exp(iu \ln S_T)], can be written in closed form. Without dividends (q=0q = 0), and with S0S_0 the current stock price, the price of a European call is built from two terms that come from numerically integrating this characteristic function13.

C=S0P1−Ke−rTP2C = S_0 P_1 - K e^{-rT} P_2

P1P_1 and P2P_2 are terms determined by the distribution of the log stock price, and they can be written as the following integrals using φ\varphi. KK is the strike price and Re\mathrm{Re} is the real part.

P2=12+1π∫0∞Re ⁣[e−iuln⁡K φ(u,T)iu]duP_2 = \frac12 + \frac1\pi\int_0^\infty \mathrm{Re}\!\left[\frac{e^{-iu\ln K}\,\varphi(u,T)}{iu}\right]du P1=12+1π∫0∞Re ⁣[e−iuln⁡K φ(u−i,T)iu φ(−i,T)]duP_1 = \frac12 + \frac1\pi\int_0^\infty \mathrm{Re}\!\left[\frac{e^{-iu\ln K}\,\varphi(u-i,T)}{iu\,\varphi(-i,T)}\right]du

The denominator φ(−i,T)\varphi(-i,T) in P1P_1 is the value corresponding to E[ST]E[S_T] (=S0erT= S_0 e^{rT}). It scales the whole expression so that it can be used as a probability.

Because the integrand can be written analytically, only the integral needs to be computed numerically. This is called a semi-analytical solution. Unlike Monte Carlo simulation, it does not need to generate random paths. The speed when prices are computed many times in calibration is a strength of the model.

The characteristic function takes the following form. ii is the imaginary unit, uu is the integration variable, TT is the maturity, and qq is taken to be 014.

φ(u,T)=exp⁡(iu(ln⁡S0+rT)+C(u,T)+D(u,T) v0)\varphi(u, T) = \exp\bigl(iu(\ln S_0 + rT) + C(u,T) + D(u,T)\,v_0\bigr) C(u,T)=κvˉξ2((κ−ρξiu−d) T−2ln⁡1−g e−dT1−g)C(u,T) = \frac{\kappa\bar v}{\xi^2}\left((\kappa - \rho\xi iu - d)\,T - 2\ln\frac{1 - g\,e^{-dT}}{1 - g}\right) D(u,T)=κ−ρξiu−dξ2⋅1−e−dT1−g e−dTD(u,T) = \frac{\kappa - \rho\xi iu - d}{\xi^2}\cdot\frac{1 - e^{-dT}}{1 - g\,e^{-dT}} d=(ρξiu−κ)2+ξ2(iu+u2),g=κ−ρξiu−dκ−ρξiu+dd = \sqrt{(\rho\xi iu - \kappa)^2 + \xi^2(iu + u^2)}, \qquad g = \frac{\kappa - \rho\xi iu - d}{\kappa - \rho\xi iu + d}
Deep diveTwo forms of the characteristic function and numerical instability

A form of the characteristic function with the sign of dd reversed also appears in the literature. The two differ only in which of the two values of the complex square root is taken, and they are mathematically the same function. However, if you take the principal value of the complex logarithm, the value jumps discontinuously each time the argument crosses the negative real axis. The form in the original paper has the opposite sign of dd from the formula above, and in numerical integration these jumps become a problem. When the maturity is long (beyond 3 to 5 years in the source's example), prices can be badly off. The form above has been shown to be stable over the whole range of parameters15.

What calibration fits

The steps for fitting the Heston model to a smile with a single maturity are as follows.

  1. Take the series of market implied volatilities for that maturity.
  2. Set the initial variance v0v_0 to the at-the-money (ATM) value and fix the speed of mean reversion κ\kappa. Set trial values for the long-run variance vˉ\bar v, the volatility of variance ξ\xi, and the correlation ρ\rho.
  3. With these parameters, integrate the characteristic function numerically to get the call price.
  4. Convert the price to an implied volatility with the Black-Scholes formula.
  5. Compare the result with the market implied volatilities, and choose vˉ\bar v, ξ\xi, and ρ\rho so that the gap becomes small. If the gap is large, repeat from step 3 with only vˉ\bar v, ξ\xi, and ρ\rho changed and v0v_0 and κ\kappa left as they are.

The key point is that the model price is not compared with the market directly but is first converted to an implied volatility, which is the same measure as the market quotes.

The Heston model is fitted to the series of implied volatilities of European options with the same maturity. In the source's FX example, three of the five parameters are effectively fitted: the long-run variance vˉ\bar v corresponds to the level of the smile (the ATM value), ξ\xi to the curvature (quoted in the market as the butterfly), and ρ\rho to the slope (quoted as the risk reversal)16. The source also shows a way to narrow the problem: fix the initial variance beforehand from the ATM value, and fix κ\kappa because its effect overlaps with that of ξ\xi17.

In the source's FX example, when the smile was fitted separately for each maturity, the parameter values differed from maturity to maturity18. The fitting procedure, the objective function, and overfitting are covered in Model Calibration.

Assumptions and limits

Short-maturity smiles are hard to fit with this model. In the source's EUR/USD example (July 1, 2004 and July 22, 2010), maturities of 3 months or more fit well, while those under 3 months fit poorly. When you try to fit short maturities, ξ\xi and the speed of mean reversion tend to become too large, and the source takes this as a sign that the price process wants to jump. Models with jumps have been studied19.

When generating paths for the variance with Monte Carlo simulation, the ordinary Euler discretization can make the variance negative. Remedies in use include truncating the variance at 0, reflecting it, and drawing from the exact transition distribution20.

Fitted parameters can change a lot over time. In the same source's example, ρ\rho for maturities of 1 month or more ranged from −0.01 to 0.05 in 2004 and from −0.4 to −0.3 in 201021.

A stock and a deposit alone cannot replicate the moves of the variance. Replication requires adding other options. Pricing therefore requires an assumption about the market price of variance risk. The original Heston paper assumed that it is proportional to the variance22. A value computed with the Heston model is a value under the assumptions of this model.

Notes

  1. Albrecher et al., "The Little Heston Trap" (Wilmott Magazine, January 2006), section 2 (page 3). The source's η\eta, λ\lambda, and σ02\sigma_0^2 are replaced by vˉ\bar v, ξ\xi, and v0v_0. Janek et al., "FX smile in the Heston model" (arXiv, 2010), section 1.2 (page 2). This page reads the foreign interest rate term as qq. ↩

  2. Albrecher et al., "The Little Heston Trap," section 2 (page 3), treats the variance as a mean-reverting square-root process (CIR process). The non-negativity is in Janek et al., "FX smile in the Heston model," section 1.3.3 (page 8). ↩

  3. Janek et al., "FX smile in the Heston model," section 1.4.1 (pages 11 to 13). The source explains that v0v_0 sets the height, ξ\xi (the source's σ\sigma) sets the curvature, vˉ\bar v (the source's θ\theta) acts much like v0v_0, κ\kappa acts near the ATM level, and the correlation changes the asymmetry. ↩

  4. The coefficient ξ/2\xi/2 follows from Ito's lemma (calculated for this site). The name vol of vol is from Janek et al., "FX smile in the Heston model," section 1.2 (page 2). The SABR ν\nu is from the equation dαt=ν αt dWtd\alpha_t = \nu\,\alpha_t\,dW_t on the SABR model page (Hagan et al.). ↩

  5. Albrecher et al., "The Little Heston Trap," section 2 (page 3). The source says the correlation is usually negative, which goes with the variance rising when the stock price falls. ↩

  6. The derivation of the formula is in the deep dive (calculated for this site). The values in the table come from E[vt]=0.04−0.0175 e−2tE[v_t] = 0.04 - 0.0175\,e^{-2t}. ↩

  7. Janek et al., "FX smile in the Heston model," section 1.3.3 (page 8), equation 1.32. Albrecher et al., "The Little Heston Trap," section 2 (page 3), writes the same condition as 2κη>λ22\kappa\eta > \lambda^2, without the equality. This page uses the form of Janek et al. ↩

  8. Janek et al., "FX smile in the Heston model," section 1.3.3 (page 8). The source covers the repeated touching of 0 when the condition fails, how common this is when fitting to market prices, the absence of volatility below 1% in the market, and the care needed in Monte Carlo simulation. ↩

  9. Janek et al., "FX smile in the Heston model," section 1.4.1 (pages 11 to 13). The source covers the limit ξ=0\xi = 0, the shape when the correlation is 0, and the effect of positive and negative correlation on call and put prices. ↩

  10. Calculated for this site. The characteristic function of Albrecher et al. is integrated numerically to get the call price, which is converted to an implied volatility with the Black-Scholes formula. ↩

  11. Janek et al., "FX smile in the Heston model," section 1.4.1 (page 13). The source says the model produces the skew typical of equity markets only when the correlation is set to a very high or very low value (a condition limited to the equity skew). ↩

  12. Janek et al., "FX smile in the Heston model," section 1.2 (page 2). The source describes a strongly asymmetric skew as typical of equities and smiles in FX. The "more symmetric" smile appears only in the same source's 2004 EUR/USD example (page 14). ↩

  13. Janek et al., "FX smile in the Heston model," section 1.3.1 (page 5), equations 1.12 to 1.18. P1P_1 and P2P_2 correspond to PjP_j in the same section. The FX equations are read with rd=rr_d = r and rf=0r_f = 0. ↩

  14. Albrecher et al., "The Little Heston Trap," section 3 (page 4), the second form (φ2\varphi_2). Here q=0q = 0 is set and the symbols are replaced with those in the text. Equations 1.29 to 1.31 in Janek et al., "FX smile in the Heston model," section 1.3.2 (page 7), have the same form. ↩

  15. Albrecher et al., "The Little Heston Trap," abstract (page 2) and section 3 (page 4). The rule-of-thumb threshold (3 to 5 years) is in Janek et al., "FX smile in the Heston model," section 1.3.2 (page 7). ↩

  16. Janek et al., "FX smile in the Heston model," section 1.4.3 (page 14). ↩

  17. Janek et al., "FX smile in the Heston model," section 1.4.1 (pages 12 to 13). The source covers setting v0v_0 to the ATM value, fixing κ\kappa and fitting the other three, and refitting with a different κ\kappa if the condition fails. ↩

  18. Janek et al., "FX smile in the Heston model," section 1.5.1 (page 16). Because the values differ by maturity, the source suggests considering a term structure for some of the parameters. ↩

  19. Janek et al., "FX smile in the Heston model," section 1.4.3 (page 14) and section 1.5.2 (page 19). ↩

  20. Janek et al., "FX smile in the Heston model," section 1.3.2 (pages 7 to 8). ↩

  21. Janek et al., "FX smile in the Heston model," section 1.4.3 (page 14). Values fitted to the EUR/USD volatility surface (July 1, 2004 and July 22, 2010). ↩

  22. Janek et al., "FX smile in the Heston model," section 1.3 (page 4). The source says tradable assets alone are not enough and other derivatives must be added, and that the original paper assumed the price of variance risk is proportional to the variance. ↩