jumps {derivmkts} | R Documentation |
The functions cashjump
, assetjump
, and
mertonjump
return call and put prices, as vectors named
"Call" and "Put", or "Call1", "Call2", etc. in case inputs are
vectors. The pricing model is the Merton jump model, in which
jumps are lognormally distributed.
assetjump(s, k, v, r, tt, d, lambda, alphaj, vj, complete) cashjump(s, k, v, r, tt, d, lambda, alphaj, vj, complete) mertonjump(s, k, v, r, tt, d, lambda, alphaj, vj, complete)
s |
Stock price |
k |
Strike price of the option |
v |
Volatility of the stock, defined as the annualized standard deviation of the continuously-compounded return |
r |
Annual continuously-compounded risk-free interest rate |
tt |
Time to maturity in years |
d |
Dividend yield, annualized, continuously-compounded |
lambda |
Poisson intensity: expected number of jumps per year |
alphaj |
Mean change in log price conditional on a jump |
vj |
Standard deviation of change in log price conditional on a jump |
complete |
Return inputs along with prices, all in a data frame |
Returns a scalar or vector of option prices, depending on the inputs
A vector of call and put prices computed using the Merton lognormal jump formula.
McDonald, Robert L., Derivatives Markets, 3rd Edition (2013) Chapter 24
bscall bsput
s <- 40; k <- 40; v <- 0.30; r <- 0.08; tt <- 2; d <- 0; lambda <- 0.75; alphaj <- -0.05; vj <- .35; bscall(s, k, v, r, tt, d) bsput(s, k, v, r, tt, d) mertonjump(s, k, v, r, tt, d, 0, 0, 0) mertonjump(s, k, v, r, tt, d, lambda, alphaj, vj) ## following returns the same price as previous c(1, -1)*(assetjump(s, k, v, r, tt, d, lambda, alphaj, vj) - k*cashjump(s, k, v, r, tt, d, lambda, alphaj, vj)) ## return call prices for different strikes kseq <- 35:45 cp <- mertonjump(s, kseq, v, r, tt, d, lambda, alphaj, vj)$Call ## Implied volatilities: Compute Black-Scholes implied volatilities ## for options priced using the Merton jump model vimp <- sapply(1:length(kseq), function(i) bscallimpvol(s, kseq[i], r, tt, d, cp[i])) plot(kseq, vimp, main='Implied volatilities', xlab='Strike', ylab='Implied volatility', ylim=c(0.30, 0.50))