Quantitative Finance & Derivatives
Merton Jump-Diffusion Option Pricing via Poisson-Weighted Black-Scholes
Price European options under sudden lognormal jumps using Merton’s (1976) jump-compensated Poisson-weighted Black-Scholes sum and verify convergence to pure Black-Scholes at lambda = 0.
Compensate risk-neutral drift k_bar before summing Poisson jump states
Merton (1976) models sudden crashes or earnings gaps by superimposing a compound Poisson jump process (intensity lam, log-jump mean mu_J, log-jump SD del_J) onto continuous diffusion volatility sig. A common implementation bug is forgetting the risk-neutral drift compensator k_bar = EXP(mu_J + 0.5 * del_J^2) - 1 and modified Poisson intensity lam_p = lam * (1 + k_bar).
Conditional on n = 0, 1, 2, 3 jumps over horizon T, the asset log-return is normal with effective variance sig_n^2 = sig^2 + n * del_J^2 / T and effective rate r_n = r - lam * k_bar + n * (mu_J + 0.5 * del_J^2) / T. With S = 100 (B2), K = 100 (B3), r = 0.05 (B4), sig = 0.20 (B5), T = 0.5 (B6), lam = 0.40 (B7), mu_J = -0.12 (B8), and del_J = 0.15 (B9), k_bar = EXP(-0.10875) - 1 = -0.103045, lam_p * T = 0.179391, and the 4-term Poisson weights capture 99.996% of total mass.
| Jump State n | Poisson Weight w_n (lam_p*T = 0.1794) | Conditional BSM Call c_n |
|---|---|---|
| n = 0 Jumps | EXP(-0.1794) = 0.835779 | c_0 at r_0 = 0.0912, sig_0 = 0.2000 |
| n = 1 Jump | w_0 * 0.179391 = 0.149931 | c_1 at r_1 = -0.1263, sig_1 = 0.2915 |
| n = 2..3 Jumps | 0.013448 + 0.000804 (Sum = 0.999963) | Captures fat-tail jump dispersion |
| Merton Jump Call vs Pure BSM | SUM(w_n * c_n) / SUM(w_n) | 7.6062 (vs pure BSM 6.8887 at lam = 0) |
Expected Percentage Jump Size k_bar and Compensated Intensity Formula
Compute k_bar = EXP(mu_J + 0.5 * del_J^2) - 1 first to verify the direction and magnitude of the drift compensation -lam * k_bar.
=ROUND(EXP(B8 + 0.5 * B9^2) - 1, 6)Normalized 4-State Merton Jump-Diffusion Call Formula
Place jump count n = 0, 1, 2, 3 in D2:D5, evaluate conditional Poisson weight w_n in E2:E5 and conditional Black-Scholes call c_n in F2:F5, and normalize SUMPRODUCT(E2:E5, F2:F5) / SUM(E2:E5). Setting lam = 0 in B7 collapses w_0 = 1 and w_1..w_3 = 0, matching pure Black-Scholes 6.8887.
=IF(OR(B5 <= 0, B6 <= 0, B7 < 0, B9 < 0), "Invalid Jump Input", ROUND(SUMPRODUCT(E2:E5, F2:F5) / SUM(E2:E5), 4))Try the example
Use the original values or change them to test your understanding.