library(ragtop)
library(futile.logger)
context("Black-Scholes Modeling")
flog.threshold(WARN, name="ragtop")
flog.threshold(WARN)
test_that("Black-Scholes reproduces equity", {
expect_equal(blackscholes(callput=1, S0=100, K=0, r=0,
default_intensity=0.07,
time=4.44, vola=0.5)$Price,
100,
tolerance=1.e-6)
expect_equal(blackscholes(callput=1, S0=100, K=0, r=0.05,
default_intensity=0.07,
time=4.44, vola=0.5)$Price,
100,
tolerance=1.e-6)
})
a_proportional_div = data.frame(time=0.5, fixed=0, proportional=20)
test_that("Black-Scholes pricing", {
expect_equal(blackscholes(callput=-1, S0=100, K=90, r=0,
default_intensity=0, time=1, vola=0.5),
list(Price = 14.160002955196, Delta = -0.322499382043183, Vega = 35.8771182787839),
tolerance=1.e-6)
expect_equal(blackscholes(callput=-1, S0=100, K=90, r=0,
default_intensity=0.07, time=1, vola=0.5),
list(Price = 17.2748000186925, Delta = -0.274012904361218, Vega = 33.3080388264046),
tolerance=1.e-6)
expect_equal(blackscholes(callput=-1, S0=100, K=90, r=0,
default_intensity=0.07, time=1, vola=0.5, dividends=a_proportional_div),
list(Price = 24.2940532694562, Delta = -0.438633801658832, Vega = 31.5370543258318),
tolerance=1.e-6)
expect_equal(blackscholes(callput=-1, S0=100, K=90, r=0.02,
default_intensity=0.07, time=1.8, vola=0.45, dividends=a_proportional_div),
list(Price = 27.0951778269375, Delta = -0.352261169093692, Vega = 39.9472917093042),
tolerance=1.e-6)
})
test_that("Black-Scholes with term structures", {
expect_equal(blackscholes(callput=-1, S0=100, K=90, r=0.03,
default_intensity=0.07, time=1, vola=0.45),
black_scholes_on_term_structures(callput=-1, S0=100, K=90, time=1,
discount_factor_fcn = function(T, t, ...) {
exp(-0.03 * (T - t))
},
survival_probability_fcn = function(T, t, ...) {
exp(-0.07 * (T - t))
},
variance_cumulation_fcn = function(T, t) {
0.45 ^ 2 * (T - t)
}),
tolerance=1.e-6)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.