The Miss Ledger
A running record of what I have measured about the day-ahead miss of European solar and wind generation. The work started with Hungarian solar, where the market and settlement data are best understood; the same questions — what does a miss cost, and what, if anything, predicts it — are now being asked of other European solar and wind markets as the underlying data reach the same standard. Every figure below is regenerated from the analysis outputs; nothing is estimated by hand, and a result stays scoped to the country and technology it was actually measured on.
Summary
Reading so far. The Hungarian solar miss does not look like a pure weather-disagreement problem. Where the models disagree the worst hours tend to be worse, but the effect is small. The largest single association found so far is with the day-ahead price: output falls below the schedule in low-price hours. That is an association, not yet a separated cause, and its size depends on the controls. The same price-linked shortfall now shows up, in sign, in three more day-ahead markets tested the same way — Spain, France and Germany — with Austria the one exception in five countries (P1c); the country set is the five day-ahead markets whose settlement data passed this project's own usability check, not a representative sample of Europe.
Evidence at a glance
| ID | Question | Data and period | Result | Status |
|---|---|---|---|---|
| Z | Can the published verification of Hungarian day-ahead PV scheduling be reproduced? | ENTSO-E A69, A75; 2019–2025 | Yes for 2020–2022 to within 0.05 pp; error is larger 2024–2025 | Reproduced |
| E0 | Which forecast run does a fixed-lead weather series really contain at decision time? | Open-Meteo run metadata; Aug–Sep 2026 | The one-day-lead series appears to leak post-decision information for 12–18 of 24 hours (inferred from cloud-cover jump timing at four points) | Interim |
| E1 | What does inter-model spread look like, and does it track measured error? | 3 models, 15 grid points, 47 stations; Mar 2024–Sep 2026 | Physical daily and seasonal shape; rank correlation 0.29 with error, partly confounded | Descriptive |
| E2 | Does spread predict the schedule error? | 5,884 daylight hours; Jan 2025–Aug 2026; 84 weekly blocks | 0.08 after sky-state controls; interval reaches zero with one more control; no reliable out-of-sample gain | Weak |
| E3 | How much error can disagreement ever explain? | Hourly proxy, 4,795 h; station irradiance, 9,278 h | Spread equals about half of ensemble-mean error energy, which is what a calibrated three-member ensemble shows; the weather-only power proxy does not beat the schedule | Indicative |
| E3c | Do neighbouring countries share Hungary's daily schedule error? | ENTSO-E solar, AT, SK, RO, DE-LU, HU; 14,270 h each | Neighbours' errors linearly predict about 11% of daily variance out of sample (interval 1–19%); a lower bound | Suggestive |
| E3b | Is the error linked to low day-ahead prices? | ENTSO-E and HUPX day-ahead price; 5,766 h | Shortfall against the schedule in low-price hours; shrinks by about 40% under stricter controls, cause not identified | Association |
| E3d | Can the low-price regime be anticipated before scheduling? | Same hours; 4,006 out-of-sample | Regime forecastable (AUC 0.94); ranking captures 25% of shortfall energy in the top 10% of hours; no gain in a numeric error forecast | Suggestive |
| T1 | Can a machine-learning model forecast the full miss distribution at the decision time? | 2,752 out-of-sample hours, 44 weekly blocks; 2025-07-01 to 2026-04-30 | Median and surplus tail beat a nested baseline (+6.8%, +10.8%); shortfall tail does not (+1.3%); quantiles not well calibrated; holdout unscored | Mixed |
| P1c | Does Hungary's low-price shortfall replicate in other European day-ahead markets? | ES, FR, DE-LU, AT, HU day-ahead/actual solar and imbalance settlement price; 2024-12 to 2026-08; 45 tests, one shared false-discovery correction | 4 of 5 countries share Hungary's sign at the ≤0 EUR/MWh threshold (Hungary and Spain also at ≤25); only Austria reverses it, surviving its own placebo; Spain's cost is heavily systematic bias, Germany's and Hungary's a small but real share, Austria's mostly residual | Suggestive |
Data and timeframe
| Dataset | Source | Period used | Resolution | Role |
|---|---|---|---|---|
| Solar generation, actual (A75) and day-ahead forecast (A69) | ENTSO-E Transparency Platform | 2019–2025 (Z); 2025-01 to 2026-08 (E2–E3c) | 15 min, hourly aggregates | Target and schedule |
| Day-ahead market price | ENTSO-E / HUPX | 2025-01 to 2026-08 | Hourly, 15 min from Oct 2025 | Curtailment test |
| Imbalance settlement price (single price) | MAVIR | 2025-01 to 2026-08 | 15 min | Cost of a miss |
| Neighbour solar series | ENTSO-E (AT, SK, RO, DE-LU) | 2025-01 to 2026-08 | 15 min to hourly | Cross-country comparison |
| Installed solar capacity | ENTSO-E | 2019–2026 | Yearly | Checked; not used as denominator |
| Weather forecasts: ECMWF IFS, GFS, ICON | Open-Meteo Previous Runs API | 2024-03-08 to 2026-09-16 | Hourly, 15 national grid points | Spread and consensus |
| Measured irradiance, 47 stations | HungaroMet open data | 2024-03 to 2026-09 | 10 min, hourly | Weather truth |
| Ensemble members (ECMWF ENS, GEFS, ICON-EPS) | Open-Meteo Ensemble API | Collection began 2026-09-20 | Hourly, 4 points | Future work |
| Day-ahead price and actual/scheduled solar, Spain, France, Germany-Luxembourg, Austria | ENTSO-E Transparency Platform | 2024-12 (ES) / 2025-01 (FR, DE-LU, AT) to 2026-08 | 15 min to hourly | P1c multi-country panel |
| Imbalance settlement price, Spain / France / Germany / Austria | REE (ES) · RTE (FR) · Netztransparenz.de reBAP (DE) · APCS (AT) | Same as above | 15 min to hourly | Cost of a miss; mechanism (single/dual/conditional) verified against each operator's own rulebook before use |
All series are national aggregates. Times are UTC unless stated; the decision time on day D−1 is taken as 12:00 Europe/Budapest, an assumption still to be confirmed against the operator's nomination rules.
Findings
Z. Reproducing the published verification Reproduced
I rebuilt the day-ahead verification of Zsiborács et al. (2023) for Hungary from the same public series. Regulation need is expressed as a share of the year's actual energy. For the three complete years 2020–2022 the minimum and maximum of my downward and upward needs fall within 0.05 percentage points of the published ranges (5.6–7.3 % and 3.6–6.7 %). This validates the pipeline: time zones, sign convention, unit conversion and denominator.
The extension to 2023–2025 shows relative accuracy worsening: the shortfall-side need rises from 3.3 % to 8.1 % of annual energy while mean output grew about 2.2 times from 2022 to 2025.
E0. What information did the weather models have at decision time? Interim
A fixed-lead series (previous_day1) is a value from the run initialised at the 6-hourly step before valid time minus 24 h. For target hours after 06 UTC that run did not exist at 12:00 Budapest on D−1 for ECMWF and GFS (18 of 24 hours), or for ICON after 12 UTC (12 of 24 hours). The series therefore leaks post-decision information in the daylight hours that matter. I use the two-day lead as the conservative substitute, and treat every result on the naive series as flawed. Measured availability delays after initialisation are ICON 3.5 h, GFS 5.6 h, ECMWF 7.7 h (lower bounds), so ICON carries roughly six hours more information at the decision time than the other two. Caveats: the rule was inferred from the timing of jumps in cloud cover at four points over six weeks in August–September 2026, not from radiation and not for the 2024–2025 history the dataset uses; the delays are lower bounds; ICON's morning runs are usable at decision time by a margin of only about half an hour in summer; and the decision time itself is an assumption. Results built on this series are labelled indicative until an exact-match check and a sensitivity run with ICON forced to the two-day lead are done.
E1. What inter-model spread looks like Descriptive
The spread of irradiance across the three models peaks around 09–11 UTC and is largest for partly cloudy skies (forecast clear-sky index 0.4–0.6). As a share of irradiance it is highest in winter. Against station irradiance, the rank correlation between spread and absolute error of the ensemble mean is 0.29, and the root-mean-square error rises from 35 to 78 W/m² from the lowest to the highest spread quintile. The alignment of the forecast to the stations required a one-hour shift (Open-Meteo stamps radiation at the end of the hour), confirmed by cross-correlation (0.975 shifted, 0.919 unshifted).
Holding sky state and sun height fixed, the correlation shrinks to 0.0–0.3 depending on the cell, so part of the raw association is shared dependence on cloudiness. Using the leaking series would understate the error by about 11 %, which is why the safe series is used throughout.
E2. Does spread predict the schedule error? Weak
The raw rank correlation between relative spread and the error share is 0.30. Within strata of clear-sky index, sun elevation and half-year it falls to 0.08 (95 % interval 0.03–0.13). That estimate depends on the control set: adding a schedule-level control moves it to 0.05–0.09, and with two of the three variants tried the interval reaches zero. Both quantities are divided by something that becomes small at low output, so part of the association can be a denominator effect. The effect sits in the tail: in the highest spread tercile the 90th percentile of the error share is 0.50, against 0.38 for the other two (difference 0.12, interval 0.05–0.17). A linear quantile regression gives a positive coefficient at the 90th percentile (0.024, CI 0.003–0.039) and none at the median. An out-of-sample gradient-boosted model with the spread features improves pinball loss by 1.1 % (median) and 1.6 % (90th percentile), with intervals that include zero at the 90th percentile. No persistence or climatology baseline was included in that comparison, and roughly 25 tests were run across the study without false-discovery control.
E3. How much of the error can disagreement explain? Indicative
In power space, a weather-only proxy built from the three models is less accurate than the operator's schedule (mean absolute error 267 MW for the schedule error, 368 MW for the proxy error). The proxy is crude and uses older forecast runs than the safe-vintage rule allows for most daytime hours, so this shows that the schedule beats an older, crude proxy, not that the schedule contains information the models lack. The strong negative correlation between the two error components (−0.70) is largely mechanical, because the proxy's own error enters them with opposite signs. The variance split is therefore not quoted as a weather share.
In weather space, measured against station irradiance and free of any conversion, the mean squared spread equals about half of the mean squared error of the ensemble mean (0.48). That is the value a perfectly calibrated, exchangeable three-member ensemble would give ((M−1)/(M+1) = 0.5), so it does not show that half of the error is explainable. Relative to that benchmark, heavy cloud (about 1.0) is over-dispersive and clear sky (0.32) is under-dispersive: the models disagree more than they err under cloud, and less than they err under clear sky, where errors are common to all three.
E3c. Do neighbouring countries share Hungary's error? Suggestive
If the schedule error were a weather pattern common to the region, neighbouring countries' errors should move with Hungary's on the same days. They do so weakly. The rank correlation of daily signed errors is 0.30 with Slovakia, 0.21 with Germany/Luxembourg, 0.11 with Austria and 0.09 with Romania, against a 7-day-shift placebo of 0.0–0.14. Out of sample, the neighbours' same-day errors linearly predict 11 % of the variance of Hungary's daily error (95 % interval 1–19 %; 11 % without Romania, interval −1 to 18 %). This says the error is not a large common cross-border pattern that these operators miss together. It does not measure the weather share of Hungary's error: the errors come from different forecasters using different methods at 200–500 km distance, and Romania's series has a definitional mismatch (a −43 % bias between actual and forecast) that makes it unsuitable as a comparator. Hungary's relative accuracy (mean absolute error over mean output, 12.5–15.7 %) is comparable to Austria's and better than Slovakia's.
E3b. Is the error linked to low day-ahead prices? Association
When the day-ahead price is at or below zero, actual output is below the schedule in 85 % of hours, by 7.8 % of capacity on average. To separate this from weather, I compare low-price hours with other hours inside strata. Two thresholds are reported because the price bin between 0 and 25 EUR/MWh behaves like the higher bins (mean error +1.8 % of capacity):
| Price threshold | Controls | Shortfall in the schedule error | 95 % interval |
|---|---|---|---|
| ≤ 25 EUR/MWh | sky state, half-year | -7.1 pts | -8.9 to -5.6 |
| ≤ 25 EUR/MWh | + weekend, time of day | −4.5 pts | −6.8 to −2.4 |
| ≤ 0 EUR/MWh | sky state, half-year | −12.6 pts | −14.4 to −10.4 |
| ≤ 0 EUR/MWh | + weekend, time of day | −10.2 pts | −12.7 to −8.0 |
Against the weather-implied output the shortfall is of similar size (−6.6 to −15.9 points depending on specification), and the component of the error that compares the weather proxy with the schedule shows no clear price dependence within the accuracy of that crude proxy. Seasonally matched (1 January to 5 August), the shortfall energy was 4.4 % of output in 2025 and 5.8 % in 2026; the share of it falling in low-price hours rose from 37 % to 55 %, while low-price hours held about a third of the energy in both years, and outside low-price hours the shortfall fell from 4.3 % to 3.9 %.
This is an association, not a separated cause. Solar supply itself drives low and negative prices, sky-state strata control for it only approximately, and hour of day and weekend matter (hence the stricter version). I cannot yet separate exposed-producer behaviour, operator instructions and other effects. The day-ahead price is set after the schedule is filed, so whether it can be used before scheduling depends on timing rules still to be verified.
E3d. Can the low-price regime be anticipated before scheduling? Suggestive
A model using only information available at the decision time predicts whether the day-ahead price will be at or below 25 EUR/MWh with an AUC of 0.94 (at or below zero: 0.96), against 0.88–0.90 for last day's price alone. Most of the skill comes from calendar, weather and schedule level. Ranking hours by the forecast probability, the top 10 % of hours contain 25 % of all shortfall energy, against 26 % when the actual price is known and 10 % by chance. However, adding the price forecast (or even the actual price flag) to a model of the signed schedule error gives no reliable out-of-sample gain in pinball loss (−0.4 % at the lower tail, interval −3.7 to +2.4 %; oracle +2.4 %, interval −0.5 to +5.6 %). The regime can therefore be flagged as an exposure list; a numeric forecast of the miss is not demonstrated. The change from a squared-error to a tail-loss evaluation was made after a first version proved uninformative, and is recorded in the repository note.
T1. A machine-learning model of the miss distribution Mixed, audited once
The first machine-learning result asks whether the whole distribution of the miss — not just whether a schedule will fail, but by how much, at the 10th, 50th and 90th percentile — can be forecast at the decision time. Using calendar, safe-vintage weather and (for the median) recent prices, the surplus tail (90th percentile) and the median beat a nested baseline: +10.8 % skill at q0.9 (95 % CI +3.9 to +16.9 %) and +6.8 % at the median (+3.3 to +10.3 %). The shortfall tail (q0.1) does not: +1.3 % (-4.9 to +7.5 %), an interval that includes zero. A version of this model that also used the TSO's own schedule level did show a shortfall-tail gain, but that feature's availability before the decision time is unverified, so it is excluded from the reported result. An independent audit of the first specification found the boosted model's quantiles were not well calibrated (the nominal 10 % quantile was exceeded in roughly a fifth of hours) and that ranking hours by this model does not beat simply using yesterday's price. The audit's findings are folded into the numbers above; a second, full audit of this exact specification is still open, and the frozen holdout has not been scored.
P1c. Does the low-price shortfall replicate beyond Hungary? Suggestive
E3b, above, found a shortfall against the day-ahead schedule in low-price hours for Hungarian solar. I ran the same test — same non-positive day-ahead price threshold, and a second, looser one at or below 25 EUR/MWh, against each country's own hour-by-month forecast bias removed — on four more European day-ahead markets. Four of five countries now share Hungary's sign at the stricter threshold (Hungary, Spain, France and Germany-Luxembourg); Hungary and Spain also share it at the looser one. Only Austria shows the reverse sign, and that reversal survives a 7-day-shift placebo built the same way as the one already used for E3c in every country tested, including Austria's own. This is a real strengthening from an earlier three-of-four reading taken before Germany's data was available, not an independent new sample: the five countries are the day-ahead markets whose settlement data has so far passed this project's own usability check (a minimum share of long-equals-short intervals and a sanity ratio between the imbalance and day-ahead price levels), not a representative draw of Europe. A sixth candidate, Italy-North, remains excluded on an unresolved concern with that same ratio.
| Country | Net cost, EUR | EUR/MWh net | Miss, % of scheduled energy | Systematic share of cost | Low-price shortfall, bias-neutral, ≤0 EUR/MWh [95% CI] |
|---|---|---|---|---|---|
| Hungary | 89.6 m | 7.67 | 15.2 | 9.0% (floor ~1.0%) | -0.090 [-0.116, -0.063] |
| Spain | 214.3 m | 2.20 | 13.4 | 42.5% (floor ~16.4%) | -0.084 [-0.108, -0.059] |
| France | 127.4 m | 2.29 | 16.0 | 19.0%, does not survive correction (floor ~7.0%) | -0.041 [-0.064, -0.013] |
| Germany-Luxembourg | 309.0 m | 2.17 | 7.2 | 9.6% (floor ~1.0%) | -0.022 [-0.031, -0.012] |
| Austria | 20.2 m | 1.84 | 14.8 | n/a — see note below, not meaningful as a percentage for Austria | +0.045 [+0.022, +0.066] |
The "systematic share of cost" column splits each country's imbalance cost into a part explained by its own recurring hour-by-month pattern and a residual part, against a negative-control floor from a seeded reshuffle of the same data (shown in parentheses): Spain's cost is heavily systematic (42.5%, against a floor of about 16.4%, because a dual-price settlement forces part of this specific estimator's bias term to point in whatever direction a noisy sample happens to favour); Germany's and Hungary's systematic shares are small but, unlike France's, real at the 5% false-discovery level once this estimator's own floor is accounted for; France's and Austria's costs are, as far as this test can tell, mostly residual, and Austria's own share is not reported as a percentage here because its sample cost is close enough to zero that the ratio is unstable (its euro-denominated split is reported in the repository instead). 19 of the 25 real tests behind this table (cost decomposition and price-association cells combined) survive one shared false-discovery correction; every one of the 20 placebo cells correctly fails to survive.
Methodology
All experiments use the same definitions. Notation: actual national solar output (MW), day-ahead schedule, interval length, with weather models, the decision time.
Errors and verification metrics
Schedule error and its split into consensus and schedule-versus-consensus components, with the weather-only consensus power proxy:
Following Zsiborács et al. (2023), with forecast and error , regulation need as a share of annual energy:
The cost of a miss under the Hungarian single-price settlement, with the imbalance price and the day-ahead price:
Information available at decision time (E0)
A fixed-lead series takes the value from the run initialised at the 6-hourly step before valid time minus days:
It is admissible for model only if the run was available at , with measured availability delay :
Spread and clear-sky index (E1, E2)
Spread of irradiance across models, its relative form, and the forecast clear-sky index using the Haurwitz clear-sky model with solar elevation :
Spread-skill ceiling against measured irradiance : the share of ensemble-mean squared error the spread can stand for.
Testing whether spread predicts error (E2)
Rank correlation stratified by sky state, so that shared dependence on cloudiness is removed. is the Spearman coefficient in stratum of clear-sky index, sun elevation and half-year, its size:
Quantile regression at level with check loss, and the relative out-of-sample gain of adding spread features (forecast , with and without spread):
Out-of-sample means expanding monthly windows: train on all data at least three days before the test month, six months minimum. Uncertainty comes from resampling whole ISO weeks (block bootstrap, percentile 95 % intervals), so serial correlation within a week is respected.
Consensus power proxy and capacity (E3)
The capacity proxy uses only past output: the 95th percentile of daily maxima over the previous 60 days. The conversion is a ridge regression on irradiance and temperature fitted only on earlier data, applied to each model:
Cross-country comparison and curtailment test (E3c, E3b)
Each country's error is normalised by its own capacity proxy, , averaged over daylight hours per local day. E3b compares mean error in low-price hours ( EUR/MWh) with other hours inside each stratum , weighting by the smaller group:
Tests and reproducibility
Each experiment is a script with automated tests that check definitions and guard against the common failure modes: look-ahead in features, confounding, and bootstrap and metric errors. 63 tests across the research modules passed on 2026-09-20, including leak tests added after the audit that perturb actuals and later schedules and confirm the features for the day do not move.
| Module | Tests | What is checked |
|---|---|---|
| Verification metrics (Z) | 7 | MAE, MNE, MPE, regulation need, sign convention, alignment |
| Alignment and vintages (E0) | 6 | Fixed-lead run selection, availability rule, safe-lag table |
| D-1 dataset | 7 | Safe-value selection, leakage metadata, aggregation |
| Spread analysis (E1) | 3 | Solar geometry, clear-sky model, one-hour alignment, population standard deviation |
| Spread versus error (E2) | 3 | Asymmetric check loss; stratification removes pure confounding; bootstrap shape |
| Decomposition (E3) | 3 | Variance shares sum to one; capacity proxy uses only the past; conversion fitted without the test month |
| Neighbour comparison (E3c) | 2 | Daylight filtering; block correlation detects a shared signal and rejects the placebo |
| Curtailment (E3b) | 2 | Stratified difference recovers a planted effect despite confounded levels; price bins |
| Price-regime forecast (E3d) | 3 | Price features use only the past; previous-day aggregates come from the previous local day |
| Feature leakage audit (E2) | 2 | Perturbing D−1 actuals and later schedules leaves day-D features unchanged |
| Weather and satellite ingestion | 23 | Station parsing, cloud-mask storage, ingestion |
| Risk model | 2 | Feature construction and time-ordered scoring |
The dataset, code and tests are versioned; the analysis period, the assumed decision time and the capacity rule are fixed in the scripts. Results that would change a conclusion are listed under limitations rather than tuned away.
Limitations
- Aggregates only. National sums hide plant-level tilt, tracking, curtailment terms and local weather.
- Three deterministic models. A three-member standard deviation is a noisy uncertainty measure; a true ensemble collection started on 2026-09-20 and cannot be back-filled.
- Decision time assumed. 12:00 Budapest on D−1, not yet confirmed against the nomination rules, and the publication time of the day-ahead forecast is unchecked.
- Coverage of the actual series. ENTSO-E actual output covers roughly half of the reported installed capacity (rooftop and non-metered solar are largely invisible), which limits what national-level tests can say about plant-level misses.
- Association. E3b shows a strong association with low prices; it does not identify who curtails or why.
- Multiple comparisons. Roughly 25 tests were run without false-discovery control, and the sky-state strata edges were reused after being seen in E1. The weakest results (E2 at the 90th percentile, E3c for Austria and Romania) should be read as suggestive. The effective sample is about 84 weekly blocks, not thousands of hours.
- Review status. An internal statistical audit on 2026-09-20 recomputed the headline numbers (all matched) and led to the wording on this page; it is not peer review. The audit report is in the repository.
- Country set is gate-dependent (P1c). The five countries in the low-price-shortfall comparison are the day-ahead markets whose settlement data has so far passed this project's usability check, not a representative sample of Europe; a sixth, Italy-North, remains excluded on an unresolved currency-ratio concern. A fourth-of-five or three-of-four reading can change again as more countries are added or excluded.
- Dual-price settlement biases one estimator term. For Spain and France, the systematic-cost estimator used in P1c has a real, nonzero floor even under a planted negative control, because the sign of part of its bias term is chosen from the same noisy estimate that sizes it; that floor is disclosed alongside every dual-price country's percentage rather than subtracted from it. Austria's own share of this kind is not reported as a percentage because its sample cost is too close to zero for the ratio to be stable.
- Settlement data, not independently reconciled for every country. Each country's settlement mechanism (single-price, dual-price, conditional) was verified against the regulator's or TSO's own current rulebook, and matched empirically against the settled data itself, before use. A separate, row-level reconciliation of Spain's and France's published settlement prices against this project's own ingested copy has not yet been done.
Data attribution. Market data: ENTSO-E Transparency Platform; MAVIR (Hungary); REE (Spain); RTE (France); Netztransparenz.de, on behalf of Germany's four transmission system operators; APCS (Austria). Weather forecasts: Open-Meteo.com (CC BY 4.0). Database: Meteorological Database, HungaroMet Nonprofit Zrt. Reference: Zsiborács, H. et al. (2023), The Accuracy of PV Power Plant Scheduling in Europe: An Overview of ENTSO-E Countries, IEEE Access.
This is independent research, done in my own time with public data only. It uses no employer or client data, and it does not represent the views or activities of any employer. Informational research only; not investment, financial or trading advice. Questions or requests for the underlying tables: ben@skyrisq.com.