Merton's Jump-Diffusion: Adding Discontinuities to GBM
Merton's 1976 jump-diffusion model: Poisson jumps, the pricing formula, model-free bounds, and incomplete markets.
The Black-Scholes model assumes the stock price moves continuously. Anyone who has watched markets knows this is wrong: prices can gap. Earnings announcements, regulatory news, central bank decisions, and rare catastrophes all cause discrete jumps that the GBM SDE cannot capture.
Robert Merton (1976) published the model in this article six months after Black and Scholes. It preserves much of Black-Scholes analytical tractability while adding a component for tail risk. Many equity derivative models in production have Merton’s jump-diffusion somewhere in their ancestry.
The Set-Up
The stock price follows:
where is a Poisson process with intensity (expected number of jumps per year). At each jump, the multiplicative jump size is drawn i.i.d. from a lognormal distribution with parameters:
Three new parameters: . The expected jump size is . For equity models, is typically negative (jumps down are larger than jumps up) and is small (5-15 jumps per year on a single name, lower for indices).
Conditional on a jump, moves by . So the process:
The first two terms are GBM. The last is a jump: at a Poisson event, the stock is multiplied by instantaneously.
What Jumps Do to the Distribution
Mixing diffusion and jumps gives a heavier-tailed distribution than either alone. Mixing:
- Path of length with no jumps: lognormal with variance .
- Path of length with jumps: lognormal with variance , with the mean shifted by .
Unconditionally, the distribution of is a mixture of lognormals:
where is the normal density with mean and variance . The infinite mixture is heavier-tailed than lognormal: even at extreme strikes, the cumulative density doesn’t drop as fast.
Pricing Under Jump-Diffusion
The remarkable result: Merton’s formula is a mixture of Black-Scholes prices, weighted by Poisson probabilities.
For a European call:
with risk-neutralized parameters:
and the call price for the -jump case has:
where is the jump risk premium adjustment to the drift, accounting for the fact that the market doesn’t price jumps at their physical probability.
The main result is that, under the Poisson plus GBM structure, conditioning on exactly jumps in gives a lognormal distribution. Conditional pricing is therefore Black-Scholes with adjusted parameters, and the total price is the mixture over .
Deriving the Mixture
This result is much more general than Merton’s paper. It follows from the conditional expectation:
Conditionally on , the path has GBM between jumps and exactly jump times, but the distribution of depends only on the cumulative effect of the multiplicative jumps. Their order does not matter. The total log-return is:
where are i.i.d. . Each contributes a variance , so total variance of the log-return is . Mean: . Conditioning on , the call price is Black-Scholes with these parameters. Mixing over gives Merton’s formula.
The Markov property comes through this conditional argument. It is much simpler than writing the PDE.
Choosing Jump Parameters
Calibration chooses to fit an IV smile. In typical fits:
| Parameter | SPX | SPY | AAPL | Range | | -| | | | -| | | 0.5-2 / yr | 0.5-2 | 1-5 | 0-15 | | | -0.10 | -0.10 | -0.20 | -0.5 to 0 | | | 0.15 | 0.15 | 0.20 | 0.05 to 0.30 |
(Heuristic numbers from production calibration results; yours will vary.) means jumps tend downward, which captures the asymmetry of equity returns.
Two things to know about jump calibration:
ATM vol is somewhat ambiguous. With a stochastic vol model and jumps, you can hit the same ATM vol with different combinations. The smile disambiguates: more frequent smaller jumps vs. fewer larger jumps. For S&P, large jumps around 5-7% make up most of the action; for single names, smaller jumps dominate.
The skew is dominated by having a negative mean. With and , a downward jump is typically 15-20%, much larger than upward jumps. This puts mass in the lower tail, generating the skew.
Incomplete Markets
A subtle but important point: the market for a jump-diffusion is incomplete. There is more than one risk-neutral measure consistent with the same drift and diffusion. Specifically, you can choose and in many ways that give different risk-neutral jump distributions but the same risk-neutral diffusion. Each choice gives a different option price.
The standard fix is to introduce a market price of jump risk:
where is a market premium per unit jump intensity. This collapses the indeterminacy. Calibrating to the smile determines .
Pricing bounds: in incomplete markets, no-arbitrage gives a range rather than a single price:
For non-path-dependent European options in Merton’s model, the bounds are reasonably tight, often within 1-2 vols of each other. For path-dependent options like deep-OTM cliquets, the bounds can be 10-20 vols wide. Practitioners typically pick a parametrization and stick with it.
Using the Truncated Sum
In practice, the infinite sum terminates around or so. For and , the dominant terms are around and respectively. Truncate at where:
For , works for . For very long-dated options, you may need to go beyond this or use an FFT method.
from math import log, sqrt, exp
from scipy.stats import norm
from scipy.special import factorial
def merton_call(S0, K, r, T, sigma, lam, gamma, delta):
total = 0.0
for n in range(80):
weight = exp(-lam * T) * (lam * T)**n / factorial(n)
if weight < 1e-14: break
sigma_n = sqrt(sigma**2 + n * delta**2 / T)
r_n = r - lam * (exp(gamma + 0.5 * delta**2) - 1) + n * gamma / T
d1 = (log(S0 / K) + (r_n + 0.5 * sigma_n**2) * T) / (sigma_n * sqrt(T))
d2 = d1 - sigma_n * sqrt(T)
total += weight * (S0 * norm.cdf(d1) - K * exp(-r_n * T) * norm.cdf(d2))
return total
Combining Jumps with Stochastic Vol
Merton’s model fits a smile slice but has limited flexibility for the smile’s term structure. With five parameters, it can match one slice well without capturing how the smile evolves over time.
The standard fix: combine Merton’s jump-diffusion with Heston’s stochastic vol. This is Bates’ model (1996), also called the SVJ (Stochastic Vol with Jumps) model:
This adds two more parameters, and the jump-size distribution, to Heston. The pricing formula is a Heston mixture based on the characteristic function, with extra terms involving the jump moments. It captures the steep short-dated skew from jumps and the stochastic-volatility dynamics from diffusion.
In production, SVJ (Bates) is a common choice when a desk needs both jumps and stochastic volatility.
Limitations and What’s Next
Three limits to Merton-style jump-diffusion:
- Jump sizes are lognormal. Real jumps are clearly not lognormal. Earnings announcements give specific percentage moves; macro events are bimodal; crashes cluster. Each regime should have its own jump distribution, and people have studied double-exponential (Kou, 2002) and finite-mixture jumps.
- Jump intensity is constant. Real jumps cluster: vol-of-vol is higher after recent jumps. Hawkes processes model self-exciting jump intensity.
- The vol term is independent of jumps. Empirically, jumps and diffusion interact: when vol is high, jumps are larger. Variance-gamma and CGMY/KoBol models handle this with infinite-activity processes where every “step” of the process is a tiny jump.
All of these extensions preserve analytical tractability in some form. The unifying observation: anything that can be expressed as a Lévy process (independent increments) has a closed-form characteristic function, and therefore has a fast Fourier-based pricing formula.
The Takeaway
Merton’s jump-diffusion is a simple extension of Black-Scholes that captures tail risk. It fits the smile, has a closed-form mixture formula, and extends to models such as Bates and SVJ. Many desks use some variant in production.
The usual division of labor is that jumps explain the wings of the smile, while stochastic volatility explains the time dependence of ATM vol. Combining both effects is common in production pricing models.
The next article explains how to construct the volatility surface, the data-engineering layer of derivatives pricing.
Merton Beyond Vanilla: Pricing Path-Dependent Options
Pricing an Asian option under Merton’s jump-diffusion has the same mixture structure as European vanilla:
V_{\text{Asian}}(S_0, K, T) = \sum_n \mathbb{P}(N_T = n) \cdot V_{\text{Asian}}^{\text{BS}}_n(S_0, K, T)where is the Asian option price under Black-Scholes with bumped parameters for jumps. Specifically, and adjusted for jump-induced drift. The mixture formula works because, conditional on exactly jumps, the log-return’s distribution is lognormal and the Asian averaging is well-defined.
For paths where jumps occur, the path is segmented into jump-free sub-paths. The Asian average involves the running sum at each step, and the jumps contribute additive terms.
Numerical implementation:
def merton_asian_call(S0, K, r, T, sigma, lam, gamma, delta, n_paths, n_steps):
dt = T / n_steps
drift = (r - 0.5 * sigma**2 - lam*(np.exp(gamma + 0.5*delta**2) - 1)) * dt
vol = sigma * np.sqrt(dt)
payoffs = np.zeros(n_paths)
for i in range(n_paths):
S = S0
log_S = 0.0
A = 0.0
for step in range(n_steps):
jump_occurs = np.random.poisson(lam * dt) > 0
Z = np.random.standard_normal()
dlnS = drift + vol * Z
if jump_occurs:
dlnS += np.random.normal(gamma, delta)
S = S * np.exp(dlnS)
A += S
payoffs[i] = max(A / n_steps - K, 0)
return np.exp(-r*T) * payoffs.mean()
This is more expensive than vanilla Monte Carlo due to the inner loop, but vectorization is straightforward. Use the same variance-reduction tricks as for Asian BS options.
Where Merton Wins
Merton’s jump-diffusion is most useful in three specific situations:
Earnings announcements. Single-name equities have predictable scheduled jumps (earnings, FDA decisions, M&A close). Models with calibrated jumps to historical earnings moves capture this. Implied vols run-up before earnings; post-earnings, vol crush. Merton explains both.
Macro surprise. Periodic central bank meetings, regulatory rulings, or political events create discrete jumps that Merton handles cleanly. SPX around Federal Reserve announcement days can have end-of-day moves that pure GBM assigns probability to.
Hedging tail risk explicitly. Buying OTM puts on the S&P at 5-delta is the classic crash hedge. Merton’s jump component captures their price parametrically. It makes explicit that the price reflects risk-neutral jump intensity and jump-size probability mass.
For these situations, Merton outperforms Heston or local vol, because the latter two can fit the smile but obscure whether the source is “vol will rise” or “expected jump probability.” For SPX specifically, both contribute meaningfully.
Calibration Quality: A/B With Heston
A clean comparison: same smile fit, Merton vs Heston. What happens to forward-starting options?
Merton’s parameters are constant. The forward smile, meaning the implied vol of a 1-year forward-starting option, is determined by the path distribution. Under Merton, the forward smile flattens relative to the spot smile because diffusion in smooths the jumps. The effect is directionally reasonable but limited.
Heston’s volatility mean-reverts, so in a 1-year period the variance level moves toward . The forward smile reflects this mean-reversion. Empirically, Heston’s forward smile matches markets better than Merton’s for long-dated forward-starting options. For short-dated forward-starting options, Merton wins (because the jump component is dominant).
Bates (SVJ) combines the strengths: jumps for the short-dated wing, vol mean-reversion for the long-dated mean reversion. Most production desks use Bates in their “main” calibration.
The Merton vs. Variance-Gamma vs. CGMY Family
Merton is the simplest jump-diffusion model with finite activity. There are richer families:
Variance-Gamma (Madan & Seneta, 1990). Each increment is a time-changed Brownian motion. Equivalent to an infinite-activity process with vanishing small jumps. Has fat tails but no point masses.
CGMY (Carr, Geman, Madan & Yor, 2002). Generalized version of variance-gamma with parameters . governs small-jump behavior; govern the upward / downward tail rates.
Kou’s double-exponential (2002). Each jump size is asymmetric exponential. Lighter-tailed than CGMY but with explicit formulas.
Each has a characteristic function that makes pricing tractable. Each is more complex to calibrate. Each fails in some direction that a simpler model captures.
Merton’s tails are lognormal bumps: fat, but with a rapidly declining probability of very large jumps. CGMY allows infinite activity with jumps of many sizes. For equities with rare large jumps, Merton can be adequate; for markets with frequent small jumps, such as FX, CGMY may be more natural.
What Merton Doesn’t Do Well
Two specific limitations:
Jumps are bounded by jump size. In Merton, follows . A 30% down jump is possible but with probability . Real markets do sometimes gap 30% in a day (1987). Merton’s tails are still lighter than the empirical distribution.
Jumps are independent of vol. In Merton, is constant regardless of . In reality, vol rises as realized vol rises, which is correlated with jump risk. SVJ or jump-diffusion with stochastic vol fixes this.
For production, Merton is rarely the last word. It’s a stepping stone.
The Bates Model in Brief
Combining Heston’s stochastic vol with Merton’s jumps gives Bates (1996):
The last term adds jump-in-diffusion to variance; it is optional in the original Bates specification. Pricing uses a Heston-like characteristic function with extra terms:
Pinning down the form takes a page of algebra but the result is a closed form. Bates is what most desks use for vanilla daily calibration.
Beyond Bates: SVJ with Stochastic Rates
A further refinement: in the post-2008 world, rates are stochastic. Hull-White-Heston:
Model the rate jointly with the Heston and jump components. The resulting two-factor system is computationally intensive but remains tractable. A practical setup uses Heston when rates are nearly deterministic and Hull-White-Heston for risk-sensitive products.
The Take-Home Points
Merton’s jump-diffusion is the simplest model that adds point-mass tail behavior to GBM. The pricing formula is a Black-Scholes mixture weighted by Poisson probabilities. The model is incomplete, so calibration requires choosing a market price of jump risk.
The model’s strengths: closed-form mixture formula, fits the wings of the smile, simple calibration. Weaknesses: no dynamic vol interaction, finite jump size, doesn’t model small-jump clustering.
For more flexibility, Bates combines Heston and Merton for the best of both. For more exotic tail modeling, CGMY/VG go further with infinite-activity processes.
The practical choice is often Merton for quick estimates, Bates for daily calibration, and SABR or local-stochastic volatility for exotic risk where dynamics matter. Each model adds structure to capture effects that simpler models miss.
Reading list. Hull, Options, Futures, and Other Derivatives, 10th ed., Ch. 24 (2018). Wilmott, Paul Wilmott on Quantitative Finance, 2nd ed., Vol. 1, Ch. 12 (2007) for the general stochastic-jump framework. Merton, “Option Pricing When Underlying Stock Returns are Discontinuous,” Journal of Financial Economics (1976). Bates, “Jumps and Stochastic Volatility” (1996). Gatheral, The Volatility Surface, Ch. 4 (2006).