WorksComputer Science
The Cost of Coverage: Conformalising Native Forecast Uncertainty for GB Wind Power
Abstract
Uncertainty bands on wind forecasts help inform reserve sizing and commitments, but often fail to deliver their stated coverage. We apply conformal prediction to native bands to see what it adds and what it costs, comparing six forecasters, from ARIMA to a tabular foundation model, at two wind farms in Great Britain (GB) under operational conditions. We show that calibration repairs empirical marginal coverage with little or no Winkler Score penalty, but this apparent success conceals under-coverage in high winds. Calibrating by forecast wind regime turns marginal coverage into regime-level coverage, cutting day-ahead out-of-band volume in high winds by over 40% relative to pooled calibration while narrowing bands overall.
Introduction
Wind became Great Britain’s largest source of electricity in 2024, supplying 30% of generation and marking a major milestone in the shift from fossil fuels to renewable power [17]. At the site level, generation volume is settled every half-hour against contracted positions with deviations cashed out at the balancing price, which rises sharply when the system is short. On the 8th of January 2025, a shortfall in forecast wind helped push prices to £2,900/MWh and contributed to a single-day balancing cost of £21M [18]. Prediction intervals are central to decision making under this weather uncertainty, but remain useful only if they achieve their stated coverage without becoming too wide.
Modern machine learning forecasting pipelines output native prediction intervals, yet these are often miscalibrated and routinely under- or over-cover nominal targets. Parametric and Bayesian methods rely on distributional assumptions, while quantile regression depends on fit. Conformal Prediction (CP) [24] offers finite-sample, distribution-free marginal coverage (averaged over all forecasts) around an arbitrary base forecaster. This guarantee rests on exchangeability, an assumption wind violates through autocorrelation and seasonal non-stationarity. The literature responds through re-weighting [3], residual modelling [28], and online adaptation [7].
Conformal methods have reached renewables, including conformalised quantile regression for wind [12], conformal predictive distributions for wind speed [2], context-aware weighted calibration of renewable forecasts [15], and, in solar nowcasting, a comparative benchmark of CP techniques over wrapped point forecasts [16]. We ask what conformal calibration adds to the native uncertainty band a forecaster already publishes, and what it costs under realistic operational conditions.
We contribute three things: (i) a native-versus-wrapped measurement, scoring six forecaster classes against their conformalised counterparts on the same held-out sample in coverage, width and Winkler Score; (ii) an open operational benchmark with two wind farms, across three horizons, purged refits and weather data delays, with the full pipeline released; (iii) an account of how missed energy varies with wind regime and direction.
Benchmark
Data. We use open supervisory control and data acquisition (SCADA) data from two operational GB farms, Kelmarsh (6 turbines, 12.3 MW) and Penmanshiel (14 turbines, 28.7 MW) at 30-minute settlement-period resolution [21 b]. The target is the farm capacity factor (CF), output as a fraction of the reporting turbines’ rated capacity, formed where at least half the farm reports, excluding stopped, curtailed or de-rated turbine observations. Numerical Weather Prediction (NWP) comes from the 31-member NOAA GEFS at 0.25 degrees (20km) via dynamical.org [19], with wind speed at the 80m level closest to hub height. The ensemble mean drives the point forecast and the spread is kept as a feature. Realised weather for retrospective audit comes from ERA5 re-analysis [11].
Training regime. Models are refit on an expanding window with at least one year of training context, every 30 days. We evaluate three horizons () targeting 90% out-of-sample coverage, spanning near-delivery balancing, intraday adjustments and day-ahead commitments. To replicate operational conditions we: (i) purged expanding refits by dropping training rows within one horizon of the window boundary, whose targets were not yet observed; (ii) added a 6-hour publication lag on GEFS forecasts to account for dissemination delays; and (iii) held each conformity score in a queue until its outcome is known, preventing leakage.
Forecasting Models. The six models produce native bands by different mechanisms (Table 1), with persistence as a baseline. Appendix D reports point-forecast root mean squared error (RMSE).
| Forecaster | Reference(s) | Class | Native Uncertainty Band |
| Persistence | - | Empirical residual | Expanding-window residual quantiles |
| ARIMA | Box et al. [ [5] | Parametric | State-space Gaussian forecast interval |
| LightGBM-QR | Ke et al. [ [13] | Direct quantile | Pinball-optimised quantile interval |
| Bootstrap ensemble | Breiman [ [6] | Ensemble spread | Out-of-bag residual quantiles |
| TabPFN v3 | Grinsztajn et al. [ [10] | Amortised Bayesian | Posterior predictive distribution |
| GEFS power curve | Gneiting et al. [ [9] | NWP ensemble | Censored EMOS over member scatter |
Table 1. The six native-UQ classes and the mechanism each uses to produce its own band.
Conformal Calibration. Conformal prediction can be used to correct an interval using its recent errors on a calibration set. We adjust the native band by taking the Conformalised Quantile Regression (CQR) score [23] for observation ,
The corrected band becomes , where is the quantile of the latest observed scores. This Online Sequential Split Conformal Prediction (OS-SCP) guarantees coverage only under exchangeability [14], so for wind we evaluate coverage empirically [20]. We also test Adaptive Conformal Inference (ACI), which dynamically adjusts the target miscoverage rate () online as
with step size [7], and the estimated interval at time . We test OSSCP with Mondrian binning, whereby we bucket calibration by forecasted wind regime (0-5, 5-11, 11+ m/s) to improve conditional coverage, the coverage within each regime [24]. We also evaluate Aggregated ACI (AgACI) [29], Dynamically Tuned ACI (DtACI) [8] and NexCP [3].
Metrics. We measure coverage (% of predictive intervals containing the observed value) and mean width of those intervals. The Winkler Score [27]
jointly penalises width and misses in CF units, so lower is better. The cost of coverage is the change in width and Winkler Score that wrapping causes. We also express misses as the energy outside the band, MWh per settlement period, with fixed installed capacity (MW), split into over- () and under-production ().
Results
Kelmarsh is evaluated over 27-01-2024 to 30-12-2024 and Penmanshiel from 20-03-2023 to 31-12-2023. Full scorecards are in Appendix A.
Marginal coverage is repaired. Conformal calibration brings native coverage close to the 90% target across both farms and all horizons (Figure 1). Native bands near the target change little, while overly wide bands can narrow. At 24 hours, LightGBM-QR and the bootstrap ensemble require roughly 10–25% wider bands to correct under-coverage. Winkler Scores are maintained or improved in 30 of 36 comparisons, with increases below 0.3% in the remainder.
Figure 1. The width cost of restoring marginal coverage. Each marker is one forecaster; the grey segment runs from its native band (light) to its OSSCP band (dark), at three horizons and both farms.
Adaptive gains diminish with forecast horizon. Selecting the best rule in hindsight for each farm, model, and horizon improves OSSCP’s Winkler Score by 3.5% on average at 30 minutes (up to 8.6%), but this advantage narrows to 1.2% at 3 hours and reverses to −1.0% at 24 hours (Appendix A).
Average coverage hides the regimes. At 24 h, every OSSCP band covers close to the 90% target overall, but by wind regime several models over-cover in low winds, offsetting under-coverage in high winds (Figure 2). Mondrian binning brings every model to 87-92% in forecast high winds, with mean width overall 2-4% narrower than OSSCP’s. Operationally, however, Mondrian can only bin by the forecast regime. An audit against ERA5 realised wind speed [11] shows that in the 16% of realised high-wind periods that GEFS forecast as average wind, coverage falls to about 0.55 for native, OSSCP and Mondrian bands alike (Figure 3). High-wind periods are rare but account for over a third of OSSCP’s missed energy, almost all above the upper bound. Across all high-wind periods, Mondrian cuts missed energy by over 40% relative to OSSCP.
Figure 2. OSSCP versus Mondrian-OSSCP day-ahead coverage and width (CF), both farms pooled, by forecast wind regime. Percentages show regime frequency. Markers follow Figure 1.
Figure 3. Day-ahead coverage by realised wind regime, both farms and models pooled, split by whether the GEFS regime forecast matched ERA5.
Discussion
Practical Guidelines. For day-ahead forecasts, calibrating within forecast wind regimes (Mondrian-OSSCP) is a sensible default, restoring the high-wind coverage hidden by the pooled score, with narrower bands on average. Adaptive rules are worth considering for online or short-horizon forecasts. Native bands and those calibrated using pooled or Mondrian methods all show substantial under-coverage when the weather forecast misclassifies high winds, so generators should check coverage against both forecast and realised conditions rather than relying on the headline score alone. Calibration also adds little when native bands are already reliable, as seen for TabPFN across the day-ahead forecast regimes at both farms.
Scoring Rules vs. Grid Reality. The Winkler Score treats equal-sized misses alike, although their financial consequences depend on direction and system conditions. Our high-wind misses are mostly above the upper bound (over-production). If this output is uncontracted and the system is also in surplus, it may earn little or even incur charges at negative imbalance prices. Smaller shortfalls during scarcity can be more expensive, as illustrated by the high imbalance prices on the 8th of January 2025. Our missed energy metric captures volume alone, while the financial value of reliable bands requires evaluating the commitment decisions and returns they produce within a trading optimiser.
Limitations & Extensions. We study two onshore GB farms, so generalisation to offshore sites, other markets and other years remains open. Curtailed periods are excluded, so the target is not the settled metered output. As curtailment is most common in high winds, this motivates a specific classification layer for it. Realised regimes come from ERA5 reanalysis rather than on-site measurements. Extensions include multi-step joint calibration [25], context weighting [15] and soft regime probabilities. AI weather forecasts [4, 26, 1] could also be compared with GEFS to test whether improved regime prediction reduces high-wind under-coverage.
Domain Checklist
Physics feasibility. AC/DC power flow not applicable as we forecast generation rather than network states or power flows. Though our capacity factors can fall slightly outside due to parasitic draw or over-rating, we retain these observations.
Out-of-distribution evaluation. Each pipeline is fit on its own farm, so the second farm is a replication with a different region, layout and evaluation year rather than a transfer experiment (see Figure 4). All evaluations are run out-of-sample, and the misclassified-regime audit (Figure 3) measures coverage when the forecast wind regime is wrong.

Figure 4. Farm layouts and corresponding Grid Supply Point (GSP) groups. Kelmarsh: 6 turbines, 12.3 MW, East Midlands, evaluated in 2024. Penmanshiel: 14 turbines, 28.7 MW, South of Scotland, evaluated in 2023.
Failure modes. Coverage falls as low as 0.55 in high winds when the forecast regime is wrong, a failure hidden by common aggregate coverage diagnostics.
System-level effect. Reserve requirements depend on forecast uncertainty. Measuring each miss by volume and direction shows the hardest regime to cover (high wind) misses mostly on the upside and has the largest mean missed energy per forecast - conditional calibration cuts that energy by over 40%. However, system-level effects are not evaluated directly. We report missed energy by volume and direction as operational diagnostics, without modelling reserve requirements or trading decisions.
Data and code. Penmanshiel [21] and Kelmarsh [22] SCADA are open under CC-BY-4.0. NOAA GEFS via dynamical.org’s public Zarr store [19]. All pipeline code & Marimo notebooks open at https://github.com/CSomers3/uq4wind.
Acknowledgments
The author thanks Dr F Javier Rubio (UCL) for introducing him to conformal prediction and for draft feedback.
Generative-AI / LLM Use Statement
LLMs assisted in coding and reviewing the pipeline evaluation and in reviewing drafts of the paper.
Full Scorecards
| Subject | Method | Coverage 30 min | Coverage 3 h | Coverage 24 h | Width 30 min | Width 3 h | Width 24 h | Winkler Score 30 min | Winkler Score 3 h | Winkler Score 24 h |
| Persistence | Native | 0.90 | 0.90 | 0.89 | 0.25 | 0.56 | 1.09 | 0.39 | 0.81 | 1.47 |
| OSSCP | 0.90 | 0.90 | 0.90 | 0.25 | 0.56 | 1.11 | 0.39 | 0.79 | 1.44 | |
| NexCP | 0.91 | 0.90 | 0.89 | 0.26 | 0.56 | 1.09 | 0.37 | 0.78 | 1.45 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.55 | 1.17 | 0.38 | 0.78 | 1.48 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.26 | 0.62 | 1.29 | 0.38 | 0.83 | 1.68 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.25 | 0.57 | 1.17 | 0.37 | 0.78 | 1.48 | |
| DtACI | 0.90 | 0.90 | 0.88 | 0.24 | 0.54 | 1.07 | 0.37 | 0.77 | 1.50 | |
| Mondrian-OSSCP | 0.91 | 0.91 | 0.91 | 0.24 | 0.53 | 1.12 | 0.35 | 0.73 | 1.40 | |
| ARIMA | Native | 0.90 | 0.90 | 0.92 | 0.25 | 0.52 | 0.90 | 0.38 | 0.75 | 1.12 |
| OSSCP | 0.90 | 0.90 | 0.90 | 0.25 | 0.52 | 0.81 | 0.38 | 0.73 | 1.06 | |
| NexCP | 0.91 | 0.90 | 0.90 | 0.25 | 0.52 | 0.81 | 0.37 | 0.72 | 1.06 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.52 | 0.85 | 0.37 | 0.73 | 1.11 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.26 | 0.60 | 1.07 | 0.37 | 0.78 | 1.29 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.25 | 0.53 | 0.84 | 0.37 | 0.73 | 1.09 | |
| DtACI | 0.90 | 0.89 | 0.88 | 0.24 | 0.51 | 0.79 | 0.36 | 0.72 | 1.11 | |
| Mondrian-OSSCP | 0.91 | 0.91 | 0.91 | 0.24 | 0.50 | 0.75 | 0.35 | 0.68 | 0.91 | |
| LightGBM-QR | Native | 0.88 | 0.85 | 0.83 | 0.20 | 0.34 | 0.38 | 0.28 | 0.49 | 0.56 |
| OSSCP | 0.90 | 0.90 | 0.90 | 0.21 | 0.36 | 0.41 | 0.28 | 0.48 | 0.55 | |
| NexCP | 0.91 | 0.90 | 0.90 | 0.21 | 0.37 | 0.43 | 0.28 | 0.49 | 0.56 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.21 | 0.37 | 0.45 | 0.28 | 0.49 | 0.58 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.23 | 0.45 | 0.71 | 0.29 | 0.55 | 0.83 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.21 | 0.37 | 0.44 | 0.28 | 0.49 | 0.57 | |
| DtACI | 0.90 | 0.90 | 0.89 | 0.21 | 0.38 | 0.45 | 0.28 | 0.50 | 0.59 | |
| Mondrian-OSSCP | 0.90 | 0.90 | 0.90 | 0.21 | 0.36 | 0.41 | 0.28 | 0.48 | 0.55 | |
| Bootstrap ensemble | Native | 0.90 | 0.87 | 0.84 | 0.24 | 0.37 | 0.39 | 0.37 | 0.62 | 0.71 |
| OSSCP | 0.90 | 0.90 | 0.90 | 0.24 | 0.42 | 0.48 | 0.37 | 0.60 | 0.67 | |
| NexCP | 0.91 | 0.90 | 0.89 | 0.25 | 0.43 | 0.49 | 0.36 | 0.60 | 0.69 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.24 | 0.42 | 0.52 | 0.36 | 0.60 | 0.72 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.47 | 0.77 | 0.36 | 0.65 | 0.96 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.24 | 0.43 | 0.51 | 0.36 | 0.60 | 0.70 | |
| DtACI | 0.90 | 0.89 | 0.88 | 0.24 | 0.42 | 0.49 | 0.35 | 0.60 | 0.73 | |
| Mondrian-OSSCP | 0.90 | 0.91 | 0.91 | 0.23 | 0.40 | 0.46 | 0.33 | 0.56 | 0.63 | |
| TabPFN | Native | 0.92 | 0.88 | 0.90 | 0.23 | 0.36 | 0.43 | 0.29 | 0.51 | 0.58 |
| OSSCP | 0.90 | 0.90 | 0.90 | 0.23 | 0.37 | 0.43 | 0.29 | 0.51 | 0.58 | |
| NexCP | 0.91 | 0.90 | 0.90 | 0.23 | 0.39 | 0.45 | 0.29 | 0.52 | 0.58 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.23 | 0.39 | 0.47 | 0.30 | 0.52 | 0.60 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.47 | 0.78 | 0.31 | 0.59 | 0.89 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.23 | 0.39 | 0.45 | 0.30 | 0.52 | 0.59 | |
| DtACI | 0.90 | 0.90 | 0.89 | 0.23 | 0.39 | 0.47 | 0.30 | 0.52 | 0.61 | |
| Mondrian-OSSCP | 0.89 | 0.90 | 0.89 | 0.23 | 0.38 | 0.43 | 0.29 | 0.51 | 0.58 | |
| GEFS power curve | Native | 0.92 | 0.91 | 0.92 | 0.39 | 0.39 | 0.42 | 0.51 | 0.54 | 0.56 |
| OSSCP | 0.90 | 0.91 | 0.91 | 0.40 | 0.41 | 0.44 | 0.51 | 0.54 | 0.56 | |
| NexCP | 0.90 | 0.90 | 0.90 | 0.40 | 0.42 | 0.44 | 0.51 | 0.54 | 0.57 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.40 | 0.41 | 0.47 | 0.50 | 0.54 | 0.59 | |
| ACI () | 0.90 | 0.90 | 0.90 | 0.42 | 0.51 | 0.74 | 0.51 | 0.62 | 0.83 | |
| AgACI | 0.90 | 0.90 | 0.90 | 0.41 | 0.41 | 0.45 | 0.50 | 0.54 | 0.57 | |
| DtACI | 0.90 | 0.90 | 0.88 | 0.40 | 0.42 | 0.46 | 0.50 | 0.55 | 0.60 | |
| Mondrian-OSSCP | 0.90 | 0.91 | 0.91 | 0.40 | 0.41 | 0.44 | 0.51 | 0.54 | 0.57 |
Table 2. Full scorecard, Kelmarsh 2024 (– per cell, target ).
| Subject | Method | Coverage 30 min | Coverage 3 h | Coverage 24 h | Width 30 min | Width 3 h | Width 24 h | Winkler Score 30 min | Winkler Score 3 h | Winkler Score 24 h |
| Persistence | Native | 0.92 | 0.92 | 0.92 | 0.28 | 0.67 | 1.34 | 0.39 | 0.88 | 1.59 |
| Persistence | OSSCP | 0.89 | 0.89 | 0.89 | 0.23 | 0.58 | 1.20 | 0.38 | 0.86 | 1.54 |
| Persistence | NexCP | 0.90 | 0.90 | 0.89 | 0.24 | 0.59 | 1.16 | 0.36 | 0.83 | 1.52 |
| Persistence | ACI () | 0.90 | 0.90 | 0.90 | 0.23 | 0.59 | 1.27 | 0.36 | 0.83 | 1.59 |
| Persistence | ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.65 | 1.34 | 0.36 | 0.89 | 1.69 |
| Persistence | AgACI | 0.90 | 0.91 | 0.91 | 0.24 | 0.61 | 1.26 | 0.35 | 0.82 | 1.52 |
| Persistence | DtACI | 0.90 | 0.89 | 0.86 | 0.23 | 0.57 | 1.13 | 0.35 | 0.83 | 1.61 |
| Persistence | Mondrian-OSSCP | 0.90 | 0.90 | 0.89 | 0.22 | 0.55 | 1.14 | 0.34 | 0.77 | 1.48 |
| ARIMA | Native | 0.93 | 0.92 | 0.92 | 0.27 | 0.61 | 1.01 | 0.38 | 0.81 | 1.20 |
| ARIMA | OSSCP | 0.89 | 0.89 | 0.90 | 0.23 | 0.54 | 0.85 | 0.37 | 0.79 | 1.12 |
| ARIMA | NexCP | 0.90 | 0.90 | 0.90 | 0.23 | 0.55 | 0.86 | 0.35 | 0.76 | 1.12 |
| ARIMA | ACI () | 0.90 | 0.90 | 0.90 | 0.23 | 0.55 | 0.93 | 0.35 | 0.77 | 1.17 |
| ARIMA | ACI () | 0.90 | 0.90 | 0.90 | 0.24 | 0.61 | 1.08 | 0.35 | 0.83 | 1.39 |
| ARIMA | AgACI | 0.90 | 0.90 | 0.90 | 0.23 | 0.56 | 0.90 | 0.34 | 0.77 | 1.15 |
| ARIMA | DtACI | 0.90 | 0.89 | 0.87 | 0.22 | 0.53 | 0.87 | 0.34 | 0.77 | 1.18 |
| ARIMA | Mondrian-OSSCP | 0.90 | 0.90 | 0.89 | 0.22 | 0.52 | 0.78 | 0.33 | 0.71 | 0.97 |
| LightGBM-QR | Native | 0.87 | 0.83 | 0.78 | 0.19 | 0.37 | 0.42 | 0.26 | 0.51 | 0.62 |
| LightGBM-QR | OSSCP | 0.90 | 0.90 | 0.90 | 0.20 | 0.39 | 0.46 | 0.26 | 0.51 | 0.62 |
| LightGBM-QR | NexCP | 0.91 | 0.91 | 0.90 | 0.20 | 0.40 | 0.48 | 0.26 | 0.51 | 0.62 |
| LightGBM-QR | ACI () | 0.90 | 0.90 | 0.90 | 0.20 | 0.40 | 0.51 | 0.26 | 0.52 | 0.65 |
| LightGBM-QR | ACI () | 0.90 | 0.90 | 0.90 | 0.22 | 0.48 | 0.73 | 0.27 | 0.58 | 0.83 |
| LightGBM-QR | AgACI | 0.90 | 0.90 | 0.90 | 0.20 | 0.40 | 0.50 | 0.26 | 0.52 | 0.64 |
| LightGBM-QR | DtACI | 0.90 | 0.90 | 0.88 | 0.20 | 0.41 | 0.50 | 0.26 | 0.52 | 0.65 |
| LightGBM-QR | Mondrian-OSSCP | 0.90 | 0.90 | 0.90 | 0.20 | 0.40 | 0.46 | 0.26 | 0.51 | 0.61 |
| Bootstrap ensemble | Native | 0.92 | 0.88 | 0.84 | 0.27 | 0.44 | 0.45 | 0.37 | 0.70 | 0.85 |
| Bootstrap ensemble | OSSCP | 0.89 | 0.89 | 0.90 | 0.23 | 0.47 | 0.56 | 0.36 | 0.69 | 0.82 |
| Bootstrap ensemble | NexCP | 0.90 | 0.90 | 0.89 | 0.23 | 0.48 | 0.57 | 0.35 | 0.67 | 0.83 |
| Bootstrap ensemble | ACI () | 0.90 | 0.90 | 0.90 | 0.23 | 0.48 | 0.65 | 0.34 | 0.68 | 0.89 |
| Bootstrap ensemble | ACI () | 0.90 | 0.90 | 0.90 | 0.24 | 0.56 | 0.88 | 0.35 | 0.74 | 1.10 |
| Bootstrap ensemble | AgACI | 0.91 | 0.90 | 0.90 | 0.23 | 0.49 | 0.60 | 0.34 | 0.68 | 0.84 |
| Bootstrap ensemble | DtACI | 0.90 | 0.89 | 0.86 | 0.22 | 0.48 | 0.59 | 0.33 | 0.68 | 0.90 |
| Bootstrap ensemble | Mondrian-OSSCP | 0.90 | 0.90 | 0.90 | 0.22 | 0.44 | 0.52 | 0.33 | 0.62 | 0.73 |
| TabPFN | Native | 0.94 | 0.92 | 0.92 | 0.26 | 0.45 | 0.52 | 0.31 | 0.55 | 0.63 |
| TabPFN | OSSCP | 0.89 | 0.90 | 0.90 | 0.25 | 0.44 | 0.51 | 0.30 | 0.55 | 0.63 |
| TabPFN | NexCP | 0.91 | 0.90 | 0.90 | 0.25 | 0.45 | 0.52 | 0.30 | 0.55 | 0.64 |
| TabPFN | ACI () | 0.90 | 0.90 | 0.90 | 0.25 | 0.45 | 0.55 | 0.30 | 0.55 | 0.66 |
| TabPFN | ACI () | 0.90 | 0.90 | 0.90 | 0.26 | 0.56 | 0.84 | 0.31 | 0.65 | 0.92 |
| TabPFN | AgACI | 0.90 | 0.90 | 0.90 | 0.25 | 0.45 | 0.52 | 0.30 | 0.55 | 0.64 |
| TabPFN | DtACI | 0.90 | 0.90 | 0.88 | 0.25 | 0.47 | 0.55 | 0.30 | 0.57 | 0.65 |
| TabPFN | Mondrian-OSSCP | 0.89 | 0.89 | 0.90 | 0.25 | 0.44 | 0.51 | 0.30 | 0.55 | 0.63 |
| GEFS power curve | Native | 0.94 | 0.94 | 0.94 | 0.48 | 0.49 | 0.51 | 0.62 | 0.63 | 0.65 |
| GEFS power curve | OSSCP | 0.90 | 0.90 | 0.90 | 0.48 | 0.49 | 0.51 | 0.62 | 0.63 | 0.65 |
| GEFS power curve | NexCP | 0.91 | 0.90 | 0.90 | 0.50 | 0.51 | 0.54 | 0.61 | 0.63 | 0.67 |
| GEFS power curve | ACI () | 0.90 | 0.90 | 0.90 | 0.49 | 0.52 | 0.59 | 0.61 | 0.64 | 0.72 |
| GEFS power curve | ACI () | 0.90 | 0.90 | 0.90 | 0.51 | 0.61 | 0.81 | 0.61 | 0.71 | 0.90 |
| GEFS power curve | AgACI | 0.91 | 0.90 | 0.90 | 0.50 | 0.51 | 0.54 | 0.60 | 0.63 | 0.67 |
| GEFS power curve | DtACI | 0.90 | 0.89 | 0.88 | 0.49 | 0.52 | 0.55 | 0.60 | 0.64 | 0.68 |
| GEFS power curve | Mondrian-OSSCP | 0.91 | 0.91 | 0.91 | 0.49 | 0.50 | 0.52 | 0.62 | 0.63 | 0.66 |
Table 3. Full scorecard, Penmanshiel 2023 (-6,746 per cell, target ).
Conditional Coverage
| Subject | Method | Low (0–5 m/s) Kelmarsh | Low (0–5 m/s) Penmanshiel | Average (5–11 m/s) Kelmarsh | Average (5–11 m/s) Penmanshiel | High (11+ m/s) Kelmarsh | High (11+ m/s) Penmanshiel |
| Persistence | Native | 0.93 | 0.97 | 0.91 | 0.92 | 0.67 | 0.80 |
| OSSCP | 0.94 | 0.95 | 0.91 | 0.89 | 0.75 | 0.81 | |
| Mondrian-OSSCP | 0.96 | 0.90 | 0.90 | 0.89 | 0.87 | 0.91 | |
| ARIMA | Native | 0.99 | 1.00 | 0.96 | 0.97 | 0.45 | 0.65 |
| OSSCP | 0.96 | 0.97 | 0.94 | 0.94 | 0.53 | 0.65 | |
| Mondrian-OSSCP | 0.97 | 0.91 | 0.90 | 0.89 | 0.88 | 0.88 | |
| LightGBM-QR | Native | 0.82 | 0.75 | 0.84 | 0.80 | 0.81 | 0.77 |
| OSSCP | 0.94 | 0.94 | 0.88 | 0.89 | 0.89 | 0.86 | |
| Mondrian-OSSCP | 0.91 | 0.90 | 0.89 | 0.90 | 0.88 | 0.90 | |
| Bootstrap ensemble | Native | 0.98 | 0.99 | 0.81 | 0.83 | 0.73 | 0.63 |
| OSSCP | 0.99 | 0.99 | 0.87 | 0.89 | 0.87 | 0.79 | |
| Mondrian-OSSCP | 0.93 | 0.91 | 0.90 | 0.90 | 0.89 | 0.91 | |
| TabPFN | Native | 0.92 | 0.92 | 0.90 | 0.92 | 0.89 | 0.92 |
| OSSCP | 0.92 | 0.88 | 0.89 | 0.91 | 0.89 | 0.90 | |
| Mondrian-OSSCP | 0.91 | 0.91 | 0.89 | 0.90 | 0.88 | 0.90 | |
| GEFS power curve | Native | 0.97 | 0.97 | 0.91 | 0.93 | 0.90 | 0.90 |
| OSSCP | 0.91 | 0.85 | 0.90 | 0.92 | 0.93 | 0.90 | |
| Mondrian-OSSCP | 0.93 | 0.90 | 0.90 | 0.91 | 0.90 | 0.92 |
Table 4. Coverage by forecast wind band at 24 hours, native versus wrapped, both farms.
Missed Energy
| Farm | Method | Missed energy (MWh) | Share of total missed energy (%) | Above upper bound (%) |
| Kelmarsh | Native | 0.26 | 34 | 94 |
| OSSCP | 0.23 | 35 | 94 | |
| Mondrian-OSSCP | 0.13 | 23 | 90 | |
| Penmanshiel | Native | 0.50 | 38 | 91 |
| OSSCP | 0.50 | 38 | 93 | |
| Mondrian-OSSCP | 0.29 | 25 | 92 |
Table 5. Day-ahead missed energy outside the uncertainty bands during realised high winds ( m/s), pooled over six models. MWh is the mean per high-wind forecast, including zeros for covered periods.
Point Accuracy
Figure 5. Out-of-sample RMSE of each forecaster’s point forecast (its predictive mean) at each horizon, over 2024 for Kelmarsh and 2023 for Penmanshiel, in capacity-factor units.
References
- [1]Ferran Alet, Tom Andersson, Ilan Price, Stratis Markou, Andrew El-Kadi, Dominic Masters, Amy Li, Samier Merchant, Natalie Williams, Gregory Thornton, Ken MacKay, Olivia Graham, Akib Uddin, Ben Gaiarin, Devaja Shah, Elinor Kruse, Wallace Hogsett, David Zelinsky, John Cangialosi, and Peter Battaglia. Operational tropical cyclone forecasting with AI. Nature, 08 2026. doi: 10.1038/s41586-026-10953-2.DOI
- [2]Simon Althoff, Johan Hallberg Szabadváry, Jonathan Anderson, and Lars Carlsson. Evaluation of conformal-based probabilistic forecasting methods for short-term wind speed forecasting. In Conformal and Probabilistic Prediction with Applications, pages 100–115. PMLR, 2023.
- [3]Rina Foygel Barber, Emmanuel J Candes, Aaditya Ramdas, and Ryan J Tibshirani. Conformal prediction beyond exchangeability. The Annals of Statistics, 51(2):816–845, 2023.arxiv.org/abs/2202.13415
- [4]Boris Bonev, Thorsten Kurth, Ankur Mahesh, Mauro Bisson, Jean Kossaifi, Karthik Kashinath, Anima Anandkumar, William D Collins, Michael S Pritchard, and Alexander Keller. FourCastNet 3: A geometric approach to probabilistic machine-learning weather forecasting at scale. arXiv preprint arXiv:2507.12144, 2025.
- [5]George EP Box, Gwilym M Jenkins, Gregory C Reinsel, and Greta M Ljung. Time series analysis: forecasting and control. John Wiley & Sons, 2015.
- [6]Leo Breiman. Bagging predictors. Machine learning, 24(2):123–140, 1996.
- [7]Isaac Gibbs and Emmanuel Candes. Adaptive conformal inference under distribution shift. Advances in Neural Information Processing Systems, 34:1660–1672, 2021.arxiv.org/abs/2106.00170
- [8]Isaac Gibbs and Emmanuel J Candès. Conformal inference for online prediction with arbitrary distribution shifts. Journal of Machine Learning Research, 25(162):1–36, 2024.
- [9]Tilmann Gneiting, Adrian E Raftery, Anton H Westveld III, and Tom Goldman. Calibrated probabilistic forecasting using ensemble model output statistics and minimum CRPS estimation. Monthly weather review, 133(5):1098–1118, 2005.
- [10]Léo Grinsztajn, Klemens Flöge, Oscar Key, Felix Birkel, Philipp Jund, Brendan Roof, Mihir Maniam, Shi Bin Hoo, Magnus Bühler, Anurag Garg, Dominik Safarc, Jake Robertson, Benjamin Jäger, Simone Alessi, Adrian Hayler, Vladyslav Moroshan, Lennart Purucker, Philipp Singer, and Frank Hutter. TabPFN-3: Technical report, 05 2026.arxiv.org/abs/2605.13986
- [11]Hans Hersbach, Bill Bell, Paul Berrisford, Shoji Hirahara, András Horányi, Joaquín Muñoz-Sabater, Julien Nicolas, Carole Peubey, Raluca Radu, Dinand Schepers, Adrian Simmons, Cornel Sosi, Saleh Abdalla, Xavier Abellan, Gianpaolo Balsamo, Peter Bechtold, Gionata Biaivati, Jean Bidlot, Massimo Bonavita, Giovanni De Chiara, Per Dahlgren, Dick Dee, Michail Diamantakis, Rossana Dragani, Johannes Flemming, Richard Forbes, Manuel Fuentes, Alan Geer, Leo Haimberger, Sean Healy, Robin J. Hogan, Elías Hólm, Marta Janisková, Sarah Keeley, Patrick Laloyaux, Philippe Lopez, Cristina Lupu, Gabor Radnoti, Patricia de Rosnay, Iryna Rozum, Freja Vamborg, Sebastien Villaume, and Jean-Noël Thépaut. The ERA5 global reanalysis. Quarterly Journal of the Royal Meteorological Society, 146(730):1999–2049, 2020. doi: https://doi.org/10.1002/qj.3803. URL https://rmets.onlinelibrary.wiley.com/doi/abs/10.1002/qj.3803.
- [12]Jef Jonkers, Diego Nieves Avendano, Glenn Van Wallendael, and Sofie Van Hoecke. A novel day-ahead regional and probabilistic wind power forecasting framework using deep CNNs and conformalized regression forests. Applied Energy, 361:122900, 2024.
- [13]Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwel Ye, and Tie-Yan Liu. LightGBM: A highly efficient gradient boosting decision tree. Advances in neural information processing systems, 30, 2017.
- [14]Jing Lei, Max G’Sell, Alessandro Rinaldo, Ryan J Tibshirani, and Larry Wasserman. Distribution-free predictive inference for regression. Journal of the American Statistical Association, 113(523):1094–1111, 2018.arxiv.org/abs/1604.04173
- [15]Alireza Moradi, Mathieu Tanneau, Reza Zandehshahvar, and Pascal Van Henteryck. Enhanced renewable energy forecasting using context-aware conformal prediction. arXiv preprint arXiv:2510.15780, 2025.arxiv.org/abs/2510.15780
- [16]Nguyen Binh Nam, Emanuele Ogliari, Sonia Leva, Emilio Pafumi, Davide Alberti, and Minh Quan Duong. Comparative analysis of conformal prediction techniques and machine learning models for very short-term solar power forecasting. Energy and AI, 21:100573, 2025. ISSN 2666-5468. doi: https://doi.org/10.1016/j.egyai.2025.100573. URL https://www.sciencedirect.com/science/article/pii/S2666546825001053.
- [17]National Energy System Operator (NESO). Britain’s electricity explained: 2024 review, January 2025a. URL https://www.neso.energy/news/britains-electricity-explained-2024-review.
- [18]National Energy System Operator (NESO). What happened to margins on 8 january. https://www.neso.energy/news/what-happened-margins-8-january, 2025b. Accessed: 2026-08-29.
- [19]NOAA Global Ensemble Forecast System (GEFS). NOAA GEFS - dynamical.org icechunk zarr, 2026. URL https://registry.opendata.aws/dynamical-noaa-gefs.
- [20]Roberto I Oliveira, Paulo Orenstein, Thiago Ramos, and João Vitor Romano. Split conformal prediction and non-exchangeable data. Journal of Machine Learning Research, 25(225):1–38, 2024.
- [21]Charlie Plumley and Roberta Takeuchi. Penmanshiel wind farm data, August 2025a. URL https://doi.org/10.5281/zenodo.16807304.
- [22]Charlie Plumley and Roberta Takeuchi. Kelmarsh wind farm data, August 2025b. URL https://doi.org/10.5281/zenodo.16807551.
- [23]Yaniv Romano, Evan Patterson, and Emmanuel Candes. Conformalized quantile regression. Advances in neural information processing systems, 32, 2019.arxiv.org/abs/1905.03222
- [24]Vladimir Vovk, Alexander Gammerman, and Glenn Shafer. Algorithmic learning in a random world, volume 29. Springer, 2005.
- [25]Xiaoqian Wang and Rob J Hyndman. Online conformal inference for multi-step time series forecasting. arXiv preprint arXiv:2410.13115, 2024.arxiv.org/abs/2410.13115
- [26]Jonathan Weyn, Zekun Ni, Amit Misra, Will Fein, Haiyu Dong, Wessel P. Bruinsma, Richard E. Turner, Matt Corey, Kit Thambiratnam, Kevin White, and Kenji Takeda. Aurora 1.5: Fine-tuning a foundation model for medium-range ensemble weather prediction. July 2026. URL https://www.microsoft.com/en-us/research/publication/aurora-1-5/.
- [27]Robert L Winkler. A decision-theoretic approach to interval estimation. Journal of the American Statistical Association, 67(337):187–191, 1972.DOI
- [28]Chen Xu and Yao Xie. Conformal prediction for time series. IEEE transactions on pattern analysis and machine intelligence, 45(10):11575–11587, 2023.DOI
- [29]Margaux Zaffran, Olivier Féron, Yannig Goude, Julie Josse, and Aymeric Dieuleveut. Adaptive conformal predictions for time series. In International conference on machine learning, pages 25834–25866. PMLR, 2022.arxiv.org/abs/2202.07282



