Skip to main content

Module vols

Module vols 

Source
Expand description

Volatility surface infrastructure, mirroring crate::core::curves.

Design invariants:

  • Every input form is canonicalized at construction into per-expiry smiles on a strike-like coordinate, so pricing has one query path: VolSurface::vol(strike, forward, t).
  • Time interpolation is linear in total variance (w = sigma^2 * t) at a fixed smile coordinate — the industry-standard baseline.
  • Strike interpolation is linear in vol on the smile coordinate, with flat wing extrapolation; flat vol extrapolation before the first and after the last expiry.

Quoting conventions per axis:

  • strikes — absolute strikes (equity listed convention). Time interpolation at fixed strike (sticky strike).
  • moneyness — forward moneyness K/F (relative strikes). Sticky moneyness behavior.
  • deltasforward call deltas in (0, 1) (FX convention). Quote a 25-delta put as 0.75 (= 1 + forward put delta); ATM-delta-neutral is approximately 0.5. Pillars are converted to log-moneyness at construction using each pillar’s own quoted vol (ln(K/F) = 0.5*sigma^2*t - sigma*sqrt(t)*inv_N(delta)), so queries are sticky delta.

Structs§

VolSurface
A canonical Black volatility surface anchored at reference_date.

Enums§

VolError
Errors from surface construction.
VolInput
The accepted input forms for a volatility surface. Deserializes from JSON; canonicalized at construction (VolSurface::from_input).
VolShift
A shift applied to a whole surface by VolSurface::bumped. The surface owns the semantics: shifts move every quoted vol, preserving the smile shape and the surface’s coordinate system.