Vitreous LabsEnergy transparency

How we lay the meter against the plan

The live page draws where every battery in the balancing mechanism was told to run. About two weeks later Elexon publishes what each battery's meter actually recorded. The meter against the plan lays the two side by side for the newest week the meter has reached, and asks one question of every half hour where they differ: does the unit's frequency response contract account for it?

What is compared

The plan is the level each unit told the grid it would run at, its physical notification, with every bid and offer the control room accepted laid over it. It is built minute by minute exactly as the live page builds it, and added up to megawatt hours for each half hour.

The meter is Elexon's dataset B1610, the metered output of each balancing mechanism unit for each half hour, export positive and import negative. It is the same archive the rest of the site reads.

A half hour is on plan when the two are within 2 MWh of each other. That is 4 MW held for the whole half hour. The margin is the same for every unit, so on a small unit it is a larger share of its power.

Why it is two weeks late

Nobody publishes a battery's meter reading on the day. NESO sees every unit's output in real time through its own operational metering, but does not publish it unit by unit. Elexon's five minute generation mix has no line for batteries at all. The first public reading is B1610, which comes from the first settlement run, called the Interim Information run. Other sources describe it as about five working days behind. On 26 September 2026 we measured it at fourteen calendar days, with 11 and 13 September missing entirely. The page always shows the newest seven days the meter has reached, marks any day still missing, and says how old the week is.

How the contracts are tested

A unit holding a dynamic frequency response contract must move its power automatically as the grid frequency moves, on top of whatever it planned. None of that appears in the plan. So where the meter and the plan differ, we work out what the contract should have added and see whether it closes the gap.

  1. Take the unit's contracts for each half hour from NESO's response and reserve auction results by unit: which product, how many megawatts.
  2. Take the grid frequency every fifteen seconds from Elexon.
  3. For each reading, work out what share of the contracted megawatts the product required, from NESO's published delivery curves (below), and average it over the half hour.
  4. Multiply by the contracted megawatts and by half an hour. Low products send power out, high products take it in.
  5. If the meter minus the plan is within 2 MWh of that expected amount, the half hour counts as explained. If not, it counts as unexplained.
ProductNothing belowThenFull delivery at
Dynamic Containment0.015 Hzrises to 5% at 0.2 Hz0.5 Hz
Dynamic Moderation0.015 Hzrises to 5% at 0.1 Hz0.2 Hz
Dynamic Regulation0.015 Hzrises in a straight line0.2 Hz

The expected amount is the only worked out figure on the page, and it is labelled as expected wherever it appears. It measures what the contract required. What each unit was paid for its contracts is on its own asset page.

What the first test found

Across 94 units from 5 to 12 September 2026 (seven metered days, 11 September missing), the meter was more than 2 MWh from the plan in 9.4% of unit half hours. 78% of those half hours fell while the unit held a response contract, and taking the expected response away cut the share off plan from 9.4% to 2.7%. For the units furthest off plan the expected response matched the gap almost one for one: Thurrock unit 3 held a contract in 89% of its half hours, and 163 of its 167 half hours off plan fell under one. Thurrock unit 1, at the same site, held only Quick Reserve and was off plan for 8.5 hours against 83.5 for unit 3.

The same test found that response is not symmetric. On six of the seven days the fleet took in between about 550 and 1,400 MWh more than its plans said, and the expected response predicted most of it, because more high products are sold than low ones and frequency spends long stretches above 50 Hz. 9 September does not fit: the contracts predicted 2,202 MWh and the meter showed 999. About 900 MWh of that difference is the five Coalburn units. Between 02:00 and 04:30 their plans said they would take in about 1,000 MWh, and their meters took in about 110 MWh. They then discharged as planned later in the day. The rest of the difference is not yet explained.

What it cannot tell you

The scripts are gb/refresh_planmeter.py, which keeps the plan and the frequency for the last three weeks and runs with the daily refresh, and gb/planmeter.py, which does the comparison at build time. The test is written up in the project notes for 26 September 2026.

Tell us we are wrong

If you operate one of these units and a half hour we call unexplained has an explanation, that is the most useful message we could get. Say which unit and which half hour.

All methods