Parametrizations¶
All parametrizations work in total variance space:
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 parameterdictorNoneon 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 |
|---|---|---|---|
5 |
— |
Maximum flexibility, liquid equity smiles |
|
5 |
— |
Same family as raw SVI with better-behaved parameters |
|
2 |
|
Butterfly-arbitrage-free by construction |
|
4 (global) |
|
Realistic calendar skew across maturities |
|
5 |
|
Trader-interpretable parameters (wings, ATM) |
|
6 (closed-form) |
— |
Speed: no iterative optimisation |
|
3 (β fixed) |
|
Interest-rate and FX smiles; dynamic model |
Each model page follows the same structure: overview, model equations, parameter table, usage, arbitrage behaviour, and references.