New
Apps 1,185Makers 1,183This week 1,185
Promote your app−30%
DE-LU Day-Ahead Price Forecast screenshot 1
0views in
the last 30 days

DE-LU Day-Ahead Price Forecast

Forecasts German-Luxembourg day-ahead electricity prices.

Built with Claude Code

by hrsi56 · added Oct 29, 2026
no ratings0 comments

DE-LU Day-Ahead Price Forecasting

At a glance

What it is. Probabilistic forecasts of the next day's hourly German–Luxembourg (DE-LU) day-ahead electricity price, with prediction intervals, and the record of how successive research models were compared and checked.

Research, v5 · DDNN-2 added. Met the adoption rule set before the experiment: both error scores improved on v4's (v5 − v4 at 97.5%: −0.0133 [−0.0166, −0.0091] on the point-error score, −0.0119 [−0.0147, −0.0084] on the interval score; 1 policy tested against the rule). Development · post-selection

  • Error scores: error relative to a simple naive forecast, averaged over the test periods; lower is better.
  • Adoption rule: set on 2026-10-05; its five conditions are in the v5 chapter.
  • Paired difference: v5's score minus v4's, with the rule's 97.5% interval; below zero favours v5.
  • Policies: the models and variants tested.
  • Development · post-selection: development evidence, not a test on new data.
  • DDNN-2: a distributional neural network (DDNN).

Demo, v1 · released LightGBM: try the v1 demo. The demo runs the released model, v1. Research generations are not released one by one; only the final model, after its one-shot test and live run, replaces the released one.

How the product works: The released model, v1 · released LightGBM, topic by topic: the artifact its one-shot test evaluated and the demo computes. Read it in the report: its data, validation, results, failures, interval reliability and how to run it.

Report: the one-page report, with every result, its limits and its evidence.

Evidence: each generation below links its engineering report, its review verdict and its source rows, frozen at its evidence tag.

MLflow: the delu-generations experiment, mirrored from the committed evidence; the repository is the source of truth.

Generations, newest first

Names and statuses come from the registry. The research results are development evidence after selection, on the same historical hours for every policy; the released model's one-shot holdout is a separate evidence class. The report has the charts and the values.

v5 · DDNN-2 added

v4 plus a DDNN-2 member. In October 2026, v5 was adopted in research.

From v4 to v5: adding a distributional neural network.

  • What changed. v5 kept v4's inputs, its two LEAR forecasts and its LightGBM, and added DDNN-2, a distributional neural network that forecasts the whole next day at once, with one sixth of the blend's weight, taken from the LightGBM's third; the hour-aware intervals were re-estimated on the new forecast's own errors.
  • Comparator. Set in advance: v4 itself, on identical hours, so the protocol's comparator is also the predecessor and the comparison is direct.
  • Result. Point-error score −2% [−3%, −2%] and interval score −2% [−3%, −2%], as a share of v4's score, with 95% confidence intervals of that ratio from the experiment's own bootstrap draws; at the rule's 97.5% decision level, [−3%, −2%] and [−3%, −2%]. Development evidence after selection, not a test on new data.

Difference in error score (v5 − v4), with its 95% confidence interval and its interval at the rule's 97.5% decision level. Below zero favours v5.

  • Point-error score: −0.0133 [−0.0161, −0.0096] at 95%; [−0.0166, −0.0091] at 97.5%.
  • Interval score: −0.0119 [−0.0143, −0.0087] at 95%; [−0.0147, −0.0084] at 97.5%.

The rule, set on 2026-10-05 and frozen in the protocol before any of its fits: v5 would be adopted only if, against v4, the paired differences' intervals at 97.5% lay below zero for the interval score and at or below zero for the point-error score; it met the six original screening criteria; the evaluation was complete and valid; no test period was decisively worse, that is, none had a 95% paired interval wholly above zero; and both point estimates improved on v4's score by at least half a percent. The 97.5% level splits a 5% error rate across the two attempts the plan allowed; one ran. All five conditions held.

All five conditions of the rule set in advance held: at the rule's 97.5% level both paired differences' intervals lie below zero; v5 passed the six screening criteria set before the experiments (the two accuracy targets, interval coverage in each test period, the August 2022 peak against the benchmarks, each test period against the daily benchmarks, and complete forecasts); the evaluation was complete and valid; no test period's paired interval lies wholly above zero; and both scores improved on v4's by more than the practical size set in advance, half a percent.

What this result does not establish:

  • That the gain holds across the year. The comparison scores 448 of the 2,654 days of data up to the end of the development period, 2019-01-01 to 2026-04-07; 0 of them fall in October to December, and only 1 winter (December to February) contains any of them.
  • Performance on new data. This is development evidence after selection, and the second decision on a distributional neural network over the same five test periods, after the DDNN member on v4; only a one-shot test on days never used for development or selection protects against that reuse.
  • That DDNN-2 is best used as v5 uses it. DDNN-2 alone had lower, that is better, error scores than v4: −11% [−14%, −7%] on the point-error score and −16% [−19%, −12%] on the interval score, as shares of v4's score, with 95% confidence intervals; v3 plus a DDNN-2 member also scored better than v5. Descriptive only: both were study arms, never eligible for adoption, and no rule tested them.

In October 2026, v5 was adopted in research. It met the adoption rule set before the experiment against v4; the released model, v1, did not change. The two study arms, DDNN-2 alone and v3 plus a DDNN-2 member, were built only to show where the change came from, and were never candidates for adoption.

Evidence: Engineering report, frozen 2026-10-10 · Review verdict, frozen 2026-10-10 · Raw CSV rows, frozen 2026-10-10

v4 · three-block LightGBM added

v3 plus a three-block LightGBM member. In September 2026, v4 was adopted in research.

From v3 to v4: adding a LightGBM forecaster.

  • What changed. v4 kept v3's inputs and its two LEAR forecasts, added a LightGBM forecaster with one third of the blend's weight, and re-estimated the hour-aware intervals on the new forecast's own errors. The gain comes from the combination: on its own, no LightGBM arm showed an improvement over v3, but the blend improves both error scores, because a nonlinear model built from decision trees makes different errors from the two linear forecasts. The LightGBM's split into hour blocks is not shown to contribute.
  • Comparator. Set in advance: v3 itself, on identical hours, so the protocol's comparator is also the predecessor and the comparison is direct.
  • Result. Point-error score −5% [−6%, −4%] and interval score −5% [−6%, −4%], as a share of v3's score, with 95% confidence intervals of that ratio from the experiment's own bootstrap draws; development evidence, not a test on new data.

Difference in error score (v4 − v3), with 95% confidence intervals. Below zero favours v4.

  • Point-error score: −0.0301 [−0.0368, −0.0228].
  • Interval score: −0.0266 [−0.0327, −0.0204].

The rule, set on 2026-09-29 and frozen in the protocol before any fit: v4 would be adopted only if, against v3, the interval score's paired difference had its upper 95% confidence limit below zero and the point-error score's at or below zero; it met the six original screening criteria; the evaluation was complete and valid; and no test period was decisively worse, that is, none had a paired interval wholly above zero. All four held.

All four conditions of the rule set in advance held: both paired differences' 95% confidence intervals lie below zero; v4 passed the six screening criteria set before the experiments (the two accuracy targets, interval coverage in each test period, the August 2022 peak against the benchmarks, each test period against the daily benchmarks, and complete forecasts); the evaluation was complete and valid; and no test period's paired interval lies wholly above zero.

What this result does not establish:

  • That separate hour-block models help. The three-block against the pooled LightGBM showed no demonstrated joint preference: point-error score +0.0050 [−0.0084, +0.0142], interval score +0.0063 [−0.0050, +0.0135].
  • A gain in the August 2022 peak. Over those 17 days its point error is higher than v3's: MAE 50.1 against 47.5 EUR/MWh. Descriptive, on a small sample; no inference is drawn.
  • Performance on new data. This is development evidence after selection, not a test on new data.

In September 2026, v4 was adopted in research. It met the adoption rule set before the experiment against v3; the released model, v1, did not change. The three study arms were built only to separate the change into steps, and were never candidates for adoption.

Evidence: Engineering report, frozen 2026-09-30 · Review verdict, frozen 2026-09-30 · Raw CSV rows, frozen 2026-09-30

v3 · weather features

v2 plus three weather forecast inputs. In September 2026, v3 was adopted in research.

From v2 to v3: adding weather forecasts.

  • What changed. v3 kept v2's blend of two LEAR forecasts and its hour-aware intervals, and added three weather forecasts available before the auction: wind speed at 10 m and 100 m and solar radiation, each with a missing-data indicator.
  • Comparator. Set in advance: v2 itself, on identical hours, so the protocol's comparator is also the predecessor and the comparison is direct.
  • Result. Point-error score −12% [−16%, −9%] and interval score −14% [−17%, −11%], as a share of v2's score, with 95% confidence intervals; development evidence, not a test on new data.

Difference in error score (v3 − v2), with 95% confidence intervals. Below zero favours v3.

  • Point-error score: −0.0783 [−0.1006, −0.0570].
  • Interval score: −0.0838 [−0.1044, −0.0655].

Both confidence intervals lie below zero and every test period favours v3; its prediction intervals are narrower in every period, with pooled 95% coverage slightly lower, 0.9377 against 0.9389.

What this result does not establish:

  • Which weather feature drives the gain. The three were evaluated together, so no single feature's contribution is isolated.
  • A point-error gain within the 2022 crisis period on its own. There its confidence interval crosses zero: −3.2 [−6.1, +0.037] EUR/MWh.
  • Performance on new data. This is development evidence, not a test on new data.

In September 2026, v3 was adopted in research. It met the joint improvement rule against v2 and both accuracy targets.

Evidence: Engineering report, frozen 2026-09-24 · Review verdict, frozen 2026-09-24 · Raw CSV rows, frozen 2026-09-24

v2 · blended LEAR, hour-aware intervals

Two LEAR forecasts blended, hour-aware intervals. In September 2026, v2 was adopted in research.

From v1 to v2: a blended linear model with hour-aware intervals.

  • What changed. After v1 failed in the 2022 crisis, v2 replaced its LightGBM quantile model and fixed-window calibration with an equal blend of two LEAR forecasts refitted every day, and intervals built from recent errors by hour of the day.
  • Comparator. Set in advance: daily LEAR, the strongest benchmark, not the predecessor v1; a pooled-interval control isolated the interval method.
  • Result. Against daily LEAR: point-error score −2% [−4%, −1%] and interval score −4% [−5%, −2%], as a share of daily LEAR's score, with 95% confidence intervals; development evidence, not a test on new data.
  • Against the predecessor. No paired interval for v2 against v1 exists: the protocol did not test that pair. As descriptive context on the same development hours, without an interval, the point-error scores are 1.052 for v1 and 0.644 for v2, and the interval scores 0.986 and 0.616. v1's one-shot holdout covers a different window and evidence class and is not compared.

Against daily LEAR (v2 − daily LEAR), v2 meets the joint improvement rule as exploratory evidence: point-error score difference −0.0137 [−0.0236, −0.0053], interval-score difference −0.0230 [−0.0337, −0.0118].

Against its pooled-interval control (v2 − control), there is no demonstrated joint preference: the interval-score difference is −0.0127 [−0.0156, −0.0109], but the point-error difference's interval ends just above zero, −0.0017 [−0.0036, +0.0000039]. This is not equivalence.

What this result does not establish:

  • That hour-aware intervals caused the gain over daily LEAR. The pooled-interval control also passes the per-period criterion.
  • How the gain splits between the blend and the interval layer. The experiment does not separate them.
  • Performance on new data. This is development evidence, not a test on new data.

In September 2026, v2 was adopted in research. v3 was built on it.

Evidence: Engineering report, frozen 2026-09-23 · Review verdict, frozen 2026-09-23 · Raw CSV rows, frozen 2026-09-23

v1 · released LightGBM

Nine-quantile LightGBM with calibrated intervals. In September 2026, v1 was released.

What it is (30-second read). A probabilistic forecasting tool that forecasts the next delivery day's hourly German–Luxembourg (DE-LU) day-ahead electricity price, with calibrated 50 / 80 / 95 % prediction intervals.

  • Problem — forecast the next delivery day's hourly DE-LU prices at the 12:00 CET day-ahead gate — normally 24 values, 23/25 on DST-transition days — across a three-regime market (the 2021–23 energy crisis, the negative-price/solar era, and Dunkelflaute scarcity).
  • Approach — a single LightGBM nine-quantile ensemble, CQR-calibrated with isotonic monotonicity last; walk-forward CV with a one-delivery-day embargo and pinned three-regime folds; strict-gate features only — the shipped model uses no input published after the gate (the day-ahead wind/solar forecast is measured in a separate post-gate benchmark, never shipped).
  • Feature catalog — frozen before fitting. Calendar and regime features, the day-ahead load forecast, calendar-day-matched price lags and D-1-frozen rolling statistics, plus one candidate domain feature: a residual-load proxy built from a 42-day trailing mean of actual wind and solar generation ending at D-2. Two catalogs, one comparison, and the shipped one is named in the report — including when the domain feature does not earn its place.
  • Results — LightGBM vs. similar-day-naïve / 168h-naïve / Ridge, with five-fold DM labeled development / post-selection, plus one pre-specified evaluation on a 90-day holdout the model never saw — reported once, whatever it says, and labeled confirmatory-style, not power-qualified. Three-stage reliability, SHAP, permutation importance, and regime-stratified errors. A separate one-number benchmark measures what the post-gate wind/solar forecast would have been worth.
  • Honest limitations — regime-shift exchangeability; two disclosed assumptions (the load forecast's pre-gate availability, and revision in the actual-generation archive); the negative-price floor; and model staleness, with four cutoffs published separately — snapshot, raw-model fit, final calibration, and holdout. The shipped model is exactly the model the holdout evaluated: there is no retrain after the result is opened.
  • Demo & reproduction — the report on GitHub Pages is the primary link; the in-browser demo is one labeled click deeper, and what it renders over the holdout period is a historical out-of-sample replay, not a live forecast; make train after checking out the tagged commit reproduces the champion from the committed snapshot. The release is frozen: there is no scheduled refresh. Publication is owner-only — see docs/deploy.md.

v1 was built in four checkpoints: data and features (CP-1), model and analysis (CP-2), showcase and release (CP-3), then browser execution (CP-3B); its plan is v6.8, and its engineering record follows the generations below.

A LightGBM ensemble forecasting nine quantiles for every hour, calibrated into 50 / 80 / 95% prediction intervals, and shipped exactly as it was evaluated.

On its pre-specified 90-day holdout, v1 beat the similar-day naive: MAE 25.9 against 27.8 EUR/MWh, and mean pinball loss 6.7 against 13.9 EUR/MWh. A one-sided Diebold–Mariano test on the daily pinball-loss vectors gave p < 10⁻⁶; it tests the probabilistic forecast, not the MAE difference.

Pre-specified one-shot holdout DM test on a fixed 90-day window — confirmatory-style, not power-qualified.

Where it falls short. On the development folds its point error is 28.58% worse than the naive's, pooled over all days (a one-sided test for an improvement gives p = 0.948: no evidence of an advantage). Over the August 2022 peak weeks its 95% interval covered 0.194 of outcomes.

Why: its crisis errors were about price level, not shape. On the crisis window the bias was −269.4 EUR/MWh, and the daily mean-level error was 269.4 EUR/MWh against a within-day shape error of 66.9 EUR/MWh.

v1's limitations

§7.1 of v1's plan requires this paragraph verbatim, and the surfaces must agree:

The holdout is a single contiguous recent period, so it tests generalization to the most recent regime rather than repeated out-of-sample skill. Its partitions were pinned before development and it was evaluated once, after the complete model and calibration pipeline were frozen, with no subsequent tuning. The 90-day length was fixed by partition design, not by a power calculation, so the Diebold–Mariano result is confirmatory-style but not power-qualified. The model shown is exactly the model evaluated — no refit followed

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#energy · #forecast · #electricity