Quant Memo
Advanced

Affine Jump-Diffusion Models

Heston, Vasicek, and Merton's jump-diffusion look unrelated, but they share one structural trick — every driving rate is a straight-line function of the state — and that single trick is what lets all of them be priced in closed form.

Prerequisites: Stochastic Differential Equations, Characteristic Function Pricing, Merton's Jump-Diffusion Model

Heston's stochastic volatility, Vasicek's interest rate, and Merton's jump-diffusion look like three unrelated models built by three different people for three different problems. They share a hidden structural feature that turns out to matter more than any of their surface differences: in every one of them, the drift, the variance, and the jump intensity are all straight-line — "affine" — functions of the current state. That single shared shape is exactly what makes each of them solvable in closed form, and it's why an entire family of new models keeps getting built the same way on purpose.

A recipe that scales in a straight line

Most recipes don't scale simply — doubling a cake recipe doesn't just double every quantity, because baking time and pan size interact in complicated ways. An affine recipe is the rare one that does scale simply: double the base quantity and every ingredient amount doubles too, with maybe one fixed extra pinch of salt added regardless of size. That linear-plus-constant structure is trivial to reason about no matter how large the batch gets. Affine models are built the same way: every rate governing the process is (a constant) plus (a constant times the current state) — nothing more exotic — and that keeps the whole machine solvable at any scale.

dXt=(a0+a1Xt)dt+b0+b1Xt  dWt+dJt,λ(Xt)=c0+c1XtdX_t = \left(a_0 + a_1 X_t\right) dt + \sqrt{b_0 + b_1 X_t}\; dW_t + dJ_t, \qquad \lambda(X_t) = c_0 + c_1 X_t

In plain English: the drift is a constant a0a_0 plus a constant times the state, the variance under the square root is likewise constant-plus-linear, and even the rate at which jumps arrive, λ\lambda, is constant-plus-linear in the state. Nothing here is quadratic, exponential, or otherwise curved in XtX_t — every governing rate is "affine," meaning linear plus a constant. That specific restriction is what makes the model's characteristic function solvable via a system of ordinary differential equations rather than requiring a full, generally-unsolvable partial differential equation.

Worked example 1: recognising the affine structure in Heston. Heston's variance process is dvt=κ(θvt)dt+ξvtdWtdv_t = \kappa(\theta - v_t)\,dt + \xi\sqrt{v_t}\,dW_t. Rewrite the drift as κθκvt\kappa\theta - \kappa v_t — that's a0=κθa_0=\kappa\theta and a1=κa_1=-\kappa, both constants, times 11 and vtv_t respectively: affine. Take κ=2\kappa=2, θ=0.04\theta=0.04: the drift at vt=0.09v_t=0.09 (30% vol) is 2(0.040.09)=0.102(0.04-0.09)=-0.10, pulling variance down, while at vt=0.01v_t=0.01 (10% vol) it's 2(0.040.01)=0.062(0.04-0.01)=0.06, pulling variance up — in both cases a simple straight-line function of the current level, never a curve.

Path explorer
14137time →
end (bold path) 91.46spread of ends 73.646 independent paths, same settings

That mean-reverting pull toward θ\theta is exactly the affine drift κ(θvt)\kappa(\theta-v_t) in motion — watch how it's always pulling proportionally back toward the same level, never bending the pull itself as the level changes.

Worked example 2: what breaks the affine property. Compare that to a hypothetical drift like κ(θvt2)\kappa(\theta - v_t^2) (quadratic in vtv_t) or κsinh(vt)\kappa\sinh(v_t) — plug in vt=0.09v_t=0.09 and vt=0.01v_t=0.01 and the ratio of drift responses no longer matches a straight line at all; vt2v_t^2 at 0.09 is 0.00810.0081 versus 0.00010.0001 at vt=0.01v_t=0.01, an 81-times difference for a 9-times difference in vtv_t, whereas the affine drift above scales exactly proportionally. Once that straight-line relationship breaks, the elegant closed-form characteristic function breaks with it, and pricing falls back to slower numerical methods like Monte Carlo or finite differences.

affine (straight line) non-affine (curved) state $X_t$
Affine models keep every governing rate on a straight line against the state. That single geometric restriction is what keeps the characteristic function solvable in closed form.

What this means in practice

Once a model is recognised as affine, its characteristic function can be found by solving a small system of ordinary differential equations (the Riccati equations from Duffie-Pan-Singleton) instead of a full PDE, and priced efficiently through Characteristic Function Pricing and Carr-Madan FFT Pricing. This is why quant researchers building a new pricing model deliberately try to keep it affine whenever possible — it isn't a mathematical nicety, it's the difference between a model that prices in milliseconds and one that requires a full Monte Carlo run for every quote.

Affine does not mean simple or unrealistic — Heston, with its full stochastic volatility and correlation structure, is affine and captures a rich volatility skew. The mistake is assuming "affine" is a synonym for "linear model" in the everyday statistical sense (like linear regression); here it specifically describes the functional form of the coefficients inside a stochastic differential equation, a much narrower and more technical property.

A model is affine when its drift, variance, and jump intensity are all straight-line functions of the state variable — a purely structural property, unrelated to how complex the model looks, that is exactly what makes its characteristic function solvable in closed form.

Related concepts

Practice in interviews

Further reading

  • Duffie, Pan & Singleton (2000), Transform Analysis and Asset Pricing for Affine Jump-Diffusions
  • Heston (1993), A Closed-Form Solution for Options with Stochastic Volatility
ShareTwitterLinkedIn