Technical

SVI Parameterisation: Formula, Arbitrage Tests and Python

Fit raw and natural SVI total variance correctly, test butterfly and calendar arbitrage, and avoid common calibration traps with Python.

13 min read·

In 2004 Jim Gatheral presented a five-parameter curve that could fit a single implied-volatility smile without running a stochastic-volatility pricer. He called it SVI, for stochastic volatility inspired.

That economy is still its attraction. The danger is that a good least-squares fit can contain negative densities between quotes or calendar arbitrage between expiries. SVI is a formula, not an arbitrage certificate.

Gatheral and Antoine Jacquier's 2014 paper, Arbitrage-free SVI volatility surfaces, is the authoritative reference. Our volatility smile, Dupire local volatility and SABR guides cover the surrounding models.

Raw SVI

For one maturity TT, define forward log-moneyness and Black-Scholes total variance by

k=log⁡ ⁣(KFT),w(k)=σBS2(k,T)T.k=\log\!\left(\frac{K}{F_T}\right),\qquad w(k)=\sigma_{\mathrm{BS}}^2(k,T)T.

Raw SVI is

w(k)=a+b[ρ(k−m)+(k−m)2+σ2].\boxed{ w(k)=a+b\left[\rho(k-m)+\sqrt{(k-m)^2+\sigma^2}\right] }.

Its domain restrictions are a,m∈Ra,m\in\mathbb R, b≥0b\geq0, ∣ρ∣<1|\rho|<1 and σ>0\sigma>0. All five variables and ww are dimensionless when time is measured in the same year convention used to annualise volatility.

The parameters do not have quite the informal meanings often assigned to them:

  • aa moves the curve vertically, but is not its minimum.
  • b(1−ρ)b(1-\rho) and b(1+ρ)b(1+\rho) are the absolute left- and right-wing slopes.
  • mm is a horizontal location parameter, but is not the minimum unless ρ=0\rho=0.
  • σ\sigma rounds the vertex; larger values spread curvature over a wider range of kk.

Differentiation gives

w′(k)=b(ρ+k−m(k−m)2+σ2),w′′(k)=bσ2((k−m)2+σ2)3/2.w'(k)=b\left(\rho+\frac{k-m}{\sqrt{(k-m)^2+\sigma^2}}\right), \qquad w''(k)=\frac{b\sigma^2}{\left((k-m)^2+\sigma^2\right)^{3/2}}.

The true minimum is

k∗=m−ρσ1−ρ2,wmin⁡=a+bσ1−ρ2.k_*=m-\frac{\rho\sigma}{\sqrt{1-\rho^2}}, \qquad w_{\min}=a+b\sigma\sqrt{1-\rho^2}.

Thus a+bσ1−ρ2≥0a+b\sigma\sqrt{1-\rho^2}\geq0 is the exact non-negative-variance condition.

Two limiting calculations are useful when reviewing fitted parameters. As k→∞k\to\infty,

w(k)=a+b(1+ρ)(k−m)+o(1),w(k)=a+b(1+\rho)(k-m)+o(1),

while as k→−∞k\to-\infty,

w(k)=a+b(ρ−1)(k−m)+o(1).w(k)=a+b(\rho-1)(k-m)+o(1).

This is why the positive quantities b(1+ρ)b(1+\rho) and b(1−ρ)b(1-\rho) are called the right and left wing slopes. The curvature w′′(k)w''(k) is everywhere non-negative, peaks at k=mk=m with value b/σb/\sigma and decays like ∣k∣−3|k|^{-3}. Notice the distinction: mm locates maximum curvature, whereas k∗k_* locates minimum variance. Confusing those roles leads to poor initial guesses and misleading parameter narratives.

The five raw parameters are also strongly dependent in calibration. Over a narrow quoted range, raising aa while moving mm and changing bb can leave fitted values nearly unchanged. Parameter uncertainty can therefore be large even when price residuals are tiny. Desk controls should focus first on wing slopes, minimum variance, ATM level and local derivatives, which are closer to observable smile features than the raw coordinates themselves.

Wings and density

Roger Lee's moment formula implies that an admissible total-variance wing cannot have asymptotic slope greater than two. Raw SVI therefore needs

b(1+∣ρ∣)≤2.b(1+|\rho|)\leq2.

This is necessary wing control, not sufficient butterfly-arbitrage control. A curve can satisfy Lee's bound and still imply a negative density at finite kk.

For a twice differentiable total-variance smile, define

g(k)=(1−kw′(k)2w(k))2−w′(k)24(1w(k)+14)+w′′(k)2.g(k)= \left(1-\frac{k w'(k)}{2w(k)}\right)^2 -\frac{w'(k)^2}{4}\left(\frac1{w(k)}+\frac14\right) +\frac{w''(k)}2.

Subject to the regular tail condition, the Black-Scholes density is non-negative exactly when g(k)≥0g(k)\geq0 for all kk. This is the test a fitter needs. Checking only observed strikes is not enough; the failure often sits just outside the liquid range.

The structure of gg is worth understanding. Differentiating the Black-Scholes call with respect to strike introduces not only w′′w'', but also terms from the strike dependence of d1d_1 and d2d_2. Convex total variance, w′′≥0w''\geq0, is therefore not sufficient for convex option prices. A steep first derivative can make the negative w′2w'^2 term dominate. Conversely, a raw SVI slice is convex as a function of kk by construction but can still imply butterfly arbitrage. The economically relevant convexity is call price against strike.

For example, take (a,b,ρ,m,σ)=(0.02,0.12,−0.4,0.05,0.20)(a,b,\rho,m,\sigma)=(0.02,0.12,-0.4,0.05,0.20). The minimum is at k∗=0.1373k_*=0.1373, not m=0.05m=0.05, and wmin⁡=0.0420w_{\min}=0.0420. The left and right slopes are 0.1680.168 and 0.0720.072. At k=0k=0, w=0.04714w=0.04714, corresponding to 30.7%30.7\% implied volatility for T=0.5T=0.5. Those numbers are useful unit tests for an implementation.

Natural SVI

The equivalent natural coordinates are

w(k)=Δ+ω2[1+ζρ(k−μ)+(ζ(k−μ)+ρ)2+1−ρ2].w(k)=\Delta+\frac{\omega}{2} \left[ 1+\zeta\rho(k-\mu) +\sqrt{\left(\zeta(k-\mu)+\rho\right)^2+1-\rho^2} \right].

Here Δ,μ∈R\Delta,\mu\in\mathbb R, ω≥0\omega\geq0, ζ>0\zeta>0 and ∣ρ∣<1|\rho|<1. At k=μk=\mu,

w(μ)=Δ+ω.w(\mu)=\Delta+\omega.

So ω\omega alone is not ATM total variance, and μ\mu need not be zero or the smile minimum. Natural SVI is valuable because it exposes a level and scale cleanly and connects to the large-time Heston smile. Raw SVI remains convenient when reading wing slopes directly.

Surface SVI

Fitting each expiry independently leaves a second problem: adjacent smiles may cross. With deterministic rates and dividends, absence of calendar-spread arbitrage is equivalent to non-decreasing total variance at fixed forward log-moneyness.

SSVI couples maturities through ATM total variance θT=w(0,T)\theta_T=w(0,T):

w(k,T)=θT2[1+ρφ(θT)k+(φ(θT)k+ρ)2+1−ρ2].w(k,T)=\frac{\theta_T}{2} \left[ 1+\rho\varphi(\theta_T)k +\sqrt{\left(\varphi(\theta_T)k+\rho\right)^2+1-\rho^2} \right].

It is not enough to require only that θT\theta_T rises. Gatheral and Jacquier give sufficient joint conditions on θ\theta, φ\varphi and ρ\rho. Among the butterfly conditions are

θφ(θ)(1+∣ρ∣)<4,θφ(θ)2(1+∣ρ∣)≤4.\theta\varphi(\theta)(1+|\rho|)<4, \qquad \theta\varphi(\theta)^2(1+|\rho|)\leq4.

The calendar condition also constrains the derivative of θφ(θ)\theta\varphi(\theta). Use the paper's full conditions for the chosen shape function rather than treating monotone ATM variance as a complete test.

Calibration code

Fit to total variance, not volatility. If quote uncertainty is represented by a total-variance bid-ask width sis_i, weighted least squares uses 1/si21/s_i^2. The example below imposes positivity, Lee's wing bound and g(k)≥0g(k)\geq0 on an audit grid.

import numpy as np from scipy.optimize import minimize def svi(k, p): a, b, rho, m, sigma = p x = np.asarray(k) - m return a + b * (rho * x + np.sqrt(x*x + sigma*sigma)) def density_factor(k, p): a, b, rho, m, sigma = p x, root = np.asarray(k) - m, np.sqrt((np.asarray(k) - m)**2 + sigma**2) w = svi(k, p) wp = b * (rho + x / root) wpp = b * sigma**2 / root**3 return (1 - k * wp / (2*w))**2 - 0.25*wp**2*(1/w + 0.25) + 0.5*wpp def fit_svi(k, w_market, spread=None): k, w_market = np.asarray(k), np.asarray(w_market) weight = np.ones_like(k) if spread is None else 1 / np.maximum(spread, 1e-6)**2 audit_k = np.linspace(min(-3, k.min() - 0.5), max(3, k.max() + 0.5), 1201) objective = lambda p: np.sum(weight * (svi(k, p) - w_market)**2) constraints = [ {"type": "ineq", "fun": lambda p: p[0] + p[1]*p[4]*np.sqrt(1-p[2]**2)}, {"type": "ineq", "fun": lambda p: 2 - p[1]*(1 + abs(p[2]))}, {"type": "ineq", "fun": lambda p: density_factor(audit_k, p)}, ] x0 = [max(w_market.min() - 0.01, -0.1), 0.1, -0.3, 0.0, 0.2] bounds = [(-2, 2), (0, 5), (-0.999, 0.999), (-3, 3), (1e-4, 5)] result = minimize(objective, x0, method="SLSQP", bounds=bounds, constraints=constraints, options={"maxiter": 2000}) if not result.success: raise RuntimeError(result.message) return result.x

A finite audit grid is still not a proof over the whole real line. Recheck analytically or on a wider adaptive grid, especially after interpolation and extrapolation.

Several desk-level details matter. Convert puts and calls to one forward convention before fitting. Filter stale and crossed quotes. Decide whether errors are measured in price, implied volatility or total variance: each induces different weights. Use multiple starts because the objective is non-convex. Finally, reprice the fitted surface and report errors in the same units as the market spread.

Calibration failure modes

The optimiser's success flag is only a numerical statement. A useful calibration report separates at least four questions:

  1. Did the algorithm satisfy parameter and density constraints to a stated tolerance?
  2. Are fitted option values inside, or reasonably close to, executable bid-ask intervals?
  3. Does the slice remain safe between and beyond observed strikes?
  4. Are parameters and risk measures stable under small quote perturbations?

Sparse wings are a common identification failure. If only near-ATM options trade, the data do not determine both asymptotic slopes. Hard bounds then select the extrapolation, even though an optimiser presents the result as a calibration. Report which quantities are data-driven and which are policy choices. For risk beyond quoted strikes, vary the wing assumptions and carry the resulting range into reserves or model-risk limits.

Short maturities create another failure mode. Total variances are small, so division by ww in g(k)g(k) amplifies tiny fit errors. Event-driven smiles may also contain curvature that one smooth SVI slice cannot match without approaching the density boundary. In that case, reducing residuals can worsen arbitrage margin. The right decision may be to leave selected mids unfitted, use bid-ask inequalities rather than point targets or choose a richer surface construction.

Cross-expiry fitting needs consistent coordinates. Calendar tests compare total variance at fixed k=log⁡(K/FT)k=\log(K/F_T), not at a fixed listed strike. Each expiry has a different forward, especially for equities with dividends. Build a common kk audit grid, evaluate every slice on it and check

w(k,Ti+1)−w(k,Ti)≥0w(k,T_{i+1})-w(k,T_i)\geq0

with a tolerance that is small relative to quote uncertainty. Testing only matched strike labels can miss crossings or report false ones.

Useful numerical sanity checks include recovering w(m)=a+bσw(m)=a+b\sigma, verifying w′(m)=bρw'(m)=b\rho, locating k∗k_* independently with a one-dimensional minimiser and comparing numerical derivatives with the analytic formulas. Reprice calls and check decreasing strike values, non-negative butterfly spreads and Lee-consistent tails. Repeat the fit from dispersed starting points. If several parameter vectors have similar objective values but materially different wings, return that ambiguity rather than trusting the first minimum.

Finally, audit interpolation between maturities. Even arbitrage-free endpoint slices can be joined badly. Linear interpolation of total variance at fixed forward log-moneyness is a useful baseline because it preserves calendar monotonicity when the endpoints are ordered, but the forward and discount curves must be interpolated consistently too. If smooth Greeks are needed, any smoother should be checked on the completed two-dimensional surface, not only on its input slices.

What SVI does not provide

SVI is static. It says nothing about tomorrow's joint motion of spot and the smile, so it is not a substitute for a Heston model when dynamics matter. Nor does a five-parameter slice fit every market perfectly. Very short expiries with event jumps and sparse single-stock wings can force a choice between quote fit and smooth, positive density.

It is also easy to overstate “arbitrage-free”. Raw parameter bounds, Lee slopes, slice density and cross-expiry calendars are separate checks. Passing one does not imply the others.

Frequently Asked Questions

What does SVI stand for?

SVI means stochastic volatility inspired. It is a static parameterisation of Black-Scholes total implied variance, not a stochastic differential equation.

Where is the minimum of raw SVI?

It is at k∗=m−ρσ/1−ρ2k_*=m-\rho\sigma/\sqrt{1-\rho^2}. The point k=mk=m is the minimum only when ρ=0\rho=0.

Does Lee's wing bound make SVI arbitrage-free?

No. The bound b(1+∣ρ∣)≤2b(1+|\rho|)\leq2 controls asymptotic wing slopes. Butterfly arbitrage at finite strikes must still be excluded by checking the density factor g(k)g(k).

Is omega ATM variance in natural SVI?

No. Natural SVI satisfies w(μ)=Δ+ωw(\mu)=\Delta+\omega. It equals ATM total variance only under additional choices, including μ=0\mu=0, and then the level is Δ+ω\Delta+\omega.

How should SVI quotes be weighted?

Use weights tied to measurement error. If a total-variance spread estimates one standard deviation, inverse-variance weighting is proportional to the reciprocal of its square. Always check the resulting errors in option-price and implied-volatility terms.

Which SVI sources are authoritative?

Use Gatheral and Jacquier's 2014 paper, its freely available preprint and Lee's moment formula. The formula is forgiving. Static arbitrage is not.

Skip the £25k programme - try the alternative

Master's programmes are slow and expensive. Quantt is a self-paced alternative. Start free with a real lesson and interview practice, then unlock 50+ courses and your personalised plan.

Free to start · No credit card required