Volatility term structure
Locating uncertainty, events and mean reversion along the expiry axis
01Convert implied volatility into total variance.
02Derive forward variance between two maturities.
03Recognize event bumps and term inversion.
04Test a term slice for calendar consistency.
Separate the quote from the quantity inferred from it.
A term structure shows where the option market locates uncertainty in time. Volatility levels are not additive; total variance is the object that carries across adjacent horizons.
A flat volatility curve still implies increasing total variance.
Scheduled events create localized variance increments.
Negative forward variance signals inconsistent inputs or interpolation.
Start from executable inputs and conventions.
Term structure controls calendar spreads, event trades, variance forwards and the maturity dimension of every surface.
calendar spreads
variance swaps
forward-start options
earnings and event options
This lesson uses annualized implied volatility and total variance w(T)=σ²(T)T. Expiries use a consistent ACT/365-like year fraction.
Transform quotes without losing units or arbitrage constraints.
Total variance
Variance accumulated to maturity in the chosen strike or delta slice.
Open in AnalyticsForward variance
Average variance priced for the forward interval.
Open in AnalyticsShort derivation
Extracting a forward variance interval
Assume integrated variance adds over non-overlapping time intervals.
- 01
Express each maturity in total variance
Convert annualized volatility quotes before taking differences.
- 02
Partition integrated variance
Cumulative variance to T2 equals cumulative variance to T1 plus the forward interval.
- 03
Solve for the forward rate
Rearrange the partition identity.
- 04
Require non-negative increments
A negative forward interval is economically and numerically suspect for a diffusion-style variance representation.
- 05
Interpret event bumps
A discrete event variance can be added to baseline integrated variance, causing short maturities spanning the event to look elevated.
Term structure becomes coherent when represented as cumulative and forward variance, with the maturity clock and coordinate held fixed.
Inputs
w(T)=σ²(T)T: total varianceξ(T1,T2): forward varianceT1<T2: maturity intervalΔT=T2-T1
Assumptions and limits
- Fixed-strike and fixed-delta slices differ as forward moves.
- Sparse long maturities require extrapolation.
- Event variance is not directly observable.
Calendar condition
A practical fixed-coordinate condition used to detect negative forward variance.
Open in AnalyticsInvert, fit, and reprice the market instruments.
Fit monotone total variance through liquid expiries, preserve event knots, and extract forward intervals for interpretation.
Use spreads and liquidity weights; do not smooth away scheduled events or force a parametric curve that creates negative increments.
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.06PYTHON IMPLEMENTATIONOpen the implementation and checks.
- Validate domains and units at the boundary.
- Keep the numerical kernel framework-free and deterministic.
- Return diagnostics with values.
- Test analytical limits and failure states.
Forward variance extraction
Convert a volatility term structure into non-negative forward intervals.
from __future__ import annotations import numpy as np def forward_variances(times: np.ndarray, vols: np.ndarray) -> np.ndarray: if times.shape != vols.shape or np.any(np.diff(times) <= 0) or np.any(vols < 0): raise ValueError("times must increase and vols must be non-negative") total = vols**2 * times forwards = np.diff(total) / np.diff(times) if np.any(forwards < -1e-12): raise ValueError("negative forward variance") return forwards t = np.array([30, 90, 180, 365]) / 365.0vol = np.array([0.28, 0.24, 0.225, 0.22])fwd = forward_variances(t, vol)assert np.isfinite(fwd).all() and np.all(fwd >= 0.0)print(np.round(np.sqrt(fwd), 4))Move the quote and inspect every linked representation.
Forward-variance lab
Add an event bump or invert the front end; inspect total and forward variance by interval.
Normal: Gently rising cumulative uncertainty.
- total variance
- forward variance
Use Left/Right or Up/Down arrows to inspect values; Home and End jump to the bounds.
Where the model meets the book.
“The front expiry is not high; it contains a different piece of time.”
expiry timestamps
forward coordinate
ATM/slice vols
event calendar
spread weights
Use spreads and liquidity weights; do not smooth away scheduled events or force a parametric curve that creates negative increments.
RISKcalendar vega
event variance
roll-down
forward-vol exposure
- normalize expiries
- convert total variance
- fit monotone curve
- extract forwards
- stress events
Production failure modes
- day-count mismatch
- event timestamp error
- negative forwards
- over-smoothed knots
09MACRO CONNECTIONOpen the transmission channel.
Events redistribute variance through time
Policy decisions, elections and earnings concentrate uncertainty in intervals rather than lifting every maturity equally.
transmitslocalizes uncertainty
transmitsadds an event increment
transmitsforms a bump or inversion
outputisolates the interval
10COMMON PITFALLSOpen the failure checklist.
Subtracting volatilities to obtain forward volatility.
Comparing expiries with inconsistent clocks.
Smoothing through known events.
Calling an inverted volatility curve arbitrage by itself without inspecting total variance.
11SOURCES / FURTHER READINGOpen sources and continue the track.
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