[−][src]Function fang_oost_option::option_calibration::obj_fn_real
pub fn obj_fn_real<S, U>(
num_u: usize,
asset: f64,
option_datum: &[OptionDataMaturity],
rate: f64,
params: &[f64],
get_max_strike: U,
cf_function: S
) -> f64 where
S: Fn(&Complex<f64>, f64, &[f64]) -> Complex<f64> + Sync + Send,
U: Fn(&[f64], f64) -> f64 + Sync + Send,
Returns function which computes the mean squared error between the empirical and analytical option prices.
Examples
extern crate num_complex; use num_complex::Complex; extern crate fang_oost_option; use fang_oost_option::option_calibration; let num_u=128; let cf = |u: &Complex<f64>, _m: f64, _sl: &[f64]| Complex::new(u.im, 0.0); let arr = vec![ option_calibration::OptionData { price: 3.0, strike: 15.0, }, option_calibration::OptionData { price: 4.0, strike: 13.5, }, option_calibration::OptionData { price: 5.0, strike: 11.0, }, ]; let option_data_mat = vec![option_calibration::OptionDataMaturity { maturity: 1.0, option_data: arr, }]; let params = vec![0.0]; let asset = 15.0; let rate = 0.04; let max_strike = 300.0; let result = option_calibration::obj_fn_real( num_u, asset, &option_data_mat, rate, ¶ms, |_p, _m| max_strike, &cf ); assert!(result.is_finite()); assert!(result > 0.0);