{"as_of":"2026-09-24","awaiting_complete_data":true,"base":{"basket_eur_mwh":99.888,"dates":["2026-07-01","2026-07-02","2026-07-03","2026-07-04","2026-07-05","2026-07-06","2026-07-07","2026-07-08","2026-07-09","2026-07-10","2026-07-11","2026-07-12","2026-07-13","2026-07-14","2026-07-15","2026-07-16","2026-07-17","2026-07-18","2026-07-19","2026-07-20","2026-07-21","2026-07-22","2026-07-23","2026-07-25","2026-07-26","2026-07-27","2026-07-28","2026-07-29","2026-07-30","2026-07-31"],"days_complete":30,"days_required":30,"excluded_dates":[{"constituent":"IE_SEM","date":"2026-07-24","reason":"ENTSO-E published no day-ahead price for IE_SEM on this delivery day. The auction cleared and SEMOpx published it; the index uses one source and does not substitute."}],"is_complete":true,"month":"2026-07","period_version":"base-2026-07-30d-v1","value":100},"basket_eur_mwh":172.1714,"change_1d":{"basket_pct":0.2272,"comparability":"like_for_like","days_apart":1,"do_not_report_as":"A market-direction signal. Day-ahead power has a weekly shape, so a step between a weekday and a weekend is the calendar, not the market. Use the signal object, or window_7d, for direction.","from":"2026-09-23","from_day_type":"weekday","identical_by_construction":true,"is_adjacent":true,"level_pct":0.2272,"same_day_type":true,"to":"2026-09-24","to_day_type":"weekday"},"constituent_reliability":{"by_zone":[{"days_missing":6,"days_solely_blocking":2,"zone":"IE_SEM"},{"days_missing":3,"days_solely_blocking":1,"zone":"IT_NORD"},{"days_missing":4,"days_solely_blocking":0,"zone":"CZ"},{"days_missing":4,"days_solely_blocking":0,"zone":"EE"},{"days_missing":4,"days_solely_blocking":0,"zone":"HR"},{"days_missing":4,"days_solely_blocking":0,"zone":"HU"},{"days_missing":4,"days_solely_blocking":0,"zone":"LT"},{"days_missing":4,"days_solely_blocking":0,"zone":"LV"},{"days_missing":4,"days_solely_blocking":0,"zone":"PT"},{"days_missing":4,"days_solely_blocking":0,"zone":"SI"},{"days_missing":4,"days_solely_blocking":0,"zone":"SK"},{"days_missing":3,"days_solely_blocking":0,"zone":"DK1"},{"days_missing":3,"days_solely_blocking":0,"zone":"RO"},{"days_missing":2,"days_solely_blocking":0,"zone":"AT"},{"days_missing":2,"days_solely_blocking":0,"zone":"BE"},{"days_missing":2,"days_solely_blocking":0,"zone":"FI"},{"days_missing":2,"days_solely_blocking":0,"zone":"NO2"},{"days_missing":2,"days_solely_blocking":0,"zone":"PL"},{"days_missing":2,"days_solely_blocking":0,"zone":"SE1"},{"days_missing":1,"days_solely_blocking":0,"zone":"ES"},{"days_missing":1,"days_solely_blocking":0,"zone":"NL"}],"days_blocked_by_a_single_zone":3,"incomplete_days":7,"rule":"A delivery day is usable only when all 23 constituents published. One missing zone costs the whole day.","what_this_is_not":"This is not a judgement about any operator or exchange. It counts days on which OUR single source did not carry a price for that zone. The cause can be the source, the publication route, or the auction itself, and this record does not distinguish them.","why_the_rule_stands":"Substituting another publisher for a missing zone would put two sources inside one basket. The index would keep running and would stop meaning one thing. The cost of the rule is measured here rather than argued about.","window":{"days_observed":79,"first_day":"2026-07-01","last_day":"2026-09-25"}},"constituents":{"list":[{"code":"FR","display":"France","eic":"10YFR-RTE------C"},{"code":"DE_LU","display":"Germany-Luxembourg","eic":"10Y1001A1001A82H"},{"code":"NL","display":"Netherlands","eic":"10YNL----------L"},{"code":"ES","display":"Spain","eic":"10YES-REE------0"},{"code":"IT_NORD","display":"Italy North (Milan)","eic":"10Y1001A1001A73I"},{"code":"NO2","display":"Norway NO2 (South)","eic":"10YNO-2--------T"},{"code":"SE1","display":"Sweden SE1 (Lulea / North)","eic":"10Y1001A1001A44P"},{"code":"BE","display":"Belgium","eic":"10YBE----------2"},{"code":"DK1","display":"Denmark DK1 (West)","eic":"10YDK-1--------W"},{"code":"PL","display":"Poland","eic":"10YPL-AREA-----S"},{"code":"FI","display":"Finland","eic":"10YFI-1--------U"},{"code":"AT","display":"Austria","eic":"10YAT-APG------L"},{"code":"RO","display":"Romania","eic":"10YRO-TEL------P"},{"code":"IE_SEM","display":"Single Electricity Market (Ireland and Northern Ireland)","eic":"10Y1001A1001A59C"},{"code":"PT","display":"Portugal","eic":"10YPT-REN------W"},{"code":"CZ","display":"Czech Republic","eic":"10YCZ-CEPS-----N"},{"code":"HU","display":"Hungary","eic":"10YHU-MAVIR----U"},{"code":"SK","display":"Slovakia","eic":"10YSK-SEPS-----K"},{"code":"SI","display":"Slovenia","eic":"10YSI-ELES-----O"},{"code":"HR","display":"Croatia","eic":"10YHR-HEP------M"},{"code":"EE","display":"Estonia","eic":"10Y1001A1001A39I"},{"code":"LV","display":"Latvia","eic":"10YLV-1001A00074"},{"code":"LT","display":"Lithuania","eic":"10YLT-1001A0008Q"}],"required_for_publication":23,"universe":23,"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"]},"coverage":{"completeness_pct_of_expected":82.8,"days_complete":72,"days_expected":87,"days_never_attempted":8,"days_observed":79,"first_day":"2026-07-01","last_day":"2026-09-25","means":"days_expected counts every delivery day from the first one observed to yesterday. days_observed counts the days the recorder actually reached. The difference is days the recorder was not running, which is a different failure from a zone that did not publish and is listed separately from source_gaps.","never_attempted":["2026-08-29","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13"],"never_attempted_truncated":false,"why_two_denominators":"Measured against days_observed, completeness cannot fall when the recorder stops, because a day never attempted is not counted as missed. completeness_pct_of_expected is the figure that degrades when the pipeline does, and it does not recover when the recorder restarts."},"formula":"index_t = 100 * basket_t / base_basket, where basket_t is the equal-weighted mean of the 23 zonal day-ahead prices in EUR/MWh and base_basket is the mean of basket_t across the 30 included July 2026 base dates","generated_at":"2026-09-26T22:40:05.783Z","index_and_basket_note":"The index and the basket are one measure in two units. The index is the basket normalised to July 2026 = 100, so their percentage changes are identical by construction.","index_method_version":"index-basket-normalised-1.1","latest_note":null,"level":172.3644,"method_version":"market-delivery-day-2.0","methodology_url":"https://powergridiq.com/european-power-price-methodology","name":"PowerGridIQ European Day-Ahead Power Price Index","note":"Wholesale day-ahead prices only. Excludes delivery, capacity, balancing, taxes, supplier margin and hedging, and is therefore not a delivered cost.","outstanding":{"day":"2026-09-25","have":2,"missing":["NL","ES","IT_NORD","NO2","SE1","BE","DK1","PL","FI","AT","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"]},"recorder":{"build":"2026-09-26.4-no-data-is-an-answer","common_failure":"transport_error","conflicts":0,"days":[{"added":0,"already":23,"complete":true,"conflicts":0,"coverage":23,"day":"2026-09-23","failed":0,"failure_reasons":[],"refused":0},{"added":0,"already":23,"complete":true,"conflicts":0,"coverage":23,"day":"2026-09-24","failed":0,"failure_reasons":[],"refused":0},{"added":0,"already":2,"complete":false,"conflicts":0,"coverage":2,"day":"2026-09-25","failed":21,"failure_reasons":["transport_error"],"refused":0}],"days_attempted":3,"finished":"2026-09-26T22:40:05.719Z","nothing_new_because":"already recorded: the candidate days were already complete in the series","ok":true,"recovery":null,"recovery_days":null,"refused":0,"skipped":null,"started":"2026-09-26T22:40:04.844Z","written":0,"wrote":false},"recording":false,"recovered":{"days":3,"means":"3 day(s) in this series contain observations that were fetched after the fact rather than on schedule, following a recorder outage. The values are the same published prices a live capture would have read -- ENTSO-E does not revise a closed delivery day -- but they were read by a deliberate recovery, and each one carries its own `recovered` stamp in the stored series.","observations":50,"partial_days_are_possible":"A day can be part live and part recovered, so the mark is on each observation rather than on the day. `zones` against `of` says how much of each day came from the recovery.","per_day":[{"at":"2026-09-21T00:23:37.057Z","day":"2026-09-14","of":23,"reason":"recorder starved of subrequests","zones":23},{"at":"2026-09-21T00:23:37.057Z","day":"2026-09-15","of":23,"reason":"recorder starved of subrequests","zones":23},{"at":"2026-09-21T00:23:37.057Z","day":"2026-09-16","of":4,"reason":"recorder starved of subrequests","zones":4}]},"schema_version":"european-day-ahead-index-1.0","secret_agreement":{"agree":true,"checked_at":"2026-09-26T22:40:04.844Z","consumers":{"congestion_proxy":{"accepts":true,"http_status":200},"pages_site":{"accepts":true,"http_status":200}},"means":"Every consumer of INTERNAL_TOKEN accepts this Worker's copy.","token_present":true},"series":[{"basket_eur_mwh":133.3999,"day":"2026-07-01","level":133.5494},{"basket_eur_mwh":86.489,"day":"2026-07-02","level":86.586},{"basket_eur_mwh":67.7459,"day":"2026-07-03","level":67.8218},{"basket_eur_mwh":58.9166,"day":"2026-07-04","level":58.9826},{"basket_eur_mwh":60.8,"day":"2026-07-05","level":60.8681},{"basket_eur_mwh":95.0882,"day":"2026-07-06","level":95.1948},{"basket_eur_mwh":89.7783,"day":"2026-07-07","level":89.8789},{"basket_eur_mwh":98.7088,"day":"2026-07-08","level":98.8195},{"basket_eur_mwh":114.1898,"day":"2026-07-09","level":114.3178},{"basket_eur_mwh":115.7005,"day":"2026-07-10","level":115.8302},{"basket_eur_mwh":89.6566,"day":"2026-07-11","level":89.7571},{"basket_eur_mwh":75.6665,"day":"2026-07-12","level":75.7513},{"basket_eur_mwh":108.6807,"day":"2026-07-13","level":108.8026},{"basket_eur_mwh":114.9453,"day":"2026-07-14","level":115.0742},{"basket_eur_mwh":129.3004,"day":"2026-07-15","level":129.4453},{"basket_eur_mwh":139.3146,"day":"2026-07-16","level":139.4707},{"basket_eur_mwh":125.3274,"day":"2026-07-17","level":125.4679},{"basket_eur_mwh":86.8822,"day":"2026-07-18","level":86.9796},{"basket_eur_mwh":75.8743,"day":"2026-07-19","level":75.9593},{"basket_eur_mwh":109.7745,"day":"2026-07-20","level":109.8976},{"basket_eur_mwh":116.042,"day":"2026-07-21","level":116.1721},{"basket_eur_mwh":108.72,"day":"2026-07-22","level":108.8419},{"basket_eur_mwh":116.9264,"day":"2026-07-23","level":117.0574},{"basket_eur_mwh":77.9453,"day":"2026-07-25","level":78.0326},{"basket_eur_mwh":75.0206,"day":"2026-07-26","level":75.1047},{"basket_eur_mwh":83.1241,"day":"2026-07-27","level":83.2173},{"basket_eur_mwh":99.3488,"day":"2026-07-28","level":99.4602},{"basket_eur_mwh":111.7369,"day":"2026-07-29","level":111.8622},{"basket_eur_mwh":109.9282,"day":"2026-07-30","level":110.0514},{"basket_eur_mwh":121.6091,"day":"2026-07-31","level":121.7455},{"basket_eur_mwh":107.6072,"day":"2026-08-01","level":107.7278},{"basket_eur_mwh":95.9301,"day":"2026-08-02","level":96.0376},{"basket_eur_mwh":129.4903,"day":"2026-08-03","level":129.6355},{"basket_eur_mwh":138.5217,"day":"2026-08-04","level":138.677},{"basket_eur_mwh":120.9523,"day":"2026-08-05","level":121.0879},{"basket_eur_mwh":115.1344,"day":"2026-08-06","level":115.2634},{"basket_eur_mwh":109.832,"day":"2026-08-07","level":109.9552},{"basket_eur_mwh":88.5954,"day":"2026-08-08","level":88.6947},{"basket_eur_mwh":81.7174,"day":"2026-08-09","level":81.809},{"basket_eur_mwh":113.112,"day":"2026-08-10","level":113.2388},{"basket_eur_mwh":108.5276,"day":"2026-08-11","level":108.6492},{"basket_eur_mwh":129.9891,"day":"2026-08-12","level":130.1348},{"basket_eur_mwh":130.9994,"day":"2026-08-14","level":131.1463},{"basket_eur_mwh":101.266,"day":"2026-08-15","level":101.3796},{"basket_eur_mwh":110.6742,"day":"2026-08-16","level":110.7983},{"basket_eur_mwh":154.4037,"day":"2026-08-17","level":154.5767},{"basket_eur_mwh":154.1477,"day":"2026-08-18","level":154.3205},{"basket_eur_mwh":159.9597,"day":"2026-08-19","level":160.1391},{"basket_eur_mwh":145.2318,"day":"2026-08-20","level":145.3946},{"basket_eur_mwh":153.8578,"day":"2026-08-21","level":154.0303},{"basket_eur_mwh":105.0963,"day":"2026-08-22","level":105.2141},{"basket_eur_mwh":82.15,"day":"2026-08-23","level":82.2421},{"basket_eur_mwh":131.4266,"day":"2026-08-24","level":131.5739},{"basket_eur_mwh":145.6088,"day":"2026-08-25","level":145.772},{"basket_eur_mwh":154.3494,"day":"2026-08-26","level":154.5224},{"basket_eur_mwh":140.7439,"day":"2026-08-27","level":140.9017},{"basket_eur_mwh":91.4395,"day":"2026-08-30","level":91.542},{"basket_eur_mwh":132.5498,"day":"2026-08-31","level":132.6984},{"basket_eur_mwh":147.2018,"day":"2026-09-01","level":147.3669},{"basket_eur_mwh":153.5393,"day":"2026-09-02","level":153.7114},{"basket_eur_mwh":126.9093,"day":"2026-09-04","level":127.0515},{"basket_eur_mwh":88.5394,"day":"2026-09-05","level":88.6387},{"basket_eur_mwh":219.6268,"day":"2026-09-14","level":219.873},{"basket_eur_mwh":176.9976,"day":"2026-09-15","level":177.1961},{"basket_eur_mwh":137.299,"day":"2026-09-17","level":137.4529},{"basket_eur_mwh":120.599,"day":"2026-09-18","level":120.7342},{"basket_eur_mwh":80.5716,"day":"2026-09-19","level":80.6619},{"basket_eur_mwh":78.6011,"day":"2026-09-20","level":78.6892},{"basket_eur_mwh":126.2202,"day":"2026-09-21","level":126.3617},{"basket_eur_mwh":194.0813,"day":"2026-09-22","level":194.2989},{"basket_eur_mwh":171.7812,"day":"2026-09-23","level":171.9737},{"basket_eur_mwh":172.1714,"day":"2026-09-24","level":172.3644}],"signal":{"basis_text":"The 23-zone wholesale basket averaged €135/MWh across 18–24 September 2026. The preceding seven days are incomplete, so no week-on-week change is published.","blocking_gap":null,"comparison_change_pct":null,"comparison_period":null,"coverage":"23 of 23 zones","direction":null,"headline":"European wholesale prices averaged €135/MWh in the week to 24 September 2026.","headline_display":"European wholesale prices averaged €135/MWh in the week to 24 September 2026","index_text":"The basket remained 35.0% above its July 2026 baseline — an index level of 135.","is_current":true,"latest_daily_context":null,"limitation":"This is a wholesale day-ahead price signal, not the delivered electricity cost paid by a large load, which also includes network charges, capacity, balancing, taxes and contracting.","mean_basket_eur_mwh":134.86,"mean_index":135.01,"period":{"end":"2026-09-24","start":"2026-09-18"},"relative_to_base_pct":35.01,"status":"level_only","use":"This is useful as a market-direction signal for buyers, developers and investors.","what_it_means":"A weekly average is available but a like-for-like comparison with the previous week is not, so this says what prices were, not which way they moved."},"source_gaps":[{"day":"2026-07-24","have":22,"missing":["IE_SEM"]},{"day":"2026-08-13","have":22,"missing":["IT_NORD"]},{"day":"2026-08-28","have":11,"missing":["DK1","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"]},{"day":"2026-09-03","have":22,"missing":["IE_SEM"]},{"day":"2026-09-06","have":13,"missing":["IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"]},{"day":"2026-09-16","have":4,"missing":["IT_NORD","NO2","SE1","BE","DK1","PL","FI","AT","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"]},{"day":"2026-09-25","have":2,"missing":["NL","ES","IT_NORD","NO2","SE1","BE","DK1","PL","FI","AT","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"]}],"superseded_methods":[{"formula":"100 * mean(price_z,t / base_price_z)","reason":"an equal-weighted mean of price relatives lets zones with very low base prices dominate the level; on 2026-08-18 it read 190.07 against a basket of 154.15 EUR/MWh that had fallen from the previous day","renamed_to":"relative_zone_pressure","superseded":"2026-08-19","version":"index-mean-of-ratios-1.0"}],"weights":{"basis":"EUR/MWh, one vote per bidding zone","per_constituent":0.043478260869565216,"scheme":"equal","sums_to":1},"window_28d":{"available":false,"basket_change_pct":null,"blocking_gap":{"day":"2026-08-28","missing":["DK1","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"],"why":"only 11 of 23 constituents"},"building":{"consecutive_complete":8,"earliest_gap_in_window":"2026-08-28","required":28,"since_gap":"2026-09-16","text":"8 of 28 consecutive complete days"},"change_pct":null,"comparison":null,"comparison_available":false,"days":28,"identical_by_construction":true,"is_current":false,"level_available":false,"period":null,"status":"building"},"window_7d":{"available":false,"basket_change_pct":null,"blocking_gap":null,"building":null,"change_pct":null,"comparison":null,"comparison_available":false,"comparison_gap":{"day":"2026-09-11","missing":null},"days":7,"identical_by_construction":true,"is_current":true,"level_available":true,"period":{"end":"2026-09-24","mean_basket_eur_mwh":134.8608,"mean_level":135.012,"start":"2026-09-18"},"status":"current"},"notes_url":"https://powergridiq.com/api/v1/price-index/notes","health":{"state":"awaiting_zones","last_observed_day":"2026-09-25","last_observed_age_days":1,"stale_after_days":3,"days_complete":72,"days_observed":79,"days_expected":87,"days_never_attempted":8,"never_attempted":["2026-08-29","2026-09-07","2026-09-08","2026-09-09","2026-09-10","2026-09-11","2026-09-12","2026-09-13"],"completeness_pct_of_expected":82.8,"gap_kinds":{"source_gap_days":7,"outage_days":8,"difference":"A source gap is a delivery day the recorder reached and one or more zones did not publish for; it is listed in source_gaps with the zones named. An outage day is one the recorder never reached at all, so no zone is at fault and none can be named. Only the first is evidence about a publisher."},"outstanding_day":"2026-09-25","outstanding_missing":["NL","ES","IT_NORD","NO2","SE1","BE","DK1","PL","FI","AT","RO","IE_SEM","PT","CZ","HU","SK","SI","HR","EE","LV","LT"],"recorder":{"last_run":"2026-09-26T22:40:05.719Z","skipped":null,"wrote":false,"written":0,"days_attempted":3,"common_failure":"transport_error","nothing_new_because":"already recorded: the candidate days were already complete in the series"},"secret_agreement":{"checked_at":"2026-09-26T22:40:04.844Z","agree":true,"consumers":{"congestion_proxy":{"accepts":true,"http_status":200},"pages_site":{"accepts":true,"http_status":200}},"means":"Every consumer of INTERNAL_TOKEN accepts this Worker's copy."},"recorder_note":"What the recorder's last run did, in its own words. `skipped` is a configuration refusal (no token, schema mismatch) and beats everything else; `common_failure` is the reason the constituents agreed on, said once rather than 23 times.","means":"`generated_at` is when this response was computed and moves every hour whether or not the recorder observed anything. `last_observed_age_days` is the age of the newest delivery day the recorder has seen, and it is the number that goes wrong when the pipeline stops.","why_it_matters":"A stalled recorder does not blank the index; it freezes it. The level, the signal and the weekly window all keep returning their last computed values, so a frozen index reads as a calm market rather than as an outage."}}