Docs / nablatensor-quant / com.nablatensor.quant.analytic

final class

MertonJumpDiffusion

Merton's (1976) jump-diffusion price for a European option: a diffusion with volatility sigma plus a compound-Poisson jump component of intensity lambda whose multiplicative jump size is lognormal, ln Y ~ N(muJ, deltaJ^2).

The price is the Poisson-weighted average of Black-Scholes prices, one per possible number of jumps to expiry:

kappa   = exp(muJ + deltaJ^2 / 2) - 1            (expected relative jump size)
lambda' = lambda (1 + kappa)
sigma_n = sqrt(sigma^2 + n deltaJ^2 / T)
r_n     = r - lambda kappa + n ln(1 + kappa) / T
price   = sum_n  e^{-lambda' T} (lambda' T)^n / n!  *  BSM(S, K, T, r_n, sigma_n)

The series is truncated once the cumulative Poisson weight is within 1e-14 of one (and at n = 256 as a hard stop). As lambda -> 0 only the n = 0 term survives and the price collapses to GeneralizedBsm with q = 0.

This is the analytic oracle the MertonJumpModel Monte-Carlo step block (feature F7) is validated against.

Methods

static AnalyticGreeks of(OptionType type, double spot, double strike, double maturity, double rate, double vol, double jumpIntensity, double jumpMean, double jumpVol)
type
call or put
spot
spot S
strike
strike K
maturity
time to expiry in years T
rate
continuously-compounded risk-free rate r
vol
diffusion volatility sigma
jumpIntensity
Poisson intensity lambda (expected jumps per year)
jumpMean
mean of the log jump size muJ
jumpVol
standard deviation of the log jump size deltaJ
static double price(OptionType type, double spot, double strike, double maturity, double rate, double vol, double jumpIntensity, double jumpMean, double jumpVol)

Bare price — the truncated Poisson series.