Title: | Option Pricing with Efficient Simulation Algorithms |
---|---|
Description: | Efficient Monte Carlo Algorithms for the price and the sensitivities of Asian and European Options under Geometric Brownian Motion. |
Authors: | Wolfgang Hormann [aut, cre], Kemal Dingec [aut] |
Maintainer: | Wolfgang Hormann <[email protected]> |
License: | GPL-2 | GPL-3 |
Version: | 0.1.2 |
Built: | 2024-12-09 06:37:59 UTC |
Source: | CRAN |
The Price, Delta and Gamma of European and Asian Options under Geometric Brownian Motion are calculated using the Black-Scholes formula and Efficient Monte Carlo and Randomized Quasi Monte Carlo Algorithms.
The OptionPricing package calculates the Price, Delta and Gamma for European options
using the Black-Scholes formula (see BS_EC
).
The price, Delta and Gamma for Asian call options under geometric Brownian motion are calculated using
a very efficient Monte Carlo and randomized quasi-Monte Carlo algorithm (see AsianCall
).
The function AsianCall_AppLord
implements
a high-quality approximation for the price of an Asian option.
Kemal Dingec, Wolfgang Hormann
# standard settings for an efficient simulation using QMC and variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method=c("best"), sampling=c("QMC"),metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # Calculation of the Price of an Asian option using a good approximation AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.2, S0 = 100) # standard settings for an efficient simulation using MC and variance reduction AsianCall(T=1,d=12,K=170,r=0.05,sigma=0.2,S0=100,method="best", sampling="MC",metpar=list(maxiter=100,tol=1.e-14,np=1000), sampar=list(n=10^5)) # Calculation of the approximate price, a bit different to the above result AsianCall_AppLord(T = 1, d = 12, K = 170, r = 0.05, sigma = 0.2, S0 = 100) # Calculation of the Price of an Asian option using a good approximation AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.2, S0 = 100) #Price, Delta and Gamma of European options using Black-Scholes BS_EC(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100) BS_EP(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100)
# standard settings for an efficient simulation using QMC and variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method=c("best"), sampling=c("QMC"),metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # Calculation of the Price of an Asian option using a good approximation AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.2, S0 = 100) # standard settings for an efficient simulation using MC and variance reduction AsianCall(T=1,d=12,K=170,r=0.05,sigma=0.2,S0=100,method="best", sampling="MC",metpar=list(maxiter=100,tol=1.e-14,np=1000), sampar=list(n=10^5)) # Calculation of the approximate price, a bit different to the above result AsianCall_AppLord(T = 1, d = 12, K = 170, r = 0.05, sigma = 0.2, S0 = 100) # Calculation of the Price of an Asian option using a good approximation AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.2, S0 = 100) #Price, Delta and Gamma of European options using Black-Scholes BS_EC(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100) BS_EP(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100)
Prices arithmetic average Asian Call options under geometric Brownian motion. It also estimates the sensitivities Delta and Gamma.
AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method=c("best","naive"), sampling=c("QMC","MC"), metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,seq.type="korobov",n=2039,a=1487, baker=TRUE,genmethod="pca"))
AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method=c("best","naive"), sampling=c("QMC","MC"), metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,seq.type="korobov",n=2039,a=1487, baker=TRUE,genmethod="pca"))
T |
time to maturity (in years) |
d |
number of control points |
K |
strike price |
r |
risk free interest rate |
sigma |
volatility |
S0 |
starting stockprice |
method |
selects the simulation method; |
sampling |
sampling |
metpar |
list holding extra parameters related to the simulation method |
sampar |
list holding several parameters related to the sampling method;
|
Method best
(see the reference Dingec and Hormann below)
is a very efficient simulation algorithm using multiple Control Variates and conditional MonteCarlo
to calculate the the price, delta and gamma of Asian call options under geometric Brownian motion.
It is especially effective when QMC
is selected as sampling method.
As QMC method Korobov Lattice rules are used. For good parameter values
see Table 1 of (L'Ecuyer, Lemieux).
returns a matrix holding the price and greeks. The estimated Asian Call price and its estimated delta and gamma form the first column vector, the respective 95 percent error bounds are given in the second column.
Kemal Dingec, Wolfgang Hormann
K. D. Dingec and W. Hormann. Improved Monte Carlo and Quasi-Monte Carlo Methods for the Price and the Greeks of Asian Options, Proceedings of the 2014 Winter Simulation Conference A. Tolk, S. D. Diallo, I. O. Ryzhov, L. Yilmaz, S. Buckley, and J. A. Miller, eds.
L'Ecuyer, P., and C. Lemieux. 2000. Variance Reduction via Lattice Rules. Management Science 46 (9): 1214-1235.
# standard settings for an efficient simulation using QMC and variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="best", sampling="QMC",metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # efficient Monte Carlo version of the above simulation AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="best", sampling="MC",metpar=list(maxiter=100,tol=1.e-14,np=1000), sampar=list(n=10^5)) # simple QMC version without variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="naive", sampling="QMC", sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # naive Monte Carlo version AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="naive", sampling="MC",sampar=list(n=10^5))
# standard settings for an efficient simulation using QMC and variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="best", sampling="QMC",metpar=list(maxiter=100,tol=1.e-14,cvmethod="splitting"), sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # efficient Monte Carlo version of the above simulation AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="best", sampling="MC",metpar=list(maxiter=100,tol=1.e-14,np=1000), sampar=list(n=10^5)) # simple QMC version without variance reduction AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="naive", sampling="QMC", sampar=list(nout=50,n=2039,a=1487,baker=TRUE,genmethod="pca")) # naive Monte Carlo version AsianCall(T=1,d=12,K=100,r=0.05,sigma=0.2,S0=100,method="naive", sampling="MC",sampar=list(n=10^5))
The price of an arithmetic average Asian option is computed using the approximation method of Lord.
AsianCall_AppLord(T=1, d=12, K=100, r=0.05, sigma=0.1, S0=100, all=TRUE)
AsianCall_AppLord(T=1, d=12, K=100, r=0.05, sigma=0.1, S0=100, all=TRUE)
T |
|
d |
|
K |
|
r |
|
sigma |
|
S0 |
|
all |
|
AsianCall_AppLord()
uses a sophisticated approximation of Lord (2006).
returns the approximate price.
Kemal Dingec, Wolfgang Hormann
Lord, R., Partially Exact and Bounded Approximations for Arithmetic Asian Options, Journal of Computational Finance, Vol. 10, No. 2, pp. 1-52, 2006
AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.25, S0 = 100, all = TRUE)
AsianCall_AppLord(T = 1, d = 12, K = 100, r = 0.05, sigma = 0.25, S0 = 100, all = TRUE)
Calculates the Price, Delta and Gamma of an European Call or Put option using the Black-Scholes formula.
BS_EC( T = 0.25, K = 100, r = 0.05, sigma = 0.2, S0 = 100 ) BS_EP( T = 0.25, K = 100, r = 0.05, sigma = 0.2, S0 = 100 )
BS_EC( T = 0.25, K = 100, r = 0.05, sigma = 0.2, S0 = 100 ) BS_EP( T = 0.25, K = 100, r = 0.05, sigma = 0.2, S0 = 100 )
T |
time to maturity (in years) |
K |
Strike Price |
r |
risk-free interest rate |
sigma |
yearly volatility |
S0 |
Starting Stock Price |
Returns a vector containing the option price, Delta and Gamma
Wolfgang Hormann
BS_EC(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100) BS_EP(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100)
BS_EC(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100) BS_EP(K=100, r = 0.05, sigma = 0.2, T = 0.25, S0 = 100)