Basic Prerequisites: 01 · From Zero and BSM · 02 The PDE & Derivation.
1. Intuition & Practical Objective
Heston (1993) asks a simple question and answers it completely: what is the simplest honest stochastic-volatility model that still has a fast price? The answer is a mean-reverting, square-root variance process correlated with the spot - a CIR process (Cox–Ingersoll–Ross), which is an affine process. Affineness is the whole trick: it makes the Laplace transform of the log-price analytic, so option prices come from a single one-dimensional integral instead of a PDE solve or a simulation.
Three things to internalise before the maths:
- Two risk factors, one incomplete market. Spot and variance are separate diffusions. You can hedge the spot with the underlying; you cannot hedge the variance with the underlying alone. The model therefore prices volatility risk through a market price of volatility risk (Gatheral 1.3) - after which the standard practice is to work directly in the risk-neutral measure, since the model is calibrated to option prices anyway.
- The Feller condition is a statement about the origin. is a square-root process; whether it can reach zero is decided by . This matters numerically (negative variance) and economically (vol clustering at zero), and - crucially - calibrated market parameters routinely violate it.
- Affinity is what you buy. Everything downstream - calibration to hundreds of quotes, VIX computation, time-dependent extensions - depends on being a closed-form function of .
The practical objective: be able to (a) write down the Heston SDE and PDE, (b) state and use the Feller condition, (c) derive/implement the characteristic function, (d) price by Fourier and validate the implementation against Black–Scholes and the martingale condition.
2. Mathematical Ground Truth & Derivations
2.1 The model and its valuation equation
Under , with the mean-reversion speed and the long-run variance:
(Gatheral 2.1–2.2, with , in the generic SV SDEs 1.1–1.2; the same SDEs in Bergomi 6.1 with , .)
Two risk factors ⇒ hedge the option with shares and units of a second (volatility-dependent) traded asset. Killing both and terms in the generic valuation equation (Gatheral 1.3) and setting the market price of volatility risk to zero (working in ) gives the Heston PDE (Gatheral 2.3):
Note the shape: the mixed derivative is what makes the skew appear (it is the coupling between spot and variance), and the quadratic-in-vol-of-vol term is what makes the wings lift.
2.2 Feller condition
For , the origin is unattainable (and inaccessible) iff
If the origin is regular and accessible: the process hits zero in finite time and reflects. It then stays non-negative - a square-root diffusion cannot go negative - but it spends time pinned near zero, and the variance distribution acquires an atom-like pile-up at the origin. Numerical schemes that ignore this produce negative (see 05 · Failure Modes & Practice).
2.3 The characteristic function (the heart of the model)
Write and . Heston’s ansatz is
(Gatheral 2.5): the price is “the pseudo-expectation of the final index, in the money” minus “strike the pseudo-probability of exercise”. Each solves a backward PDE with the same generator and different coefficients (Gatheral 2.6):
Fourier-transforming in , , the PDE collapses to a Riccati ODE system (Gatheral 2.9–2.11) with
With and (Gatheral 2.12):
and the pseudo-probabilities are the real integrals (Gatheral 2.13)
The case is the whole model. Setting (, ) gives precisely the characteristic function of the forward-measure log-return :
Two consequences worth stating as checks, because they are the standard way to police an implementation:
- Normalisation: .
- Martingale condition: at every .
The second identity is non-trivial - it fails if you pick the wrong root or get a sign of wrong - and it is verified numerically below. It also anchors the Feynman–Kac/risk-neutral logic of BSM · 02 on the two-factor model.
2.4 Pricing by Fourier (Lewis / Carr–Madan)
With in hand, the European call is one real integral. Gatheral’s zero-dividend form (5.6), which is exactly Lewis’ contour prescription, is
The shift to the contour makes the integrand decay and removes the singularity. A few thousand quadrature nodes suffice. (The equivalent Heston two-probability form uses the same with and must agree - a useful second implementation.)
3. Computational Implementation - CF, Fourier price, and four validation checks
We implement and the Lewis pricer, then run the four checks: (a) the martingale identity, (b) the Black–Scholes collapse, (c) put–call parity, (d) the ATM limit . Stdlib only.
What each check proves.
- (a) The martingale identity holds to machine precision at three maturities - the Riccati normalisation, the root choice and the sign are all right.
- (b) With and the Heston price collapses onto Black–Scholes to (the residual is Simpson-quadrature error, not model error). The SV model contains BSM as a limit.
- (c) Put–call parity is satisfied exactly (residual ) at every strike - a consequence of plus the structure of the Lewis formula. The implied vols trace the downward equity skew: at down to at .
- (d) As the ATM implied vol converges to - the instantaneous variance, exactly as it must ( at and ; the slight excess at , , is quadrature error in the Fourier integral at extremely small ). It then rises with maturity toward the deterministic average of the forward-variance curve, at (§04).
- An independent path check. A full Monte Carlo of the SDE pair (60 000 antithetic paths, 300 Euler steps, ATM) gives against the Fourier price - a gap, inside one standard error (), and the simulated average realized variance matches its theoretical value (simulated ). The Fourier route is validated end to end.
Caveat on the ATM level (flagged in the corpus). At the ATM implied variance is (), not the deterministic forward-variance average (). This is a genuine, large vol-of-vol effect, not an error: in the Bergomi–Guyon expansion (§04) the ATMF level correction carries a factor , which is large precisely when is small. It is also why Bergomi warns that the order-1 ATMF-level approximation is poor while the order-1 skew is accurate to - a distinction the next two pages quantify.
4. Failure Modes & First-Principles Breakdowns
- Complex-logarithm branch cuts (the “little trap”). The alternative Heston CF form written with , , is only almost equivalent to (2.12): the principal-value log jumps when its argument crosses the negative real axis, producing a discontinuous characteristic function (winding-number / Riemann-sheet problem; Kahl–Jäckel 2005). Use the form (2.12), whose argument appears never to cut the axis.
- Negative variance in simulation. Euler on the CIR step produces negative . The Milstein scheme stays positive provided - at no extra cost - and is therefore preferred to Euler (Gatheral 2.18). Where that condition fails one needs the exact CIR transition (Broadie–Kaya) or a matching-moment scheme (Andersen–Brotherton-Ratcliffe). Quantified in 05 · Failure Modes & Practice.
- Feller is not an assumption - it is an output. Nothing in the calibration forbids , and in practice the fit to an equity surface wants to violate it. Treat any scheme that assumes a.s. as broken.
- The order-1 ATM-level approximation is unreliable. Gatheral’s (3.18) - the formula everyone quotes for the Heston ATM term structure - is built from the unconditional expected-variance path, so its literal limit is , not ; and the corrections to the level are large whenever is small (§04). Trust the skew, distrust the level.
- Pricing by is not the same as pricing by . is a object built with the risk-neutral drift. Simulating the SDE with the physical drift and then discounting gives the wrong price; the drift must be absorbed by construction (or the market price of volatility risk specified).
- The model is one-factor and Markov in . Its forward-variance curve is determined, - so it cannot match a general variance-swap term structure and an ATM term structure simultaneously (Bergomi §6, §04). Making time-dependent is legitimate; making time-dependent is not, unless the corresponding forward-skew claims actually trade.
5. References
- Gatheral, The Volatility Surface
- Heston, Steven L. (1993), A closed-form solution for option prices with stochastic volatility with applications to bond and currency options, Review of Financial Studies 6(2), 327–343
- Bergomi, Stochastic Volatility Modeling
- Cox–Ingersoll–Ross (1985) and Duffie–Pan–Singleton (2000) (affine jump-diffusions
- Haug, The Complete Guide to Option Pricing Formulas
6. Connected Graph Bridges
- Back: 01 · From Zero
- Forward: 03 · SABR & Asymptotics · 04 · SV Dynamics · Index Hub
- Theory: Stochastic Calculus & Itô · BSM · 02 PDE & Feynman–Kac · VS · 06 Advanced Extensions (Heston by Fourier, from the surface side)