Tutorials › Stochastic Calculus › Heston Implied-Volatility Smiles and Calibration Diagnostics

Interest-Rate Models and Other Applications · Tutorial 511 of 600

Heston Implied-Volatility Smiles and Calibration Diagnostics

Learn how Heston parameters influence smile shape and how to assess a calibration using option-price residuals, maturity patterns and parameter sensitivities.

Advanced 11 min read

What You'll Learn

  • Interpret the effects of initial variance, long-run variance, mean reversion, vol-of-vol and correlation on the implied-volatility surface.
  • Define Black–Scholes implied volatility and prove when it is uniquely determined by a call price.
  • Compute weighted price-residual objectives and compare candidate calibrations.
  • Use a local price sensitivity to calculate and check a least-squares parameter adjustment.
  • Diagnose systematic errors by their signs, strike locations and maturity patterns.
  • Recognize weak identification and the limits of interpreting calibration residuals.

From Heston Prices to an Implied-Volatility Smile

Heston’s model describes a stochastic variance, but market quotes are often organized as implied volatilities: the constant volatilities that reproduce observed option prices in the Black–Scholes formula. The implied-volatility smile is therefore a way to display option prices, not a separate assumption about the variance process. Its shape reflects how the Heston parameters combine across strikes and maturities.

Work on a filtered probability space \((\Omega,\mathcal{F},(\mathcal{F}_t),\mathbb{Q})\), where \(\mathbb{Q}\) is the risk-neutral measure used for pricing. Let \(B^1_t\) and \(Z_t\) be independent Brownian motions under \(\mathbb{Q}\), and set \(B^2_t=\rho B^1_t+\sqrt{1-\rho^2}Z_t\), for \(-1\leq\rho\leq1\). The Heston dynamics are

$$ \frac{dS_t}{S_t}=r\,dt+\sqrt{v_t}\,dB^1_t,\qquad dv_t=\kappa(\theta-v_t)\,dt+\xi\sqrt{v_t}\,dB^2_t. $$

Here \(r\) is the constant interest rate, \(v_t\) is instantaneous variance, \(\kappa>0\) is its mean-reversion speed, \(\theta>0\) its long-run level, \(\xi>0\) its volatility of volatility, and \(\rho\) the correlation between the asset and variance Brownian drivers. The stochastic integrals are Ito integrals; their integrands are adapted, progressively measurable, and square-integrable on each finite time interval. In particular, assume \(\mathbb{E}^{\mathbb{Q}}\int_0^T v_s\,ds<\infty\), so the integrands \(\sqrt{v_s}\) are square-integrable. The drift and diffusion terms are distinct: \(\kappa(\theta-v_t)\) is the variance drift, while \(\xi\sqrt{v_t}\) is its diffusion coefficient.

The initial variance \(v_0\) strongly influences short-maturity options. The long-run level \(\theta\) matters more as the horizon grows, while \(\kappa\) controls how quickly the variance is pulled toward that level. Larger \(\xi\) generally increases the range of variance outcomes and can increase smile curvature. Negative \(\rho\) means negative return shocks tend to accompany positive shocks to the variance Brownian driver \(B^2\), which push variance upward through its diffusion term. This leverage effect commonly contributes to higher implied volatilities at lower equity strikes. These are qualitative tendencies, not rules that each parameter changes every price in a fixed direction: the effects interact and depend on maturity and strike.

Implied Volatility Is a Price Transformation

For a European call with spot \(S>0\), strike \(K>0\), maturity \(T>0\), constant interest rate \(r\), and dividend yield \(q\), let \(C_{\mathrm{BS}}(\sigma)\) denote its Black–Scholes price at volatility \(\sigma\). For a price strictly between the no-arbitrage lower and upper bounds, implied volatility is the positive \(\sigma\) satisfying \(C_{\mathrm{BS}}(\sigma)=C\). The bounds are \(\max(S e^{-qT}-K e^{-rT},0)\) and \(S e^{-qT}\). At either bound, a finite, positive implied volatility need not exist.

Theorem: If \(S,K,T>0\), \(r,q\) are finite, and a call price \(C\) lies strictly between \(\max(S e^{-qT}-K e^{-rT},0)\) and \(S e^{-qT}\), then there is exactly one implied volatility \(\sigma>0\).

Proof. Write \(F=S e^{-qT}\), \(D=K e^{-rT}\), and \(a=\sigma\sqrt{T}\). The Black–Scholes call price is \(F\Phi(d_1)-D\Phi(d_2)\), where \(d_1=(\log(F/D)+a^2/2)/a\), \(d_2=d_1-a\), and \(\Phi\) is the standard normal cumulative distribution function. Differentiating with respect to \(\sigma\), using the normal density \(\phi\) and the identity \(F\phi(d_1)=D\phi(d_2)\), gives vega \(F\phi(d_1)\sqrt{T}>0\). Thus the price is continuous and strictly increasing for \(\sigma>0\). As \(\sigma\) decreases to zero, the price tends to \(\max(F-D,0)\); as \(\sigma\) increases without bound, \(d_1\) tends to positive infinity and \(d_2\) to negative infinity, so the price tends to \(F\). Continuity gives a volatility attaining every price strictly between these limits, and strict increase makes that volatility unique. \(\square\)

Worked Example: Reading the Slope and Curvature of a Smile

Suppose a single-maturity implied-volatility slice is quoted at log-moneyness values \(-0.2,0,0.2\), with volatilities \(0.28,0.22,0.19\), respectively. Compute the two adjacent slopes and the discrete second difference.

The left slope, from \(-0.2\) to \(0\), is \((0.22-0.28)/(0-(-0.2))=-0.06/0.2=-0.30\). The right slope, from \(0\) to \(0.2\), is \((0.19-0.22)/(0.2-0)=-0.03/0.2=-0.15\). The discrete second difference is \(0.28-2(0.22)+0.19=0.03\). Thus this slice slopes downward as strike increases, and its discrete curvature is positive at the middle quote.

Check: the slope becomes less negative moving from the left interval to the right: \(-0.15-(-0.30)=0.15\). The calculation uses the quoted volatilities only; it does not establish that one Heston parameter alone caused the shape.

Calibrating Prices and Defining Residuals

Let \(C_i^{\mathrm{mkt}}\) be the market price of option \(i\), and let \(C_i(p)\) be its Heston model price for parameter vector \(p=(v_0,\kappa,\theta,\xi,\rho)\). A common convention is to define the price residual as model minus market:

$$ r_i(p)=C_i(p)-C_i^{\mathrm{mkt}},\qquad J(p)=\sum_{i=1}^{n}w_i r_i(p)^2,\qquad w_i>0. $$

Calibration seeks parameters that make \(J(p)\) small, subject to the chosen parameter constraints. Weights can reflect quote reliability or scale; for example, inverse bid–ask-width weights emphasize options with narrower spreads. The price objective and an implied-volatility objective are not interchangeable: the same volatility error can correspond to different price errors because Black–Scholes vega varies by strike and maturity.

Worked Example: Comparing Two Price Fits

Consider three options with market prices \((10,8,5)\). Candidate A produces model prices \((9.8,8.1,5.2)\), and candidate B produces \((10.1,7.8,5.1)\). Use weights \((1,4,1)\) and the residual convention model minus market.

For candidate A, the residuals are \(9.8-10=-0.2\), \(8.1-8=0.1\), and \(5.2-5=0.2\). Its weighted objective is \(1(-0.2)^2+4(0.1)^2+1(0.2)^2=0.04+0.04+0.04=0.12\).

For candidate B, the residuals are \(10.1-10=0.1\), \(7.8-8=-0.2\), and \(5.1-5=0.1\). Its weighted objective is \(1(0.1)^2+4(-0.2)^2+1(0.1)^2=0.01+0.16+0.01=0.18\). Under this particular weighted objective, candidate A fits better because \(0.12<0.18\).

Check: without weights, candidate A has squared error \(0.04+0.01+0.04=0.09\); candidate B has \(0.01+0.04+0.01=0.06\). The unweighted ranking reverses. The larger weight on the middle option is why the weighted objective favors A. A calibration report should therefore state its residual convention and weighting scheme.

Parameter Sensitivity and Local Calibration

Near a current parameter vector \(p_0\), a first-order approximation to model prices is \(C(p_0+\Delta p)\approx C(p_0)+J\Delta p\), where \(J\) is the price-sensitivity matrix with entries \(J_{ij}=\partial C_i/\partial p_j\) evaluated at \(p_0\). A column of \(J\) describes how all fitted prices respond locally to one parameter. Nearly dependent columns indicate that different parameter changes can produce similar price changes; this is a warning of weak identification, not necessarily a pricing error.

Proposition: For a linearized price fit with residual vector \(r\), sensitivity matrix \(J\), and positive weights collected in diagonal matrix \(W\), any unconstrained least-squares adjustment \(\Delta p\) that minimizes \((r+J\Delta p)^\mathsf{T}W(r+J\Delta p)\) satisfies \(J^\mathsf{T}W(r+J\Delta p)=0\). If \(J^\mathsf{T}WJ\) is invertible, the minimizer is unique and equals \(-(J^\mathsf{T}WJ)^{-1}J^\mathsf{T}Wr\).

Proof. Set \(g(\Delta p)=(r+J\Delta p)^\mathsf{T}W(r+J\Delta p)\). Since \(W\) is symmetric, expanding and differentiating gives \(\nabla g=2J^\mathsf{T}W(r+J\Delta p)\). At an unconstrained minimum this gradient is zero, proving the stated equation. If \(J^\mathsf{T}WJ\) is invertible, rearranging gives the displayed formula. For any nonzero vector \(u\), \(u^\mathsf{T}J^\mathsf{T}WJu=(Ju)^\mathsf{T}W(Ju)>0\) when \(Ju\ne0\), because all diagonal entries of \(W\) are positive. Invertibility therefore makes the quadratic objective strictly convex in \(\Delta p\), so its stationary point is the unique minimizer. If the matrix is singular, the normal equation still holds at a minimum, but the adjustment need not be unique. \(\square\)

Worked Example: A One-Parameter Sensitivity Update

Use candidate A’s residual vector \(r=(-0.2,0.1,0.2)\) from the earlier fit, equal weights, and a one-parameter local sensitivity vector \(J=(2,1,-1)^\mathsf{T}\). Compute the least-squares parameter adjustment \(\delta\) in the linearized model.

The objective is \(\sum_{i=1}^3(r_i+J_i\delta)^2\). The scalar normal equation gives \(\delta=-J^\mathsf{T}r/(J^\mathsf{T}J)\). Here \(J^\mathsf{T}r=2(-0.2)+1(0.1)+(-1)(0.2)=-0.4+0.1-0.2=-0.5\), and \(J^\mathsf{T}J=2^2+1^2+(-1)^2=6\). Hence \(\delta=-(-0.5)/6=1/12\).

The updated linearized residuals are \(-0.2+2/12=-1/30\), \(0.1+1/12=11/60\), and \(0.2-1/12=7/60\). Their squared sum is \(1/900+121/3600+49/3600=4/3600+170/3600=29/600\), which is smaller than the original \(0.09=9/100\). Also, the updated residual vector is orthogonal to the sensitivity: \(2(-1/30)+11/60-7/60=-4/60+4/60=0\), as required by the normal equation.

Check: this is a first-order update, not a claim that the nonlinear Heston prices change exactly by \(J\delta\). Repricing at the adjusted parameters is needed to assess the actual residuals.

Residual Patterns as Calibration Diagnostics

A single objective value hides where a fit fails. Inspect residuals against strike, log-moneyness, and maturity, and compare their size with bid–ask spreads. A run of same-sign residuals at low strikes can indicate that the model underprices or overprices that part of the skew; errors that grow with maturity can point to a mismatch in the term structure of variance. These patterns guide investigation, but do not uniquely identify a parameter: several Heston parameters can move prices in overlapping ways.

Worked Example: Checking Residual Signs and Their Sum

Suppose three market prices are each \(1\), while the corresponding model prices are \(149/150\), \(149/150\), and \(151/150\). Compute the residuals, their signs, and their sum using model minus market.

The first two residuals are \(149/150-1=-1/150\) and \(-1/150\). The third is \(151/150-1=1/150\). Thus the first two residuals are negative and the third is positive. Their sum is \(-1/150-1/150+1/150=-1/150\), and their unweighted squared sum is \(1/22500+1/22500+1/22500=3/22500=1/7500\).

Check: the two negative residuals contribute \(-2/150\) to the sum and the positive residual contributes \(1/150\), leaving \(-1/150\). A small squared error does not imply that residuals cancel, nor does a nonzero sum alone diagnose a poor fit; interpret the errors by option and against the chosen weights and quote uncertainty.

Calibration diagnostics should also include parameter stability. If a small change in quotes produces a large change in \(\xi\) or \(\rho\) while fitted prices barely move, the data may not identify those parameters well. Compare calibrations across maturities or quote subsets, inspect sensitivity columns, and report constraints and starting values. A low residual objective is useful, but it is not by itself evidence that the parameters are stable or economically meaningful.

Common Pitfalls

Confusing the two Brownian shocks. When \(\rho<0\), a negative shock to \(B^1\) tends to accompany a positive shock to \(B^2\), not a negative one. Since the variance diffusion is \(\xi\sqrt{v_t}\,dB^2_t\), that positive variance-driver shock pushes variance upward locally.

Reading a residual without its sign convention. Here a positive residual means model price exceeds market price. If residuals are instead defined as market minus model, every sign reverses; the squared objective does not.

Treating a smile feature as a one-parameter fingerprint. Correlation often has a strong influence on skew, and vol-of-vol often influences curvature, but these effects interact with initial variance, mean reversion, maturity, and the rest of the parameter set. Diagnose the full price and sensitivity pattern rather than assigning a mismatch to one parameter from its appearance alone.

Check Your Understanding

Use the definitions and calculations above to answer the following.

  1. Why does the uniqueness of Black–Scholes implied volatility require a price strictly between the call’s lower and upper bounds?
  2. For residuals \((0.1,-0.1)\) and weights \((1,4)\), compute the weighted squared objective.
  3. What does a nearly dependent pair of sensitivity columns suggest about parameter identification?
  4. With \(\rho<0\), which direction of shock to \(B^2\) tends to accompany a negative shock to \(B^1\)?
  5. Why can a small calibration objective still conceal a systematic maturity pattern in the errors?