bsm.objective: BSM Objective Function

Description Usage Arguments Details Value Author(s) References Examples

Description

bsm.objective is the objective function to be minimized in extract.bsm.density.

Usage

1
2
bsm.objective(s0, r, te, y, market.calls, call.strikes, call.weights = 1, 
  market.puts, put.strikes, put.weights = 1, lambda = 1, theta)

Arguments

s0

current asset value

r

risk free rate

te

time to expiration

y

dividend yield

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 calls

lambda

Penalty parameter to enforce the martingale condition

theta

initial values for the optimization. This must be a vector of length 2: first component is μ, the lognormal mean of the underlying density, and the second component is √{t}σ which is the time scaled volatility parameter of the underlying density.

Details

This function evaluates the weighted squared differences between the market option values and values predicted by the Black-Scholes-Merton option pricing formula.

Value

Objective function evalued at a specific set of values.

Author(s)

Kam Hamidieh

References

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

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
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

###
### perfect initial values under BSM framework
###

mu.0     = log(s0) + ( r - y - 0.5 * sigma^2) * te
zeta.0   = sigma * sqrt(te)
mu.0
zeta.0

###
### The objective function should be *very* small
###

bsm.obj.val = bsm.objective(theta=c(mu.0, zeta.0), 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)
bsm.obj.val

Example output

[1] 6.909194
[1] 0.1013606
[1] 3.761598e-24

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