PulseMethodology

Pulse · Methodology

What is measured, what is estimated, and how.

Pulse shows the state of the Belgian power grid every quarter-hour. Every figure carries its source. When a value has not been published yet, it is either missing or estimated and flagged as such. Never replaced with a zero.

Sources

All grid data comes from Elia Open Data (the Belgian transmission system operator), under a CC BY 4.0 licence. The SamionX server collects it every 5 minutes and stores the history: visitors’ browsers never query Elia directly.

Elia datasetContentPublication delayUse in Pulse
ods002Measured and forecast load (P10–P90)Near real-time, ~45 minLoad, load forecast
ods001Validated load (historical)D-1Replaces real-time load as soon as it is published
ods201Generation by fuel typeConsolidated, about 17 h behind“Elia consolidated” mix
ods086Wind: real-time estimate and forecasts~15–30 minWind, P10–P90 forecasts
ods087Photovoltaics: real-time estimate and forecasts~15–30 minSolar, P10–P90 forecasts
ods031 / ods032Measured wind and solar (historical)D-1Nowcast back-testing
ods160 / ods026Physical flows per borderNear real-time / D-1Exchanges, net imports; historical data replaces real-time
ods022 / ods023Implicit net positions, intraday / day-aheadIntraday: in advance; day-ahead: D-1Fallback for a missing border
ods162 / ods134Imbalance price, system imbalance, ACEQuarter-hour, provisional then validatedImbalance price
ods192Production- and consumption-based CO₂ intensityHourly, D-1Official Elia CO₂
ods202Generation unit unavailabilitiesAs declaredUnavailability feed, causes for the model
ods203380/220 kV grid unavailabilitiesAs declaredAssets out of service
status-incidentsElia Open Data platform incidentsAs they happenData-quality alert
ENTSO-E A44 / A75BE day-ahead price, actual generation per type (BE, plus FR, NL, DE-LU for import CO₂)Day before around 13:00 / ~1 hActive

The real-time mix is an estimate

Elia publishes generation by fuel type (ods201) about 17 hours late. For recent hours, Pulse computes a nowcast:

  1. Wind and solar: Elia real-time estimates (ods086, ods087).
  2. Total Belgian generation: measured load minus net imports, corrected by the median gap observed at the same hour over the last 4 consolidated days (losses, pumping, own consumption).
  3. Nuclear: latest consolidated value, capped by what remains to be generated.
  4. The remainder is split between gas, biomass, waste, hydro, storage and other according to the latest consolidated mix at the same hour.

These quarters are hatched on the chart and flagged “estimated”. As soon as Elia publishes the consolidated mix, it replaces the estimate. If the ENTSO-E key is configured, ENTSO-E actual generation (A75) takes over before Elia. The nowcast needs the flows of all five borders: when Elia does not publish one in real time, it does not run, and the latest quarter shown is the latest one with a published mix.

Accuracy over the last 7 days (nowcast replayed on already consolidated quarters): mean absolute error of 294 MW on dispatchable generation and 15 gCO₂/kWh, over 578 quarters. In-sample measure: the bias correction is learnt on the same days.

Cross-border exchanges

Flows are physical (ods160 in real time, ods026 for history): positive, Belgium exports; negative, it imports. The real-time dataset only covers the current day, and Elia sometimes does not publish a border in it (France, since late September 2026). Pulse then estimates it from the quarter’s balance: load − published Belgian generation − other borders, corrected by the median gap observed at the same hour over the latest consolidated days (losses, pumping, generation outside the publication), keeping only the days published in the same revision state as the most recent one. The value is flagged “estimated”. Without a published mix, the fallback is the day-ahead + intraday net position (ods023, ods022), flagged “reconstructed”. If two borders are missing, the quarter is left without flows and without consumed CO₂. The next day, Elia’s measurement replaces the estimate.

Error measured over recent days: the balance is replayed on 645 quarters where Elia published all five borders, each day against the reference of the preceding days. Median error on net imports: 348 MW. Median rather than mean: Elia revises its generation by fuel a few days after first publication, and a day revised since can no longer be replayed in the state in which it was estimated.

Carbon intensity: two calculations, a published gap

SamionX (real time): consumption-based intensity in gCO₂eq/kWh, life cycle. Each Belgian fuel is weighted by the IPCC AR5 median (WG III, Annex III) where one exists. Imports on each border are counted at the intensity of the mix the neighbour actually generated in the same quarter (ENTSO-E A75, same factors, hard coal and lignite at 820). If that mix is not published yet, the fallback is the country’s 2023 AIB production mix. Exports leave Belgium at the quarter’s average intensity: they do not change the consumed gCO₂/kWh.

Elia (official, ods192): production- and consumption-based intensities in gCO₂eq/kWh, published hourly about one day late. Elia does not publish its emission factors, so the two calculations are not directly comparable. Possible causes of the gap: the gas supply chain (extraction, transport, methane leaks) included in life-cycle factors, solar counted at 48 g, the treatment of imports.

Gap measured over the last 30 days (2654 quarters with both values): SamionX − Elia = +46 gCO₂eq/kWh on average for consumption (mean absolute gap 46 g, correlation 0.98), +36 g for production.

Factors per fuel (gCO₂eq/kWh)
Nuclear12IPCC AR5, median
Wind12IPCC AR5, median
Solar48IPCC AR5, median
Gas490IPCC AR5, median
Hydro24IPCC AR5, median
Biomass230IPCC AR5, median
Waste620SamionX assumption (not in AR5)
Oil840SamionX assumption (not in AR5)
Storage0Electricity already counted when pumped or charged
Other300SamionX assumption (not in AR5)
Imports, fallback when the neighbour’s actual mix is missing: AIB 2023 production mix (gCO₂/kWh, direct emissions)
France30.8
Netherlands241
Germany335
United Kingdom193
Luxembourg58.4

Renewable share

European convention (Directive (EU) 2018/2001): wind, solar, run-of-river hydro and biomass. Pumped storage (Coo) is classed as storage: it returns electricity already generated and is not a source. On the dashboard, the quarter’s share is relative to load; in the daily summary, relative to Belgian generation.

Prices

The imbalance price (Elia ods162) is what balance responsible parties pay for their deviations, per quarter-hour; it stays “provisional” until validated. The day-ahead price for the BE bidding zone comes from the ENTSO-E Transparency Platform (document A44), on a 15-minute resolution since the European coupling of October 2025.

AI: one summary per day, checked against the facts

The reading of each quarter-hour is rule-based: it restates the displayed figures and computed signals, without a language model. A model would add nothing reliable there.

AI is used for the daily summary. The code first identifies, reproducibly, what mattered: 30-day records, negative prices or imbalance spikes, day-ahead load forecast errors, unavailabilities starting or ending, exchanges, mix and CO₂. It turns them into factual sentences ranked by importance. A language model then assembles them into one paragraph, once per day and per language, adding nothing. The summary is written once Elia has consolidated the day.

The paragraph is then checked against those facts. If it states something absent from the facts or invents a causal link, it is discarded and replaced by the factual sentences.

Public API and export

Read-only, no key, limited to 120 requests per 10 minutes per address. UTC timestamps, start of period. Add lang=en or lang=nl for English or Dutch labels.

  • GET /api/lab/pulse-electrique/now/: latest quarter, analysis, unavailabilities, source freshness, reading.
    ?t=2026-09-22T18:00Z for a past quarter.
  • GET /api/lab/pulse-electrique/series/?from=…&to=…&step=15m|1h|1d: time series (400 days max, 45 days at 15-minute resolution).
  • GET /api/lab/pulse-electrique/export/?from=…&to=…&step=…&format=csv|json: downloadable file, attribution included.
  • GET /api/lab/pulse-electrique/day/?date=YYYY-MM-DD: highlights and summary of a Brussels day (default: yesterday).
  • GET /api/lab/pulse-electrique/month/?m=YYYY-MM&format=json|csv: a Brussels month in GWh, with the same month a year earlier (default: the last full month).

Any reuse must credit “Contains data from Elia Open Data” (CC BY 4.0).

Limitations

  • The mix shown is the Elia grid mix, not the mix of a supply contract.
  • Wind P10–P90 bands are the sum of regional bands: wider than the true national uncertainty.
  • Elia validates and revises its data after the fact (load, flows, generation by fuel): Pulse re-reads the last 3 days every hour and the last 62 days every day. Figures for the most recent days may therefore still change.
  • Unavailabilities: one line per unit, at its largest current step in the latest version of the message published by Elia. Shutdowns with no return date and units not yet in service are counted separately.
  • Emission factors are fuel medians, not plant-level measurements.
  • For information only. Do not use it as a grid operation or trading signal.

Back to the dashboard · Contact