Parametrizations

All parametrizations work in total variance space:

\[w(k) = \sigma^2(k) \cdot T\]

where \(k = \log(K/F)\) is log-moneyness.

Every model implements the same two-method interface (Parametrization ABC):

  • calibrate(k, w_target, **kwargs) — fit parameters from log-moneyness and observed total variance; returns a parameter dict or None on failure.

  • total_variance(k, params) — evaluate the fitted surface.

Instances come from the factory:

from pysvi import get_model, ArbitrageFreedom

model = get_model("svi")                                  # default QUASI constraints
model = get_model("sabr", ArbitrageFreedom.NO_BUTTERFLY)  # with density check

The factory accepts "svi", "natural" (or "nsvi"), "ssvi", "essvi", "jumpwings" (or "jw"), "directsvi" (or "dsvi"), and "sabr" (case-insensitive).

Choosing a model

Model

Free params / slice

Extra inputs

Best for

Raw SVI

5

—

Maximum flexibility, liquid equity smiles

Natural SVI

5

—

Same family as raw SVI with better-behaved parameters

SSVI (Surface SVI)

2

theta

Butterfly-arbitrage-free by construction

eSSVI (Extended SSVI)

4 (global)

theta, theta_ref

Realistic calendar skew across maturities

Jump-Wings

5

T

Trader-interpretable parameters (wings, ATM)

DirectSVI

6 (closed-form)

—

Speed: no iterative optimisation

SABR

3 (β fixed)

T, F, beta

Interest-rate and FX smiles; dynamic model

Each model page follows the same structure: overview, model equations, parameter table, usage, arbitrage behaviour, and references.