Learn R Programming

RND (version 1.2)

get.point.estimate: Point Estimation of the Density

Description

get.point.estimate estimates the risk neutral density by center differentiation.

Usage

get.point.estimate(market.calls, call.strikes, r, te)

Arguments

market.calls
market calls (most expensive to cheapest)
call.strikes
strikes for the calls (smallest to largest)
r
risk free rate
te
time to expiration

Value

Details

This is a non-parametric estimate of the risk neutral density. Due to center differentiation, the density values are not estimated at the highest and lowest strikes.

References

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

Examples

Run this code

###
### Recover the lognormal density based on BSM
###

r     = 0.05
te    = 60/365
s0    = 1000
k     = seq(from = 500, to = 1500, by = 1)
sigma = 0.25
y     = 0.01


bsm.calls = price.bsm.option(r =r, te = te, s0 = s0, k = k, sigma = sigma, y = y)$call
density.est = get.point.estimate(market.calls = bsm.calls, 
              call.strikes = k, r = r , te = te)

len = length(k)-1
### Note, estimates at two data points (smallest and largest strikes) are lost
plot(density.est ~ k[2:len], type = "l")  

Run the code above in your browser using DataLab