What
t0 is the last hour of today local (e.g. 2026-09-05T21:00Z, run generated 16:31Z). So forecast hours 1–24 are the next delivery day — and the NL day-ahead auction clears those prices at ~12:45 CET, roughly four hours before the nightly run starts.
The dashboard already has the real numbers: static/js/modules/api-client.js:226 fetches Energy Zero for today, tomorrow and the day after. But static/js/modules/data-processor.js:256 draws the forecast line across every timestamp >= cutoffTime, not just future ones. Net effect: the chart plots a ~27 EUR/MWh error (measured 1–24h MAE) on top of the correct answer sitting in the adjacent trace.
The band is already restricted to future hours (futureTs filter); the line is not.
Why this matters beyond cosmetics
It removes a third of the forecast horizon from the "does this add value?" question. Only 25–72h is genuinely predictive — and there the model is 4–5 EUR/MWh behind seasonal-naive (see #29).
Not yet decided — needs its own pre-commitment
Two things to settle before building anything:
- Does EDH's file already carry tomorrow's cleared prices? The consolidated parquet stops at end-of-today-local, and
t0_held_back_hours was 0.0 on 2026-09-05, so price_t0 genuinely ended there. But wait_for_edh.sh's own contract suggests a normal entsoe publish holds two days (the 2026-09-04 incident refused a publish with "same-day prices only, 96 vs 192"). If the data is already present, this is a consolidate/anchor change; if not, it needs a fetch. Unverifiable on the dev box — no decryption keys there. Check on sadalsuud.
- What should the chart show for those hours? Published price only, or published price and forecast (as an honest visible accuracy check)? The second has some diagnostic value and no product value.
Scope note
This is a product change, not a model finding. It does not affect any pre-committed experiment, and it should not be bundled with the model-class work in #15 / #29.
Related: #29, #18 (wholesale vs consumer labelling touches the same traces), #24 (dashboard hardening)
What
t0is the last hour of today local (e.g.2026-09-05T21:00Z, run generated 16:31Z). So forecast hours 1–24 are the next delivery day — and the NL day-ahead auction clears those prices at ~12:45 CET, roughly four hours before the nightly run starts.The dashboard already has the real numbers:
static/js/modules/api-client.js:226fetches Energy Zero for today, tomorrow and the day after. Butstatic/js/modules/data-processor.js:256draws the forecast line across every timestamp>= cutoffTime, not just future ones. Net effect: the chart plots a ~27 EUR/MWh error (measured 1–24h MAE) on top of the correct answer sitting in the adjacent trace.The band is already restricted to future hours (
futureTsfilter); the line is not.Why this matters beyond cosmetics
It removes a third of the forecast horizon from the "does this add value?" question. Only 25–72h is genuinely predictive — and there the model is 4–5 EUR/MWh behind seasonal-naive (see #29).
Not yet decided — needs its own pre-commitment
Two things to settle before building anything:
t0_held_back_hourswas 0.0 on 2026-09-05, soprice_t0genuinely ended there. Butwait_for_edh.sh's own contract suggests a normalentsoepublish holds two days (the 2026-09-04 incident refused a publish with "same-day prices only, 96 vs 192"). If the data is already present, this is a consolidate/anchor change; if not, it needs a fetch. Unverifiable on the dev box — no decryption keys there. Check on sadalsuud.Scope note
This is a product change, not a model finding. It does not affect any pre-committed experiment, and it should not be bundled with the model-class work in #15 / #29.
Related: #29, #18 (wholesale vs consumer labelling touches the same traces), #24 (dashboard hardening)