pub enum VolatilityModel {
Constant(f64),
Heston {
v0: f64,
theta: f64,
kappa: f64,
sigma: f64,
rho: f64,
},
SABR {
alpha: f64,
beta: f64,
nu: f64,
rho: f64,
},
LocalVolatility(Box<dyn Fn(f64, f64) -> f64 + Send + Sync>),
Bates {
v0: f64,
theta: f64,
kappa: f64,
sigma: f64,
rho: f64,
lambda_v: f64,
mu_v: f64,
sigma_v: f64,
},
HullWhite {
v0: f64,
alpha: f64,
beta: f64,
rho: f64,
},
ThreeHalves {
v0: f64,
theta: f64,
kappa: f64,
sigma: f64,
rho: f64,
},
}
#[derive(Debug, Clone)]
pub struct HestonModelParams {
pub v0: f64,
pub theta: f64,
pub kappa: f64,
pub sigma: f64,
pub rho: f64,
pub maturity: f64,
pub initial_price: f64,
pub initial_variance: f64,
pub risk_free_rate: f64,
pub correlation: f64,
pub vol_of_vol: f64,
}