Skip to contents

Computes the European call or put price under the Merton (1976) jump-diffusion model using the analytic series expansion. The price is expressed as a Poisson-weighted sum of Black-Scholes prices with jump-adjusted drift and volatility.

The formula is: $$C = \sum_{n=0}^{N} \frac{e^{-\lambda' T}(\lambda' T)^n}{n!} \cdot BS(S, K, r_n, \sigma_n, T)$$ where \(\lambda' = \lambda(1 + \bar\mu_J)\), \(r_n = r - \lambda\bar\mu_J + n\log(1+\bar\mu_J)/T\), and \(\sigma_n^2 = \sigma^2 + n\sigma_J^2/T\).

Usage

priceEuropean(
  fit,
  S = 100,
  K = 100,
  r = 0.05,
  T_ = 1,
  type = "call",
  N_max = 50L
)

Arguments

fit

A JDFitResult object from fitMerton.

S

Positive numeric. Current asset price.

K

Positive numeric. Strike price.

r

Numeric. Continuously compounded risk-free rate.

T_

Positive numeric. Time to expiry in years.

type

Character. Either "call" or "put".

N_max

Integer. Number of series terms (default 50).

Value

A named list with elements:

price

Merton jump-diffusion option price.

bs_price

Black-Scholes benchmark price (no jumps).

jump_premium

Difference between Merton and BS price.

params

List of inputs and fitted parameters used.

References

Merton, R.C. (1976). Option pricing when underlying stock returns are discontinuous. Journal of Financial Economics, 3(1-2), 125-144.

Examples

# \donttest{
ret <- jdSampleData("merton", n = 500, seed = 42)
fit <- fitMerton(ret)
price <- priceEuropean(fit, S = 100, K = 100,
                       r = 0.05, T_ = 1, type = "call")
print(price)
#> Merton (1976) European Option Price
#> ------------------------------------
#>   Type          : CALL
#>   Asset price S : 100.0000
#>   Strike K      : 100.0000
#>   Risk-free r   :   0.0500
#>   Expiry T      :   1.0000 years
#> ------------------------------------
#>   Merton price  : 10.829613
#>   BS benchmark  : 10.535005
#>   Jump premium  : +0.294609
#> ------------------------------------
#>   sigma         :   0.2022
#>   lambda        :   0.5040
#>   mu_j          :   0.0801
#>   sigma_j       :   0.0000
# }