Belgian Grid PulseMethodology

Belgian Grid Pulse · Methodology

What is measured, what is estimated, and how.

Belgian Grid 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
ods001Load (historical)D-1History
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
ods022 / ods023Implicit net positions, intraday / day-aheadPublished the day beforeReconstruction of 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 typeDay before around 13:00 / ~1 hReady, awaiting the ENTSO-E API key

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.

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

Cross-border exchanges

Flows are physical (ods160): positive, Belgium exports; negative, it imports. Elia sometimes does not publish a border in real time (France, in September 2026). Pulse reconstructs it: day-ahead + intraday net position (ods023, ods022) minus the sum of the other borders. The error observed on complete days ranges from a few MW to about 1 GW; the value is flagged “reconstructed”.

Two carbon intensities, two methods

SamionX (real time): weighted average of the IPCC AR5 (Annex III) median life-cycle factors per fuel, plus imports at the AIB 2023 residual-mix factor of the country of origin. This is a consumption-based intensity.

Elia (official, ods192): direct emissions, published hourly about one day late. The two figures do not measure the same thing: life-cycle factors include plant construction, hence a higher level.

Factors per fuel (gCO₂eq/kWh)
Nuclear12
Wind12
Solar48
Gas490
Hydro24
Biomass230
Waste620
Oil840
Storage0
Other300
Imports, AIB 2023 residual mix (gCO₂/kWh)
France32
Netherlands327
Germany385
United Kingdom210
Luxembourg140

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 detects, reproducibly, what mattered: 30-day records, negative prices or imbalance spikes, day-ahead load forecast misses, unavailabilities starting or ending, exchanges, mix and CO₂. It turns them into factual sentences ranked by importance. Claude Haiku 4.5 (Anthropic) then assembles them into one paragraph, once per day and per language, without adding anything. The summary is written once Elia has consolidated the day.

Jev (typesafe.ai), also used by Cited Scan, checks the summary against those facts. Jev writes nothing: it answers closed questions. If the text states something absent from the facts or invents a causal link, it is discarded and replaced by the factual sentences. The “Verified by Jev” badge only appears when Jev actually validated the text.

Model instructions (daily summary) and Jev questions
You write the daily summary of the Belgian power grid for Belgian Grid Pulse (SamionX), read by energy professionals (TSO staff, suppliers, traders, energy managers).
You receive a JSON: "sentences" is a list of already verified facts, most important first, written in the output language; "figures" holds the key numbers.
Rules:
- Write only in British English. Reuse the wording, units, number formats and times exactly as they appear in the facts.
- A single paragraph of 3 to 5 sentences, plain analyst tone. No markdown, no bullet points, no heading.
- Start with the most important fact. You may group or connect facts, never add any.
- Never invent a cause, a figure, a comparison or an explanation. If two things happen on the same day, do not say one caused the other.
- The CO₂ figure is a SamionX life-cycle recalculation: say so if you cite it.
- If "complete" is false, say the day is incomplete.
- Use the standard vocabulary of the power sector in the output language (load, net imports, imbalance price, day-ahead price).
  • unsupported_claims (noul) : Compare the summary with the facts (sentences and figures). Does the summary state any number, cause, event, comparison or explanation that is absent from or contradicted by the facts?
  • invented_causality (noul) : Does the summary claim that one fact caused another when the facts do not say so?
  • missed_lead (noul) : Does the summary leave out the first fact of the list?

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).

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 “provisional” data may be corrected; Pulse picks up corrections over 3 days at every collection.
  • For information only. Do not use it as a grid operation or trading signal.

Back to the dashboard · Contact