putCallParity {NMOF} | R Documentation |
Put-Call Parity
Description
Put–call parity
Usage
putCallParity(what, call, put, S, X, tau, r, q = 0, tauD = 0, D = 0)
Arguments
what |
character: what to compute. Currently only |
call |
call price |
put |
put price |
S |
underlier |
X |
strike |
tau |
time to expiry |
r |
interest rate |
q |
dividend rate |
tauD |
numeric vector: time to dividend |
D |
numeric vector: dividends |
Details
Put–call parity only works for European options. The function is
vectorised (like vanillaOptionEuropean
), except for
dividends.
Value
Numeric vector.
Author(s)
Enrico Schumann
References
Gilli, M., Maringer, D. and Schumann, E. (2019) Numerical Methods and Optimization in Finance. 2nd edition. Elsevier. doi:10.1016/C2017-0-01621-X
Schumann, E. (2023) Financial Optimisation with R (NMOF Manual). http://enricoschumann.net/NMOF.htm#NMOFmanual
Examples
S <- 100; X <- 100; tau <- 1; r <- 0.02; q <- 0.0;
vol <- 0.3; D <- 20; tauD <- 0.5
call <- vanillaOptionEuropean(S, X, tau, r, q, vol^2,
tauD = tauD, D = D, type = "call")$value
put <- vanillaOptionEuropean(S, X, tau, r, q, vol^2,
tauD = tauD, D = D, type = "put")$value
## recover the call from the put (et vice versa)
all.equal(call, putCallParity("call", put = put, S=S, X=X, tau=tau,
r=r, q=q, tauD=tauD, D=D))
all.equal(put, putCallParity("put", call = call, S=S, X=X, tau=tau,
r=r, q=q, tauD=tauD, D=D))
## Black--Scholes--Merton with with 'callCF'
S <- 100; X <- 90; tau <- 1; r <- 0.02; q <- 0.08
v <- 0.2^2 ## variance, not volatility
(ccf <- callCF(cf = cfBSM, S = S, X = X, tau = tau, r = r, q = q,
v = v, implVol = TRUE))
all.equal(ccf$value,
vanillaOptionEuropean(S, X, tau, r, q, v, type = "call")$value)
all.equal(
putCallParity("put", call=ccf$value, S=S, X=X, tau=tau, r=r, q=q),
vanillaOptionEuropean(S, X, tau, r, q, v, type = "put")$value)
[Package NMOF version 2.8-0 Index]