In our Black-Scholes post, we saw that the log-return over any interval assumed by the model is normally distributed with variance proportional to , where is a constant. This implies three things that empirical data consistently contradict: no volatility clustering (large moves tend to follow large moves in real markets), no mean-reversion (volatility spikes during crises and subsides afterward), and symmetric returns (market exhibits negative skew).
These limitations give rise to the Heston model. Unlike the Black-Scholes, this model lets variance evolve as its own stochastic process, correlated with the stock price process. The correlation parameter is the key to generating skew: when , a falling stock price tends to coincide with rising volatility, which fattens the left tail of the return distribution exactly as observed.
***
The Heston model is defined by a pair of coupled SDEs. Under the risk-neutral measure ,
with .
The first equation is simply GBM with a time-varying volatility replacing the constant . The second equation is the Cox-Ingersoll-Ross (CIR) process, originally developed for interest rate modeling, where
- is the mean-reversion speed (large means variance snaps back quickly to its long-run level)
- is the long-run variance (the level that gravitates toward over time)
- is the vol-of-vol (governs how erratically variance itself moves)
- is the correlation between the two Brownian motions ( is the empirically relevant regime and generates the observed negative skew)
- is the initial variance (must be estimated or inferred from the market)
We’re not going to discuss the CIR process because it falls out of the scope of the article. However, it’s worth noting that the process is appealing for variance modeling for two reasons:
- Its mean-reverting drift encodes the empirical regularity that volatility doesn’t drift to infinity (or collapse to zero permanently)
- The diffusion term ensures that the process never becomes negative, which is a necessary property for a variance. The technical condition that guarantees almost surely is the Feller condition, which says that
Intuitively, the condition requires the mean-reverting push to be strong enough relative to the random fluctuations to prevent the process from touching zero. Unfortunately, in practice, calibrated Heston parameters frequently violate the Feller condition, which typically causes numerical issues and is actually one of the model’s known limitations.
Volatility as a Latent Process
Just like in the case of Black-Scholes, is unobservable. We can observe stock prices (or equivalently, log-returns), but variance is a hidden state that drives those observations. If you’ve seen our posts on HMM and Kalman Filters, we can spot the defining structure of a state-space model.
Formally, let be the observed process and be the latent state. Then, the system can be written schematically as:
This is basically a continuous-time (because we’re modeling infinitesimal changes), non-linear (via terms) state-space model with correlated noise (since ).
The statistical goal is therefore to estimate the filtered distribution , i.e., our belief about the current variance given all observed prices up to today. If the model were linear and Gaussian, this would reduce to the Kalman filter, yielding closed-form updates. But because of non-linearity, we are instead forced to resort to approximations. Two common approaches include:
- Extended Kalman Filters (EKFs), which linearize the dynamics around the current estimate via a first-order Taylor expansion. It’s fast but biased when non-linearity is severe.
- Particle filters (Sequential Monte Carlo), which represent the filtering distribution as a cloud of weighted samples that are propagated and reweighed at each observation. It’s asymptotically exact but computationally expensive.
It’s important to note that this filtering problem is distinct from calibration (fitting parameters to option prices), which we’ll discuss later. Filtering asks: given fixed parameters, what is right now? Calibration asks: what parameters make the model best fit observed prices? In practice, both problems must be solved jointly, and their interaction is a source of significant statistical difficulty.
Pricing via the Characteristic Function
So far, we’ve only talked about what the Heston model is. But more importantly, how do we use it to actually price options? Specifically, given the joint dynamics of and , how do we price a European call option? The Black-Scholes route of computing by integrating over a log-normal density is no longer available because the marginal distribution of under Heston is not log-normal and has no simple closed-form density.
Instead, we use the characteristic function (CF). For a random variable , its CF is given by
which is simply the Fourier transform of the p.d.f. of . Crucially, even when the p.d.f. itself is intractable, the CF may have a closed form—and this is exactly the case for Heston.
The reason traces back to the affine structure of the model. A model is affine if the drift and diffusion coefficients of the state vector are affine (linear plus constant) functions of the state. The Heston model is affine in the state : both the drift and the squared diffusion are linear in . This structure implies that the log-price characteristic function takes an exponential-affine form:
where is time to maturity, and and are deterministic functions satisfying a system of Riccati ODEs (i.e., ODEs that admit closed-form solutions). The derivation simply follows from applying Itô’s lemma to the conjectured exponential-affine form and matching coefficients; the affine structure of the model guarantees that the ansatz is self-consistent.
Once we have , option prices follow via the Carr-Madan formula, which expresses the call price as a Fourier integral:
where is a damping parameter that ensures integrability, and is a simple algebraic transform of . We then evaluate this integral numerically using the Fast Fourier Transform (FFT), which recovers option prices across an entire grid of strikes simultaneously in time. The efficiency of this approach is one of the main reasons Heston remains the industry workhorse for stochastic volatility pricing.
Calibrating Heston
As with Black-Scholes, we frame the calibration of the parameter vector (that best fits a panel of observed market option prices) as a non-linear least squares problem:
where are weights (often inverse bid-ask spreads, to down-weight illiquid options) and is computed via the aforementioned Carr-Madan FFT. The objective is smooth in , and gradients can be computed analytically or via automatic differentiation, enabling efficient gradient-based optimizers.
Now, there are several challenges to this in practice:
- The five parameters are not all independently identifiable from a finite option panel, where and are often nearly collinear in their effect on the smile shape, leading to flat likelihood landscapes and unstable estimates.
- The objective surface is non-convex. Different initializations can converge to qualitatively different parameter sets that achieve similar in-sample fit but behave very differently when extrapolating to unobserved strikes or maturities (multiple local minima).
- Calibrated parameters change day to day as the market moves, making Heston not a stable generative model of the data due to the need for daily recalibration. This instability, however, is a fundamental tension in derivatives modeling.
As we’ve seen, the Heston model is one the natural extensions to Black-Scholes via promoting volatility from a fixed constant to a mean-reverting stochastic process. It’s essentially a correlated, non-linear state-space model with a latent variance process, calibrated by non-linear least squares on option prices, and priced via Fourier inversion of a closed-form characteristic function.
It’s unfortunately also still an imperfect model, as its assumptions are still too well-behaved for real markets. Therefore, it’s still best to view it not as the final answer, but as the essential stepping stone between Black-Scholes and the richer world of jump-diffusion, rough volatility, and beyond.

Leave a Reply