M/04 — Extreme Value Theory
Peaks-over-threshold and pairwise tail-coupling
Generalised Pareto fits to the upper tail of cross-asset returns, plus a model-free coefficient χ for asymptotic tail dependence.
The mathematics
Pickands–Balkema–de Haan
Let X be a random variable with CDF F satisfying F(x) → 1 as x → x* (the right endpoint, possibly +∞). For a high threshold u, define the excess random variable Y = X − u given X > u. The Pickands–Balkema–de Haan theorem (1974–75) states that F is in the maximum domain of attraction of an extreme-value distribution if and only if there exist scaling functions σ(u) such that
where G is the Generalised Pareto Distribution (GPD)
with y* = ∞ for ξ ≥ 0 and y* = −σ/ξ for ξ < 0. The shape parameter ξ governs tail behaviour:
- ξ > 0: heavy tail, regularly varying with index 1/ξ. Equity returns and crypto live here, ξ ≈ 0.2–0.4.
- ξ = 0: exponential tail. Many noise-driven series.
- ξ < 0: bounded tail. Rare in finance but seen in volatility-floored series.
Method of moments estimator
The mean and variance of a GPD with parameters (ξ, σ) are
Inverting these relations yields the Hosking–Wallis (1987) method-of-moments estimator
MLE is asymptotically more efficient (and is what the production library uses), but method-of-moments is closed-form, deterministic, and adequate for the demo below.
Tail dependence coefficient χ
For a bivariate (X, Y) with continuous marginals FX, FY, define the upper-tail dependence coefficient
This is symmetric in (X, Y) — easy to verify from the definition. Two facts make χ the right object:
- Independence ⇒ χ = 0. If X ⫫ Y the conditional probability is just 1 − u → 0.
- Comonotonicity ⇒ χ = 1. If Y is a monotone function of X, the conditional probability is identically 1.
Crucially, χ is invariant under monotone transformations of the marginals — it depends only on the copula. That makes it a marginal-free measure of joint extremity. For Gaussian copulas (any correlation ρ < 1) χ = 0; for the bivariate t copula with ν degrees of freedom and correlation ρ,
which is > 0 for any ρ > −1. This is the empirical content of the “everything correlates in a crisis” observation: Gaussian correlation says nothing about joint extremes, but a Student-t copula at moderate ρ already produces meaningful tail-coupling.
Empirical estimator
Replace FX, FY with empirical CDFs (uniform ranks divided by n+1) and compute, for threshold u close to 1,
Worked example
Generate 2,000 pairs (Xt, Yt) with Yt = λ Xt + √(1 − λ²) Zt, X and Z independent Student-tν. Take ν = 5, λ = 0.5. Theoretical χ for the implied bivariate-t copula is non-zero. The fitted GPD on |X| above the 95th percentile should return ξ around 1/ν = 0.2.
Demo — Peaks-over-threshold + tail-coupling χ
Synthetic Student-t pair (X,Y) with linear coupling λ. Fit GPD on |X| excesses above the 95th percentile; compute empirical χ(u) on (X,Y) ranks.
Histogram of 100 excesses above threshold u=2.537. Amber line: fitted GPD density with ξ=0.044, σ=0.834. ξ > 0 indicates a heavy (Pareto-type) tail. The χ(0.99) value at left measures how often X and Y simultaneously exceed their 99th percentile — a model-free tail-coupling estimator.
Note: GPD fit uses method-of-moments (Hosking & Wallis 1987). The reference implementation uses MLE. Both estimators are consistent; MoM is preferred here for in-browser determinism.
Figures
Why this matters for systematic strategies
Two practical uses in the firm’s pipeline. First, GPD fits on per-strategy drawdown distributions give honest tail-VaR and expected-shortfall estimates that don’t collapse during regime shifts — the Gaussian-VaR alternative under-reports tail risk by an order of magnitude during the same crises. Second, χ on cross-asset returns at u = 0.99 is a leading indicator of contagion. When BTC–XAU χ(0.99) drifts above 0.4, the empirical pattern is consistent with broad “flight-to-cash” episodes in which historically uncorrelated assets co-move in their tails.
Reproducibility
DaruFinance / tail-evt
Rust — open source reference implementation
Minimal invocation
use tail_evt::{pot_fit, tail_chi};
// X: &[f64] of returns
let fit = pot_fit(&x, /*pct=*/ 0.95);
println!("xi = {:.3}, sigma = {:.3}", fit.xi, fit.sigma);
// Pairwise tail dependence on (X, Y)
let chi_99 = tail_chi(&x, &y, 0.99);
println!("chi(0.99) = {:.3}", chi_99);
References
- [1]Pickands, J. (1975). Statistical inference using extreme order statistics. Annals of Statistics 3, 119–131.
- [2]Balkema, A. A. & de Haan, L. (1974). Residual life time at great age. Annals of Probability 2, 792–804.
- [3]Coles, S. (2001). An Introduction to Statistical Modeling of Extreme Values. Springer Series in Statistics.
- [4]McNeil, A. J., Frey, R. & Embrechts, P. (2015). Quantitative Risk Management: Concepts, Techniques and Tools (rev. ed.). Princeton University Press.