About this map
How to read it
- Bidding zones and the day-ahead price
- Europe's power market is split into bidding zones, mostly countries (Norway, Sweden, Denmark and Italy are split into
several). Each day at 12:00 CET the Single Day-Ahead Coupling (SDAC) auction clears all zones at once and sets one price per zone for
each quarter-hour of the next day, in €/MWh. The price is set by the most expensive power plant (or demand bid) needed. It can go
negative when inflexible or subsidised generation exceeds demand. The harmonised floor is −€500/MWh.
- Flow-based market coupling (Core)
- In the Core region (Benelux, France, Germany, Austria, Central-Eastern Europe), cross-border capacity is not a fixed number per border.
The auction models how each trade physically spreads over the meshed AC grid (power takes every parallel path), and only accepts the
combination of trades that keeps every monitored line within its limits. That is why a trade between France and Germany can be
limited by a line inside Belgium.
- Binding constraints (CNECs) and shadow prices
- The red lines are critical network elements: lines and transformers, each checked against an outage elsewhere (the
"contingency"), that were at their limit in that quarter-hour. Their shadow price (€/MW) is what one extra MW of capacity on
that element would have been worth to the market as a whole. Big price differences between zones are the sum of shadow prices times
how strongly each zone's trades load the element. Thicker and redder means more valuable.
- Net position
- The number under a Core zone's price is its net position: + means the zone exports on balance, − means it imports.
- Scheduled vs physical flows
- Scheduled arrows are the commercial exchanges the day-ahead auction scheduled between zones. For AC borders they are drawn
as arcs between zone labels, for HVDC links along the real cable. Physical flows (Dutch borders only) are what the meters
measured, after intraday trading and loop flows. They often differ: physical power entering NL from Germany frequently continues to
Belgium.
- Why does power sometimes flow from expensive to cheap?
- Under flow-based coupling, a "counter-intuitive" exchange can free up capacity on a congested line that a more valuable trade
elsewhere needs. The auction maximises total welfare across Europe, not each border separately.
- Model price and "model misses" (⚑)
- For NL, Germany and Belgium the zone panel and the timeline also show a model price (dashed). It comes from my own zonal market
model (see below). The ⚑ markers are the quarter-hours where the real price differed most from the model, labelled with the
regime the model was in (scarcity, renewable surplus, …). Use ⚑‹ ⚑› or the n / p keys to jump between them.
The year in numbers
Oct 2025 – Sep 2026, 15-minute day-ahead prices; zones whose prices are licensed for publication only.
Median daily range = typical gap between the day's highest and lowest quarter-hour price, which is what a battery earns its living on.
The model behind the dashed line
The model price comes from a zonal market model I built: a linear program (linopy + HiGHS) that clears NL, Germany and Belgium
every quarter-hour against data-driven supply curves, using the published flow-based grid constraints and the HVDC links to the Nordics.
It replays history with observed demand and renewables, so it is a fundamentals replay, not a day-ahead forecast. Over
Nov 2025 – Sep 2026 its mean absolute error is €13/MWh for NL (€8 DE, €18 BE), against €34–37 for a naive
same-time-last-week baseline. It misses most in solar months and in scarcity hours, which is what the ⚑ markers show.
The same project includes a day-ahead wind forecast for the Netherlands (gradient-boosted trees on day-before weather forecasts) that
beats the recalibrated TSO forecast: 8.2% vs 11.7% normalised error offshore, 5.7% vs 12.0% onshore, plus a study of whether Dutch
imbalance prices can be predicted a few hours ahead. Mostly they can't, beyond what persistence already gives.
Data & licences
Only data that may be republished is shown. Zones in grey have no public price: their
day-ahead prices come from the power exchanges (EPEX SPOT, Nord Pool) and are licensed for private use only, so they are left out,
along with anything derived from them.
- Day-ahead prices (15 zones): Bundesnetzagentur | SMARD.de, via Energy-Charts.info (Fraunhofer ISE). CC BY 4.0.
- Cross-border flows (GB and Nordic links, NL physical flows): Energy-Charts.info, CC BY 4.0, originally from the ENTSO-E Transparency Platform.
- Core net positions, scheduled exchanges, binding constraints and shadow prices: JAO Core publication tool.
- Transmission grid ≥ 220 kV and HVDC links: © OpenStreetMap contributors, ODbL, via the PyPSA-Eur prebuilt OSM network (Xiong et al.). The grid geometry shipped with this page is a simplified derivative and is likewise available under the ODbL.
- Offshore wind farms: EMODnet Human Activities (data originator CETMAR), CC BY 4.0.
- Bidding-zone outlines: made with Natural Earth (public domain), merged to approximate zone borders inside Denmark, Norway, Sweden and Italy.
- Basemap: © CARTO, © OpenStreetMap contributors.
All series were resampled to a common 15-minute UTC grid (hourly values forward-filled) and are shown without warranty.
Data built .
Who made this
I'm Cormac Berkery, a data scientist in Amsterdam working on power-market modelling and
forecasting. This map is the visual front end of a larger project: data pipelines for European market and grid data, the market
model above, and forecasting experiments. Feedback is welcome.