Methodology
Every number on GridGlass, documented: which values are raw public data, which are derived in-app, the exact formula for each, and where it comes from. GridGlass reads the self-refreshing GDA data lake — it is a display of official public data. Always verify against the primary source for operational use.
Data sources
| Lake dataset | Provides | Cadence |
|---|---|---|
Elexon FUELINST | Transmission generation per fuel (MW), interconnector flows | 5 min |
Elexon FREQ | System frequency (Hz) | ~15 s |
Elexon INDO / GridWatch | National demand outturn (MW); GridWatch is the fallback archive | ½-hourly / 5 min |
Elexon PN | Physical Notifications — per-BMU notified output (largest single unit) | near-real-time |
PVLive national | Embedded solar out-turn (MW) | ½-hourly |
NESO system_frequency | 1-second frequency (record extremes) | 1 s (archive) |
NESO system_inertia | Published Outturn & Market-provided inertia (GVA·s) | ½-hourly (settlement-lagged) |
Derived/inertia_estimate | GridGlass's fuel-mix inertia estimate, recorded (GVA·s) | 5 min |
Derived/inertia_all_srcs | Merged NESO outturn/market + per-BMU reconstruction | settlement-lagged |
| Interconnector register | Link names, countries, nameplate capacities | static |
Metric dictionary
| Metric | Type | Definition / formula |
|---|---|---|
| Frequency (Hz) | raw | Latest FREQ.frequency reading. |
| Demand (GW) | raw | Latest INDO.demand; falls back to the GridWatch archive when INDO hasn't converged. |
| Generation (GW) | derived | Σ of positive FUELINST.generation over domestic fuels (interconnectors excluded), plus embedded PVLive solar folded in as its own fuel. |
| Fuel mix (per fuel) | raw | Per-fuel FUELINST.generation (CCGT, COAL, NUCLEAR, WIND, …); embedded solar from PVLive. Synchronous (spinning) fuels flagged for the inertia split. |
| Renewable share (%) | derived | renewable MW ÷ generation MW × 100 (wind, solar, hydro, biomass, tidal). |
| Carbon intensity (gCO₂/kWh) | derived | Σ(fuel MW × fuel intensity) ÷ total MW, using standard per-fuel carbon factors. |
| Interconnector flow (MW) | raw | Per-link FUELINST INT* value; + = import into GB, − = export. |
| Net interconnector (MW) | derived | Σ of all INT* flows. |
| System inertia (GVA·s) | derived | The live figure is the synchronous fuel-mix estimate (below) — the real rotational energy present at T+0, counting spinning plant only. NESO Outturn Inertia (a lumped figure that also includes synthetic) is shown when concurrent, for comparison. Labelled “(est.)” when estimated from the mix. |
| Inertia estimate (GVA·s) | derived | E = Σsynchronous Hfuel·(MW/pf) ÷1000 (H: Nuclear 4.5 s, CCGT/Gas 5.0, Coal/CHP/Biomass 4.0, OCGT/Hydro/PS 3.0; pf 0.9), computed live from the generation mix. It counts only synchronous machines — the kinetic energy physically spinning at T+0, the instant a loss must be arrested. It deliberately excludes “synthetic inertia”: a fast inverter/FFR response is measured-then-actuated with latency, contributes nothing to the first-instant RoCoF, and so is not inertia — counting it is a category error we refuse. NESO's Outturn is a lumped scalar that does fold synthetic in; the gap above this estimate is chiefly that synthetic slice (plus a small embedded/demand-side residual the transmission-metered mix can't see). Being transmission-metered and dispatched-MW-based, this reads as a mild lower bound on true synchronous inertia — the GDA model line settles that residual. |
| Largest credible loss (MW) | derived | The largest group that can trip on a common mode — per interconnector cluster (Sellindge = IFA+ElecLink, North Sea = NSL+Viking) sum the live positive imports; each standalone link and the largest single generating unit (from PN) are also candidates; the worst wins. Not the FRCR's fixed 1,800 MW. |
| RoCoF · if LCC trips (Hz/s) | derived | Swing equation: RoCoF = f₀·ΔP ÷ (2·E), with f₀ = 50 Hz, ΔP = the largest credible loss, E = live system inertia. The RoCoF that would follow if that loss occurred now. |
| RoCoF · today (Hz/s) | derived | Steepest rise and fall of frequency so far today: max/min of (fi − fi-1) ÷ Δt over consecutive FREQ samples. A 15-second average (the live feed's cadence), not sub-second instantaneous RoCoF. |
| Grid RPM | derived | RPM = (frequency ÷ 50) × 3000 — the synchronous speed the frequency implies. |
| Records (all-time) | derived | Full-history min/max per dataset (peak demand, peak wind/solar, lowest inertia, greenest half-hour, frequency extremes), each with the moment it occurred; physically-credible band filters reject corrupt spikes. |
Freshness, alignment & fallbacks
- Each tile shows the timestamp of its latest lake row (“updated X ago”). The lake's natural currency varies by feed, so staleness is judged relative to the board's freshest tile, not wall-clock now — a feed lagging the newest by > 3 h is badged stale.
- Demand uses INDO where present, else the GridWatch archive (which lags a few weeks) — badged accordingly.
- Solar (PVLive, ½-hourly) is folded into the mix at its latest published value; on the generation stack, fuel and solar bands are clamped to a shared time range so the edges stay flush.
- Inertia estimate vs measured — and synthetic. The live estimate counts transmission-synchronous plant only: the real spinning energy present at T+0. NESO's Outturn is a lumped figure that also folds in procured “synthetic inertia” — a fast inverter response that, not being present at the instant of a loss, we hold to be a category error and refuse to count as inertia. The GDA model resolves NESO's scalar back into real vs synthetic (e.g. ~100 published ≈ ~75 real + ~25 synthetic; grey + synthetic ≈ the lumped figure, decomposing almost cleanly). The gap is largest at the midday solar trough. The History chart plots all three lines; the Regulator page sets the FRCR floor context.
- RoCoF resolution. The live “today” RoCoF is averaged over the 15-second frequency feed, so it stays well below the 0.125 Hz/s protection line even during real sub-second events. The counterfactual (if-LCC-trips) RoCoF is the security-relevant one.
Provenance
GridGlass redisplays already-public data acquired by the GDA lake and applies deterministic, documented transforms (the formulas above). This is display of public information — it is not inference or forecasting, and carries no forward-looking horizon guard. Values are “as published” in the lake; for operational decisions, always verify against the primary source (Elexon BMRS, NESO Data Portal).