Trait VolSurface
pub trait VolSurface: Send + Sync {
// Required methods
fn black_vol(&self, expiry: f64, strike: f64) -> Result<f64, FerroRiskError>;
fn smile_at(&self, expiry: f64) -> Result<Vec<(f64, f64)>, FerroRiskError>;
fn is_arbitrage_free(&self) -> Result<ArbFreeReport, FerroRiskError>;
// Provided method
fn total_variance(
&self,
expiry: f64,
strike: f64,
) -> Result<f64, FerroRiskError> { ... }
}