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 dataset | Content | Publication delay | Use in Pulse |
|---|---|---|---|
| ods002 | Measured and forecast load (P10–P90) | Near real-time, ~45 min | Load, load forecast |
| ods001 | Load (historical) | D-1 | History |
| ods201 | Generation by fuel type | Consolidated, about 17 h behind | “Elia consolidated” mix |
| ods086 | Wind: real-time estimate and forecasts | ~15–30 min | Wind, P10–P90 forecasts |
| ods087 | Photovoltaics: real-time estimate and forecasts | ~15–30 min | Solar, P10–P90 forecasts |
| ods031 / ods032 | Measured wind and solar (historical) | D-1 | Nowcast back-testing |
| ods160 / ods026 | Physical flows per border | Near real-time / D-1 | Exchanges, net imports |
| ods022 / ods023 | Implicit net positions, intraday / day-ahead | Published the day before | Reconstruction of a missing border |
| ods162 / ods134 | Imbalance price, system imbalance, ACE | Quarter-hour, provisional then validated | Imbalance price |
| ods192 | Production- and consumption-based CO₂ intensity | Hourly, D-1 | Official Elia CO₂ |
| ods202 | Generation unit unavailabilities | As declared | Unavailability feed, causes for the model |
| ods203 | 380/220 kV grid unavailabilities | As declared | Assets out of service |
| status-incidents | Elia Open Data platform incidents | As they happen | Data-quality alert |
| ENTSO-E A44 / A75 | BE day-ahead price, actual generation per type | Day before around 13:00 / ~1 h | Ready, 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:
- Wind and solar: Elia real-time estimates (
ods086,ods087). - 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).
- Nuclear: latest consolidated value, capped by what remains to be generated.
- 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.
| Nuclear | 12 |
|---|---|
| Wind | 12 |
| Solar | 48 |
| Gas | 490 |
| Hydro | 24 |
| Biomass | 230 |
| Waste | 620 |
| Oil | 840 |
| Storage | 0 |
| Other | 300 |
| France | 32 |
|---|---|
| Netherlands | 327 |
| Germany | 385 |
| United Kingdom | 210 |
| Luxembourg | 140 |
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:00Zfor 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.