Function binomial_tree::compute_price_american[][src]

pub fn compute_price_american(
    alpha_over_sigma: &Fn(f64, f64, f64, usize) -> f64,
    sigma_prime: &Fn(f64, f64, f64, usize) -> f64,
    sigma_inverse: &Fn(f64, f64, f64, usize) -> f64,
    payoff: &Fn(f64, f64, f64, usize) -> f64,
    discount: &Fn(f64, f64, f64, usize) -> f64,
    y0: f64,
    maturity: f64,
    n_time_periods: usize
) -> f64

Returns American option price using tree method

Examples

//Black Scholes tree
let r:f64 = 0.05;
let sig:f64 = 0.3;
let asset:f64 = 50.0;
let strike:f64 = 50.0;
let alpha_div_sigma = |_t:f64, _underlying:f64, _dt:f64, _width:usize| r/sig;
let sigma_pr = |_t:f64, _underlying:f64, _dt:f64, _width:usize| sig;
let sigma_inv = |_t:f64, x:f64, _dt:f64, _width:usize| (x*sig).exp();
let py_off = |_t:f64, underlying:f64, _dt:f64, _width:usize| {
    if strike>underlying {strike-underlying} else {0.0}
};
let disc=|_t:f64, _underlying:f64, dt:f64, _width:usize| (-r*dt).exp();
let y0 = asset.ln()/sig; //inverse of signa_inv
let maturity = 0.9;
let n_time_periods = 50;
let price = binomial_tree::compute_price_american(
    &alpha_div_sigma,
    &sigma_pr,
    &sigma_inv,
    &py_off,
    &disc,
    y0,
    maturity,
    n_time_periods
);