Skip to content
Finance Lessons

Stochastic Processes

Mean Reversion & Jumps

The Ornstein–Uhlenbeck mean-reverting process and its half-life, jump-diffusion (Merton) models for fat tails and gap risk, and how to pick the right process for each asset.

9 min Updated Jun 7, 2026

Geometric Brownian Motion is a beautiful wanderer — but it wanders away forever. Its log price has no anchor, no home, no reason to come back. That’s fine for a stock index that genuinely trends. But an enormous slice of finance does the opposite: interest rates, credit spreads, implied volatility, commodity prices, the spread in a pairs trade — these things get yanked back toward some level. Push them away and a restoring force reels them in. And there’s a second thing GBM can’t do: its paths are perfectly continuous, so they glide. Real prices don’t always glide — sometimes they gap, lurching 20% overnight on a crash, an earnings bomb, or a currency de-peg. This lesson installs the two missing pieces: mean reversion (a price with a home) and jumps (a price that can teleport).

Before you read — take a guess

GBM-style processes drift away from their start with no pull back. Which financial quantity is that a BAD fit for?

Mean reversion: the Ornstein–Uhlenbeck process

Analogy. Picture a spring with a weight on the end, or a dog on a leash. Pull the weight far from rest and the spring yanks back hard; nudge it slightly and the pull is gentle. The further you stray, the stronger the tug home. That restoring force, plus a bit of random jostling, is mean reversion.

The mathematical version is the Ornstein–Uhlenbeck (OU) process, written as a stochastic differential equation:

dXt=κ(θXt)dt+σdWtdX_t = \kappa(\theta - X_t)\,dt + \sigma\,dW_t

Read it piece by piece — every symbol is intuitive:

  • θ\theta (theta) is the long-run mean: the level XX is pulled toward — the spring’s resting position.
  • XtX_t is where the process is right now.
  • (θXt)(\theta - X_t) is the gap between home and now. If XtX_t is above θ\theta, this is negative, so the drift pushes down; if below, it pushes up. The force always points home.
  • κ\kappa (kappa) is the reversion speed — the spring’s stiffness. Big κ\kappa means a fierce, fast pull back; small κ\kappa means a lazy, slow drift home.
  • σdWt\sigma\,dW_t is the same Brownian noise from GBM — the random jostle that keeps knocking XX off its perch.

The whole thing is a tug-of-war between a deterministic pull toward θ\theta and random shocks that scatter XX away. When the noise wins for a moment, XX strays; the pull then reels it back. The result is a path that bounces around θ\theta in a stable band instead of marching off to infinity.

An Ornstein–Uhlenbeck path hugging its mean
3 pathsκ = 0 random walkLong-run mean θ 100
98115132Long-run mean θ 1000252
Reversion speed κ5.0Half-life35 steps

Each path starts above the mean line and gets pulled home. Crank κ to the right and the path snaps tightly to θ — the half-life chip shrinks. Drop κ toward zero and it loosens into the faint random walk that just wanders off, never returning. That contrast is the whole point of mean reversion.

Crank the κ slider and watch the path hug the mean line; drop it toward zero and the path loosens into the faint random walk that drifts away and never comes home.

Half-life: how fast it snaps back

Knowing that a process reverts isn’t enough — a trader needs to know how fast. The clean summary number is the half-life: the time it takes for a deviation from θ\theta to decay halfway back, on average (ignoring new shocks). Because the pull decays the gap exponentially at rate κ\kappa, the half-life is:

t1/2=ln2κt_{1/2} = \frac{\ln 2}{\kappa}

Worked example. Suppose a credit spread reverts with κ=0.5\kappa = 0.5 per year. Then

t1/2=ln20.5=0.6930.51.39 years.t_{1/2} = \frac{\ln 2}{0.5} = \frac{0.693}{0.5} \approx 1.39 \text{ years.}

A shock takes about 1.4 years to half-decay — sluggish. Now take a fast-reverting quantity with κ=5\kappa = 5 per year:

t1/2=0.69350.14 years51 days.t_{1/2} = \frac{0.693}{5} \approx 0.14 \text{ years} \approx 51 \text{ days.}

Same formula, a much tighter leash. Bigger κ\kappa ⇒ shorter half-life ⇒ faster snap-back.

The stationary band

Here is the structural difference from a random walk. A pure random walk’s variance grows without bound — wait long enough and it can be anywhere. The OU process instead settles into a finite long-run variance:

Var=σ22κ.\text{Var}_\infty = \frac{\sigma^2}{2\kappa}.

The pull caps how far the noise can drag XX. With σ=0.4\sigma = 0.4 and κ=0.5\kappa = 0.5, the stationary variance is 0.16/1.0=0.160.16 / 1.0 = 0.16, a standard deviation of 0.40.4 around θ\theta. Double κ\kappa to 1.01.0 and the variance halves to 0.080.08 — a tighter band. Stronger reversion ⇒ smaller stationary spread. That bounded band, not the drift, is what makes mean-reversion tradeable: you know roughly how wide the rubber band stretches before it snaps back.

Fill in the half-life logic.

Pick the right option for each blank, then check.

The half-life of an OU shock is ln 2 divided by , so a reversion speed means a shorter half-life and a stationary band around the mean.

Quick check: κ = 2 per year — what’s the half-life?

Plug straight in: t1/2=ln2/κ=0.693/20.35t_{1/2} = \ln 2 / \kappa = 0.693 / 2 \approx 0.35 years, roughly four months. Notice the pattern — doubling κ\kappa halves the half-life. A process with κ=4\kappa = 4 would snap back in about two months; κ=8\kappa = 8, about one. The half-life is just a friendlier way of saying “this leash is this long.”

Where OU fits — and where it doesn’t

The OU process is the right tool wherever a quantity has a genuine anchor:

  • Short-term interest rates. The classic Vasicek model is OU applied to the short rate: a policy-anchored level θ\theta, a reversion speed κ\kappa, Gaussian shocks. (Its cousin the CIR model adds a tweak so the rate can’t go negative.)
  • Credit spreads. Risk premia widen in panics and compress in calm — they breathe around a level rather than trending forever.
  • Implied volatility. Vol spikes in a crash, then decays back toward a long-run average. Classic reversion.
  • Commodity prices. A marginal-cost-of-production floor and demand ceiling tether prices like oil or natural gas to an anchor.
  • The spread in a pairs / stat-arb trade. This is the big one. Take two related stocks; their individual prices trend (GBM-like), but a well-chosen spread between them is stationary and mean-reverting. Trade the spread: short it when stretched high, long it when stretched low, and let the pull do the work.

The pitfall — and it’s a costly one. Do not slap OU onto a single stock’s raw price. An individual equity has no fixed price anchor: a company that compounds value will see its price trend upward indefinitely, and there’s no law dragging it back to last year’s level. Modeling a stock price as mean-reverting will have you “buying the dip” forever as a falling stock keeps falling — you mistook a trend for a deviation. Mean reversion lives in spreads, ratios, and rates — not in raw equity levels.

This is exactly why cointegration matters: two individually trending (non-stationary) series can have a linear combination — their spread — that is stationary and mean-reverting. Find that cointegrating spread and you’ve found something OU genuinely fits, even though neither leg on its own does.

For each quantity, decide: does mean reversion (OU) fit it, or does it trend (GBM-like) with no anchor?

Place each item in the right group.

  • The cointegrated spread between two related stocks
  • The raw price of a single compounding growth stock
  • A credit spread that widens in panics, compresses in calm
  • A short-term interest rate near a policy target
  • A broad equity index over multiple decades
  • Implied volatility decaying back to a long-run level

Jumps: when prices gap

Mean reversion fixes the anchor problem. Jumps fix a different one. Pure diffusion — GBM and OU alike — has continuous paths: between any two instants the price passes through every value in between, never skipping. That smoothness is mathematically convenient and physically false. A pure-diffusion model cannot produce an overnight −20% gap, because to get from 100 to 80 it would have to trade through 99, 98, … and there simply is no trading overnight. Yet crashes, earnings surprises, takeover announcements, and currency de-pegs gap prices all the time.

The jump-diffusion (Merton) model patches this by adding a second engine on top of the diffusion:

dSt=μStdt+σStdWt+St(J1)dNt.dS_t = \mu S_t\,dt + \sigma S_t\,dW_t + S_{t^-}\,(J - 1)\,dN_t.

Don’t sweat the notation — the structure is simple. The first two terms are ordinary GBM: smooth drift and diffusion. The new third term is the jump engine:

  • NtN_t is a Poisson process with rate λ\lambda (lambda): a clock that fires at random times, λ\lambda times per year on average. Most of the time nothing happens and the price is just smooth GBM.
  • When the clock fires, the price is instantly multiplied by a random jump factor JJ (say 0.85 for a −15% gap, or 1.10 for a +10% pop).

So jump-diffusion is “GBM, but every so often the price teleports.” Calm continuous wandering, punctuated by rare, sudden gaps.

Diffusion with occasional Poisson jumps
With jumpsDiffusion onlyJumps this run
951001051000252
Jump intensity λ (per year)8Jumps this run0

Toggle to 'Diffusion only' to see the smooth GBM skeleton — it can drift but never gaps. Flip to 'With jumps' and the same path sprouts sudden cliffs. Raise λ and the gaps arrive more often. The jumps are everything pure diffusion structurally cannot do.

Toggle the chart between diffusion only and with jumps to see exactly what the jump component bolts on: the smooth path is what GBM gives you; the cliffs are what only jumps can produce.

Worked example. With jump rate λ=2\lambda = 2 per year, you expect about 2 jumps in a year (the Poisson mean is just λ\lambda). The probability of no jump at all in a year is

P(0 jumps)=eλ=e20.135,P(0 \text{ jumps}) = e^{-\lambda} = e^{-2} \approx 0.135,

about 13.5%. So even at two-jumps-a-year, roughly one year in seven passes with no gap at all — and the chance of two or more jumps is 1e2(1+2)10.406=0.5941 - e^{-2}(1 + 2) \approx 1 - 0.406 = 0.594, almost 60%. Jumps are rare per-event but, stacked over a year, very much in play.

A jump-diffusion model has jump rate λ = 1 per year. What is the probability of ZERO jumps in a given year?

Why jumps matter: fat tails & gap risk

Adding jumps isn’t cosmetic — it repairs the single biggest lie a Gaussian/GBM model tells about risk.

Fat tails and skew. Stacking rare large jumps on top of smooth diffusion makes extreme moves far more likely than a normal distribution allows, and (if down-jumps are bigger or more frequent than up-jumps) makes the left tail heavier — negative skew. That’s precisely the shape of real returns. It’s also why the volatility smile exists: option markets price in jump/crash risk that the smooth Black–Scholes (pure-GBM) model ignores, so implied vol bends upward at the wings. Jump-diffusion was one of the first models to explain the smile rather than paper over it.

Gap risk breaks hedging. Delta-hedging assumes you can continuously rebalance as the price moves smoothly. But you can’t trade inside a gap — when the price teleports from 100 to 80, there is no 90 at which to adjust. A delta-hedged book that’s perfectly neutral against small moves can take a brutal loss across a jump, because the hedge was calibrated for the smooth world that just stopped existing for a second.

Risk implication. Value-at-Risk, Greeks, and stress numbers computed under pure GBM systematically understate tail and gap risk. The model literally cannot imagine the crash, so it reports a portfolio as safer than it is. Many blow-ups trace back to a thin-tailed model meeting a fat-tailed world.

The pitfall. Jumps fix the tails but cost you estimation pain: a jump model adds parameters — the rate λ\lambda, the jump-size mean, the jump-size spread — and jumps are rare by definition, so a short data sample contains only a handful of them (or none). Calibrating λ\lambda from five years of data when the true rate is one big jump per decade is statistical guesswork. Richer model, hungrier for data, and the data is exactly what rare events refuse to provide.

A risk team prices Value-at-Risk for an options book using a pure-GBM (continuous, normal) model. What's the core danger?

Choosing a model

You now have three building blocks: GBM (trending, continuous), OU (anchored, continuous), and jump-diffusion (gaps on top of either). Picking the right one is mostly about answering two questions: does this quantity have an anchor? and can it gap?

Asset / quantityAnchor?Can it gap?Suitable process
Equity price (single stock, index)No — trendsMildlyGBM
Short-term interest rateYes — policy levelRarelyOU (Vasicek / CIR family)
Credit spread, implied volatilityYes — long-run levelSometimesOU (add jumps if gap-prone)
Stat-arb / pairs spreadYes — cointegrated meanNoOU
Asset with crash / earnings-gap riskNoYes — gapsJump-diffusion
FX rate under a peg / managed bandYes — the pegYes — de-pegs violentlyJump-diffusion (often + reversion)
Path-dependent payoff / nothing fits cleanlySimulate it (Monte Carlo)

Two judgment calls worth internalizing. First, anchor beats everything: if the quantity has a level it returns to, start from OU, not GBM — modeling a spread as a trendless wanderer throws away your entire edge. Second, gaps demand jumps: anything with crash, de-peg, or binary-event risk needs the jump term, or your risk numbers are fiction. And when no clean closed-form process fits — a basket of jumpy, reverting, correlated, path-dependent things — you stop hunting for a formula and simulate, which is what the Monte Carlo toolkit is for.

Fill in the model-selection rules.

Pick the right option for each blank, then check.

If a quantity has a level it returns to, model it with ; if it can teleport overnight on a crash or de-peg, you need ; and a stock price with no fixed anchor is best left as .

Putting it together

GBM walks away forever, but huge swaths of finance — rates, spreads, vol, commodities, pairs spreads — get pulled home. The Ornstein–Uhlenbeck process, dXt=κ(θXt)dt+σdWtdX_t = \kappa(\theta - X_t)\,dt + \sigma\,dW_t, is that spring: a restoring drift toward the long-run mean θ\theta with stiffness κ\kappa, plus noise. Its half-life ln2/κ\ln 2 / \kappa says how fast shocks decay, and its finite stationary variance σ2/(2κ)\sigma^2/(2\kappa) is the bounded band that makes reversion tradeable — but only on spreads, rates, and ratios, never a raw stock price. Pure diffusion can’t gap, so the jump-diffusion (Merton) model bolts a Poisson stream of sudden jumps onto GBM, with P(no jump in a year)=eλP(\text{no jump in a year}) = e^{-\lambda}. Jumps create the fat tails, skew, and gap risk that smooth models miss — which is why pure-GBM VaR and delta-hedges fail across a crash. Choose by asking anchor? (→ OU) and can it gap? (→ jumps); when nothing fits, simulate.

Big picture

Mean reversion & jumps — the whole map

  • Mean Reversion & Jumps
    • OU mean reversion
      • dX = kappa(theta − X)dt + sigma dW
      • theta is the home level, kappa the pull strength
      • Spring/leash: farther out, stronger the pull
    • Half-life and band
      • Half-life = ln 2 / kappa
      • Bigger kappa, faster snap-back
      • Finite stationary variance sigma squared / (2 kappa)
    • Where OU fits
      • Rates (Vasicek/CIR), spreads, implied vol
      • Commodities, cointegrated pairs spreads
      • NOT a raw stock price — no anchor, it trends
    • Jump-diffusion (Merton)
      • GBM plus a Poisson stream of sudden jumps
      • Rate lambda per year; P(no jump) = e to the minus lambda
      • Continuous diffusion alone cannot gap
    • Why jumps matter
      • Fat tails and skew, explains the vol smile
      • Delta-hedge fails across a gap you cannot trade
      • Pure-GBM VaR understates tail and gap risk
    • Choosing a model
      • Has an anchor, use OU
      • Can gap, add jumps
      • Nothing fits, simulate (Monte Carlo)
Anchor a process with OU, summarize its speed with the half-life, add Poisson jumps when prices can gap, and choose the model by asking whether the quantity has an anchor and whether it can teleport.

Recap: mean reversion & jumps

Question 1 of 40 correct

An OU process has reversion speed κ = 0.5 per year. What is the half-life of a deviation from the mean?

Check your answer to continue.

Next up — we put these processes to work, calibrating them to real data and simulating whole portfolios of anchored, jumpy, correlated assets. The building blocks are in place; now we make them earn their keep.

Mark lesson as complete