Struct CpiVolSurface
pub struct CpiVolSurface {
grid: RateVolSurface,
}Expand description
A zero-coupon CPI option vol surface over expiry × annualised strike.
The YoY surface’s grid — expiry in years, one tenor column, strikes
ascending — keyed by the annualised zero-coupon rate k a cap or floor on
I(T)/I(T0) against (1+k)^τ is quoted at. It reads, lifts and shocks as
the YoY grid does; it carries no displacement.
Fields§
§grid: RateVolSurfaceImplementations§
§impl CpiVolSurface
impl CpiVolSurface
pub fn new(
expiries: Vec<f64>,
strikes: Vec<f64>,
rows: &[Vec<f64>],
convention: VolConvention,
) -> Result<Self, RateVolError>
pub fn new( expiries: Vec<f64>, strikes: Vec<f64>, rows: &[Vec<f64>], convention: VolConvention, ) -> Result<Self, RateVolError>
A surface over ascending expiries (years) × ascending annualised
zero-coupon strikes, one row of vols per expiry.
§Errors
RateVolError::Malformed on an empty or non-ascending axis, a grid
that does not match the axes, or a non-finite or non-positive vol.
pub fn flat(vol: f64, convention: VolConvention) -> Result<Self, RateVolError>
pub fn flat(vol: f64, convention: VolConvention) -> Result<Self, RateVolError>
One vol at every expiry and strike. One node, one parameter.
§Errors
RateVolError::Malformed for a non-finite or non-positive vol.
pub fn convention(&self) -> VolConvention
pub fn convention(&self) -> VolConvention
The quoting convention: Black on the index ratio, or Bachelier on it.
pub fn strikes(&self) -> Option<&[f64]>
pub fn strikes(&self) -> Option<&[f64]>
The annualised strike pillars, where the surface carries a smile;
None on a flat one.
pub fn parameters(&self) -> &[f64]
pub fn parameters(&self) -> &[f64]
The free parameters — every node vol, row-major by expiry.
pub fn parameter_keys(&self) -> Vec<(f64, Option<f64>)>
pub fn parameter_keys(&self) -> Vec<(f64, Option<f64>)>
(expiry_years, strike) per parameter, in parameter order, with no
strike on a flat surface.
pub fn scaled(&self, factor: f64) -> Self
pub fn scaled(&self, factor: f64) -> Self
Every node vol multiplied by factor — a relative vol shock.
pub fn mapped(&self, f: impl Fn(f64, f64) -> f64) -> Option<Self>
pub fn mapped(&self, f: impl Fn(f64, f64) -> f64) -> Option<Self>
Each node vol replaced by f(expiry_years, vol); None when a node
leaves (0, ∞).
pub fn view<R: Scalar>(&self) -> InflationVolView<'_, R>
pub fn view<R: Scalar>(&self) -> InflationVolView<'_, R>
The surface at mode R.
pub fn view_with<'a, R: Scalar>(
&'a self,
params: &'a [R],
) -> Result<InflationVolView<'a, R>, RateVolError>
pub fn view_with<'a, R: Scalar>( &'a self, params: &'a [R], ) -> Result<InflationVolView<'a, R>, RateVolError>
The surface over a caller’s parameter vector.
§Errors
RateVolError::ParameterCountMismatch on the wrong length.
Trait Implementations§
§impl Clone for CpiVolSurface
impl Clone for CpiVolSurface
§fn clone(&self) -> CpiVolSurface
fn clone(&self) -> CpiVolSurface
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more