Skip to content

Re-derive road fuel volumes from the October 2026 fuel-duty forecast #2720

Open

Description

@MaxGhenis

gov.economic_assumptions.yoy_growth.obr.road_fuel_volume and the petrol and diesel spending proxies derived from it are still on the OBR's March 2026 fuel-duty receipts forecast. The October 2026 EFO refresh leaves them there because the derivation can't be reproduced from what's on record.

What's stored. The comment for 2025 to 2030 says: "OBR March 2026 fuel-duty receipts forecast, net of non-road fuel receipts, divided by fiscal-year average petrol/diesel duty rates." Commit 5e45253 added the values and no script.

Why it doesn't reproduce.

  • Receipts Table 3.8 (cash basis) puts fuel duties at £24.359bn in 2024-25 and £24.242bn in 2025-26. That is a 0.5% fall, with the duty rate flat at 52.95p all year.
  • The stored 2025 volume growth is −1.99%.
  • So the netted-off non-road receipts, or the base year, differ from anything in the receipts tables. The fuel-duty supplementary release is the likely source, but it isn't recorded which edition or rows were used.

October 2026 inputs.

  • Receipts Table 4.8 fuel duties, £bn: 24.559 (2025-26), 23.95, 25.713, 26.581, 26.267, 25.551, 24.432 (2031-32).
  • Rates: 52.95p to 30 June 2027, then 60.59p (EFO ¶3.19), then RPI each April. This is the regenerated petrol_and_diesel.yaml in the October EFO PR.

Done means:

  • a script under policyengine_uk/utils/ derives the series from a named receipts table and supplementary release;
  • it reproduces the stored March values (or explains the difference);
  • it is rerun on October, extending the series to 2031;
  • the petrol and diesel spending proxies are re-derived with it (test_road_fuel_volume_uprating.py checks them);
  • the economic assumptions README is updated.

Activity

  1. MaxGhenis commented on Oct 28, 2026

    @MaxGhenis
    CollaboratorAuthor

    María's #2717 does this. Per its description, road fuel volumes now use the method in policyengine-uk-data's sources/road_fuel_volume.py, which reproduces the stored March values exactly, and 2026-27 to 2031-32 back volumes out of Table 4.8 fuel duty receipts at the Budget 2026 duty path (52.95p to 30 June 2027, 60.59p from 1 July, then RPI each April). It also re-derives the litre proxies and updates the economic assumptions README. This can close when #2717 merges.

    #2719 sets the duty rates themselves to the same 60.59p path, so the two agree.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions