Description Usage Arguments Details Value Author(s) References See Also Examples
Functions to calculate the theoretical prices of options through simulation.
1 2 |
npaths |
the number of paths |
timesteps |
timesteps per path |
r |
the mean per unit of time |
v |
the variance per unit of time |
tau |
time |
S0 |
initial value |
ST |
final value of Brownian bridge |
gbm
generates sample paths of geometric Brownian motion.
gbb
generates sample paths of a Brownian bridge by first creating
paths of Brownian motion W
from time 0
to time T
,
with W_0
equal to zero. Then, at each t
, it subtracts t/T
* W_T and adds S0*(1-t/T)+ST*(t/T).
A matrix of sample paths; each column contains the price path of an
asset. Even with only a single time-step, the matrix will have two
rows (the first row is S0
).
Enrico Schumann
Gilli, M., Maringer, D. and Schumann, E. (2011) Numerical Methods and Optimization in Finance. Elsevier. http://www.elsevierdirect.com/product.jsp?isbn=9780123756626
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | ## price a European option
## ... parameters
npaths <- 5000 ## increase number to get more precise results
timesteps <- 1
S0 <- 100
ST <- 100
tau <- 1
r <- 0.01
v <- 0.25^2
## ... create paths
paths <- gbm(npaths, timesteps, r, v, tau, S0 = S0)
## ... a helper function
mc <- function(paths, payoff, ...)
payoff(paths, ...)
## ... a payoff function (European call)
payoff <- function(paths, X, r, tau)
exp(-r * tau) * mean(pmax(paths[NROW(paths), ] - X, 0))
## ... compute and check
mc(paths, payoff, X = 100, r = r, tau = tau)
vanillaOptionEuropean(S0, X = 100, tau = tau, r = r, v = v)$value
## compute delta via forward difference
## (see Gilli/Maringer/Schumann, ch. 9)
h <- 1e-6 ## a small number
rnorm(1) ## make sure RNG is initialised
rnd.seed <- .Random.seed ## store current seed
paths1 <- gbm(npaths, timesteps, r, v, tau, S0 = S0)
.Random.seed <- rnd.seed
paths2 <- gbm(npaths, timesteps, r, v, tau, S0 = S0 + h)
delta.mc <- (mc(paths2, payoff, X = 100, r = r, tau = tau)-
mc(paths1, payoff, X = 100, r = r, tau = tau))/h
delta <- vanillaOptionEuropean(S0, X = 100, tau = tau,
r = r, v = v)$delta
delta.mc - delta
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.