jumps {derivmkts} | R Documentation |
Option pricing with jumps
Description
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.
Usage
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)
Arguments
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 |
Details
Returns a scalar or vector of option prices, depending on the inputs
Value
A vector of call and put prices computed using the Merton lognormal jump formula.
See Also
McDonald, Robert L., Derivatives Markets, 3rd Edition (2013) Chapter 24
bscall bsput
Examples
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))