tailspec · tail-risk evaluation of AI weather models
Weather-model benchmarks average over ordinary days. tailspec measures the storm peak, the record heat and the once-a-decade cold.
Six AI weather emulators (GenCast, AIFS, GraphCast, Pangu-Weather, FourCastNet 3 and NeuralGCM) now run faster than the physics-based systems and match them on the usual scores. Every one of them under-forecasts extreme wind, and the rarer the event, the worse the shortfall.
↓
a single storm
Storm Eunice, 18 February 2022
Britain's wind farms, 2022-02-11 to 2022-02-24, sampled at 00 and 12 UTC.what is plotted
ERA5's 100 m wind, averaged over every 0.25° grid cell holding a British wind
farm, which smooths gusts, so this is not a gust trace. Over it, each model's
24-hour-ahead forecast for the same times, averaged across its ensemble members. GenCast
and AIFS are the two emulators run here with a daily-initialised ensemble, which is what a
day-by-day line needs. The other four sit on a five-day init spacing, too sparse to draw
one, and appear in the aggregate below. Each line breaks wherever its archive stops.
Provenance: farm-cell mean, hub-height 100 m, alpha=0.14; day-1 (24/36 h) leads.
Storm Eunice crossed southern England on 18 February 2022, closing rail lines and cutting power to about 1.4 million homes. The line plotted to the rightabove is what the wind actually did at turbine height over Britain's wind farms through the fortnight around it, as the ERA5 reanalysis reconstructs it.
Now the forecasts. Each model is started afresh from that morning's atmosphere and asked what the next day holds, and the coloured lines join those 24-hour-ahead forecasts across the fortnight. Both follow the reanalysis through the whole run of storms, and both put Eunice on the right day.
At Eunice's own peak both models land within 0.2 m s⁻¹ of the reanalysis. One storm can show that a model sees an event of this kind coming. It cannot show whether the model shaves the top off one, and answering that takes every extreme in the record.
all wind extremes
How the Shortfall Grows
Widen the view from one storm to every 24-hour forecast made between 2020 and 2023, worldwide, filed by how extreme the observed wind turned out to be at that place and hour. Even the mildest group on this axis is the windiest 10 per cent of the record, so nothing here is an ordinary day.
NeuralGCM's shortfall is around 12 times
the other five, so the axis has to expand to hold it.
Mean 24-hour 10 m wind-speed forecast error against ERA5, worldwide, 2020 to 2023. Zero is a
forecast that is right on average within its group.what is plotted
Each forecast/observation pair is filed by the percentile the observed wind reached in ERA5's
own distribution for that place, then averaged within the group. The groups do not overlap and
the last is open-ended above P99.5. About 381,000 samples fall in
each of the first four, 190,000 in P98-99 and 95,000 in each of
the top two. NeuralGCM falls 2.2 m
s⁻¹ short in the mildest group and 5.3 m
s⁻¹ short in the rarest.
No model reaches the observation in any group, and the gap widens as the events get rarer. The five on a shared axis fall 0.07 to 0.22 m s⁻¹ short in the windiest tenth of the record and 0.26 to 0.63 m s⁻¹ short above the 99.5th percentile, while NeuralGCM does the same thing an order of magnitude larger. What all six share is the shape rather than the size, a shortfall that grows with rarity in every one of them.
the mechanism
Why the Extremes Come Out Small
the technical version
A point loss is minimised by a functional of the conditional distribution rather than by a draw from it. Squared error is minimised by the conditional mean E[y | x] and absolute error by the conditional median, and either way p(y | x) collapses to one number per cell. A field of those numbers varies less than a draw does, by the law of total variance, and the gap scales with the conditional spread, which is what compresses conditional extremes. A proper score for the whole distribution lifts that constraint on the individual members but not on anything read off the ensemble mean. At a decision threshold the loss is asymmetric anyway (2:1 in our wind-power backtest), so the cost-minimising commitment is a quantile of the predictive distribution and not its centre.
Most of these emulators are trained on a point loss, and which point loss barely matters. GraphCast and AIFS minimise squared error, whose optimum is the conditional mean. Pangu-Weather minimises absolute error, whose optimum is the conditional median. Either way the target is a summary of every atmosphere still consistent with this morning's observations rather than one of those atmospheres, and a summary falls furthest from a real draw exactly where those atmospheres disagree most, at the top of the distribution.
Training on a probabilistic score loosens this without undoing it. FourCastNet 3 is trained on a CRPS objective and GenCast is a diffusion model that draws samples rather than averaging over them, and both still come in under the observation in every group on the panel above. Some of that is where the number gets read, since headline products are usually taken off the ensemble mean, which puts the averaging straight back in. And where a real decision sits the penalties are rarely symmetric, so what minimises cost is a quantile rather than the middle.
What keeps this invisible is arithmetic. Global RMSE is dominated by the ordinary hours that make up almost all of the record, so a shortfall confined to the rarest per cent barely moves it. The tail is not being measured, and it stays that way until it is scored on its own.
what tailspec measures
Three ways a forecast fails in the tails
Tail Heaviness
Does the model's own distribution reach the most extreme events, or does it thin out too fast?
the technical version
Generalised Pareto shape parameter ξ, fitted per grid cell by peaks-over-threshold. Too small a ξ means tails that are too thin.
Calibration
When the model says a 1-in-100 event, is it actually 1-in-100?
the technical version
Tail calibration after Allen et al. (2024). The occurrence ratio compares how often a threshold was actually exceeded with how often the forecast said it would be. The severity ratio compares how far past the threshold those exceedances went.
Value
What a decision taken on this forecast costs, against the same decision taken without it.
the technical version
Relative economic value across cost-loss ratios, plus backtested trading desks with real settlement rules (see In practice).
tail shape
Where the tails are too thin
loading gridded data…
the technical version
Peaks-over-threshold fit, per grid cell, to the exceedances above that cell's local P95 (95th-percentile) threshold. The more positive ξ is, the heavier the tail, so a model whose ξ falls short of ERA5's is under-weighting its own worst cases.
GenCast is the only forecast model whose tail shape ξ falls short of ERA5's at the median grid cell, which makes its own most extreme winds rarer than the reanalysis record shows. AIFS, GraphCast and Pangu-Weather come in under ERA5 on the area-weighted mean but not at the median, so their shortfall concentrates in particular regions rather than spreading evenly. CorrDiff is the one exception in the other direction, heavier-tailed than ERA5 on both. It is a diffusion downscaler rather than a forecast model, so no squared-error objective is pulling its output towards a conditional mean.
record-breaking events
Same Lineage, Different Objective
GenCast and AIFS come out of the same transformer lineage. What separates them is what they were trained to do. AIFS minimises mean squared error, and the forecast that minimises squared error is the conditional mean. GenCast is a conditional diffusion model, trained by denoising rather than by error minimisation and scored with CRPS, which rewards a single sharp atmosphere that could plausibly have happened over a blurred average of many that could not. A record-breaking event tests that difference directly, because the model has to either commit to a value beyond the standing record or fall back towards normal.
the technical version
Paired bootstrap over 28 initialisations, resampled 10,000 times per model for the intervals shown below. The GenCast-minus-AIFS difference and its p-value come from a permutation test on the same paired initialisations, so a small p-value reflects a difference too large to be shuffle noise, not just a large sample.
Records of heat and cold separate the two clearly. GenCast reaches a Brier skill of 0.394 to AIFS's 0.309, a difference of +0.085 (p < 0.0001). Wind records are hard for both. GenCast leads there by +0.666 (p < 0.0001), but both land below zero, so both do worse than simply quoting the long-run rate at which wind records fall. Mean sea-level pressure, the smoothest of the three fields, shows no advantage either way, 0.599 to 0.611 and indistinguishable at p = 0.32.
record heat & cold
GenCast ahead by +0.085 [+0.058, +0.122]p < 0.0001
record wind
GenCast ahead by +0.666 [+0.378, +1.036]p < 0.0001
record pressure
no separation (p = 0.32)
Brier skill at calling a record before it happens, over 28 initialisations. Zero is
the skill of quoting the long-run rate at which records fall. Whiskers are bootstrap intervals
(10,000 resamples). The row beneath gives the paired GenCast-minus-AIFS
difference and its permutation p-value.
GenCast and AIFS differ in objective and share a lineage, so the gap between them isolates the objective rather than the architecture. How large that gap is depends on the field. It is widest on wind (+0.666, though from a baseline where neither model beats the climatological rate), clear and significant on heat and cold (+0.085), and absent on pressure, the field with least blur to remove.