Preview

European Day-Ahead Power Price Index — Methodology

Version 1. Method index-basket-normalised-1.1.

This document describes the index as it is currently calculated and published at /european-power-price-index and GET /api/v1/price-index. It is a separate product from the Global Power Conditions Monitor, which has its own methodology and is not described here.

What the index measures

The average cost of wholesale day-ahead electricity across 23 European bidding zones, expressed both in euros per megawatt hour and as a level against a July 2026 base of 100.

It measures the price of energy cleared in the day-ahead auction. It is not the cost of delivered electricity to a consumer or an industrial site: it excludes network and capacity charges, balancing, taxes and levies, supplier margin, and any hedging a buyer has in place. A large load's delivered cost is typically a multiple of this number and moves differently.

The calculation

daily_basket_t = mean of the 23 zonal day-ahead prices on delivery day t   (EUR/MWh)
base_basket    = mean of daily_basket_t across the 30 declared July 2026 base dates
level_t        = 100 × daily_basket_t / base_basket

The index and the basket are one measure in two units. The level is the basket normalised; their percentage changes are therefore identical by construction. That is deliberate, and it is enforced in code and in tests: the normalised figure cannot tell a different story from the money.

base_basket = €99.888/MWh, computed from the 30 base dates listed below.

Constituents and weighting

Twenty-three bidding zones, fixed for Version 1. Each counts once, in euros: one twenty-third of the basket each. There is no consumption, volume or generation weighting in this version.

Equal weighting means a zone's influence is proportional to its price in euros, not to its size or to how far it has moved relative to its own history. A zone that is cheap in absolute terms contributes proportionally little to the basket even when it moves sharply.

Zones
FR · DE_LU · NL · ES · IT_NORD · NO2 · SE1 · BE · DK1 · PL · FI · AT · RO · IE_SEM · PT · CZ · HU · SK · SI · HR · EE · LV · LT

Each is queried by its own EIC. Italy North is 10Y1001A1001A73I. Italy Centre-North, 10Y1001A1001A70O, is a different market and is not a constituent; it is explicitly excluded and a stored observation carrying that identifier is refused. The live constituent list and EICs are published in the API payload.

Base period

July 2026 = 100, over a fixed set of 30 named delivery dates (base-2026-07-30d-v1): 1–23 July and 25–31 July 2026.

24 July 2026 is excluded. ENTSO-E published no day-ahead price for IE_SEM on that delivery day, so the basket cannot be formed. The auction cleared and SEMOpx published the price; this index uses one source and does not substitute from another.

The date set is fixed rather than derived. If ENTSO-E later backfills 24 July, the base does not silently gain a date: every per-day level would shift and every published number would change underneath its readers with nothing having visibly failed. Changing the base requires a new base period version and is a deliberate re-basing.

Daily publication rule

A delivery day publishes only when all 23 constituents are present. There is no imputation, no substitution from a neighbouring zone, no interpolation and no carry-forward. A day with 22 zones does not publish at a lower coverage; it does not publish at all, and it is listed as a gap with the constituent that is missing.

Delivery days, duration weighting and daylight saving

Each zonal price is a duration-weighted mean of the market time units in that delivery day — quarter-hourly for most zones, hourly for IE_SEM. Longer intervals carry proportionally more weight, so a mixed-resolution day is still an average over time rather than over records.

The delivery day is the one the exchanges define and settle, which for all of SDAC is Central European Time: 22:00Z to 22:00Z in summer, 23:00Z to 23:00Z in winter. It is not each zone's civil calendar day. Sixteen constituents sit at UTC+2 in summer and the two coincide; for IE_SEM and PT at UTC+1, and FI, RO, EE, LV and LT at UTC+3, they do not, and using civil midnight would assemble a day from parts of two different auctions.

Days on which daylight saving changes are 23 or 25 hours long and are weighted at their actual duration. Method version market-delivery-day-2.0.

Seven-day and 28-day signals

The seven-day average is the primary signal; 28 days is the strategic one. Both use consecutive complete calendar days and neither steps over a missing day. An average taken across a gap silently compares different spans of time.

28 rather than 30 so the window is four whole weeks. A month-length window starting on a different weekday from the one it is compared against would weigh five weekends against four, which moves a power price on its own.

The level and the comparison are separate questions. A gap in the preceding week does not make the current week's average unknown — only the week-on-week change. Where the current window is blocked but an earlier complete one exists, that earlier window is shown with its own dates and labelled as not current. Where no complete window exists yet, the page reports progress as n of 7 or n of 28 consecutive complete days rather than presenting a shortened average as if it were whole.

Source and provenance

All prices come from the ENTSO-E Transparency Platform, data item Energy Prices (12.1.D), document type A44, restricted to day-ahead contracts (contract_MarketAgreement.type = A01). Every observation stores the EIC the document actually answered with, the method and capture versions, the delivery-day bounds, the interval count and resolution, and the source document identifier.

Where a zone returns more than one day-ahead series for a day, the selection rule was established by comparing each candidate against the operator's own published price at interval level across three differing delivery days — SMARD for DE-LU, Nord Pool for AT and DK1, SEMOpx for IE_SEM — and a zone with no established rule fails closed rather than guessing. Official data was used to verify selection only; no third-party series is stored in or republished from this index.

Known source gaps

2026-07-24 — IE_SEM absent. Excluded from the base period.

2026-08-13 — IT_NORD absent. Not published as a daily value.

In both cases ENTSO-E returned no data for that constituent and delivery day. Both auctions cleared and both operators published a price. We do not use it: a series whose provenance is "ENTSO-E, except the days it isn't" makes every number something a reader has to check first. Gaps are visible in the payload and are not smoothed over.

Status and governance

Preview. The construction may change and the history is recalculated when it does. It is not yet promoted in site navigation and should not be cited as a settled Version 1 series.

Stored observations are append-only. The daily writer is idempotent, refuses a conflicting rewrite rather than applying it, and never mixes method versions within a published day. A change to the calculation is versioned, dated and recorded here; the superseded construction is retained so a past figure can be reproduced.

Method versions

index-basket-normalised-1.1Published index calculation
market-delivery-day-2.0Delivery-day definition and duration weighting
base-2026-07-30d-v1Base period: 30 named July 2026 dates

Revision note

The Preview originally published 100 × mean(price / base_price) — an equal-weighted mean of each zone's own price relative, method index-mean-of-ratios-1.0. That construction is arithmetically correct but unsuitable as a price headline: a zone's influence on it was inversely proportional to how cheap it was in the base period. On 18 August 2026 it read 190.07 while the basket was €154.15/MWh and falling, because a zone moving from €15 to €86 is a large relative move and a small contribution in euros.

It was superseded on 19 August 2026 by the basket-normalised method above, so that the index and the euro basket cannot tell different percentage-change stories. The former measure is retained internally under the name relative_zone_pressure. It is not the index, is not published on this page or the standard endpoint, and must not be presented as a headline.

No stored observation, constituent, base date or delivery-day calculation changed in that revision. The published series was recomputed from the same observations rather than transformed from the previous levels.

European Day-Ahead Power Price Index · GET /api/v1/price-index

This index is a wholesale day-ahead price signal. It is not a delivered cost, and it cannot be compared with one. For how PowerGridIQ builds a delivered recurring-cost band for a 100 MW load — network charges, capacity, levies, and the rules under which a band is withdrawn — see the recurring cost engine methodology.