eSSVI (Extended SSVI)¶
Overview¶
Extends SSVI with maturity-dependent skew via a \(\rho(\theta)\) term structure. Adds 4 parameters globally and enables realistic calendar skew evolution across maturities.
Model¶
The total variance formula is the same as SSVI but with \(\rho \to \rho(\theta)\):
with the skew term structure
and curvature \(\varphi(\theta) = \eta / \sqrt{\theta}\). Here \(\theta_{\mathrm{ref}}\) is a reference ATM total variance (typically the median across slices) that normalises the power law.
Parameters¶
Parameter |
Meaning |
Constraint |
|---|---|---|
\(\rho_0\) |
base skew level |
\(|\rho_0| < 1\) |
\(\rho_1\) |
skew term-structure slope |
bounded |
\(\alpha\) |
power-law exponent |
bounded |
\(\eta\) |
curvature scale |
\(\eta > 0\) |
\(\theta\) |
slice ATM total variance (fixed input) |
\(\theta > 0\) |
\(\theta_{\mathrm{ref}}\) |
reference ATM total variance (fixed input) |
\(\theta_{\mathrm{ref}} > 0\) |
Usage¶
import numpy as np
from pysvi import get_model, calibrate_slice
model = get_model("essvi")
theta = float(np.nanmin(df_slice["iv"] ** 2 * df_slice["maturity"]))
params = calibrate_slice(df_slice, model, theta=theta, theta_ref=theta)
# params: {'rho0', 'rho1', 'alpha', 'eta', 'theta', 'theta_ref', 'rho_theta', 'forward'}
Arbitrage behaviour¶
Inherits SSVI’s per-slice butterfly guarantee for each fixed \(\theta\); NO_BUTTERFLY / NO_CALENDAR numerical checks available — see Arbitrage freeness.
References¶
Hendriks, S., Martini, C. (2019). “The extended SSVI volatility surface.” Journal of Computational Finance.