Methodology & Sources
Every figure traces to a settled or live figure from Elexon,
NESO or DUKES. No modelled numbers. This page sets out, figure
by figure, the source, the formula in words, and the known
limitations.
On this page: Sources at a glance ·
Denominator ·
Nameplate ·
Verdict pair ·
Capacity trap ·
Grid warnings rail ·
Operational warnings ·
Wind unreliability ·
Import cost ·
Year-to-date shares ·
The history store ·
Guards ·
Share cards
Sources at a glance
Every figure on the site, with the feeds it draws on, the
formula in words, and the caveats that come with it. The
conceptual detail — why each figure is built the way
it is — follows in the sections below.
Reliability — the firm share (§01)
Reliability gauge (live)
live
Feeds Elexon FUELINST (live), NESO embedded wind & solar forecast
Basis Firm (reliable) share of national demand = (gas + nuclear + biomass + other firm) ÷ national demand, recomputed live in the browser by the same parity-locked formula as the build. Wind, solar and net interconnector imports are the weather-and-imports (correlated-failure) bucket.
- A 5-minute snapshot. 'Weather & imports' classifies by what is firm when the continent is also becalmed — not a claim those megawatts are absent right now.
→ full method
Reliability strip (settled, per half-hour)
settled
Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), Sheffield Solar PV_Live (cross-check)
Basis Reliable (firm) share of demand per half-hour, by the same parity-locked formula as the live gauge (engine.grid_engine.compute_verdict), over the rolling 365 settled days. Net-export half-hours clamp to 100% reliable, matching the live dial.
- The firm fuels are settled Elexon FUELHH; the embedded solar/wind are NESO's modelled outturn estimates, not metered — a mixed metered+estimated layer, disclosed.
- Live gauge reads NESO's embedded forecast; the carpet reads settled outturn ~3 weeks behind — the same measure, a forecast-vs-settlement seam.
→ full method
Wind (§02)
Wind dial (live)
live
Feeds Elexon FUELINST (live), NESO embedded wind & solar forecast, DUKES 2025, Table 6.2 (UK nameplate, end-2024)
Basis Live wind capacity factor = live wind output (Elexon FUELINST + NESO embedded forecast) ÷ DUKES total UK wind nameplate.
→ full method
Wind strip (settled, per half-hour)
settled
Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), DUKES 2025, Table 6.2 (UK nameplate, end-2024)
Basis Wind capacity factor per half-hour = (transmission WIND [Elexon FUELHH] + embedded wind [NESO outturn]) ÷ DUKES total UK wind nameplate (annual-step) — a true load factor, no cross-year artifact.
- Live gauge reads NESO's embedded forecast; the carpet reads settled outturn ~3 weeks behind — a forecast-vs-settlement seam.
→ full method
Wind drought — whole-record carpet & lulls (wind detail)
settled
Feeds Elexon FUELHH (settled), NESO Historic Demand Data (embedded outturn), DUKES 2025, Table 6.2 (UK nameplate, end-2024)
Basis Daily wind capacity factor = mean power of (transmission WIND [Elexon FUELHH] + embedded wind [NESO outturn]) ÷ DUKES total UK wind nameplate (annual-step), back to 2016. A lull is a run of consecutive days below 10%; severe if it touches below 5%.
- Combined-basis figures supersede the former transmission-only lower bound; cached share images may show the higher old numbers.
→ full method
Solar (§02)
Solar dial (live)
live
Feeds NESO embedded wind & solar forecast
Basis Live solar capacity factor = NESO embedded solar forecast ÷ NESO embedded-solar capacity (contemporaneous, GB, DC/MWp) — numerator and denominator from the same NESO embedded series.
→ full method
Solar strip (settled, per half-hour)
settled
Feeds NESO Historic Demand Data (embedded outturn)
Basis Solar capacity factor per half-hour = embedded solar (NESO outturn) ÷ NESO embedded-solar capacity (contemporaneous, GB/DC). Night cells are a genuine zero, not a gap.
- A DUKES solar figure would mismatch (UK not GB, AC-equivalent not DC); the NESO embedded-solar capacity is the methodology-correct denominator.
→ full method
Imports (§03)
Imports — capacity-factor panel (live needle, settled strip)
settled
Feeds Elexon FUELINST (live), Elexon FUELHH (settled), DESNZ GB interconnector capacity
Basis Net imports as a share of GB interconnector capacity per half-hour = max(net interconnector inflow, 0) ÷ the capacity of the legs reporting that half-hour. The live needle is the same net-import figure as the verdict gauge; export half-hours floor to zero.
→ full method
Imports — £ cost (import detail page)
settled
Feeds Elexon FUELHH (settled), Elexon system (cash-out) price
Basis Daily GB net import value = Σ over settled half-hours of max(net interconnector inflow, 0) × ½h × GB system sell price (floored at £0). Back to 2016.
- Net imported energy valued at the GB system (cash-out) price — NOT the contractual cost of the imports, which clear in the day-ahead auction. No licensed price series is used.
→ full method
Grid warnings
OVERCAST lamp (conditional solar)
live
Feeds NESO embedded wind & solar forecast, NESO Historic Demand Data (embedded outturn)
Basis Amber when live solar capacity factor falls below the 25th percentile of comparable half-hours, conditioned on (week-of-year, settlement period) so the diurnal+seasonal cycle does not swamp it. Readout = live CF ÷ that slot's clear-sky (P95) ceiling, 'X% of a clear day'; after dark the lamp is dormant.
- Live lamp reads NESO's embedded forecast; the distribution is settled outturn — a forecast-vs-settlement seam.
→ full method
SCARCITY NOTICE — operational warnings (live)
live
Feeds Elexon SYSWARN (system warnings)
Basis Red while a NESO margin notice is in force. Two-rung scarcity ladder, most to least severe: EMN (Electricity Margin Notice), CMN (Capacity Market Notice). NESO notices via the Elexon SYSWARN feed; in-force state derived by Grid Margin. The only authoritative lamp.
- A margin notice means the buffer is thin — the operator asking the market for more with hours of warning — not that the lights are going out.
→ full method
Computed lamps — UNRELIABLE · WIND LULL · HEAVY IMPORTS
live
Feeds Elexon FUELINST (live), NESO embedded wind & solar forecast, DESNZ GB interconnector capacity, DUKES 2025, Table 6.2 (UK nameplate, end-2024)
Basis Each computed lamp goes amber when the live reading leaves the usual half — the P25–P75 box of that panel's own rolling-year distribution — on the concerning side: UNRELIABLE when firm share of demand < P25, WIND LULL when wind capacity factor (wind ÷ DUKES nameplate) < P25, HEAVY IMPORTS when net imports ÷ interconnector capacity > P75. Each active lamp shows the reading most telling for its condition: WIND LULL the live wind capacity factor itself (the same wind ÷ nameplate it trips on); UNRELIABLE the weather-and-imports share of demand; HEAVY IMPORTS the net-import share of supply. The threshold is the box-plot beside the panel.
- The amber lamps are this site's own reading of live conditions, not an official statement of system state. Only the red SCARCITY NOTICE carries an authoritative NESO source.
→ full method
The denominator — national demand
Every live share divides by national demand,
reconstructed from the supply side so the shares sum to 100% by
construction:
national demand = positive transmission generation (excl.
interconnectors and pumped storage) + net interconnector imports
(all INT*, exports net off) + embedded solar (NESO) + embedded
wind (NESO)
Pumped-storage pumping is demand, not supply, so it is excluded;
interconnector exports net off inside net imports. A build-time
guard reconciles this against Elexon's national demand outturn,
INDO (+ the same embedded estimate) and fails past a 12% gap — a
tripwire for a gross feed failure, not a precision claim. (INDO,
not transmission demand ITSDO: ITSDO additionally counts
interconnector exports as demand, so it diverges from national
demand on an export night.)
Nameplate (installed capacity)
Source:
DUKES 2025, Table 6.2
· UK, end-2024 · full installed (not de-rated)
Wind 32.082 GW (onshore 16.166 + offshore 15.916), solar 18.28
GW — 50.4 GW of wind + solar combined. These are UK-wide; the
small NI capacity makes a published share mildly conservative,
never inflated.
Which denominator powers which figure matters:
the capacity trap and the wind unreliability carpet divide by
this DUKES figure; a live solar capacity-share would
instead use NESO's GB, DC-basis figure (~22–23 GW, 2026) — the
two bases must never be mixed.
The reliability gauge — how much relies on weather & imports
Source: Elexon FUELINST (5-min) + NESO embedded forecast · live
in the browser · cadence: ~5 min
The cut. We group supply not by fuel but by
what matters for reliability — whether you can call on it when
you need it:
Firm power = gas + nuclear + biomass + hydro & other firm
fuels Weather & imports = wind + solar + net interconnector
imports
The gauge is a proportional arc — one slice per
source, each slice as long as that source's share of the moment.
The firm sources are drawn in green; the weather-and-imports
sources each keep their own colour — wind blue, solar amber,
imports magenta — so you can see at a glance what the grid is
actually running on. The verdict itself is carried by a slim
inner ring and the needle: they sit green while firm power holds
the majority, and arm red — UNRELIABLE the
moment the firm share slips below 50%, the
point where most of the grid is relying on sources that can go
quiet together.
Share of national demand. Each source is shown
as a share of national demand — what Britain is
consuming right now. Imports appear as a slice when importing,
and on an export night the surplus is drawn as a magenta tail
beyond the demand mark. The browser recomputes the verdict from
the live feed; the build computes it the same way.
Why imports sit with wind and solar, not with firm
power.
Wind is correlated across ~1,000–2,000 km: a winter
blocking high becalms Britain, France, Germany and the Benelux
at once. In exactly those hours every connected market is short,
prices spike everywhere, and the interconnectors run flat or
reverse — imports fail precisely when they are needed. So wind,
solar and imports are the correlated-failure bucket:
they fall away together. Gas, nuclear and biomass do not share
that weather correlation.
Why biomass sits with firm power. Biomass
(chiefly Drax) is dispatchable and weather-independent —
operationally it behaves like gas, available in the calm. By the
only test this gauge applies —
can you call on it when the wind dies? — it is firm.
The separate case against biomass (its subsidy and its carbon
accounting) is a question of cost, not reliability, and lives on
the Subsidy Clock; we
keep the two arguments in their own lanes.
Firmness, not this instant. The gauge reads a
5-minute snapshot, and on a breezy day imports and wind are real
power flowing right now. "Weather & imports" is a statement
about what is
guaranteed when the continent is also becalmed — not a
claim that those megawatts are absent at this moment. We
classify by what you can count on in the tail, and we say so.
Interpreting the legend
Beneath the wind, solar and import dials sits a slim horizontal
box plot — a one-line picture of how that
reading has ranged over the past twelve months, so you can tell
at a glance whether the live figure is ordinary or unusual. It is
built from every half-hour of the rolling year and reads
left (low) to right (high) on the same scale as the
dial beside it.
-
The thin line spans the middle nine readings
in ten — the 10th to the 90th percentile. It brackets
the everyday range and sets aside only the rarest extremes at
each end.
-
The thick bar covers the usual half —
the middle 50% of readings, from the 25th to the 75th
percentile. The value spends most of its time inside this
band.
-
The upright tick marks the year’s
average (the mean) — the fair
“what it typically delivers” figure.
-
The now caret, and
the dial needle beside it, mark the latest half-hour —
so you read the live figure against the year behind it.
The reliability strip in §01 uses the very same percentiles,
coloured rather than drawn: its three background bands split the
firm share at the 25th and 75th percentile, so the
bottom quarter of half-hours (the least reliable)
is red, the usual half amber, and the
top quarter green. The line itself is each
day’s worst half-hour, and the now
caret on the strip’s legend marks where the live reading
falls.
The capacity trap
Live dials: wind ÷ DUKES 6.2 UK wind nameplate; solar ÷ NESO
embedded-solar capacity · live · Carpets: Elexon FUELHH + NESO
embedded outturn ÷ the same source capacity · rolling 365
settled days
Two sources, read side by side. Entry 02 asks
how much of Britain’s installed wind and solar is actually
working right now — and whether that is a normal day. Wind
and solar each get their own block: a live dial showing what the
fleet is delivering this minute, beside a settled half-hourly
day-grid (a “carpet”) of the past year. We keep them
apart rather than blending them into one number, because a
bright afternoon should not be allowed to paper over a windless
one, or the other way round. Within each block the dial and the
carpet divide by the same capacity, so the two always tell the
same story.
The live dials. Each dial divides the
fleet’s live output by its own installed capacity.
Wind is live wind output — transmission
wind from Elexon FUELINST plus NESO’s embedded wind
forecast — over the DUKES UK wind nameplate
(32.1 GW, end-2024). That denominator is mildly
conservative: DUKES counts the whole UK while the grid here is
Great Britain, so a published share leans low rather than high.
Solar is NESO’s embedded solar forecast
over NESO’s own embedded-solar capacity (~23.3 GW,
GB, DC) — numerator and denominator from the same series,
on the same basis, so the two are never mixed. Each dial reads
the current output in both MW and as a percentage of its
nameplate.
The wind carpet (settled, per half-hour).
(Transmission FUELHH WIND + embedded wind outturn)
÷ DUKES total UK wind nameplate (annual-step). Both embedded and
transmission wind are in the numerator — the full national
output — over the full DUKES installed total. This is a
true load factor. The cross-year artifact
— the rising apparent CF as the offshore transmission
share grew — does not apply here.
(NESO’s live embedded-wind capacity is the embedded slice
only and is the wrong denominator against a mixed numerator.)
The solar carpet (settled, per half-hour).
Embedded solar outturn ÷ NESO embedded-solar capacity
(contemporaneous, GB, DC/MWp). Because solar generation is
entirely embedded — no transmission-metered solar exists
— both numerator and denominator are from the same NESO
embedded series on the same scope and basis: the
methodology-correct match. A DUKES solar figure would introduce
a 4–5 GW mismatch (UK not GB, AC-equivalent not DC,
end-2024 not current vintage). Night cells are genuine zero
output, not gaps.
Time-of-day axis and the clock change. Each
carpet is a grid of columns (one per settled day, newest at the
right) and 48 rows (settlement periods SP1–SP48,
SP1 = 00:00 local time), so date runs left to right
and time of day runs top (00:00) to bottom (24:00). Settlement
periods follow the local clock, so the DST change is handled for
free: the spring-forward day yields a naturally shorter column
of 46 periods; the autumn-back day yields 50 periods, of which
SP49 and SP50 fall outside the 48-row grid and are dropped.
The colour scale. Each cell runs from white (no
output) to the saturated source colour at full nameplate output
— blue for wind, amber for solar. The ramp is interpolated
in OKLab, a perceptually-uniform colour space,
so an equal step in capacity factor reads as an equal step in
perceived density: the deepening colour tracks output evenly,
rather than staying pale and then darkening abruptly the way a
naive RGB blend does. Interpolating in OKLab also holds each
source to a single clean hue, with no detour through purple. A
data gap (a half-hour Elexon or NESO never published) is drawn
neutral grey, distinct from an honest zero.
The legend and its range markers. Below each
carpet, the same ramp appears as a key. A “now”
caret marks the current capacity factor — the same value
the live dial’s needle points to. Beneath it, a box-plot
in the source colour summarises the rolling year’s
half-hourly output: a thin whisker spans the
middle 9 in 10 (the 10th–90th percentile), a
thicker bar spans the usual half (the 25th–75th
percentile), and an ink tick marks the average. The
numbers underneath label the 9-in-10 ends and the average. The
dial behind its needle carries the same bands.
Why the average, not the median. The central
marker is the mean capacity factor — the
load factor, i.e. the year’s energy divided by nameplate
× hours. This is the standard, citable “how much it
delivers” figure (UK wind ≈ 34%, solar ≈ 10%).
We deliberately do not use the median: solar produces
nothing for over half the year because it is dark, so its median
half-hour is 0% — a fact about the Earth’s rotation,
not the panels. The mean is the fair summary of output; the
percentile band beside it shows the variability.
The forecast-vs-settled seam. The live gauge
reads NESO’s embedded forecast; the carpets read
NESO’s settled outturn estimate for the rolling
last 365 settled days. These are sibling products from the same
methodology owner — the outturn estimate is the corrected
version, the forecast is the forward tick. A small step at the
join is expected and disclosed. The carpets lag live by about
three weeks.
The GRID WARNINGS rail
Sources: Elexon FUELINST + NESO embedded (live wind CF, solar
CF, firm share, net imports) ÷ DUKES nameplate & DESNZ
interconnector capacity · Elexon SYSWARN (system warnings, live)
· cadence: all lamps live, ~5 min
The dark band under the masthead —
GRID WARNINGS — carries five lamps, left
to right in page order: UNRELIABLE,
WIND LULL, OVERCAST,
HEAVY IMPORTS and
SCARCITY NOTICE. Two colour states carry
distinct meanings:
AMBER — the site's own computed reading of the live grid RED —
an official NESO notice from Elexon SYSWARN (the only
authoritative signal)
One or two amber lamps are the ordinary state. Britain's grid
genuinely relies on weather and imports most of the time —
that is the finding, not a fault in the display.
The “usual half” rule. The four
computed lamps share one policy and carry no hand-picked
threshold. A lamp goes amber when the
live reading leaves the
usual half — the middle 50% (the 25th–75th
percentile box) of that panel's own rolling-year distribution
— on the concerning side. The threshold is read
live from the box-plot drawn under each panel's
carpet, so a lamp can never disagree with the band beside it, and it
drifts with the rolling year rather than needing a number
defended. The concerning side depends on the metric: for wind,
solar and firm share a low reading is the worry (below
the 25th percentile); for imports a high reading is
(above the 75th).
The five lamps:
-
UNRELIABLE. Amber when the live
firm (dispatchable) share of national
demand — the same figure the reliability gauge shows
— falls below the 25th percentile of
its rolling year: firm power is in its worst quarter, so
weather and imports are carrying an unusually large share.
The lamp trips on the firm share (to match that
distribution) but displays the unreliable share
(100 − firm, e.g. “64% weather and
imports”), so the number rises with the alarm —
the rail's echo of the verdict gauge's RELIABLE / UNRELIABLE
flip.
-
WIND LULL. Amber when the live wind
capacity factor — live wind output (Elexon FUELINST +
NESO embedded) ÷ DUKES total UK wind nameplate —
falls below the 25th percentile of the
“Wind and solar is mostly idle” dial's
distribution, so the lamp trips exactly when that dial sits
in its low quarter, and it then reads that
capacity factor itself — the very wind ÷ nameplate
it trips on — so the number is the lull measure directly,
with no demand term to apportion or de-rate. How long
such calms last is the drought plot in “When
the wind stops, it stops for days”. “Nominal”
otherwise.
-
OVERCAST. Amber when live solar is cloudier
than usual for the time of day and year. Solar
cannot use a flat threshold — the daily and seasonal
cycle swamps it — so its distribution is conditioned
on (week-of-year, settlement period): the
lamp trips when the live solar capacity factor falls below
the 25th percentile of comparable
half-hours (cloudier than three in four). It reads “X%
of a clear day” — live CF over that slot's
clear-sky reference (its 95th-percentile ceiling, robust to
over-irradiance spikes). After dark it is dormant
(“After dark”).
-
HEAVY IMPORTS. The trigger is net imports
as a share of GB
interconnector capacity — the figure
the imports dial points to — exceeding the
75th percentile of that panel's
distribution (the cables working harder than in a typical
hour). But the lamp displays a different number:
net imports as a share of supply (÷
demand, labelled “X% of supply”). The trigger
sizes the pipe (so lamp and dial agree on when it
is heavy); the reading states the exposure — how much
of demand is riding on neighbours who may stop selling. An
export hour is a negative share and never trips.
-
SCARCITY NOTICE. Red when a NESO margin
notice is in force. This is the
only authoritative lamp and the only one
exempt from the usual-half rule — it is a NESO notice,
not a computed band. The two-rung ladder (EMN → CMN)
is described in the
Operational warnings section. The
lamp is dormant when no notice is in force.
Computed vs authoritative. The four amber lamps
are this site’s own reading of live conditions —
useful context, not an official statement about system state.
Only the red SCARCITY NOTICE lamp carries an authoritative
source: a NESO notice published on Elexon SYSWARN. Amber lamps
with no red notice mean the site sees a condition worth flagging
— not that an operator has raised an alarm.
Operational warnings — the scarcity ladder
Source:
Elexon SYSWARN
— NESO notices; in-force state derived by Grid Margin · live in
the browser · cadence: polled, ~5 min
When the system operator is worried about margin, it says so on
the record. We surface those notices and nothing else — counted
and contextualised, never catastrophised. Two notice types
form a scarcity ladder, shown here most to
least severe:
EMN — Electricity Margin Notice (more severe) CMN — Capacity
Market Notice (less severe)
The SCARCITY NOTICE lamp in the GRID WARNINGS
rail lights only while one of these is in force;
otherwise it stays dark. When more than one is active, the most
severe wins (ties broken by the most recent issue time). The
lamp names the notice and its source — a NESO notice, surfaced
through the Elexon SYSWARN feed — so you can check it against
NESO directly. A notice
means the buffer is thin, not that the lights are about to go
out; the two are routinely confused, and we are careful not to.
What a margin notice is not. An EMN or CMN is
the operator asking the market for more, with hours of warning —
the system working as designed, not a blackout in progress. We
report the notice and its severity; we do not dress it up.
Wind unreliability — the whole-record carpet & drought
spikes
Source: Elexon FUELHH (settled) + NESO embedded wind outturn ÷
DUKES 6.2 nameplate (annual-step) · daily · back to 2016
Formula in words. Each day's wind capacity
factor is the mean power of (transmission WIND from Elexon
FUELHH + embedded wind outturn from NESO Historic Demand Data)
over that day's settled half-hours, divided by the DUKES 6.2
total UK wind nameplate for that year (annual-step). By
combining both output streams and dividing by the full installed
base this is a true load factor — unlike the
retired transmission-only lower bound, it carries no cross-year
artifact: the mix of embedded and transmission wind in the
numerator has always matched the DUKES total denominator.
The carpet. The whole-record carpet plots every
day from 2016 to the present: rows are years (2016 at the top,
newest year at the bottom), columns are day-of-year (1 Jan at
the left, 31 Dec at the right), calendar-aligned so 29 February
has its own column (and is blank in non-leap years). It uses the
same colour key as the Entry 02 wind carpet, so
the two read consistently: colour runs
pale at low output (a near-calm day) and
deepens to blue at full output,
OKLab-interpolated. The calm spells therefore show as the pale
patches — read down a column to compare years, or across a row
to follow one year. A partial final year is drawn in its
available columns; missing days are left neutral grey.
A lull and its severity. A
lull (or drought) is a run of consecutive days
on which the daily capacity factor stays below
10%. Severity is measured by how deep it goes:
a lull that touches below 5% on at least one
day is classed as severe. The drought-spike plot below
the carpet shows one vertical spike per lull: spike height
encodes the lull's duration in days; spike colour encodes how
deep it went (pale red for a shallow lull, deep red for one that
fell far below the threshold). Reference lines run across the
plot at 3 days, 1 week and 2 weeks, so a glance shows whether a
given spell is routine or exceptional.
These figures supersede the former wind stripe and failure
counter.
Earlier share images and cached cards may show the lower-bound
transmission-only figures, which are systematically higher (more
days appearing below the threshold because embedded output was
invisible). The combined-basis record differs: for instance, the
all-time longest sub-10% run is shorter on this basis than the
old lower-bound figure suggested. A cached share image may
reflect the old number.
Imports — capacity factor (homepage) and cost (detail page)
Sources: Elexon FUELHH net interconnector flow; DESNZ GB
interconnector capacity; Elexon system (cash-out) price.
Settled, back to 2016.
The homepage panel — relying on the
interconnectors.
The homepage shows imports the way it shows wind and solar: net
imports as a share of interconnector capacity —
a capacity factor — not in £. The denominator is GB's
operational interconnector capacity, currently
10.3 GW across ten links (IFA, IFA2, ElecLink,
BritNed, Nemo Link, North Sea Link, Viking Link, East-West,
Greenlink and Moyle), from
DESNZ interconnector statistics
(the per-link table is in
data/interconnectors.json, reconciling to the 10.3
GW headline). For each settled half-hour the denominator is the
capacity of the legs reporting that half-hour: settled
FUELHH blanks a leg before its link was commissioned, so the
capacity factor tracks the fleet exactly as it grew — Greenlink,
for example, only counts from its 2025 commissioning, with no
commissioning-date table needed. The dial's MW ring runs from 0
to the full fleet; the live needle reads net imports ÷ capacity
— the same net-import figure as the verdict gauge and the
conditions lamp. Export half-hours floor to zero.
The cost lives on the detail page. The
import detail page carries the money
story in two views. First, the half-hourly import-spend
rate (£/hour) over the last year: each carpet
cell, the dial needle and the box-plot are
max(net imports, 0) × system price for a settlement
period, on a linear scale from £0 to the year's worst
half-hourly rate (rounded up to the next £500k) so the busiest
half-hour is on-scale. Second, the whole daily record since 2016
(below).
Cost formula in words. Each settlement
half-hour's import cost is
max(net_import_mw, 0) × 0.5h × system_sell_price,
giving a £ figure per period. These are summed to a daily £
value — the carpet cell. net_import_mw is the
case-insensitive sum of all interconnector legs
(INT*) from Elexon FUELHH, with export half-hours
floored to zero: only the hours when Britain is drawing power
from abroad count toward cost. This series is settled; the
carpet runs back to 2016.
What this figure is — and is not. This is the
value of the net imported energy at the GB system (cash-out)
price. It is
not the contractual cost of buying the imports:
interconnector capacity rights and energy clear in the day-ahead
auction at N2EX, a price this dataset does not include. The
cash-out price is used as the closest settled, reproducible
proxy for what that energy was worth on the day — every number
on this panel traces to Elexon or NESO; no external licensed
price series is used.
The system price. The price is the Elexon
settlement system sell price (£/MWh), the GB
cash-out / imbalance price. Since Ofgem P305 came into force in
2015, Great Britain has used a single imbalance price for all
settlement periods — there is no separate buy and sell price —
so this is the system price. The price history store
covers 2016-01-01 to the latest settled day (approximately five
days behind live). Genuine Elexon non-publications are recorded
in a frozen 14-day known-gaps manifest; the validation gate
passes on those documented holes but fails on any new incomplete
day.
Negative-price floor. GB system prices go
negative in oversupply — periods where generators pay to export
rather than being paid to generate. An imported half-hour at a
negative system price is floored to £0:
max(system price, 0). Being paid to take energy is
no cost, not a negative cost, and including it would contradict
the non-negative guard. The floor adds approximately
+0.56% to the all-time total relative to a
signed calculation; headline days are unaffected.
The full-record carpet (detail page). The whole
daily record — one cell per settled day (columns, oldest at the
left) × year (rows, 2016 at the top) — also on the
import detail page. Its colour runs a
square-root ramp from white (no import cost) to
deepest red, with the cap set from the data to the next
£10m above the costliest day (currently £100m)
so the record day is on-scale, not clipped. The sqrt ramp keeps
the everyday range — median £3.2m, 90th percentile ~£10.8m —
spread across the colours rather than washed out by the long
tail. The cap is a colour clamp only: no datum
is truncated. The costliest single day on record,
£94.4m on 9 Sep 2021, is marked on the carpet,
named in the caption, and listed with the next costliest days
below it. Nothing is hidden; the worst days are the most
visible.
Settled only; not a market price. Every figure
on this panel derives from settled Elexon data — FUELHH
interconnector flows and the system sell price — both
reproducible from public sources. The day-ahead or N2EX price
that interconnectors actually clear at is a licensed dataset and
is not used here. The caveat is baked into every caption and
source line.
Year-to-date shares — a transmission-system mix, not the verdict
Source: Elexon FUELHH (settled) · annual · transmission-system
basis
Formula in words: each year's settled
generation by fuel, plus net interconnector flow, as a share of
total transmission supply. Pumped-storage round-trip is
excluded; the shares sum to 100% by construction.
Read this on its own basis — it is not the live
verdict.
The settled store is transmission-metered FUELHH only and
carries no embedded solar or wind. Embedded solar is
netted off national demand and cannot appear in a settled-data
share at all, so these year-to-date figures are a
transmission-system mix, not the
national-demand verdict the gauge shows. The two use different
denominators and must never be compared directly. Net
interconnectors are a signed net flow: in a
net-export year (2022) the import share is negative — it is
drawn as a signed bar, never a pie wedge.
The history store
Settled half-hourly FUELHH and demand from Elexon back to the
clean-data edge of 2016-01-01 (nothing earlier exists on the
modern API). 77 days are genuine Elexon non-publications,
recorded in a frozen manifest; we never fabricate the missing
half-hours. The live clock is anchored to Elexon's
server-stamped snapshot, not the device clock. Full notes and
the open source are in the
repository.
Build-time guards
Before a figure is published, the build checks it against the
guards below; a figure that fails one is not shipped. By stage of
the pipeline:
-
Solar cross-check (live). The NESO
embedded-solar figure — the one estimate that moves the
headline — is checked against the independent
Sheffield Solar PV_Live
outturn and the build fails if they disagree by more than
10%. (PV_Live sends no CORS header, so it
can only ever be the server-side auditor, never the live
figure.)
-
Demand reconciliation (live). The
supply-side denominator is reconciled against Elexon's
national demand outturn, INDO, plus the same embedded
estimate, and fails past a 12% gap — a
tripwire for a gross feed failure (a zeroed, doubled or
wrong-unit series), not a precision claim. The actual
residual is recorded each run, not hidden.
-
Snapshot completeness (live). A partial
FUELINST publish — missing a core fuel, or implausibly low
demand — is refused rather than rendered as if whole.
-
Derived figures (settled). Before any daily
figure is written, the build checks that the year-to-date
shares sum to ~100%, every wind and solar capacity factor
sits in range, each carpet's days are sorted and unique, the
wind-drought episodes are internally valid (length ≥ 1 day,
start ≤ end, below the 10% threshold), and the nameplate
denominators are positive, in-envelope and self-reconciling.
Any breach aborts the build and writes nothing. One value
that looks wrong but is correct — a negative net-import
share in an export year — is allowed by construction.
-
Share cards. Cards are screenshotted into
shareable images, so a wrong figure becomes a wrong picture.
Each card is built from the same data the dashboard reads and
checked against the same guards before it is rendered.
When the live feed is stale or down. The live
layer is anchored to Elexon's server-stamped snapshot, not your
device clock. If the live fetch fails it falls back to the last
good reading (latest.json), clearly labelled as
such; once that reading is too old to show as current, the
dashboard goes number-free rather than display a stale headline
that looks live — a midday solar reading shown at midnight is a
wrong number, not an old one. A build older than twelve hours
renders as unavailable, with no numbers at all.
Share cards
Source: the same data the dashboard reads
Each share card is built from the same data the dashboard reads —
the live snapshot and the settled wind record — so a card carries
the same figures the page shows.
Three cards ship. The hero card is evergreen —
the question “What’s powering your hospital
today?” over a fixed, illustrative gauge, carrying no
perishable number, so it is safe to leave cached as the
site’s social image. Live balance is the
live card: it leads with whichever side is carrying the grid at
the moment it is built, and carries the Elexon snapshot
timestamp so a shared card can be read in context.
Recent lull marks the most recent wind drought
of three days or more, stamped with the date it was generated
rather than a live time. Each reads only from the two files
above.
Cache bust. Each card PNG is SHA-256-hashed;
the first ten digits appear as a ?v= token on every
image URL. Social platforms cache OG images aggressively; a
changed figure changes its hash and forces a re-scrape.
Methodology last reviewed against the shipped figures: 29 June
2026.