extract.bsm.density: Extract Lognormal Density

Description Usage Arguments Details Value Author(s) References Examples

Description

bsm.extraction extracts the parameters of the lognormal density as implied by the BSM model.

Usage

1
2
3
extract.bsm.density(initial.values = c(NA, NA), r, y, te, s0, market.calls, 
  call.strikes, call.weights = 1, market.puts, put.strikes, put.weights = 1, 
  lambda = 1, hessian.flag = F, cl = list(maxit = 10000))

Arguments

initial.values

initial values for the optimization

r

risk free rate

y

dividend yield

te

time to expiration

s0

current asset value

market.calls

market calls (most expensive to cheapest)

call.strikes

strikes for the calls (smallest to largest)

call.weights

weights to be used for calls

market.puts

market calls (cheapest to most expensive)

put.strikes

strikes for the puts (smallest to largest)

put.weights

weights to be used for puts

lambda

Penalty parameter to enforce the martingale condition

hessian.flag

if F, no hessian is produced

cl

list of parameter values to be passed to the optimization function

Details

If initial.values are not specified then the function will attempt to pick them automatically. cl is a list that can be used to pass parameters to the optim function.

Value

Let S_T with the lognormal random variable of the risk neutral density.

mu

mean of log(S_T)

zeta

sd of log(S_T)

converge.result

Did the result converge?

hessian

Hessian matrix

Author(s)

Kam Hamidieh

References

E. Jondeau and S. Poon and M. Rockinger (2007): Financial Modeling Under Non-Gaussian Distributions Springer-Verlag, London

J. Hull (2011) Options, Futures, and Other Derivatives and DerivaGem Package Prentice Hall, Englewood Cliffs, New Jersey, 8th Edition

R. L. McDonald (2013) Derivatives Markets Pearson, Upper Saddle River, New Jersey, 3rd Edition

Examples

 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
#
# Create some BSM Based options
#

r     = 0.05
te    = 60/365
s0    = 1000
sigma = 0.25
y     = 0.01

call.strikes   = seq(from = 500, to = 1500, by = 25)
market.calls   = price.bsm.option(r =r, te = te, s0 = s0, 
                 k = call.strikes, sigma = sigma, y = y)$call

put.strikes    = seq(from = 510, to = 1500, by = 25)
market.puts    = price.bsm.option(r =r, te = te, s0 = s0, 
                 k = put.strikes, sigma = sigma, y = y)$put

#
#  Get extract the parameter of the density
#

extract.bsm.density(r = r, y = y, te = te, s0 = s0, market.calls = market.calls, 
               call.strikes = call.strikes,  market.puts = market.puts, 
               put.strikes = put.strikes, lambda = 1, hessian.flag = FALSE)

#
# The extracted parameters should be close to these actual values:
#
actual.mu     = log(s0) + ( r - y - 0.5 * sigma^2) * te
actual.zeta   = sigma * sqrt(te)
actual.mu 
actual.zeta

Example output

$mu
[1] 6.909194

$zeta
[1] 0.1013607

$converge.result
[1] 0

$hessian
     [,1] [,2]
[1,]   NA   NA
[2,]   NA   NA

[1] 6.909194
[1] 0.1013606

RND documentation built on May 1, 2019, 10:52 p.m.