Published onStratnergy
Open-data terminal

DA Reconstruction

A methodology-first benchmark that reconstructs an implied German day-ahead price from open fundamentals and explicit stack assumptions.

That is not a failure of the page. It is the point of the exercise: the gap shows how much the actual day-ahead auction depends on constraints and order logic that a simple open-data stack cannot fully observe.

Showing 12 May 2026Updated 13 May 2026, 23:28
Open inputs: Energy Charts day-ahead prices plus public load, wind, and solar time series. · Reconstruction: a fixed stylized inflexible floor plus a transparent benchmark thermal stack. · Important: this is an implied merit-order model, not the hidden EPEX auction curve.
Date explorer
Benchmark ready
Actual day-ahead prices were aggregated from 15-minute prices into hourly means for comparison.
Current read
The benchmark stack is visibly missing something important
The gap tells you how much the open stack missed the actual auction and where hidden structure started to matter.
Mean absolute error
EUR 85.4/MWh
Average hourly gap between actual day-ahead price and the benchmark reconstruction.
Average bias
EUR 85.4/MWh
Positive means the actual auction cleared above the benchmark stack on average.
Actual daily spread
EUR 123.0/MWh
A simple check on how large the day’s own price range is relative to model error.
Largest miss
10:00 · +EUR 107.0/MWh
The benchmark goes more negative than the actual auction. That usually means storage, exports, block bids, or lower-than-assumed inflexible floor pressure supported the cleared price.
Highest actual hour
20:00 · EUR 143.0/MWh
Hard coal is the benchmark marginal layer in that hour.
Official exchange view

Use EPEX for the exchange crossing, use this page for the reconstruction

The official exchange view is the EPEX aggregated supply-demand crossing for the day-ahead auction. This framework is the public reconstruction layer: it explains the day-ahead shape from open load, wind, solar, and benchmark production costs rather than pretending to be the exchange order book.

Hourly comparison

Actual day-ahead versus benchmark stack

The benchmark is deliberately simple. Where it tracks actual prices, residual load is doing a lot of explanatory work. Where it misses, the gap is part of the lesson.

143-4500:0023:00
actual DAbenchmark stack
Select an hour

Hour-by-hour reconstruction

Selected hour

10:00 benchmark stack

The benchmark goes more negative than the actual auction. That usually means storage, exports, block bids, or lower-than-assumed inflexible floor pressure supported the cleared price.

220-270 MWcleared66,000 MW
benchmark clearing demandreconstructed price
Lignite
0 MW dispatched out of 15,000 MW
EUR 28/MWh
Benchmark baseload lignite block after the stylized inflexible floor is absorbed.
Hard coal
0 MW dispatched out of 8,000 MW
EUR 52/MWh
Legacy coal fleet used as the next thermal step in the stack.
Gas CCGT
0 MW dispatched out of 17,000 MW
EUR 84/MWh
Efficient gas generation benchmark with carbon included implicitly.
Imports / demand flex
0 MW dispatched out of 8,000 MW
EUR 102/MWh
A simplified coupling band for imports and price-responsive demand or storage.
OCGT / peaker
0 MW dispatched out of 10,000 MW
EUR 138/MWh
Fast, expensive thermal response.
Scarcity tail
0 MW dispatched out of 8,000 MW
EUR 220/MWh
A benchmark tail for extreme scarcity, emergency imports, or very expensive marginal adjustments.
Hour detail
Prices
Actual EUR 79.6/MWh
Benchmark EUR -27.5/MWh
Error +EUR 107.0/MWh
Open fundamentals
Load 59,006 MW
Solar 26,535 MW
Wind 28,144 MW
Residual load 4,327 MW
Clearing read
0 MW above the must-run anchor
Benchmark marginal layer Must-run / oversupply pressure
Oversupply mode is active in the benchmark.
Assumptions

Transparent benchmark inputs

Stylized inflexible floor
18,000 MW
Residual demand is first absorbed by a non-price-setting floor before the benchmark thermal stack starts clearing.
Oversupply pricing band
EUR -45/MWh to EUR 28/MWh
When residual demand sits below the stylized inflexible floor, the model allows prices to fall through zero.
Lignite
15,000 MW at EUR 28/MWh
Benchmark baseload lignite block after the stylized inflexible floor is absorbed.
Hard coal
8,000 MW at EUR 52/MWh
Legacy coal fleet used as the next thermal step in the stack.
Gas CCGT
17,000 MW at EUR 84/MWh
Efficient gas generation benchmark with carbon included implicitly.
Imports / demand flex
8,000 MW at EUR 102/MWh
A simplified coupling band for imports and price-responsive demand or storage.
OCGT / peaker
10,000 MW at EUR 138/MWh
Fast, expensive thermal response.
Scarcity tail
8,000 MW at EUR 220/MWh
A benchmark tail for extreme scarcity, emergency imports, or very expensive marginal adjustments.
Signal basis

What the benchmark assumes

  • Load, wind, and solar are taken from the open Energy Charts power endpoint and aggregated to hourly Berlin-time averages.
  • Actual day-ahead prices are aggregated to hourly means when the source provides shorter intervals.
  • Residual demand is translated into dispatch demand with a fixed stylized inflexible floor, then cleared against a benchmark stack of technology blocks.
  • The gap between actual and reconstructed price is treated as the interesting output: it is where hidden constraints, auction logic, and unavailable data live.
Caveats

This is not the actual EPEX order book or the actual EUPHEMIA supply-demand curve. It is a public benchmark model built from open fundamentals.

Fuel, carbon, outages, CHP must-run, hydro opportunity cost, block bids, and cross-border coupling are only approximated here, not fully observed.

The stack assumptions are transparent on purpose. They are meant to be challenged, tuned, and improved rather than hidden behind a black box.

Next stops

Go deeper from here