SABR
Forward smile dynamics through backbone, correlation and vol-of-vol
01Interpret α, β, ρ and ν economically.
02Read the Hagan approximation in forward-moneyness coordinates.
03Diagnose normal versus lognormal conventions.
04Calibrate with stable parameter transformations.
Build the state before the equation.
SABR couples a forward with a stochastic volatility factor. β controls the backbone, ρ the skew channel and ν the smile curvature; the widely quoted formula is an asymptotic approximation, not the SDE itself.
β is commonly fixed because all four parameters are not equally identifiable.
Shifted lognormal or normal variants are required near negative rates.
The approximation loses accuracy in extreme wings and long horizons.
The product exists before the model.
SABR remains a central quoting and interpolation model for caps, floors and swaptions and is useful for studying forward-smile dynamics.
caps and floors
swaptions
commodity options
FX variants
State normal, lognormal or shifted-lognormal volatility, forward, shift, delta/strike coordinate and annuity conventions.
Notation, units and exact claims.
F_t: forwardα_t: stochastic scaleβ: backbone elasticityν: vol of volρ: correlationSABR dynamics
A stochastic scale drives a CEV-style forward diffusion.
Correlation
Correlation contributes the leading skew effect.
ATM leading order
ATM volatility mixes scale, backbone, correlation and vol-of-vol corrections.
Do not jump to the final expression.
Reading the SABR asymptotic structure
The complete expansion is lengthy; the useful derivation is to identify leading scale and first correction channels.
- 01
Freeze stochastic scale
At leading order, α/F^(1-β) supplies the local ATM volatility.
- 02
Introduce log-moneyness
The expansion uses z proportional to ν/α times a backbone-adjusted forward-strike distance.
- 03
Correct the strike geometry
The z/x(z) ratio introduces asymmetric smile response through ρ.
- 04
Add maturity corrections
Backbone curvature, correlation and vol-of-vol contribute O(T) terms.
- 05
Control the limit at ATM
Use the analytical z→0 limit rather than direct division to avoid cancellation.
SABR is powerful because parameters map to smile features, but robust use requires convention control, asymptotic guards and calibration governance.
Fit, compute, then challenge the assumptions.
Fix or regularize β, transform constrained parameters, price under the correct volatility convention and use stable ATM limits.
Fit α, ρ and ν to liquid smile quotes with bounded transforms and maturity-to-maturity regularization.
Asymptotic error in wings and long maturities.
Parameters can be non-unique.
Lognormal form fails at non-positive forwards without a shift.
Static fit is not dynamics.
| Question | Black–Scholes | Local volatility | Heston |
|---|---|---|---|
| Volatility state | One constant σ | σ(S,t) deterministic | vₜ stochastic |
| Fits today’s surface | No | Exactly, in ideal theory | Approximately by calibration |
| Forward dynamics | Flat smile | Spot-driven | Variance + correlation driven |
| Primary strength | Transparent baseline | Vanilla-consistent diffusion | Richer smile dynamics |
| Primary failure | No smile | Often unrealistic forward skew | Parameter and calibration instability |
| Compute | Low | Medium: PDE/MC | Medium–high: Fourier/PDE/MC |
| Hedge implication | Greeks at one σ | State-localized vol hedge | Variance and vol-of-vol risk |
Implementation with current QuantLib
Current QuantLib separates market structures, processes, instruments, engines and calibration helpers. Use those abstractions only after the lesson’s conventions, domains and numerical checks are explicit.
API authority: upstream QuantLib reference pinned in the source registry.Theory → implementation → checks.
SABR parameter-domain guard
Validate a calibration state and compute the leading ATM scale.
from __future__ import annotations import math def sabr_atm_leading(forward: float, alpha: float, beta: float, rho: float, nu: float) -> float: if forward <= 0 or alpha <= 0 or nu < 0 or not 0 <= beta <= 1 or not -1 < rho < 1: raise ValueError("invalid SABR parameter domain") result = alpha / forward ** (1.0 - beta) if not math.isfinite(result) or result <= 0: raise ArithmeticError("invalid ATM volatility") return result sigma = sabr_atm_leading(0.035, 0.03, 0.5, -0.25, 0.4)assert abs(sigma - 0.1603567451) < 1e-9print(f"{sigma:.4%}")Move the state. Challenge the equation.
SABR smile lab
Move α, β, ρ and ν; inspect backbone, smile and parameter sensitivities.
Where the model meets the book.
“If β moves every day, the optimizer may be explaining the coordinate system.”
forward and annuity
smile quotes
vol convention
shift
β policy
Fit α, ρ and ν to liquid smile quotes with bounded transforms and maturity-to-maturity regularization.
RISKalpha level
rho skew
nu curvature
backbone delta
- normalize convention
- fix β/shift
- calibrate
- check limits
- compare stability
Production failure modes
- wrong normal/lognormal quote
- ATM cancellation
- unbounded rho
- parameter jumps
Map the transmission channel.
Rate regime and the SABR backbone
The forward level and volatility convention change how an identical basis-point shock appears in percentage-volatility space.
moves forward and sign constraints
maps level to volatility
fit skew and curvature
depends on convention
Most failures begin outside the formula.
Using lognormal SABR at non-positive forwards.
Calibrating every parameter without identifiability checks.
Ignoring the ATM limit.
Presenting asymptotic output as exact model price.
Attribution with implementation authority.
Volatility, Monte Carlo and stochastic-volatility lectures
Research map for the mathematical progression and numerical experiments; prose, examples and code are original.
- Source
- Computational Finance Course
- Author
- L. A. Grzelak
- Ref
- main
Current volatility structures, processes, calibration helpers and tests
Implementation reference for production abstractions and validation patterns.
- Source
- QuantLib upstream
- Author
- QuantLib contributors
- Ref
- v1.42.1