Price of a European Call under Merton's Jump--Diffusion Model
Price of a European Call under Merton's Jump--Diffusion Model
Computes the price of a European Call under Merton's jump--diffusion model (and the equivalent Black--Scholes--Merton volatility)
callMerton(S, X, tau, r, q, v, lambda, muJ, vJ, N, implVol =FALSE)
Arguments
S: current stock price
X: strike price
tau: time to maturity
r: risk-free rate
q: dividend rate
v: variance
lambda: jump intensity
muJ: mean jump-size
vJ: variance of log jump-size
N: The number of jumps. See Details.
implVol: compute equivalent Black--Scholes--Merton volatility? Default is FALSE.
Details
The function computes the value of a plain-vanilla European call under Merton's jump--diffusion model. Put values can be computed through put--call-parity (see putCallParity). If implVol
is TRUE, the function also computes the implied volatility necessary to obtain the same price under Black--Scholes--Merton. The implied volatility is computed with uniroot from the stats package.
Note that the function takes variances as inputs (not volatilities).
The number of jumps N typically can be set 10 or 20. (Just try to increase N and see how the results change.)
Returns
Returns the value of the call (numeric) or, if implVol is TRUE, a list of the value and the implied volatility.
References
Gilli, M., Maringer, D. and Schumann, E. (2019) Numerical Methods and Optimization in Finance. 2nd edition. Elsevier. tools:::Rd_expr_doi("10.1016/C2017-0-01621-X")
Merton, R.C. (1976) Option Pricing when Underlying Stock Returns are Discontinuous. Journal of Financial Economics 3 (1--2), 125--144.