Background·Concepts Versioned reference

Extreme Value Theory

A plain-language tutorial: how to estimate losses worse than anything you have ever seen, what gives you the right to try, and what the answer costs. One dataset, carried from first look to final estimate.

Concept
background/extreme-value-theory
Version
v1.0-draft minor1.0 · 2026-07-04 · initial version
Issued
2026-07-04
Author
M. Tanti
Introduction and notation prerequisites · the running sample · notation

The only prerequisites are knowing what a distribution, a quantile, and a confidence interval are. Every symbol is introduced before it is used, and every formula is read back in plain words right after it appears. After reading, you should be able to do 3 things:

  • read the shape of a tail from a plot
  • fit a tail model to data and check whether to believe it
  • report a far-out risk estimate honestly, as a range with its assumptions showing, instead of one confident number

One dataset is carried through the whole tutorial: 2,000 simulated daily loss sizes, drawn from a distribution chosen as a stand-in for financial losses. Because we simulated it, we know the true answers, a luxury no practitioner has; we use it to mark every estimate against the truth. It is the same dataset Fig. 02 loads when it opens, so every number in the worked examples can be checked by reading the widget.

X, F, Sa loss; its distribution function; and its survival function S = 1 − F, which answers "how often is it worse than this?"u, Ya threshold we choose, and an excess Y = X − u: how far past the threshold a loss wentζhow often losses get over the threshold at all: P(X > u)mhow many observations in the sample got over the thresholdσ, ξthe tail model's 2 parameters: scale (how stretched) and shape (what kind of tail). ξ is the decisive oneq(p), Tthe loss level exceeded with probability p; equivalently the "1-in-T" loss, where T = 1/pθthe extremal index; a discount factor for extremes that arrive in bunches (§ 06)
§ 01 / 07

The Problem: Losses Worse Than Any You've Seen

Your data ends at its largest observation. The questions that matter live past that point.

Suppose you have 2,000 days of loss data and someone asks: how bad is the 1-in-10,000 day? Your first honest reaction should be that you can’t know. You’ve only watched 2,000 days. Extreme value theory is the branch of statistics built to answer anyway, and to be exact about what the answer costs. Before any theory, it’s worth seeing what goes wrong without it.

The naive approach is to sort your observations and read a value off the top. The “99.9% quantile” of 2,000 points (the level only 0.1% of days exceed) comes out as roughly the second-largest thing you saw. That is not a summary of your data; it is a single data point presented as one, and it carries all of that one draw’s luck. Worse: for anything beyond your largest observation, sorted data has literally nothing to say. It puts probability zero out there, which is not caution but a wrong answer stated confidently.

Example 1.1: The Running Sample, Before Any Theoryex-1-1

Our 2,000 losses have a largest value of 22.0 and a second-largest of 18.8, so 18.8 is the naive estimate of the 99.9% quantile. Because the data is simulated, we know the true 99.9% quantile: it is 12.9. The naive estimate is 46% too high, for no deeper reason than that one draw came in hot. Re-run the simulation and it might come out 46% too low instead. One order statistic is an anecdote.

So we need a way to use more of the data to say something about the extremes. Historically there have been 2 approaches. The older approach, block maxima, keeps only the worst observation per block of time (the worst day of each year, say) and studies how those worst-days behave. 1The Fisher–Tippett–Gnedenko theorem [4] says the worst-per-block values, suitably rescaled, can only converge to one family of distributions (the GEV). It does for maxima what the central limit theorem does for averages. The modern workhorse, and this tutorial’s subject, is peaks over threshold (POT): pick a bar, keep every day that cleared it, and model how far past the bar those days went. POT wins for a blunt reason: it wastes less. A year gives block-maxima one data point; the same year might give POT dozens. Section 03 will show just how precious each one is.

The route ahead is as follows:

  • the family that tails converge to, and its one decisive parameter (§ 02)
  • how to fit it, and the dilemma hiding in the very first step (§ 03)
  • how the fit turns into "1-in-10,000" answers, with the uncertainty itemised (§ 04)
  • the theorem that permits all this, stated honestly (§ 05)
  • what happens when bad days come in streaks (§ 06)
  • what to do when the tail itself changes over time (§ 07)
§ 02 / 07

One Family, One Decisive Parameter

Tails come in exactly 3 kinds, and a single number, the shape ξ, tells you which world you're in.

Here is the central fact of the subject, stated first and justified in § 05: if you look at a distribution’s tail from a high enough threshold, it looks like a member of one specific 2-parameter family, no matter what the rest of the distribution looks like. That family is the generalised Pareto distribution. Its 2 parameters split the work cleanly: the scale σ says how stretched the tail is, and the shape ξ says what kind of tail it is. The scale only stretches the tail; the shape decides which of the 3 regimes you are in.

Definition 2.1: The Generalised Pareto Distribution (GPD)def-2-1

An excess Y follows a GPD with scale σ > 0 and shape ξ if its survival function, the probability of exceeding y, is

S(y)=(1+ξy/σ)1/ξ(ξ0),S(y)=ey/σ(ξ0)S(y) = \left(1 + \xi\,y/\sigma\right)^{-1/\xi} \quad (\xi \neq 0), \qquad S(y) = e^{-y/\sigma} \quad (\xi \to 0)

In words: take how far out you’re asking about (y, in units of the scale), tilt it by the shape, and raise it to a negative power set by the shape again. The sign of ξ creates 3 regimes:

  • ξ < 0: the survival hits exactly zero at y = σ/|ξ|. The tail has a hard endpoint, like physical quantities that simply cannot exceed some limit.
  • ξ = 0: the tail decays exponentially; the fast, “well-behaved” decay that Gaussian thinking silently assumes.
  • ξ > 0: the tail decays like a power law, y^(−1/ξ), slowly. This is the heavy-tailed world, and it is where financial losses live.
Intuition 2.2: How Records Get Brokenintu-2-2

A concrete way to sense the shape parameter: watch how records fall. In a thin-tailed world (ξ ≤ 0), say human heights, each new record edges past the old one by a sliver; nobody will ever be twice the current tallest. In a heavy-tailed world (ξ > 0; insurance claims, market crashes, city sizes) the next record can dwarf everything that came before. Quick field test: if your dataset’s largest value is several times its second-largest, you are probably in ξ > 0 territory, and Gaussian instincts about it will be wrong in the expensive direction.

Remark 2.3: Heavy Tails and Infinite Momentsrem-2-3

For ξ > 0, the average of Yk is finite only when ξ < 1/k. So: at ξ ≥ 0.5 the variance is infinite; at ξ ≥ 1 even the mean is. “Infinite variance” sounds abstract, so here is what it means in practice: compute the sample variance, keep collecting data, and watch the number refuse to settle; it jumps every time a big observation lands, forever, because the quantity it is chasing does not exist. Financial return tails typically sit around ξ ≈ 0.2–0.4 [6]: the mean exists, the variance is doubtful, and far quantiles are many times what a Gaussian would predict.

Pitfall 2.4: Averaging What Has No Stable Averagepit-2-4

A sample average always exists (your data is finite) even when the thing it estimates does not. So an “average loss beyond VaR” computed on ξ ≈ 0.5 data will compute just fine, look reasonable, and be rewritten by the next large observation. Before trusting any tail average, check ξ first. If ξ is near or above 0.5, the average is not a fact about the world; it is a fact about which extremes happened to land in your sample.

Fig. 01 lets you move ξ with your hands. One viewing tip first: the axes are log-log, both stretched so that equal steps mean equal multiples. On such axes a power law becomes a straight line, so “is the tail heavy?” turns into “does it go straight?”, which is the fastest eyeball test in the subject.

Fig. 01 — The three tail regimes, one dial Evidence · closed-form, no knob

The survival curve of Definition 2.1 on log-log axes, with σ = 1. Slide ξ through zero and watch the curve change kind, not just position: bounded tails dive to their endpoint, the exponential tail keeps curving down, and heavy tails straighten into lines whose slope is −1/ξ.

Fréchet domain: power law
0.1u1u10u100u1000u11e-11e-21e-31e-41e-5faint: ξ = −0.2, 0, +0.3EXCESS OVER THRESHOLD (LOG) · SURVIVAL PROBABILITY (LOG)
Regime
Heavy / power-law
Finite moments
mean, var, skew
99.9% excess quantile
23.1 u
Tail endpoint
none
Method: GPD survival S(y) = (1+ξy/σ)^(−1/ξ), σ=1 · reference curves ξ = −0.2, 0, +0.3 Reproduce ↗
The faint reference curves stay put while yours moves. Same threshold, same scale, different kind of world, and the difference is one number.
§ 03 / 07

Fitting the Tail: Peaks Over Threshold

A 5-step recipe, an estimator that is just arithmetic, and a dilemma hiding inside step 1.

Recipe 3.1: The POT Procedurerec-3-1
  1. Choose a threshold u: the bar a loss must clear to count as “tail”. (This choice is the hard part; the rest of the section is about it.)
  2. Collect the m excesses: for every observation over the bar, record how far over it went. Estimate ζ̂ = m/n, the fraction of observations that cleared the bar.
  3. Fit the GPD’s 2 parameters (σ̂, ξ̂) to the excesses (Estimator 3.2 below, or maximum likelihood).
  4. Check yourself: does ξ̂ hold steady across nearby thresholds (Fig. 02)? Do the excesses actually follow the fitted curve?
  5. Convert to “1-in-T” answers with the formula of § 04, always as a range from ξ̂’s confidence interval, never as the midpoint alone.
Estimator 3.2: Probability-Weighted Moments (Hosking–Wallis)est-3-2

The idea before the formulas: the GPD makes exact predictions about 2 particular weighted averages of the excesses. Compute those 2 averages from your data, then solve backwards for the (σ, ξ) that would have predicted them. No optimiser, no starting values; just arithmetic. Sort the excesses ascending, y(1) ≤ … ≤ y(m):

b₀ = plain average of the excesses
β₁ = (1/m) Σ ((i−1)/(m−1))·y₍ᵢ₎  (an average that up-weights the larger excesses)
a₁ = b₀ − β₁     ξ̂ = 2 − b₀/(b₀ − 2a₁)     σ̂ = 2·b₀·a₁/(b₀ − 2a₁)     SE(ξ̂) ≈ (1+ξ̂)/√m

This is exactly what Fig. 02 runs. 2Maximum likelihood [1] and the Hill estimator [8] are the other standard choices. In the stability plot’s flat region all 3 roughly agree; that agreement is part of what makes the region trustworthy.

Now the dilemma inside step 1: the theorem of § 05 says tails look GPD from high enough up, and never says how high is enough. Set the bar too low and you are applying a tail formula to the body of the distribution: like judging the shape of a mountain’s peak while standing in its foothills, you will get a precise, confident, wrong answer. That error is bias. Set the bar too high and almost nothing clears it: you are fitting 2 parameters to a dozen points, and the answer is honest but nearly information-free. That error is variance. Every POT analysis lives on the trade between the two.

The standard diagnostic is the parameter stability plot: fit the model at every candidate threshold and plot ξ̂ with its confidence band. If the theory has “kicked in”, ξ̂ should stop drifting as the threshold rises (the estimate flattens out) while the band is still tolerably narrow. You work in that flat-ish region. Fig. 02 draws it for the running sample.

Example 3.3: Fitting the Running Sampleex-3-3

Put the bar at the 92nd percentile of the data: u = 2.80. That leaves m = 159 excesses, and ζ̂ = 159/2000 = 0.080: 8% of days cleared the bar. Estimator 3.2 returns ξ̂ = 0.351 and σ̂ = 1.08, with a 95% band on ξ̂ of [0.14, 0.56]. The true shape (remember, we know it) is 1/3, and it sits comfortably inside the band. But look at what else the band contains: 0.56 means “infinite variance”, and 0.14 means “nearly exponential, almost tame”. With 159 tail observations, the data has narrowed the possible worlds down to that range, and no further. Holding both facts at once, that the estimate is good and that the uncertainty spans different kinds of world, is the skill this tutorial is trying to teach. These are Fig. 02’s opening readouts; go check.

Assumption. The excesses over the chosen threshold are approximately GPD (Theorem 5.1), mutually independent (§ 06 handles the violation), and drawn from a stable regime (§ 07 handles that one).

Fig. 02 — The threshold dilemma, felt Illustration · simulated sample, known truth

The running sample under Recipe 3.1's step 4: the fitted shape ξ̂ at every threshold from the 80th to the 99th percentile, with its 95% band, against the true value (dashed line). Drag the threshold and watch both failure modes: drift on the left (bias: the bar is in the foothills), an exploding band on the right (variance: almost nothing clears the bar). The resample button redraws the whole dataset, which is the honest way to see how much of any single trace is luck.

-0.20.00.20.40.60.81.080%85%90%95%99%true ξ = 1/3THRESHOLD PERCENTILE
Excesses at threshold
159
Fitted ξ̂
0.351
95% band on ξ̂
[0.14, 0.56]
True ξ
0.333
Model: heavy-tailed sample (true ξ = 1/3), seeded · PWM fit per threshold (Estimator 3.2) · SE ≈ (1+ξ̂)/√m Reproduce ↗
An illustration by construction: here we know the truth, which no practitioner ever does. What transfers is the shape of the dilemma, and the habit of resampling before trusting any single trace, here or anywhere.
§ 04 / 07

From Fit to Forecast: The 1-in-T Loss

3 lines of algebra turn the fitted tail into far-out answers, and the same 3 lines show why uncertainty compounds with distance.

We have a fitted tail. Now we want answers of the form “the loss exceeded once in 10,000 days is …“. The conversion is one chain of reasoning: for a loss to beat some far-out level x, 2 things must happen in sequence: it must clear the threshold at all, and then, given that it cleared, it must travel the remaining distance. Multiply the 2 probabilities:

Derivation 4.1: The Return-Level Formuladrv-4-1
P(X>x)=Pr(clear the bar)×Pr(travel xu furthercleared)ζ(1+ξ(xu)/σ)1/ξP(X > x) = \Pr(\text{clear the bar}) \times \Pr(\text{travel } x-u \text{ further} \mid \text{cleared}) \approx \zeta \cdot \left(1 + \xi(x-u)/\sigma\right)^{-1/\xi}

The second factor is the GPD survival from Definition 2.1. Set the product equal to your target probability p and solve for x:

q(p)=u+(σ/ξ)((p/ζ)ξ1)q(p) = u + (\sigma/\xi)\left((p/\zeta)^{-\xi} - 1\right)

In words: start at the threshold, and add a distance that depends on how much rarer the event you want is than a threshold crossing (that is the ratio p/ζ), raised to a power set by the shape. Each ingredient was estimated where data is plentiful: ζ by counting crossings, σ and ξ from all m excesses. Only after everything is estimated does the formula travel out past the data.

And here is why uncertainty compounds with distance: ξ sits in an exponent. Small changes to an exponent make large changes to the result, and the further out you ask (the smaller p gets), the larger the number being raised; a fixed band of uncertainty around ξ fans out into an ever-wider band around the answer. Extrapolate twice as far and the fan opens wider still. The uncertainty does not add with distance; it multiplies.

Example 4.2: The Running Sample's 1-in-10,000 Dayex-4-2

Continue from Example 3.3: u = 2.80, σ̂ = 1.08, ξ̂ = 0.351, ζ̂ = 0.080. Ask for the 1-in-10,000 loss, 5 times further out than our 2,000 observations reach. The formula’s point answer: 31.7. Now do what Recipe 3.1’s step 5 insists on: sweep ξ across its band [0.14, 0.56] and recompute. The answer sweeps from 14.8 to 82.3: the biggest answer the data supports is 5.6 times the smallest. The true value (simulation privilege again) is 28.0: inside the range, noticeably below the point estimate, far from either edge. So the honest report is “somewhere between 15 and 82, centred near 32”, and anyone who quotes you only the 32 has thrown away the most important part.

Pitfall 4.3: Quoting the Midpointpit-4-3

A far quantile quoted as a single number silently claims the shape parameter is known. It never is. Example 4.2’s factor of ×5.6 is typical, not an outlier, and it counts only the shape’s uncertainty; threshold choice, scale uncertainty, and the dependence problem of § 06 all add further uncertainty on top. This is the same lesson as background/calibration § 08, arrived at from the other side: the far tail is reported as a range with its assumptions showing, or it is misreported.

Validate the shape where the data live; let the theorem carry you where they don't.

Fig. 03 — The return-level curve, with the extrapolation priced Evidence · closed-form, no knob

Derivation 4.1 drawn in full. Left-to-right is "how rare an event are you asking about" (the return period T, log scale); up is the loss level; the curve is the formula at your ξ̂; the band sweeps ξ̂ ± its half-width. Everything to the right of your sample size is shaded madder: no observation has ever been there, and every claim about that region is theorem plus assumption.

1001,00010,000100,0000u12u24u36u48u60ubeyond the dataRETURN PERIOD (OBSERVATIONS, LOG) · LOSS LEVEL (THRESHOLD UNITS)
Level @ T = 10,000
19.2 u
Band @ T = 10,000
[14.3, 26.3] u
Ratio high / low
×1.84
Data end at T ≈
1,995
Method: q(T) = u + (σ/ξ)((1/(Tζ))^(−ξ) − 1) · u=σ=1, ζ=5% · band over ξ̂ ± half-width Reproduce ↗
Inside the data, the band is modest and checkable. Past the madder line, the band is the answer: report it, not its midpoint.
§ 05 / 07

The Theorem, and Its Fine Print

What gives us the right to do any of this, and the 2 assumptions real data actually violates.

Everything so far leaned on one claim: look at almost any distribution’s tail from high enough up and it looks generalised Pareto. That claim is a theorem, and it deserves to be stated where you can see exactly what it does and doesn’t promise.

Theorem 5.1: Pickands–Balkema–de Haan (Informal Statement)thm-5-1

Let the loss distribution F satisfy a mild regularity condition (belonging to a “maximum domain of attraction”). Then as the threshold u rises, the distribution of the excess Y = X − u, given X > u, converges to a generalised Pareto, with a shape ξ that is a fixed property of F itself and a scale that may vary with the threshold. [3]

A useful mental picture: zoom in far enough on almost any smooth curve and it looks like a straight line. The GPD is the tail’s version of the straight line: the universal local shape that appears when you zoom in far enough. And crucially, the shape you measure is a fact about the distribution, not about where you happened to put your threshold, which is exactly why the stability plot of § 03 is a fair test.

Remark 5.2: Which Conditions Actually Biterem-5-2

The regularity condition is famously mild: Gaussian, Student-t, lognormal, Pareto, beta all satisfy it, and building a counterexample takes deliberate effort. The conditions that bite in practice are 2 that arrive silently with the standard fitting procedures, and financial data violates both:

  1. Independence: today’s loss doesn’t influence tomorrow’s. Streaks of bad days break it (§ 06).
  2. Stationarity: the rules aren’t changing while you play. Changing regimes break it (§ 07).

One more caution about the theorem itself: it says nothing about how fast the convergence happens. “High enough threshold” is a limit statement; the theorem never says how high is high enough for your data. That is why § 03’s dilemma is unavoidable rather than a fixable annoyance: the finite world has to negotiate with an asymptotic promise, and the stability plot is the negotiation.

§ 06 / 07

When Bad Days Come in Streaks

Clustering leaves the crossing rate untouched while quietly shrinking how much those crossings tell you.

Markets are persistent: one stressed day makes the next stressed day more likely, so threshold crossings arrive in bursts rather than scattered evenly. Here is the subtle part: the bursts don’t change how often you cross the threshold overall. Over a long window you spend the same fraction of days above the bar either way. What the bursts destroy is the amount of independent information those crossings carry. 50 crossings that arrived in 8 storms tell you about 8 storms, like surveying 50 people from 8 households and calling it 50 opinions.

Definition 6.1: The Extremal Indexdef-6-1

The extremal index θ, a number between 0 and 1, measures how bunched a series’ extremes are: crossings of a high threshold arrive in clusters whose average size is 1/θ. [7] So θ = 1 means extremes arrive alone (the independent case), and θ = 0.25 means they arrive four at a time on average. The practical conversion: N clustered crossings are worth about θ·N independent ones, and confidence intervals computed as if crossings were independent are too narrow by roughly 1/√θ.

Algorithm 6.2: Runs Declusteringalg-6-2
  1. Pick a run gap r: how many calm observations must pass before you call it a new storm (here r = 5).
  2. Walk through the crossing times in order. Whenever the gap since the last crossing exceeds r, a new cluster starts.
  3. Estimate θ̂ = C/N: clusters counted over crossings counted.
  4. Refit the GPD of Recipe 3.1 using one value per cluster: the cluster maximum. You are choosing the smaller honest sample over the larger misleading one.
Pitfall 6.3: Counting Cannot Detect Clusteringpit-6-3

Scattered or bunched, the number of crossings is the same, so any check that only counts them is blind to dependence, while the inference underneath is quietly ruined. The identical trap appears one level up in background/calibration § 03: 10 forecast violations spread over 10 years and 10 in a single week give the same count and describe completely different risks. Whenever you count tail events, also ask whether they cluster.

Fig. 04 — The extremal index: fifty crossings, eight storms Illustration · simulated series

A simulated loss series where you control how much the market "has moods": how strongly one stressed day begets the next. Crossings of the 95th-percentile bar are the madder dots; Algorithm 6.2 groups them into clusters, underlined in petrol. Turn the persistence up and watch: the number of dots barely moves, and the number of underlines collapses.

n = 600 · threshold = 95th pct · run gap r = 5
u (95th pct)TIME · PETROL UNDERLINES = CLUSTERS
Crossings N
29
Clusters C
23
Extremal index θ̂ = C/N
0.79
CI inflation √(N/C)
×1.12
Model: xₜ = σₜ·zₜ with log-vol AR(1), seeded · runs declustering, r = 5 (Algorithm 6.2) Reproduce ↗
The marginal crossing rate is pinned near 5% at every setting: Pitfall 6.3, drawn. Dependence is invisible to the count and ruinous to the inference.
§ 07 / 07

Tails That Move, and Where This Tutorial Stops

A fitted GPD is a photograph of one regime. When the regime changes, you have 3 honest options.

Everything above fits one tail to one regime: one photograph of one weather system. When the world shifts underneath the data (liquidity migrates, leverage builds up, a market’s plumbing changes) the photograph goes stale, and there are 3 defensible responses:

  1. Refit on a rolling window. Keep only recent data, so the photo stays current. The price is variance: you rediscover § 03’s dilemma with even less data.
  2. Let the parameters depend on conditions. Model σ and ξ as functions of things you can observe (current volatility, market state), in the tradition of conditional EVT [6]. The price is model risk: you now also have to be right about the function.
  3. Wrap the tail model in a distribution-free guarantee. Conformalised EVT keeps the GPD as a hypothesis about shape while a conformal layer guarantees that the resulting intervals cover what they claim, group by group. EVT supplies the extrapolating shape; conformal supplies the coverage guarantee. This is the construction several papers on this site build on, and its machinery lives in background/conformal-prediction.

This tutorial deliberately stops short of 3 topics: extremes of several series at once (tail dependence, a subject of its own), the estimator theory behind Estimator 3.2’s alternatives, and the conformal layer itself. The companion piece is background/calibration § 08: the two meet at the same cliff edge from opposite sides; this tutorial supplies the extrapolation, that one insists you publish its uncertainty. For the shelf: [1] is the standard gentle course, [2] the rigorous one. Every number in the worked examples reproduces from Fig. 02’s opening state. That reproducibility is not a flourish; it is the point.

References the shelf behind the tutorial
  1. Coles, S. (2001). An Introduction to Statistical Modeling of Extreme Values. Springer. The standard first course; chapters 4–5 are this tutorial’s §§ 03–04.
  2. Embrechts, P., Klüppelberg, C., Mikosch, T. (1997). Modelling Extremal Events for Insurance and Finance. Springer. The rigorous treatment.
  3. Pickands, J. (1975). Statistical inference using extreme order statistics. Ann. Statist.; Balkema, A., de Haan, L. (1974). Residual life time at great age. Ann. Probab. — Theorem 5.1’s two halves.
  4. Fisher, R.A., Tippett, L.H.C. (1928); Gnedenko, B. (1943) — the block-maxima limit law of § 01’s sidenote.
  5. Hosking, J.R.M., Wallis, J.R. (1987). Parameter and quantile estimation for the generalized Pareto distribution. Technometrics. — Estimator 3.2.
  6. McNeil, A.J., Frey, R. (2000). Estimation of tail-related risk measures for heteroscedastic financial time series. J. Empirical Finance. — conditional EVT (§ 07’s second option), and the empirical shape range quoted in Remark 2.3.
  7. Leadbetter, M.R., Lindgren, G., Rootzén, H. (1983). Extremes and Related Properties of Random Sequences and Processes. Springer. — the extremal index, Definition 6.1.
  8. Hill, B.M. (1975). A simple general approach to inference about the tail of a distribution. Ann. Statist. — the alternative tail-index estimator of § 03’s sidenote.