Research notes · Europe · day-ahead solar and wind

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.

Status: working notes, preliminary, not peer reviewed · results as of 2026-10-22 · findings E0–E3d and T1 are Hungary, solar · P1c extends the low-price-shortfall question to Spain, France, Germany and Austria · analysis period Jan 2025 to Aug 2026 unless stated · national aggregates

Summary

7–8 %
Day-ahead regulation need of Hungarian solar as a share of annual energy, 2024–2025. It has grown since 2023, and the earlier years reproduce the published range.
0.08
Rank correlation between weather-model disagreement and the schedule error once sky state is held fixed (raw: 0.30). Small, and it depends on the control set: with one more control its interval reaches zero.
85 %
Of hours with a day-ahead price at or below zero, actual output fell below the schedule. The association survives sky-state and time-of-day controls, but shrinks under them (E3b).
11 %
Share of the variance of Hungary's daily schedule error that neighbours' same-day errors predict (out of sample, interval 1–19 %). A lower bound on cross-border weather co-movement, not the weather share.
+10.8 %
Out-of-sample skill of a machine-learning quantile model at the surplus tail, against a baseline chosen from earlier months only (T1). The shortfall tail shows no such gain.
4 of 5
Countries where, in non-positive day-ahead price hours, actual solar output falls below schedule more than elsewhere, net of each country's own calendar bias (P1c). Only Austria shows the reverse, and that reversal survives a placebo check.

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

IDQuestionData and periodResultStatus
ZCan the published verification of Hungarian day-ahead PV scheduling be reproduced?ENTSO-E A69, A75; 2019–2025Yes for 2020–2022 to within 0.05 pp; error is larger 2024–2025Reproduced
E0Which forecast run does a fixed-lead weather series really contain at decision time?Open-Meteo run metadata; Aug–Sep 2026The 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
E1What does inter-model spread look like, and does it track measured error?3 models, 15 grid points, 47 stations; Mar 2024–Sep 2026Physical daily and seasonal shape; rank correlation 0.29 with error, partly confoundedDescriptive
E2Does spread predict the schedule error?5,884 daylight hours; Jan 2025–Aug 2026; 84 weekly blocks0.08 after sky-state controls; interval reaches zero with one more control; no reliable out-of-sample gainWeak
E3How much error can disagreement ever explain?Hourly proxy, 4,795 h; station irradiance, 9,278 hSpread 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 scheduleIndicative
E3cDo neighbouring countries share Hungary's daily schedule error?ENTSO-E solar, AT, SK, RO, DE-LU, HU; 14,270 h eachNeighbours' errors linearly predict about 11% of daily variance out of sample (interval 1–19%); a lower boundSuggestive
E3bIs the error linked to low day-ahead prices?ENTSO-E and HUPX day-ahead price; 5,766 hShortfall against the schedule in low-price hours; shrinks by about 40% under stricter controls, cause not identifiedAssociation
E3dCan the low-price regime be anticipated before scheduling?Same hours; 4,006 out-of-sampleRegime forecastable (AUC 0.94); ranking captures 25% of shortfall energy in the top 10% of hours; no gain in a numeric error forecastSuggestive
T1Can 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-30Median and surplus tail beat a nested baseline (+6.8%, +10.8%); shortfall tail does not (+1.3%); quantiles not well calibrated; holdout unscoredMixed
P1cDoes 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 correction4 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 residualSuggestive

Data and timeframe

DatasetSourcePeriod usedResolutionRole
Solar generation, actual (A75) and day-ahead forecast (A69)ENTSO-E Transparency Platform2019–2025 (Z); 2025-01 to 2026-08 (E2–E3c)15 min, hourly aggregatesTarget and schedule
Day-ahead market priceENTSO-E / HUPX2025-01 to 2026-08Hourly, 15 min from Oct 2025Curtailment test
Imbalance settlement price (single price)MAVIR2025-01 to 2026-0815 minCost of a miss
Neighbour solar seriesENTSO-E (AT, SK, RO, DE-LU)2025-01 to 2026-0815 min to hourlyCross-country comparison
Installed solar capacityENTSO-E2019–2026YearlyChecked; not used as denominator
Weather forecasts: ECMWF IFS, GFS, ICONOpen-Meteo Previous Runs API2024-03-08 to 2026-09-16Hourly, 15 national grid pointsSpread and consensus
Measured irradiance, 47 stationsHungaroMet open data2024-03 to 2026-0910 min, hourlyWeather truth
Ensemble members (ECMWF ENS, GEFS, ICON-EPS)Open-Meteo Ensemble APICollection began 2026-09-20Hourly, 4 pointsFuture work
Day-ahead price and actual/scheduled solar, Spain, France, Germany-Luxembourg, AustriaENTSO-E Transparency Platform2024-12 (ES) / 2025-01 (FR, DE-LU, AT) to 2026-0815 min to hourlyP1c multi-country panel
Imbalance settlement price, Spain / France / Germany / AustriaREE (ES) · RTE (FR) · Netztransparenz.de reBAP (DE) · APCS (AT)Same as above15 min to hourlyCost 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

Data: ENTSO-E A69/A75, Hungary, 2019–2025 · native 15-minute grid · metrics as in Zsiborács et al. (2023)

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.

0.02.55.07.510.07.16.720207.33.720215.63.620226.33.320238.26.520248.28.12025actual above scheduleactual below schedule
Figure 1. Day-ahead regulation need, Hungary, by year. Downward need: actual output above the schedule; upward need: actual output below the schedule. 2019 is omitted because only 27 % of intervals exist.

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

Data: Open-Meteo run metadata and Previous Runs API, four points, Aug–Sep 2026 · ground-truth matching in progress

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

Data: 22,152 hourly national rows, 2024-03-08 to 2026-09-16 · 9,465 daylight hours · 47 HungaroMet stations for truth

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).

025507510045678910111213141516W/m², daylight hours, UTC hour of day
Figure 2. Mean spread by UTC hour of day (bars) with the 90th percentile (whisker). Daylight hours only, safe two-day-lead series.
0204060320.2-0.4410.4-0.6330.6-0.8190.8-1.0W/m², forecast clear-sky index bins
Figure 3. Mean spread by forecast clear-sky index. Disagreement is largest in broken cloud and smallest under clear sky.

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

Data: 5,884 daylight hours, 2025-01-01 to 2026-08-05, 84 weekly blocks · target: absolute error as a share of the schedule · week-block bootstrap, 200–300 resamples

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.

-0.100.000.100.200.300.40raw0.30sky state x half-year0.08+ within-day level0.09+ absolute level0.05+ level vs capacity0.05Spearman rho, 95% week-block CI
Figure 4. Rank correlation between relative spread and the error share: raw, then within sky-state strata, then with three alternative schedule-level controls added. The association is small and its interval touches zero under two of the alternatives.
0.000.200.400.600.38agree0.39middle0.50disagreep90 of |actual - schedule| / schedule, within sky-state strata
Figure 5. The 90th percentile of the error share by within-stratum spread tercile. Spread says more about how bad the worst hours can be than about a typical hour.

E3. How much of the error can disagreement explain? Indicative

Data: hourly power proxy, 4,795 h (2025-05 to 2026-08), conversion fitted out of sample · station irradiance, 9,278 h

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.

0.00.51.01.5all daytime0.48clear-sky index <0.40.99clear-sky index 0.4-0.60.68clear-sky index 0.6-0.80.45clear-sky index >0.80.32U_G, 95% week-block CI (0.5 = perfectly calibrated 3-member ensemble)
Figure 6. Ratio UG of mean squared spread to mean squared ensemble-mean error, by forecast clear-sky index, with 95 % week-block intervals. The reference line at 0.5 is the value for a perfectly calibrated three-member ensemble. A station network mean versus a 15-point model mean adds representativeness error to the denominator.

E3c. Do neighbouring countries share Hungary's error? Suggestive

Data: ENTSO-E national solar for HU, AT, SK, RO, DE-LU, about 14,270 hourly observations each, 2025-01 to 2026-08 · errors normalised by a past-only capacity proxy · about 85 weekly blocks per pair

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.

-0.100.000.100.200.300.40Hungary vs SK0.30Hungary vs DE0.21Hungary vs AT0.11Hungary vs RO0.09Spearman rho, 95% CI; cross = neighbour shifted by 7 days (placebo)
Figure 7. Correlation of Hungary's daily schedule error with each neighbour, with 95 % week-block intervals. Crosses mark the placebo. Forecast methods differ between operators, so the shared share is a lower bound on cross-border weather co-movement.

E3b. Is the error linked to low day-ahead prices? Association

Data: ENTSO-E solar and day-ahead price, 5,766 daylight hours, 2025-01-15 to 2026-08-05 · strata: clear-sky index × sun elevation × half-year, and a stricter version adding weekend × three local-hour blocks

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 thresholdControlsShortfall in the schedule error95 % interval
≤ 25 EUR/MWhsky 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/MWhsky 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
-0.16-0.12-0.08-0.040.00<= 25: base-0.07<= 25: strict-0.05<= 0: base-0.13<= 0: strict-0.10mean error difference, low-price minus other hours, share of capacity; 95% CI
Figure 8. Difference in mean schedule error (share of capacity) between low-price and other hours, by price threshold and control set (base: sky state and half-year; strict: adding weekend and time of day). The association is robust in sign; its size shrinks by roughly 20–40 % under the stricter controls.

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 %.

-10.0-5.00.05.0-7.8<= 01.80-253.225-751.675-1500.3> 150mean (actual - schedule) as % of capacity proxy; day-ahead price bins in EUR/MWh
Figure 9. Mean schedule error (actual minus schedule, % of capacity proxy) by day-ahead price bin, EUR/MWh. Negative values are shortfalls against the schedule.

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

Data: same hours; 4,006 out-of-sample hours, expanding monthly windows, 3-day gap · features known at the decision time only: calendar, safe weather, schedule level, past prices

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.

010203025forecast P(low)26actual price flag20yesterday's price10random% of all shortfall energy, top 10% of hours ranked by each score
Figure 10. Share of all shortfall energy that falls in the top 10 % of hours ranked by each score. Forecast and oracle are close, and both are well above chance.

T1. A machine-learning model of the miss distribution Mixed, audited once

Data: Hungary, national solar · 2,752 out-of-sample hours in 44 weekly blocks, 2025-07-01 to 2026-04-30 · gradient-boosted and linear quantile regression, rolling monthly folds with a 3-day gap, skill measured against a baseline chosen only from earlier folds · a 3-month holdout exists and is not yet touched

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.

-20-1001020q0.1 linear1q0.1 boosted-5q0.1 boosted + price-7q0.5 linear2q0.5 boosted5q0.5 boosted + price7q0.9 linear5q0.9 boosted11q0.9 boosted + price11% pinball-loss skill vs. a nested baseline, 95% week-block-bootstrap CI (Hungary, national solar)
Figure 11. Skill of three model families at three quantiles of the signed miss, against a baseline chosen without seeing the test month. Positive and clear of zero at the median and the surplus tail; not at the shortfall tail.

P1c. Does the low-price shortfall replicate beyond Hungary? Suggestive

Data: ENTSO-E day-ahead price and actual/scheduled solar; imbalance settlement price from REE (Spain), RTE (France), Netztransparenz.de's reBAP (Germany-Luxembourg) and APCS (Austria), alongside MAVIR (Hungary) · 2024-12-31 (ES) / 2025-01-01 (FR, DE-LU, AT) to 2026-08-31, Hungary to 2026-08-05 · each country's settlement mechanism (single-price, dual-price, or conditional between the two) verified against the regulator's or TSO's own rulebook before any figure here was computed, then checked empirically against the settled data itself

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.

CountryNet cost, EUREUR/MWh netMiss, % of scheduled energySystematic share of costLow-price shortfall, bias-neutral, ≤0 EUR/MWh [95% CI]
Hungary89.6 m7.6715.29.0% (floor ~1.0%)-0.090 [-0.116, -0.063]
Spain214.3 m2.2013.442.5% (floor ~16.4%)-0.084 [-0.108, -0.059]
France127.4 m2.2916.019.0%, does not survive correction (floor ~7.0%)-0.041 [-0.064, -0.013]
Germany-Luxembourg309.0 m2.177.29.6% (floor ~1.0%)-0.022 [-0.031, -0.012]
Austria20.2 m1.8414.8n/a — see note below, not meaningful as a percentage for Austria+0.045 [+0.022, +0.066]
-0.14-0.09-0.030.030.08HU-0.09ES-0.08FR-0.04DE-0.02AT0.05mean error difference, low-price minus other hours, share of capacity; 95% CI
Figure 12. Low-price shortfall in the schedule error, bias-neutral, price at or below 0 EUR/MWh, five countries, 95% CI. Austria is the only country where the sign reverses.

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: AtA_t actual national solar output (MW), DtD_t day-ahead schedule, Δt\Delta t interval length, m∈{1,…,M}m\in\{1,\dots,M\} with M=3M=3 weather models, τ\tau the decision time.

Errors and verification metrics

Schedule error and its split into consensus and schedule-versus-consensus components, with Pˉt\bar P_t the weather-only consensus power proxy:

et=At−Dt=(At−Pˉt)⏟ct+(Pˉt−Dt)⏟ste_t = A_t - D_t = \underbrace{(A_t-\bar P_t)}_{c_t}+\underbrace{(\bar P_t - D_t)}_{s_t}

Following Zsiborács et al. (2023), with forecast FiF_i and error Fi−AiF_i-A_i, regulation need as a share of annual energy:

N↓=∑i(Ai−Fi)+ Δt∑iAi Δt,N↑=∑i(Fi−Ai)+ Δt∑iAi ΔtN^{\downarrow}=\frac{\sum_i (A_i-F_i)^{+}\,\Delta t}{\sum_i A_i\,\Delta t},\qquad N^{\uparrow}=\frac{\sum_i (F_i-A_i)^{+}\,\Delta t}{\sum_i A_i\,\Delta t}

The cost of a miss under the Hungarian single-price settlement, with PKEP^{KE} the imbalance price and PDAMP^{DAM} the day-ahead price:

costt=−(At−Dt) Δt (PtKE−PtDAM)\text{cost}_t = -(A_t-D_t)\,\Delta t\,\big(P^{KE}_t-P^{DAM}_t\big)

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 TT minus NN days:

previous_day N(T)=x(r)(T),r=⌊T−24N h⌋6 h\text{previous\_day}\,N(T)=x^{(r)}(T),\qquad r=\big\lfloor T-24N\ \text{h}\big\rfloor_{6\,\text{h}}

It is admissible for model mm only if the run was available at τ\tau, with measured availability delay δm\delta_m:

r+δm≤τ(otherwise use N+1)r+\delta_m\le\tau\quad\text{(otherwise use } N+1\text{)}

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 hh:

St=1M∑m(Gm,t−Gˉt)2,St∗=Stmax⁡(Gˉt, 50 W/m2)S_t=\sqrt{\tfrac1M\sum_{m}\big(G_{m,t}-\bar G_t\big)^2},\qquad S^{*}_t=\frac{S_t}{\max(\bar G_t,\,50\ \text{W/m}^2)} Gcs=1098 sin⁡h  e−0.057/sin⁡h,k^t=GˉtGtcs(h≥10∘)G^{cs}=1098\,\sin h\;e^{-0.057/\sin h},\qquad \hat k_t=\frac{\bar G_t}{G^{cs}_t}\quad(h\ge 10^\circ)

Spread-skill ceiling against measured irradiance GobsG^{obs}: the share of ensemble-mean squared error the spread can stand for.

UG=St2‾(Gˉt−Gtobs)2‾U_G=\frac{\overline{S_t^{2}}}{\overline{\big(\bar G_t-G^{obs}_t\big)^{2}}}

Testing whether spread predicts error (E2)

Rank correlation stratified by sky state, so that shared dependence on cloudiness is removed. ρk\rho_k is the Spearman coefficient in stratum kk of clear-sky index, sun elevation and half-year, nkn_k its size:

ρstrat=∑knk ρk∑knk\rho_{\text{strat}}=\frac{\sum_k n_k\,\rho_k}{\sum_k n_k}

Quantile regression at level qq with check loss, and the relative out-of-sample gain of adding spread features (forecast y^\hat y, with and without spread):

β^q=arg⁡min⁡β∑iϱq(yi−xi⊤β),ϱq(u)=max⁡{qu,(q−1)u},gain=1−∑iϱq(yi−y^ispread)∑iϱq(yi−y^ibase)\hat\beta_q=\arg\min_\beta\sum_i \varrho_q\big(y_i-x_i^{\top}\beta\big),\quad \varrho_q(u)=\max\{qu,(q-1)u\},\qquad \text{gain}=1-\frac{\sum_i\varrho_q(y_i-\hat y_i^{\text{spread}})}{\sum_i\varrho_q(y_i-\hat y_i^{\text{base}})}

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 CtC_t uses only past output: the 95th percentile of daily maxima over the previous 60 days. The conversion gg is a ridge regression on irradiance and temperature fitted only on earlier data, applied to each model:

Pˉt=Ct 1M∑mg(Gm,t,Tm,t),g(G,T)=β0+β1G+β2G2+β3G T\bar P_t=C_t\,\frac1M\sum_{m}g(G_{m,t},T_{m,t}),\qquad g(G,T)=\beta_0+\beta_1 G+\beta_2 G^{2}+\beta_3 G\,T

Cross-country comparison and curtailment test (E3c, E3b)

Each country's error is normalised by its own capacity proxy, rt=(At−Dt)/Ctr_t=(A_t-D_t)/C_t, averaged over daylight hours per local day. E3b compares mean error in low-price hours (pt≤25p_t\le 25 EUR/MWh) with other hours inside each stratum kk, weighting by the smaller group:

Δ=∑kwk (yˉk low−yˉk other)∑kwk,wk=min⁡(nklow, nkother)\Delta=\frac{\sum_k w_k\,\big(\bar y_k^{\,\text{low}}-\bar y_k^{\,\text{other}}\big)}{\sum_k w_k},\qquad w_k=\min\big(n_k^{\text{low}},\,n_k^{\text{other}}\big)

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.

ModuleTestsWhat is checked
Verification metrics (Z)7MAE, MNE, MPE, regulation need, sign convention, alignment
Alignment and vintages (E0)6Fixed-lead run selection, availability rule, safe-lag table
D-1 dataset7Safe-value selection, leakage metadata, aggregation
Spread analysis (E1)3Solar geometry, clear-sky model, one-hour alignment, population standard deviation
Spread versus error (E2)3Asymmetric check loss; stratification removes pure confounding; bootstrap shape
Decomposition (E3)3Variance shares sum to one; capacity proxy uses only the past; conversion fitted without the test month
Neighbour comparison (E3c)2Daylight filtering; block correlation detects a shared signal and rejects the placebo
Curtailment (E3b)2Stratified difference recovers a planted effect despite confounded levels; price bins
Price-regime forecast (E3d)3Price features use only the past; previous-day aggregates come from the previous local day
Feature leakage audit (E2)2Perturbing D−1 actuals and later schedules leaves day-D features unchanged
Weather and satellite ingestion23Station parsing, cloud-mask storage, ingestion
Risk model2Feature 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

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.