SSVI (Surface SVI)

Overview

Gatheral & Jacquier (2014). Reduces to 2 free parameters per slice by fixing the ATM total variance, and guarantees no butterfly arbitrage by construction for each fixed \(\theta\).

Model

\[w(k;\theta) = \frac{\theta}{2}\left[1 + \rho\,\varphi(\theta)\,k + \sqrt{\left(\varphi(\theta)\,k + \rho\right)^2 + 1 - \rho^2}\right]\]

where the curvature function is

\[\varphi(\theta) = \frac{\eta}{\sqrt{\theta}}\]

Parameters

Parameter

Meaning

Constraint

\(\theta\)

ATM total variance (fixed input)

\(\theta > 0\)

\(\rho\)

skew

\(|\rho| < 1\)

\(\eta\)

curvature scale

\(\eta > 0\)

Usage

import numpy as np
from pysvi import get_model, calibrate_slice

model = get_model("ssvi")
theta = float(np.nanmin(df_slice["iv"] ** 2 * df_slice["maturity"]))
params = calibrate_slice(df_slice, model, theta=theta)
# params: {'rho', 'eta', 'theta', 'forward'}

Arbitrage behaviour

No butterfly arbitrage by construction for fixed \(\theta\). The NO_BUTTERFLY flag adds an explicit numerical check on top; NO_CALENDAR is available for cross-slice consistency — see Arbitrage freeness.

References

  • Gatheral, J., Jacquier, A. (2014). “Arbitrage-free SVI volatility surfaces.” Quantitative Finance 14(1).