Skip to content

Update the economic assumptions to the October 2026 EFO - #2717

Merged
juaristi22 merged 11 commits into
mainfrom
obr-october-2026-efo-2711
Oct 29, 2026
Merged

juaristi22 merged 11 commits into
mainfrom
obr-october-2026-efo-2711

Conversation

@juaristi22

@juaristi22 juaristi22 commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Update the economic assumptions to the OBR's October 2026 EFO

For #2711. Every OBR-sourced series moves to the October 2026 Economic and fiscal outlook. That includes 2025, which the EFO revises, and 2031, which it now forecasts. The source is the detailed forecast tables zip published on 28 October.

What changed

From the importer (import_obr_forecasts, run with --forecast-start-year 2025 --forecast-years 7):

  • average earnings (Table 1.6);
  • RPI, CPI, CPIH, mortgage interest and actual rents (Table 1.7);
  • house prices (Table 1.16);
  • both statutory forecast gaps;
  • the four receipts series (Tables 4.2, 4.7 and 4.8, over March 2026's 2024-25 outturn).

Earnings 2025 is now 4.1% (was 5.3%) and house prices 2.6% (was 2.8%). The importer's values match Table A.1 to the rounding.

Derived by hand from the same tables, each reproducing its stored March value first:

  • Population: 2021-22 to 2031-32 is the OBR's October forecast, read from the economy tables as Q2 real GDP (Table 1.1) over Q2 real GDP per person (Table 1.5). On the March 2026 EFO that reading reproduces the long-term determinants for every forecast year, so there is no need to wait for the October determinants; 2032 onwards stays on the ONS 2024-based principal projection. Growth for 2026-27 to 2030-31 falls from 0.29%-0.36% to 0.13%-0.25% a year, so household weights are about 0.7% lower by 2030-31. The per-capita series, rail journeys per person and the litre proxies are re-derived on it.
  • Per-capita series and non-labour income: per-capita GDP (Table 1.4) and per-capita mixed income and non-labour income (Table 1.12). Outturn years move too where the EFO revised them (2024).
  • Household interest income: 2020-2025 outturn from ONS HAXV (30 September 2026), so 2025 is -2.76%. 2026-2031 keep the non-labour income proxy; Project savings interest by interest received per person #2638 replaces that method, and whichever lands second re-derives it from the October tables.
  • Council tax: England, Scotland and Wales from Expenditure Table 5.1. 2025 is the October 2025-26 outturn over March's 2024-25 outturn.
  • Rents: social rent is ONS September 2026 CPI (3.5%) plus 1 point for April 2027. Later years add 1 point to the OBR's September CPI forecasts (receipts Table 4.19), the same figures the model's statutory inputs use. Private rents now follow the OBR's UK private rents forecast ("Private rentals for housing", Table 1.7) in every region, instead of being backed out of the aggregate rent forecast.
  • Road fuel: volumes use the method in policyengine-uk-data's sources/road_fuel_volume.py, which reproduces March exactly.
    • 2025-26 is HMRC's provisional clearances outturn.
    • 2026-27 to 2031-32 back volumes out of Table 4.8 fuel duty receipts at the Budget 2026 duty path the OBR assumes: 52.95p to 30 June 2027, 60.59p from 1 July, then the previous calendar year's RPI each April (63.21p, 65.13p, 67.07p and 68.61p for 2028 to 2031).
    • That is the schedule Autumn Budget 2026 measures in current law #2719 puts into current law, so once it merges the model's duty on these volumes reproduces the OBR's road fuel receipts. Until then current law is the Budget 2025 schedule (60.03p from April 2027).
    • The petrol and diesel litre proxies are re-derived from the new volumes.
  • AHC deflator and water bills: the AHC deflator is re-run to 2031. Ofwat water bills for 2027-2029 change too, because they add back the new CPIH (6.2%, 6.2%, 5.0%).
  • Fuel duty: the RPI path in petrol_and_diesel.yaml is regenerated from the new RPI. It stays current law; Budget 2026's duty schedule is not part of this PR.
  • Private school VAT: its share of receipts is re-based on Table 4.8 VAT.
  • Bus fares: the uncapped single fare table is fitted on the OBR CPI path, so scripts/fit_bus_cap_savings.py is re-run: the high band's mean fare moves from £3.96 to £3.95, and the shares and other fares stay.
  • Rail fares: the current-law and prior-law regulated fare indices rise by July 2026 RPI (3.2%) + 1 point in 2027, then by the previous calendar year's RPI + 1 point to 2031; test_rail_fare_index.py ties each step to obr.rpi.
  • Bank Rate and financial assets: Bank Rate is Table 1.9's calendar-year average in every year: outturn to 2025, then the OBR's market path for 2026-2031. Households' financial assets are Table 1.11 to 2031; the October tables revise 2020 onwards down, so the land value totals they grow are about 10% lower in 2026 than on the March 2024 path. Shareholding in a dataset divides by the dataset's own total, so corporate tax incidence does not move.

Joins from 2032: CPI holds 2%. RPI and CPIH move in equal steps from the EFO's 2031 value (2.18%) to 2.39% in 2035. Earnings move in equal steps from 2.60% to 3.83% in 2036. The stored March path would have jumped earnings from 2.60% to 3.71% in 2032. test_long_run_joins.py pins the steps.

Horizon: series that ended in 2030 now run to 2031. Mortgage interest is the exception: the OBR stops forecasting RPI mortgage interest payments after 2029 Q4, so 2030 keeps the November 2025 carry-over.

Checks

  • The State Pension rises now match the OBR's Table A.3 triple lock row exactly: 3.9% in April 2027, 3.4% in 2028, 2.5% in 2029-2031 and 2.6% in 2032 (test_triple_lock_statutory_inputs.py).
  • The committed receipts series reproduce byte for byte from a minimal fixture of the real October receipts workbook (obr_efo_october_2026_receipts.xlsx). The fixture keeps sheets 4.2, 4.7 and 4.8.
  • The October workbook titles sheet 4.8 "43.8". The importer now takes the table number from the sheet name when the two disagree.

How this differs from the Budget dashboard's October override

The Autumn Budget 2026 dashboard runs 2.151.0 with its own October override. It matches this PR on CPI, RPI, CPIH, earnings, actual rents, mortgage interest, non-labour income, both forecast gaps and social rent for 2027 and 2028. It differs in five places:

  • it keeps 2025 at March values (earnings 5.3% against 4.1% here);
  • it uses Table A.1 house prices to 1 decimal, where this PR uses Table 1.16 at full precision;
  • its per-capita series use another population vintage;
  • its social rent for 2029 and 2030 is calendar-year CPI + 1 (3.1%, 3.1%), where this PR adds 1 to the September CPI forecast (3.0%, 3.2%), as the cap does;
  • it sets 60.59p from April 2027 as current law.

Not in this PR

🤖 Generated with Claude Code

juaristi22 and others added 3 commits October 28, 2026 15:02
Run the importer on the October 2026 economy and receipts tables for
2025-2031, so the revised 2025 outturn and the new 2031 forecast are in,
and re-derive the series it does not cover from the same tables: per-capita
GDP and mixed income, non-labour and household interest income, council
tax, social and private rents, the AHC deflator, Ofwat water bills, road
fuel volumes and their litre proxies, the fuel duty RPI path and the
private school VAT share. Join RPI, CPIH and earnings to their long-run
rates in equal steps from 2032. Population stays on the March 2026
long-term determinants until the October edition is published.

The October receipts workbook titles sheet 4.8 "43.8", so the importer now
takes the table number from the sheet name when they disagree. A minimal
fixture of that workbook reproduces the committed receipts series.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ober 2026

The fuel duty rates and 2027 earnings growth they pin follow the October
2026 RPI and earnings forecasts. On the new CPI path a Scottish amount lands
exactly halfway between two 5p steps in 2035, where the index's five-decimal
levels decide the rounding, so the independent check accepts either step
there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Aggregate impact on certified data: pass

Base b090ec6277 against head f72cf3a651, both on enhanced_frs_2024_25.h5 (policyengine-uk-data 1.58.1, sha256 056e80fd8e91), fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 517 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • In the years a figure from fewer than 10 records is suppressed (spending.disabled_students_allowance), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.

Moves flagged for review

Measure Year Base Head Change
Absolute poverty, before housing costs: children 2027-28 21.3% 23.3% +1.97pp
Government balance, each receipt once 2025-26 £369.87bn £362.63bn -£7.24bn
gov_balance 2025-26 £369.87bn £362.63bn -£7.24bn
Fuel duties 2031-32 £26.35bn £24.40bn -£1.95bn
Stamp duty land tax paid by companies 2030-31 £8.87bn £6.92bn -£1.95bn
Decile 6: mean household_net_income per household 2030-31 £53,174 £54,202 +£1,028
VAT excluding private school fees 2027-28 £261.81bn £266.66bn +£4.85bn
Business rates 2026-27 £38.04bn £36.20bn -£1.84bn
Stamp duty land tax paid by companies 2029-30 £8.21bn £6.37bn -£1.83bn
Decile 5: mean household_net_income per household 2026-27 £44,626 £45,443 +£817
Decile 6: mean household_net_income per household 2031-32 £54,203 £55,195 +£992
VAT excluding private school fees 2028-29 £267.87bn £272.70bn +£4.83bn
Absolute poverty, before housing costs: children 2027-28 3,210k 3,496k +286.6k
Decile 7: mean household_net_income per household 2031-32 £61,765 £60,667 -£1,099
VAT excluding private school fees 2029-30 £274.12bn £278.97bn +£4.85bn
Stamp duty land tax paid by companies 2031-32 £9.16bn £7.45bn -£1.71bn
VAT excluding private school fees 2031-32 £286.81bn £291.59bn +£4.78bn
VAT excluding private school fees 2030-31 £280.56bn £285.24bn +£4.68bn
Absolute poverty, before housing costs: children 2031-32 21.8% 23.4% +1.65pp
Absolute poverty, after housing costs: children 2031-32 32.3% 33.9% +1.63pp
Government balance, each receipt once 2026-27 £398.03bn £391.59bn -£6.44bn
gov_balance 2026-27 £398.03bn £391.59bn -£6.44bn
Absolute poverty, before housing costs: children 2029-30 21.5% 23.1% +1.56pp
Absolute poverty, before housing costs: children 2028-29 21.3% 22.9% +1.53pp
Decile 5: mean household_net_income per household 2028-29 £46,289 £46,995 +£706
National Insurance (employer) 2031-32 £185.29bn £182.57bn -£2.72bn
Stamp duty land tax paid by companies 2027-28 £6.73bn £5.29bn -£1.44bn
Absolute poverty, before housing costs: children 2030-31 21.8% 23.2% +1.43pp
Stamp duty land tax paid by companies 2028-29 £7.46bn £6.03bn -£1.43bn
Income tax 2025-26 £298.70bn £294.46bn -£4.23bn
Decile 7: mean household_net_income per household 2030-31 £60,061 £59,211 -£850
Stamp duty land tax paid by companies 2026-27 £5.98bn £4.57bn -£1.41bn
Decile 1: mean household_net_income per household 2031-32 £18,483 £18,739 +£256
Absolute poverty, before housing costs: children 2031-32 3,317k 3,545k +228.1k
Absolute poverty, after housing costs: pensioners 2027-28 1,404k 1,500k +96.1k
Absolute poverty, after housing costs: children 2030-31 31.7% 33.0% +1.35pp
Government balance, each receipt once 2031-32 £545.72bn £538.35bn -£7.37bn
gov_balance 2031-32 £545.72bn £538.35bn -£7.37bn
Relative poverty, after housing costs: pensioners 2031-32 1,464k 1,366k -98.6k
Absolute poverty, before housing costs: children 2028-29 3,220k 3,437k +216.5k

477 more flags are in the report artifact.

Receipts by tax head

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax -£4.23bn -£3.08bn -£1.60bn -£1.07bn -£691.8m -£364.8m -£3.33bn
National Insurance (employee and self-employed) -£670.4m -£578.8m -£350.0m -£421.3m -£463.1m -£473.6m -£927.8m
National Insurance (employer) -£1.88bn -£1.61bn -£862.1m -£1.04bn -£1.17bn -£1.23bn -£2.72bn
Capital gains tax -£12.2m +£107.5m +£68.2m +£88.2m +£151.8m +£183.5m +£216.1m
Student loan repayments -£86.3m -£75.8m -£43.1m -£52.8m -£59.6m -£63.2m -£130.7m
VAT excluding private school fees -£0.8m +£1.61bn +£4.85bn +£4.83bn +£4.85bn +£4.68bn +£4.78bn
VAT on private school fees +£42,483 +£13.4m +£36.9m +£41.6m -£5.6m +£57.2m -£4.5m
Fuel duties +£172.1m -£46.1m -£97.2m -£114.7m -£156.5m -£226.4m -£1.95bn
TV licence fee +£1.3m -£5.1m -£12.0m -£19.0m -£24.6m -£29.7m -£30.0m
Council tax +£0.7m +£278.5m -£72.0m -£334.2m -£388.4m -£452.6m -£584.4m
High value council tax surcharge 0 0 0 -£2.1m -£2.3m -£2.4m -£2.4m
Northern Ireland domestic rates +£0.2m -£0.7m -£1.7m -£2.7m -£3.7m -£4.6m -£4.8m
Business rates -£4.1m -£1.84bn -£884.1m -£303.6m -£800.3m +£112.5m -£276.8m
Stamp duty land tax on the household's own purchases -£18.2m -£69.3m -£145.9m -£152.3m -£147.6m -£111.2m -£61.5m
Stamp duty land tax paid by companies -£86.3m -£1.41bn -£1.44bn -£1.43bn -£1.83bn -£1.95bn -£1.71bn
Land transaction tax (Wales) -£0.3m -£1.0m -£2.1m -£2.2m -£2.1m -£1.5m -£0.7m
Land and buildings transaction tax (Scotland) -£0.6m -£2.6m -£5.5m -£6.2m -£6.0m -£4.6m -£2.7m

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +£36.4m -£150.8m -£354.5m +£627.6m +£468.6m +£351.4m +£352.2m
Pension Credit +£0.9m -£9.1m -£20.7m +£52.1m +£46.5m +£67.1m +£90.1m
Winter Fuel Payment +£0.6m -£2.2m -£5.0m -£7.6m -£10.0m -£11.9m -£12.0m
Pension Age Winter Heating Payment (Scotland) +£56,580 -£0.2m -£0.6m +£1.7m +£1.5m +£1.7m +£1.7m
Universal Credit +£267.2m +£140.0m +£113.9m +£876.4m +£737.6m +£1.03bn +£615.7m
Housing Benefit +£2.6m -£1.8m +£70.2m +£165.0m +£139.9m +£157.4m +£175.8m
Council Tax Reduction +£0.2m +£13.0m -£3.6m -£16.4m -£18.9m -£21.3m -£26.8m
Employment and Support Allowance (income-related) +£16,194 +£5.1m +£15.5m +£15.5m +£15.5m +£15.0m +£15.3m
Employment and Support Allowance (contribution-based) +£45,608 +£34.3m +£102.7m +£102.1m +£102.7m +£99.2m +£101.4m
Jobseeker's Allowance (income-based) -£12 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) +£2,528 +£1.9m +£5.7m +£5.6m +£5.7m +£5.5m +£5.6m
Income Support +£48,499 0 0 0 0 0 0
Personal Independence Payment +£8.1m -£33.6m -£81.3m +£250.6m +£216.5m +£248.9m +£254.4m
Disability Living Allowance +£2.2m -£9.3m -£22.6m +£69.6m +£60.2m +£69.2m +£70.7m
Attendance Allowance +£2.6m -£10.8m -£26.2m +£80.7m +£69.7m +£80.2m +£81.9m
Carer's Allowance +£1.3m -£5.6m -£13.5m +£41.7m +£36.0m +£41.4m +£42.3m
Carer Support Payment (Scotland) +£92,231 -£0.4m -£0.9m +£2.8m +£2.3m +£2.9m +£3.0m
Carer's Allowance Supplement (Scotland) 0 -£51,998 -£0.1m +£0.4m +£0.3m +£0.4m +£0.4m
Severe Disablement Allowance +£7,744 -£32,257 -£78,088 +£0.2m +£0.2m +£0.2m +£0.2m
Industrial Injuries Disablement Benefit +£4,453 +£3.3m +£9.9m +£9.9m +£9.9m +£9.6m +£9.8m
Armed Forces Compensation Scheme +£5,356 +£4.0m +£12.0m +£11.9m +£12.0m +£11.6m +£11.8m
Child Benefit +£30.3m -£17.2m -£47.1m +£149.9m +£129.5m +£148.8m +£152.1m
Scottish Child Payment +£0.1m -£0.6m -£1.5m +£5.0m +£5.4m +£1.8m +£6.5m
Healthy Start vouchers +£15,494 -£62,196 -£0.1m -£0.2m -£0.3m -£0.4m -£0.4m
Statutory Maternity Pay +£29,108 +£21.8m +£65.2m +£64.9m +£65.2m +£63.0m +£64.4m
Statutory Sick Pay +£9,876 +£7.4m +£22.2m +£22.1m +£22.2m +£21.5m +£21.9m
Sure Start Maternity Grant +£3,908 -£15,690 -£36,698 -£56,492 -£73,766 -£88,516 -£88,728
Bereavement Support Payment +£5,875 +£4.4m +£13.2m +£13.1m +£13.2m +£12.7m +£13.0m
Tax-Free Childcare +£0.1m +£8.4m +£9.0m +£7.5m -£4.2m -£14.6m -£13.7m
Extended childcare entitlement -£0.1m -£2.2m +£17.1m +£83.7m +£63.4m +£66.2m +£67.9m
Universal childcare entitlement +£0.6m -£3.2m +£11.7m +£41.1m +£37.6m +£42.4m +£43.4m
Targeted childcare entitlement +£0.2m -£0.6m +£2.6m +£9.3m +£9.4m +£9.5m +£44.7m
Childcare Offer for Wales +£0.7m -£0.3m +£1.4m +£5.1m +£5.1m +£5.2m +£5.3m
Parents' Learning Allowance +£59,306 -£0.2m -£0.6m -£0.9m -£1.1m -£1.3m -£1.3m
Adult Dependants' Grant +£18,571 -£74,546 -£0.1m -£0.2m -£0.2m -£0.3m -£0.3m
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
NHS spending +£61.0m -£244.7m -£572.3m -£880.9m -£1.15bn -£1.38bn -£1.38bn
State education spending +£7,145 -£28,679 -£67,077 -£0.1m -£0.1m -£0.2m -£0.2m
Transport subsidy spending +£7.5m -£30.1m -£70.3m -£108.2m -£141.3m -£169.6m -£170.0m

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +3.4k -13.3k -30.3k -46.0k -60.1k -72.1k -72.3k
Pension Credit +474 -2.5k -6.1k -5.8k -8.6k -9.3k +3.8k
Winter Fuel Payment +2.3k -9.3k -20.9k -31.7k -41.4k -49.7k -49.8k
Pension Age Winter Heating Payment (Scotland) +240 -961 -2.2k -3.4k -4.5k -5.4k -5.4k
Universal Credit +22.6k +7.4k -16.1k -28.5k -38.0k -33.7k -44.3k
Housing Benefit +373 -1.5k -3.5k -5.3k -8.9k -10.3k -7.8k
Council Tax Reduction +1.0k -3.7k -9.0k -14.8k -20.0k -22.0k -22.2k
Employment and Support Allowance (income-related) +21 -85 -198 -304 -397 -477 -478
Employment and Support Allowance (contribution-based) +215 -863 -2.0k -3.1k -4.1k -4.9k -4.9k
Jobseeker's Allowance (income-based) +0 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) +20 -80 -188 -289 -378 -453 -454
Income Support +7 0 0 0 0 0 0
Personal Independence Payment +1.1k -4.3k -10.0k -15.4k -20.1k -24.2k -24.2k
Disability Living Allowance +386 -1.5k -3.6k -5.6k -7.3k -8.7k -8.8k
Attendance Allowance +507 -2.0k -4.8k -7.3k -9.6k -11.5k -11.5k
Carer's Allowance +309 -1.2k -2.9k -4.5k -5.8k -7.0k -7.0k
Carer Support Payment (Scotland) +21 -85 -200 -308 -402 -482 -483
Carer's Allowance Supplement (Scotland) 0 -85 -200 -308 -402 -482 -483
Severe Disablement Allowance +1 -5 -12 -19 -24 -29 -29
Industrial Injuries Disablement Benefit +41 -164 -384 -592 -773 -927 -929
Armed Forces Compensation Scheme +28 -112 -262 -403 -526 -631 -632
Child Benefit +21.0k -8.6k -22.1k -35.0k -45.6k -54.7k -54.8k
Scottish Child Payment +105 -421 -985 -1.5k -1.2k -4.6k -2.0k
Healthy Start vouchers +60 -239 -560 -862 -1.1k -1.4k -1.4k
Statutory Maternity Pay +99 -399 -933 -1.4k -1.9k -2.3k -2.3k
Statutory Sick Pay +54 -217 -508 -783 -1.0k -1.2k -1.2k
Sure Start Maternity Grant +8 -31 -73 -113 -148 -177 -177
Bereavement Support Payment +29 -117 -274 -422 -551 -662 -663
Tax-Free Childcare +588 +716 -2.9k -5.5k -18.3k -25.6k -21.9k
Extended childcare entitlement -1.3k -439 -2.5k -2.6k -6.1k -5.4k -5.5k
Universal childcare entitlement +320 -1.7k -3.0k -4.6k -7.0k -7.2k -7.3k
Targeted childcare entitlement +49 -187 -431 -663 -866 -1.0k +6.5k
Childcare Offer for Wales +101 -43 -108 -167 -218 -262 -262
Parents' Learning Allowance +29 -118 -275 -424 -553 -663 -665
Adult Dependants' Grant +5 -21 -35 -53 -70 -83 -84
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Government balance, each component counted once

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once -£6.82bn -£6.72bn -£557.3m +£8.8m -£757.2m +£117.4m -£6.73bn
Government spending +£422.9m † -£279.6m † -£748.9m † +£1.70bn † +£949.6m † +£966.2m † +£643.4m †
Government balance, each receipt once -£7.24bn † -£6.44bn † +£191.6m † -£1.69bn † -£1.71bn † -£848.8m † -£7.37bn †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax -£6.82bn -£6.72bn -£557.3m +£8.8m -£757.2m +£117.4m -£6.73bn
household_tax -£4.94bn -£6.73bn -£4.58bn -£3.82bn -£4.43bn -£3.39bn -£8.79bn
pre_budget_change_household_tax -£4.85bn -£6.65bn -£4.54bn -£3.76bn -£4.36bn -£3.32bn -£8.66bn
gov_spending +£422.9m † -£279.6m † -£748.9m † +£1.70bn † +£949.6m † +£966.2m † +£643.4m †
household_benefits +£422.9m † -£279.6m † -£748.9m † +£1.70bn † +£949.6m † +£966.2m † +£643.4m †
gov_balance -£7.24bn † -£6.44bn † +£191.6m † -£1.69bn † -£1.71bn † -£848.8m † -£7.37bn †

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income -£13.53bn -£10.27bn -£6.70bn -£6.57bn -£6.22bn -£5.96bn -£14.84bn
Household net income -£7.74bn † -£3.44bn † -£2.65bn † -£786.5m † -£554.5m † -£1.29bn † -£4.76bn †
Household net income (HBAI definition) -£7.72bn -£6.76bn -£4.77bn -£2.14bn -£2.66bn -£2.45bn -£7.83bn

Population

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People +20.7k -83.1k -194.4k -299.2k -390.7k -468.8k -469.9k
Benefit units +10.5k -42.1k -98.5k -151.7k -198.1k -237.7k -238.3k
Households +9.3k -37.3k -87.1k -134.1k -175.2k -210.2k -210.7k

Poverty rates

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone +0.31pp +0.55pp +1.01pp +0.78pp +0.83pp +0.75pp +0.91pp
Absolute poverty, before housing costs: children +0.72pp +1.11pp +1.97pp +1.53pp +1.56pp +1.43pp +1.65pp
Absolute poverty, before housing costs: working-age adults +0.26pp +0.43pp +0.71pp +0.59pp +0.65pp +0.59pp +0.78pp
Absolute poverty, before housing costs: pensioners -0.01pp +0.31pp +0.87pp +0.51pp +0.55pp +0.46pp +0.40pp
Absolute poverty, after housing costs: everyone +0.13pp +0.37pp +0.76pp +1.08pp +1.01pp +1.07pp +1.14pp
Absolute poverty, after housing costs: children +0.25pp +0.57pp +1.16pp +1.32pp +1.11pp +1.35pp +1.63pp
Absolute poverty, after housing costs: working-age adults +0.13pp +0.33pp +0.60pp +1.07pp +1.13pp +1.14pp +1.13pp
Absolute poverty, after housing costs: pensioners +0.02pp +0.26pp +0.88pp +0.76pp +0.43pp +0.42pp +0.54pp
Relative poverty, before housing costs: everyone -0.22pp -0.08pp -0.07pp -0.13pp +0.07pp +0.03pp +0.18pp
Relative poverty, before housing costs: children -0.31pp -0.10pp -0.09pp -0.28pp +0.21pp +0.11pp +0.56pp
Relative poverty, before housing costs: working-age adults -0.11pp -0.06pp -0.04pp -0.05pp +0.08pp +0.04pp +0.16pp
Relative poverty, before housing costs: pensioners -0.48pp -0.15pp -0.13pp -0.22pp -0.15pp -0.12pp -0.22pp
Relative poverty, after housing costs: everyone -0.16pp +0.01pp +0.10pp +0.07pp +0.02pp +0.09pp -0.04pp
Relative poverty, after housing costs: children -0.24pp -0.05pp +0.29pp +0.32pp +0.11pp +0.14pp +0.23pp
Relative poverty, after housing costs: working-age adults -0.05pp +0.04pp +0.05pp +0.03pp +0.02pp +0.11pp +0.05pp
Relative poverty, after housing costs: pensioners -0.47pp -0.04pp +0.05pp -0.12pp -0.10pp -0.04pp -0.78pp

People in poverty

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone +220.5k +371.3k +669.1k +498.5k +517.8k +452.1k +561.8k
Absolute poverty, before housing costs: children +108.2k +161.9k +286.6k +216.5k +216.2k +193.9k +228.1k
Absolute poverty, before housing costs: working-age adults +112.9k +175.1k +287.5k +230.8k +248.1k +216.8k +298.4k
Absolute poverty, before housing costs: pensioners -589 +34.3k +95.0k +51.2k +53.4k +41.4k +35.2k
Absolute poverty, after housing costs: everyone +97.4k +240.0k +488.8k +685.4k +620.1k +645.1k +693.6k
Absolute poverty, after housing costs: children +38.1k +79.9k +160.4k +177.9k +140.8k +172.0k +213.2k
Absolute poverty, after housing costs: working-age adults +57.0k +131.5k +232.4k +427.3k +439.2k +434.8k +429.3k
Absolute poverty, after housing costs: pensioners +2.2k +28.7k +96.1k +80.2k +40.0k +38.2k +51.1k
Relative poverty, before housing costs: everyone -145.7k -71.1k -78.6k -139.1k -15.2k -58.0k +50.4k
Relative poverty, before housing costs: children -45.9k -19.4k -23.0k -57.0k +12.2k -6.5k +60.7k
Relative poverty, before housing costs: working-age adults -43.1k -32.4k -36.5k -50.6k -2.1k -27.4k +25.3k
Relative poverty, before housing costs: pensioners -56.7k -19.3k -19.1k -31.5k -25.3k -24.1k -35.6k
Relative poverty, after housing costs: everyone -107.4k -13.9k +30.3k -16.2k -66.5k -36.8k -131.9k
Relative poverty, after housing costs: children -34.6k -12.6k +30.3k +28.9k -9.0k -9.8k +3.6k
Relative poverty, after housing costs: working-age adults -17.5k +5.2k -1.4k -25.4k -39.0k -12.9k -36.9k
Relative poverty, after housing costs: pensioners -55.3k -6.4k +1.4k -19.7k -18.6k -14.0k -98.6k

Inequality

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs -0.0005 -0.0002 -0.0002 -0.0008 -0.0007 -0.0008 -0.0006

Mean household net income in each side's own deciles

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household -£100 † -£10 † +£72 † +£240 † +£166 † +£242 † +£256 †
Decile 2: mean household_net_income per household -£23 † -£44 † +£28 † +£177 † +£258 † +£33 † -£70 †
Decile 3: mean household_net_income per household -£60 † -£7.43 † +£44 † +£117 † +£368 † +£384 † +£176 †
Decile 4: mean household_net_income per household +£149 † -£110 † -£0.36 † +£370 † +£277 † +£22 † +£381 †
Decile 5: mean household_net_income per household -£548 † +£817 † +£181 † +£706 † +£401 † +£635 † +£518 †
Decile 6: mean household_net_income per household -£309 † -£400 † +£150 † -£186 † +£397 † +£1,028 † +£992 †
Decile 7: mean household_net_income per household -£535 † -£715 † -£322 † -£44 † +£43 † -£850 † -£1,099 †
Decile 8: mean household_net_income per household -£362 † +£171 † -£21 † +£281 † -£147 † -£185 † -£186 †
Decile 9: mean household_net_income per household -£600 † -£429 † +£79 † +£111 † +£46 † +£115 † -£347 †
Decile 10: mean household_net_income per household -£577 † -£34 † +£288 † +£518 † +£730 † +£766 † +£376 †

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp -£63.1m -£100.6m -£30.5m +£17.4m -£25.3m -£91.2m -£69.8m
Raise higher rate by 1pp -£77.5m -£107.8m -£30.4m -£58.9m -£22.5m -£79.2m -£83.6m
Raise personal allowance by ~800GBP/year +£12.0m +£22.2m +£27.8m -£7.6m +£4.2m -£30.5m +£36.8m
Raise child benefit by 25GBP/week per additional child -£5.2m +£77,652 +£6.9m +£69.5m +£51.6m +£61.5m +£67.3m
Reduce Universal Credit taper rate to 20% +£16.3m +£72.6m +£63.7m +£94.6m +£11.6m -£75.5m +£178.2m
Raise Class 1 main employee NICs rate to 10% -£131.8m -£113.0m -£38.3m -£39.0m -£62.9m -£132.8m -£62.3m
Raise VAT standard rate by 2pp -£0.1m +£162.3m +£489.2m +£487.8m +£485.7m +£475.2m +£479.6m
Raise additional rate by 3pp -£66.1m -£57.0m -£37.4m -£39.5m -£34.6m suppressed suppressed
Raise the Universal Credit standard allowance by 10% -£7.5m +£44,621 +£48.4m +£0.5m -£60.7m -£64.3m -£28.1m
Raise the State Pension by 10% +£12.1m +£9.3m +£20.5m -£11.2m +£6.0m -£6.1m -£17.0m

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax -£63.2m -£52.1m -£33.6m -£22.4m -£25.3m -£26.2m -£65.3m
Raise higher rate by 1pp: change in income_tax -£78.0m -£62.9m -£30.1m -£24.8m -£23.6m -£20.6m -£85.9m
Raise personal allowance by ~800GBP/year: change in income_tax +£11.1m +£17.5m +£12.7m -£4.5m +£22.8m +£24.5m +£7.6m
Raise child benefit by 25GBP/week per additional child: change in child_benefit +£0.9m -£2.0m -£5.2m -£80.3m -£83.6m -£98.3m -£99.3m
Reduce Universal Credit taper rate to 20%: change in universal_credit -£59.9m -£70.9m -£63.9m -£99.2m -£56.9m -£20.6m -£203.0m
Raise Class 1 main employee NICs rate to 10%: change in national_insurance -£132.5m -£111.4m -£60.8m -£74.1m -£83.8m -£89.2m -£179.3m
Raise VAT standard rate by 2pp: change in vat -£0.2m +£161.0m +£485.5m +£483.7m +£486.2m +£469.5m +£480.0m
Raise additional rate by 3pp: change in income_tax -£66.1m -£56.7m -£37.5m -£42.4m -£41.2m suppressed suppressed
Raise the Universal Credit standard allowance by 10%: change in universal_credit +£7.4m -£0.2m -£9.1m +£17.8m +£13.7m +£28.1m +£14.2m
Raise the State Pension by 10%: change in state_pension +£3.2m -£13.4m -£31.6m +£51.5m +£38.0m +£25.7m +£26.7m

Household net income by decile

Mean change in household net income per household, and as a share of the decile's base income; households stay in the base run's deciles.

Base decile 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1 -£34 (-0.2%) +£22 (+0.1%) +£57 (+0.3%) +£141 (+0.8%) +£131 (+0.7%) +£162 (+0.9%) +£209 (+1.1%)
Decile 2 -£69 (-0.2%) +£26 (+0.1%) +£61 (+0.2%) +£213 (+0.7%) +£240 (+0.8%) +£256 (+0.9%) +£192 (+0.6%)
Decile 3 -£105 (-0.3%) -£11 (-0.0%) +£49 (+0.1%) +£166 (+0.5%) +£270 (+0.7%) +£278 (+0.7%) +£257 (+0.7%)
Decile 4 -£142 (-0.4%) -£11 (-0.0%) +£58 (+0.1%) +£248 (+0.6%) +£296 (+0.7%) +£330 (+0.8%) +£257 (+0.6%)
Decile 5 -£205 (-0.5%) -£36 (-0.1%) +£65 (+0.1%) +£213 (+0.5%) +£293 (+0.6%) +£328 (+0.7%) +£243 (+0.5%)
Decile 6 -£237 (-0.5%) -£64 (-0.1%) +£57 (+0.1%) +£214 (+0.4%) +£282 (+0.5%) +£323 (+0.6%) +£245 (+0.5%)
Decile 7 -£331 (-0.6%) -£125 (-0.2%) +£36 (+0.1%) +£213 (+0.4%) +£293 (+0.5%) +£329 (+0.5%) +£171 (+0.3%)
Decile 8 -£416 (-0.6%) -£129 (-0.2%) +£72 (+0.1%) +£233 (+0.3%) +£279 (+0.4%) +£370 (+0.5%) +£199 (+0.3%)
Decile 9 -£473 (-0.6%) -£88 (-0.1%) +£96 (+0.1%) +£235 (+0.3%) +£385 (+0.4%) +£436 (+0.5%) +£238 (+0.3%)
Decile 10 -£668 (-0.6%) -£59 (-0.0%) +£136 (+0.1%) +£284 (+0.2%) +£545 (+0.4%) +£665 (+0.5%) +£424 (+0.3%)
all -£265 (-0.5%) -£46 (-0.1%) +£69 (+0.1%) +£215 (+0.4%) +£300 (+0.5%) +£346 (+0.6%) +£244 (+0.4%)
Year People gaining over £1 People losing over £1
2025-26 4.9% 86.7%
2026-27 31.7% 66.6%
2027-28 55.8% 43.1%
2028-29 68.0% 31.3%
2029-30 77.6% 21.8%
2030-31 85.1% 14.3%
2031-32 60.7% 39.0%
  • 2025-26: household weights changed; decile changes use the base weights
  • 2026-27: household weights changed; decile changes use the base weights
  • 2027-28: household weights changed; decile changes use the base weights
  • 2028-29: household weights changed; decile changes use the base weights
  • 2029-30: household weights changed; decile changes use the base weights
  • 2030-31: household weights changed; decile changes use the base weights
  • 2031-32: household weights changed; decile changes use the base weights
Checks failing on both base and head (1)
  • VAT excluding private school fees is never negative (sign:vat): 2025-26: 76 units below zero, a weighted £-53,888,684 in total; 2026-27: 76 units below zero, a weighted £-55,774,885 in total; 2027-28: 76 units below zero, a weighted £-57,687,092 in total
Counted-once check

Each of 91 components was raised by £1 per unit in 2026-27, and every head of its totals was read household by household: its own head must rise by exactly £1, no other tax head may move, no other benefit may rise, and the model's own total must move by what its heads moved. A head that breaks a rule is measured again twice: with every other head held at its baseline value, and with every other head held at its value after the first £1 while the component rises again. It fails where either still shows the response. 0 failed; 0 were skipped.

  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; gov_spending; not a failure)
  • widowed_parents_allowance: pension_credit responds only through other heads in fewer than 10 households (other heads that moved there: carers_allowance; household_benefits; not a failure)
Provenance
Side Commit Runtime Environment hash Partition hash Time
base main b090ec6277 uk 2.163.2 (files 361d4f9ceaf6), core 3.33.12, py 3.13.18 aarch64 b0a4790c3b8d 1eac2ca06b91 1922.58s
head #2717 merged into main f72cf3a651 uk 2.163.2 (files 2a14e37b5050), core 3.33.12, py 3.13.18 aarch64 b0a4790c3b8d 1eac2ca06b91 1961.48s

Dataset: hf://policyengine/policyengine-uk-data-private/enhanced_frs_2024_25.h5@2526edbbb687a3b54dbb11272e5389e4b62d2ac2, sha256 056e80fd8e9151d78f432a25cde863340baee81304c6216a37fb575ce8563784 (verified on both sides), policyengine-uk-data 1.58.1.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Final charge on cash interest in non-cash ISAs £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Lifetime ISA withdrawal charge £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Income tax £294.46bn £315.23bn £334.00bn £349.45bn £365.10bn £383.16bn £397.71bn
National Insurance (employee and self-employed) £51.70bn £54.14bn £56.13bn £57.73bn £59.76bn £61.64bn £63.51bn
National Insurance (employer) £148.71bn £155.37bn £160.88bn £165.09bn £172.06bn £177.36bn £182.57bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £12.60bn £13.15bn £13.60bn £14.11bn £14.67bn £15.24bn £15.80bn
Student loan repayments £7.82bn £8.13bn £8.39bn £8.58bn £8.79bn £9.04bn £9.29bn
VAT excluding private school fees £249.37bn £256.88bn £266.66bn £272.70bn £278.97bn £285.24bn £291.59bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £1.95bn £2.01bn £2.09bn £2.14bn £2.21bn £2.27bn £2.31bn
Change in private school VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.71bn £24.59bn £26.54bn £26.58bn £26.26bn £25.53bn £24.40bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Betting and gaming duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.26bn £4.40bn £4.41bn £4.42bn £4.43bn £4.44bn £4.45bn
Council tax £49.21bn £52.16bn £54.89bn £57.95bn £61.16bn £64.47bn £67.91bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.48bn £0.49bn £0.50bn £0.51bn
Northern Ireland domestic rates £0.55bn £0.58bn £0.60bn £0.63bn £0.66bn £0.69bn £0.72bn
Business rates £34.68bn £36.20bn £38.00bn £39.46bn £42.27bn £43.25bn £44.29bn
Stamp duty land tax on the household's own purchases £6.88bn £7.32bn £7.66bn £8.06bn £8.47bn £8.91bn £9.35bn
Stamp duty land tax paid by companies £4.72bn £4.57bn £5.29bn £6.03bn £6.37bn £6.92bn £7.45bn
Land transaction tax (Wales) £0.07bn £0.08bn £0.08bn £0.09bn £0.10bn £0.10bn £0.11bn
Land and buildings transaction tax (Scotland) £0.31bn £0.32bn £0.33bn £0.35bn £0.36bn £0.38bn £0.40bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
State Pension £121.68bn £125.92bn £126.73bn £129.50bn £132.99bn £136.66bn £140.43bn
Pension Credit £6.66bn £7.03bn £7.30bn £7.51bn £7.65bn £7.84bn £8.03bn
Winter Fuel Payment £1.86bn £1.85bn £1.79bn £1.77bn £1.78bn £1.78bn £1.78bn
Pension Age Winter Heating Payment (Scotland) £0.19bn £0.20bn £0.20bn £0.21bn £0.21bn £0.22bn £0.22bn
Universal Credit £75.48bn £80.52bn £83.04bn £85.11bn £86.31bn £87.90bn £88.58bn
Housing Benefit £8.56bn £8.89bn £9.24bn £9.48bn £9.72bn £9.99bn £10.27bn
Council Tax Reduction £2.07bn £2.20bn £2.31bn £2.45bn £2.58bn £2.72bn £2.86bn
Employment and Support Allowance (income-related) £0.79bn £0.82bn £0.84bn £0.86bn £0.88bn £0.90bn £0.92bn
Employment and Support Allowance (contribution-based) £5.20bn £5.37bn £5.56bn £5.69bn £5.82bn £5.95bn £6.09bn
Jobseeker's Allowance (income-based) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.30bn £0.31bn £0.31bn £0.32bn £0.33bn £0.34bn
Income Support £0.11bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £26.95bn £28.03bn £29.05bn £30.09bn £30.75bn £31.51bn £32.21bn
Disability Living Allowance £7.49bn £7.79bn £8.07bn £8.36bn £8.55bn £8.76bn £8.95bn
Attendance Allowance £8.68bn £9.03bn £9.36bn £9.69bn £9.90bn £10.15bn £10.38bn
Carer's Allowance £4.48bn £4.66bn £4.83bn £5.00bn £5.11bn £5.23bn £5.35bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.35bn £0.36bn £0.37bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.05bn £0.05bn £0.05bn £0.05bn
Severe Disablement Allowance £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn £0.03bn
Industrial Injuries Disablement Benefit £0.50bn £0.52bn £0.54bn £0.55bn £0.56bn £0.58bn £0.59bn
Armed Forces Compensation Scheme £0.61bn £0.63bn £0.65bn £0.66bn £0.68bn £0.69bn £0.71bn
War Widow's or Widower's Pension £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Benefit £16.19bn £16.82bn £17.39bn £18.00bn £18.39bn £18.84bn £19.25bn
Scottish Child Payment £0.49bn £0.52bn £0.53bn £0.56bn £0.57bn £0.57bn £0.57bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.30bn £3.41bn £3.54bn £3.62bn £3.70bn £3.78bn £3.87bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £1.12bn £1.16bn £1.20bn £1.23bn £1.26bn £1.29bn £1.32bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £0.67bn £0.69bn £0.71bn £0.73bn £0.75bn £0.76bn £0.78bn
Widowed Parent's Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tax-Free Childcare £0.55bn £0.56bn £0.58bn £0.59bn £0.59bn £0.59bn £0.57bn
Extended childcare entitlement £2.99bn £3.50bn £3.62bn £3.75bn £3.83bn £3.92bn £4.01bn
Universal childcare entitlement £2.06bn £2.22bn £2.29bn £2.38bn £2.44bn £2.51bn £2.56bn
Targeted childcare entitlement £0.50bn £0.51bn £0.52bn £0.54bn £0.55bn £0.57bn £0.56bn
Childcare Offer for Wales £0.26bn £0.28bn £0.28bn £0.29bn £0.30bn £0.31bn £0.32bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £203.89bn £204.30bn £204.56bn £204.91bn £205.34bn £205.85bn £206.35bn
State education spending £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn £0.02bn
Transport subsidy spending £25.05bn £25.10bn £25.14bn £25.18bn £25.23bn £25.30bn £25.36bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Lifetime ISA bonus 0k 0k 0k 0k 0k 0k 0k
State Pension 11,264k 11,145k 10,819k 10,700k 10,723k 10,750k 10,776k
Pension Credit 1,486k 1,480k 1,474k 1,455k 1,453k 1,455k 1,464k
Winter Fuel Payment 7,844k 7,783k 7,473k 7,375k 7,391k 7,409k 7,427k
Pension Age Winter Heating Payment (Scotland) 803k 802k 800k 797k 799k 801k 802k
Universal Credit 6,357k 6,349k 6,350k 6,318k 6,307k 6,299k 6,253k
Housing Benefit 1,249k 1,245k 1,246k 1,229k 1,229k 1,229k 1,232k
Council Tax Reduction 3,176k 3,195k 3,200k 3,215k 3,224k 3,235k 3,242k
Employment and Support Allowance (income-related) 71k 71k 71k 71k 71k 71k 71k
Employment and Support Allowance (contribution-based) 719k 720k 721k 722k 724k 726k 728k
Jobseeker's Allowance (income-based) 0k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 67k 67k 67k 67k 67k 68k 68k
Income Support 25k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 3,567k 3,575k 3,579k 3,585k 3,593k 3,602k 3,611k
Disability Living Allowance 1,291k 1,294k 1,296k 1,298k 1,300k 1,304k 1,307k
Attendance Allowance 1,695k 1,698k 1,700k 1,703k 1,707k 1,711k 1,715k
Carer's Allowance 1,034k 1,037k 1,038k 1,040k 1,042k 1,044k 1,046k
Carer Support Payment (Scotland) 71k 71k 71k 72k 72k 72k 72k
Carer's Allowance Supplement (Scotland) 0k 71k 71k 72k 72k 72k 72k
Severe Disablement Allowance 4k 4k 4k 4k 4k 4k 4k
Industrial Injuries Disablement Benefit 137k 137k 137k 138k 138k 138k 139k
Armed Forces Compensation Scheme 93k 93k 94k 94k 94k 94k 94k
War Widow's or Widower's Pension 0k 0k 0k 0k 0k 0k 0k
Child Benefit 8,123k 8,120k 8,120k 8,130k 8,145k 8,161k 8,178k
Scottish Child Payment 351k 352k 352k 355k 353k 351k 340k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 200k 200k 200k 201k 201k 201k 202k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 333k 333k 334k 334k 335k 336k 337k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 181k 182k 182k 182k 182k 183k 183k
Sure Start Maternity Grant 26k 26k 26k 26k 26k 26k 26k
Bereavement Support Payment 98k 98k 98k 98k 98k 99k 99k
Widowed Parent's Allowance 0k 0k 0k 0k 0k 0k 0k
Tax-Free Childcare 1,014k 1,025k 1,021k 1,022k 1,008k 1,005k 991k
Extended childcare entitlement 795k 800k 804k 806k 809k 814k 814k
Universal childcare entitlement 1,071k 1,072k 1,074k 1,076k 1,079k 1,089k 1,090k
Targeted childcare entitlement 165k 156k 154k 154k 155k 155k 150k
Childcare Offer for Wales 39k 39k 39k 39k 39k 39k 39k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 98k 98k 98k 99k 99k 99k 99k
Adult Dependants' Grant 18k 18k 12k 12k 12k 12k 12k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £892.00bn £935.14bn £979.55bn £1,013.85bn £1,052.14bn £1,089.13bn £1,122.37bn
Government spending £529.37bn † £543.55bn † £550.93bn † £559.76bn † £567.52bn † £576.28bn † £584.02bn †
Government balance, each receipt once £362.63bn † £391.59bn † £428.62bn † £454.08bn † £484.61bn † £512.85bn † £538.35bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £892.00bn £935.14bn £979.55bn £1,013.85bn £1,052.14bn £1,089.13bn £1,122.37bn
household_tax £491.97bn £520.87bn £549.93bn £573.92bn £598.90bn £624.26bn £645.90bn
pre_budget_change_household_tax £484.15bn £512.74bn £541.54bn £564.86bn £589.61bn £614.72bn £636.09bn
gov_spending £529.37bn † £543.55bn † £550.93bn † £559.76bn † £567.52bn † £576.28bn † £584.02bn †
household_benefits £529.37bn † £543.55bn † £550.93bn † £559.76bn † £567.52bn † £576.28bn † £584.02bn †
gov_balance £362.63bn † £391.59bn † £428.62bn † £454.08bn † £484.61bn † £512.85bn † £538.35bn †
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,637.96bn £1,702.77bn £1,757.35bn £1,806.41bn £1,855.97bn £1,912.43bn £1,970.44bn
Household net income £1,636.68bn † £1,685.25bn † £1,716.89bn † £1,749.83bn † £1,781.12bn † £1,819.78bn † £1,862.63bn †
Household net income (HBAI definition) £1,449.57bn £1,497.73bn £1,532.81bn £1,567.21bn £1,600.01bn £1,638.04bn £1,679.21bn
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 69,245k 69,383k 69,473k 69,592k 69,738k 69,912k 70,080k
Benefit units 35,110k 35,181k 35,226k 35,286k 35,360k 35,449k 35,534k
Households 31,046k 31,108k 31,149k 31,201k 31,267k 31,345k 31,420k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 16.3% 15.6% 16.4% 16.3% 16.5% 16.5% 16.6%
Absolute poverty, before housing costs: children 24.7% 22.3% 23.3% 22.9% 23.1% 23.2% 23.4%
Absolute poverty, before housing costs: working-age adults 14.1% 13.9% 14.7% 14.7% 14.8% 14.8% 14.9%
Absolute poverty, before housing costs: pensioners 13.7% 13.5% 14.0% 13.9% 14.0% 13.9% 13.9%
Absolute poverty, after housing costs: everyone 21.6% 21.1% 22.0% 22.5% 22.7% 23.0% 23.3%
Absolute poverty, after housing costs: children 33.3% 31.3% 32.2% 32.4% 32.5% 33.0% 33.9%
Absolute poverty, after housing costs: working-age adults 19.9% 19.9% 20.8% 21.5% 21.8% 22.0% 22.2%
Absolute poverty, after housing costs: pensioners 12.7% 12.6% 13.1% 13.2% 13.3% 13.4% 13.5%
Relative poverty, before housing costs: everyone 17.0% 16.3% 16.4% 16.3% 16.3% 16.3% 16.7%
Relative poverty, before housing costs: children 25.9% 23.4% 23.3% 22.9% 22.8% 22.9% 23.7%
Relative poverty, before housing costs: working-age adults 14.5% 14.3% 14.6% 14.7% 14.7% 14.7% 15.0%
Relative poverty, before housing costs: pensioners 14.5% 14.7% 13.9% 13.9% 13.8% 13.9% 14.0%
Relative poverty, after housing costs: everyone 21.4% 21.0% 21.2% 21.3% 21.3% 21.5% 21.7%
Relative poverty, after housing costs: children 33.1% 31.1% 31.1% 31.0% 31.1% 31.2% 31.7%
Relative poverty, after housing costs: working-age adults 19.9% 19.8% 20.2% 20.4% 20.5% 20.6% 20.8%
Relative poverty, after housing costs: pensioners 12.5% 12.4% 12.2% 11.7% 11.7% 11.8% 12.0%
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone 11,278k 10,837k 11,403k 11,358k 11,478k 11,506k 11,643k
Absolute poverty, before housing costs: children 3,688k 3,332k 3,496k 3,437k 3,477k 3,499k 3,545k
Absolute poverty, before housing costs: working-age adults 5,965k 5,921k 6,308k 6,354k 6,417k 6,426k 6,517k
Absolute poverty, before housing costs: pensioners 1,624k 1,584k 1,599k 1,568k 1,583k 1,580k 1,581k
Absolute poverty, after housing costs: everyone 14,944k 14,662k 15,296k 15,679k 15,862k 16,047k 16,331k
Absolute poverty, after housing costs: children 4,975k 4,689k 4,832k 4,863k 4,898k 4,986k 5,125k
Absolute poverty, after housing costs: working-age adults 8,463k 8,491k 8,965k 9,325k 9,464k 9,549k 9,669k
Absolute poverty, after housing costs: pensioners 1,506k 1,482k 1,500k 1,491k 1,500k 1,513k 1,537k
Relative poverty, before housing costs: everyone 11,750k 11,332k 11,389k 11,348k 11,358k 11,410k 11,702k
Relative poverty, before housing costs: children 3,872k 3,504k 3,496k 3,434k 3,431k 3,451k 3,577k
Relative poverty, before housing costs: working-age adults 6,159k 6,103k 6,301k 6,349k 6,363k 6,388k 6,540k
Relative poverty, before housing costs: pensioners 1,720k 1,724k 1,592k 1,565k 1,563k 1,571k 1,585k
Relative poverty, after housing costs: everyone 14,849k 14,583k 14,728k 14,809k 14,885k 15,005k 15,219k
Relative poverty, after housing costs: children 4,942k 4,664k 4,660k 4,663k 4,681k 4,702k 4,798k
Relative poverty, after housing costs: working-age adults 8,426k 8,460k 8,679k 8,821k 8,877k 8,964k 9,056k
Relative poverty, after housing costs: pensioners 1,482k 1,459k 1,389k 1,325k 1,327k 1,340k 1,366k
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs 0.3080 0.3057 0.3063 0.3062 0.3068 0.3073 0.3089
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household £17,681 † £17,895 † £17,904 † £18,146 † £18,308 † £18,581 † £18,739 †
Decile 2: mean household_net_income per household £27,939 † £28,874 † £28,683 † £29,083 † £29,354 † £29,679 † £30,165 †
Decile 3: mean household_net_income per household £34,320 † £35,455 † £36,108 † £36,626 † £37,218 † £37,722 † £38,220 †
Decile 4: mean household_net_income per household £38,933 † £40,603 † £41,873 † £42,783 † £43,423 † £43,928 † £44,548 †
Decile 5: mean household_net_income per household £43,240 † £45,443 † £45,787 † £46,995 † £47,729 † £48,921 † £50,229 †
Decile 6: mean household_net_income per household £47,900 † £49,126 † £50,887 † £51,727 † £52,600 † £54,202 † £55,195 †
Decile 7: mean household_net_income per household £55,684 † £56,509 † £57,443 † £57,966 † £59,083 † £59,211 † £60,667 †
Decile 8: mean household_net_income per household £68,789 † £70,704 † £71,779 † £73,356 † £73,945 † £75,356 † £77,241 †
Decile 9: mean household_net_income per household £78,890 † £80,992 † £82,907 † £84,246 † £85,584 † £87,169 † £89,597 †
Decile 10: mean household_net_income per household £117,005 † £120,262 † £122,221 † £124,681 † £126,775 † £129,108 † £131,486 †
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.41bn £6.66bn £6.64bn £6.88bn £7.04bn £7.26bn £7.48bn
Raise higher rate by 1pp £3.61bn £3.87bn £4.00bn £4.23bn £4.43bn £4.70bn £4.83bn
Raise personal allowance by ~800GBP/year £-3.80bn £-3.92bn £-3.98bn £-4.10bn £-4.17bn £-4.21bn £-1.96bn
Raise child benefit by 25GBP/week per additional child £-1.99bn £-1.75bn £-1.55bn £-1.39bn £-1.30bn £-1.17bn £-1.06bn
Reduce Universal Credit taper rate to 20% £-20.37bn £-20.88bn £-21.32bn £-21.52bn £-21.86bn £-22.25bn £-22.42bn
Raise Class 1 main employee NICs rate to 10% £10.89bn £11.30bn £11.73bn £12.03bn £12.30bn £12.61bn £13.00bn
Raise VAT standard rate by 2pp £24.89bn £25.71bn £26.63bn £27.24bn £27.87bn £28.50bn £29.14bn
Raise additional rate by 3pp £2.90bn £3.15bn £3.22bn £3.42bn £3.61bn suppressed suppressed
Raise the Universal Credit standard allowance by 10% £-3.06bn £-3.18bn £-3.25bn £-3.34bn £-3.44bn £-3.48bn £-3.50bn
Raise the State Pension by 10% £-7.78bn £-8.01bn £-7.99bn £-8.14bn £-8.42bn £-8.55bn £-8.89bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.55bn £6.86bn £6.80bn £7.01bn £7.21bn £7.44bn £7.66bn
Raise higher rate by 1pp: change in income_tax £3.61bn £3.92bn £4.01bn £4.23bn £4.45bn £4.72bn £4.84bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.93bn £-4.07bn £-4.16bn £-4.25bn £-4.32bn £-4.38bn £-1.75bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.33bn £2.14bn £1.94bn £1.76bn £1.65bn £1.52bn £1.40bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £20.34bn £20.87bn £21.30bn £21.52bn £21.81bn £22.20bn £22.41bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £11.15bn £11.63bn £12.00bn £12.29bn £12.61bn £12.94bn £13.31bn
Raise VAT standard rate by 2pp: change in vat £24.69bn £25.51bn £26.42bn £27.03bn £27.65bn £28.28bn £28.91bn
Raise additional rate by 3pp: change in income_tax £2.90bn £3.15bn £3.22bn £3.42bn £3.62bn suppressed suppressed
Raise the Universal Credit standard allowance by 10%: change in universal_credit £3.06bn £3.18bn £3.28bn £3.38bn £3.44bn £3.50bn £3.53bn
Raise the State Pension by 10%: change in state_pension £10.68bn £11.17bn £11.28bn £11.60bn £12.04bn £12.47bn £12.97bn

Fuel duty rates, the high value council tax surcharge, bus fares, Scottish
income tax thresholds, the unused pension allowance deflators, the Plan 2
threshold, the private school VAT share and the Scottish Child Payment all
take their projected values from the OBR's CPI, RPI, earnings and receipts
forecasts. Each expectation is recomputed by hand from the October 2026
values, as its comment shows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Review of #2717 at 6a4aad39, plus a look at 0525f80f, which only updates YAML test expectations. Findings are numbered and marked must / should / nit. I found no musts.

What I checked against the OBR. I downloaded the October 2026 detailed forecast tables zip from obr.uk. The receipts workbook's SHA-256 matches the one cited in private_school_share_of_receipts.yaml. I read the tables with openpyxl. Every one of these matches the YAML to 4 decimals:

  • earnings (1.6), 2025 to 2031, e.g. 2025 is 4.1237%, stored as 0.0412;
  • RPI, CPI, CPIH, mortgage interest and actual rents (1.7);
  • house prices (1.16);
  • per-capita GDP (1.4) and mixed income and non-labour income (1.12), recomputed with the stored ons.population;
  • council tax for England and Scotland (5.1, over March's 2024-25 outturn) and all three countries for 2026 to 2031;
  • the September CPI memo row (4.19), and with it the forecast gaps and social rent 2028 to 2031;
  • SDLT, business rates and NI business rates levels (4.7, 4.8, 4.2), which match the committed series;
  • private school VAT shares (4.8 VAT);
  • the triple lock row in Annex Table A.3 (4.8, 3.9, 3.4, 2.5, 2.5, 2.5, 2.6), which matches test_triple_lock_statutory_inputs.py as described;
  • mortgage interest 2029 Q4 at 5.43% and 2029-30 at 5.11%.

#2692 (index anchoring). It does not bite here. No yoy_growth leaf has 2025 as its first listed year. I compared the index the model builds (system.parameters.gov.economic_assumptions.indices) with the stored growth for earnings, RPI, CPI, house prices, per-capita GDP, mortgage interest and household interest income. Every 2025 revision reaches the index, e.g. earnings 2025 is 0.0412 in both. The one gap is pre-existing: SDLT and business rates start in 2024, so their index drops the 2024 growth (index step 0 against a stored 0.2112). This PR does not cause that, and #2693 fixes it.

Fuel duty. 60.59p is 57.95p (the 5p cut ended) × (1 + 2027 Q1 RPI, 4.557%), as the comment at yoy_growth.yaml:303-306 says. I rebuilt the volumes from Table 4.8 on that path, leaving out non-road fuels. I got -2.5%, -3.1%, -3.1%, -3.9%, -5.4% and -6.4% for 2026 to 2031, within about 0.2pp of the stored values. I did not reproduce them exactly.

Findings

  1. should: household interest income contradicts Project savings interest by interest received per person #2638, and 2025 is now an outturn year. At yoy_growth.yaml:1150-1167 this PR re-derives ons.household_interest_income with the non-labour income proxy, giving +2.92% for 2025. ONS HAXV already has a 2025 outturn of -2.76% (30 September 2026 release, used in Project savings interest by interest received per person #2638). Every other series here treats 2025 as outturn. Project savings interest by interest received per person #2638 rewrites the same 2020-2030 block with a different method (financial assets × deposit rate ratio, plus a per-capita twin with index_base_year: 2020), so the two PRs will conflict as text and give opposite signs for 2025.

  2. should: fuel duty now uses two RPI conventions. The volumes back out receipts at the OBR path, which raises 57.95p by Q1 RPI of the same year (60.59p from July 2027). Current law in petrol_and_diesel.yaml:107-108 comes from calculate_fuel_duty_rates.py, which uses the previous calendar year's RPI (3.586%) and gives 60.03p from April 2027. So the model's 2027-28 fuel duty differs from Table 4.8 by 0.56p a litre on top of the Budget 2026 policy difference. The rates then come back close: 62.62p against 62.63p in 2028, and 67.96p against 67.66p in 2031. Could the generator adopt the OBR's convention (paragraph 4.29), or document why it differs? I have not checked which convention legislation implies.

  3. should: the national private rent path sits below the OBR's own private rents forecast. The comment at yoy_growth.yaml:1177-1180 is right that there is no regional forecast. But Table 1.7 has a UK "Private rentals for housing" column. It reads 3.41%, 2.65%, 1.98%, 2.08%, 2.35% and 2.60% for 2026 to 2031. The backed-out UNITED_KINGDOM series (:1188-1193) is 2.65%, 1.99%, 1.18%, 2.27%, 1.96% and 2.53%. The method predates this PR, but it now differs from a published OBR series, by 0.8pp in 2028. Consider anchoring the UK series to that column and backing out only the regional split.

  4. should: no test pins the 2032+ joins. The arithmetic is right:

    • RPI and CPIH rise 0.000525 a year from 0.0218 to 0.0239 in 2035 (:77, :558);
    • earnings rise 0.00246 a year from 0.0260 to 0.0383 in 2036 (:156);
    • SDLT and business rates copy the earnings path.

    I searched policyengine_uk/tests and found no assertion on those years. The March path's jump from 3.32% to 3.71% went unnoticed, so a small test is worth adding: equal steps, ending at 0.0239 in 2035 and 0.0383 in 2036.

  5. nit: Wales council tax 2025 rounds the wrong way. I get 2.40077 / 2.2284 = 1.077351, which rounds to 0.0774, but yoy_growth.yaml:718 holds 0.0773, the March value. The test passes because its tolerance is 1e-4, and March's 2.2284 is itself rounded, so this may be fine at full precision. Please confirm it was recomputed.

  6. nit: mortgage interest keeps a November 2025 figure. It is disclosed honestly (:978-984), but from 2030 onwards the model holds November 2025's 5.535% while every other series is October 2026. Holding the October 2029 Q4 rate is an alternative. This is a judgement call, not a defect.

  7. nit: the comment on NI domestic rates is stale. yoy_growth.yaml:1581 still says Expenditure Table 4.1 holds "NI domestic rates" flat at £0.494bn. October Table 5.1 has the line growing from £0.515bn to £0.662bn, about 4.3% a year, close to the 0.0433 held. Separately, README.md:83-85 gives the RPI method change as the reason both mortgage interest and NI domestic rates end in 2030, but it applies only to mortgage interest.

  8. nit: population is missing from the changelog. The March population vintage under October aggregates is disclosed in growthfactors.md:162, the YAML comment and the PR body, but not in the changelog fragment. One clause would cover it.

  9. nit: the importer comment overstates its condition. import_obr_forecasts.py:849-852 says the sheet name wins "where the title cell disagrees", but the code uses the sheet name whenever it looks like a table number. The result is the same when the two agree; the comment should match the code.

Verdict

The numbers I could check against the October tables are right, and the 2025 revisions reach the model. Before this leaves draft: agree the order with #2638 (item 1), and either align or document the fuel duty RPI convention (item 2). The rest is small.

What I ran and did not check

  • Ran the 13 changed Python test files at 6a4aad39 (580 passed in 12 minutes), the 2 changed YAML files (11 passed), and the 9 YAML files updated in 0525f80f (95 passed). I did not run the full suite.
  • CI at 0525f80f was still pending when I posted. The Test / YAML job is known to be slow to exit after it reports "N passed".
  • Not reproduced: the AHC deflator rerun, the exact road fuel volumes (only the approximation above) and the Ofwat bills beyond the arithmetic in water-bills.md.
  • Could not open the committed fixture obr_efo_october_2026_receipts.xlsx with openpyxl. The byte-for-byte claim rests on the passing importer test. The levels in the test do match the real workbook.

🤖 Generated with Claude Code

- Household interest income takes its 2020-2025 outturn from ONS HAXV (30
  September 2026 release), so 2025 is -2.76%, not the proxy's +2.92%; the
  non-labour income proxy stays for 2026-2031.
- Private rents follow the OBR's UK private rents forecast ("Private
  rentals for housing", Table 1.7) in every region, instead of being backed
  out of the aggregate rent forecast.
- A test pins the equal-step joins to the long-run rates from 2032.
- The road fuel comment says how the current-law fuel duty schedule's RPI
  convention differs from the OBR path; the NI domestic rates comment adds
  October's Table 5.1 line; the README and importer comments match what the
  code does; the changelog names the population vintage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks, Vahid. Round 1 is addressed in 53012070. Item by item:

  1. Household interest income. 2020-2025 now come from ONS HAXV (30 September 2026 release, £m, the same levels as Project savings interest by interest received per person #2638), so 2025 is -2.76% (95,477 / 98,189). The non-labour income proxy stays only for 2026-2031, on the October tables. On merge order, I agree Project savings interest by interest received per person #2638 should go first if it is ready. This PR would then re-derive its financial assets × deposit rate method from October Tables 1.9 and 1.11 when it rebases. If this one lands first, Project savings interest by interest received per person #2638 does that instead. That's María's call.
  2. Fuel duty RPI conventions. Documented in the road fuel comment, not aligned here.
  3. Private rents. Changed. Every region's 2026-2031 forecast is now the OBR's UK "Private rentals for housing" growth from Table 1.7, to 4 decimals: 3.41%, 2.65%, 1.98%, 2.08%, 2.35% and 2.60%.
    • The back-out from aggregate rents is gone. Improve rent uprating by tenure #1646 introduced it as a fallback, not as a choice against that column.
    • test_rent_uprating.py now pins the OBR column in place of the aggregate identity.
    • The model's implied aggregate rent growth no longer equals the OBR's actual rents, because social rent follows the CPI + 1 cap.
  4. Test for the joins. Added test_long_run_joins.py. It checks four things:
    • RPI and CPIH step evenly from 2031 to 0.0239 in 2035, and earnings to 0.0383 in 2036, rounded to 4 decimals;
    • each then holds through 2073;
    • CPI holds 2%;
    • the four receipts series equal earnings after 2031.
  5. Wales 2025. It was recomputed. At full precision the March 2024-25 outturn is £2.228443bn, so 2.40076975 / 2.228443 = 1.077331, which rounds to 0.0773. 0.0774 comes from the rounded 2.2284.
  6. Mortgage interest 2030. Kept. The November 2025 figure (5.535%) is the only calendar-2030 MIP forecast the OBR has published, and the October path ends near it: 5.11% in 2029 Q3 and 5.43% in 2029 Q4. Holding 2029 Q4 would use one quarter's annual rate for a whole year. Happy to switch if you prefer.
  7. NI domestic rates and README.
    • The NI comment now adds October's Table 5.1 line: £0.515bn in 2025-26 to £0.662bn in 2031-32, about 4.3% a year.
    • The README now gives the RPI reason for mortgage interest only. NI domestic rates end in 2030 under their own method.
  8. Changelog. Now says population stays on the March 2026 determinants.
  9. Importer comment. Now says a sheet named as a table number gives the table's number, whatever its title cell says.

Ran locally on 53012070: the rent, importer, joins, population and AHC tests (212 passed), and the projection horizon, ISA and uprating-declaration tests (87 passed). CI covers the rest.

🤖 Generated with Claude Code

…er 2026

The uncapped single fare table is fitted on the OBR CPI path. On the
October 2026 path the fit moves the high band's mean fare from GBP 3.96 to
GBP 3.95; the shares and the other fares are unchanged. The bus fare,
process-time, scenario-timing and legacy VAT tests pin 2027 earnings
growth, 2025 CPI and the private school VAT share at their October values.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 28, 2026
The October 2026 EFO (paragraph 3.19) forecasts the 1 July 2027 rate at
60.59p: the 57.95p pre-cut rate uprated by RPI growth in the year to 2027
Q1. calculate_fuel_duty_rates.py now starts the schedule there
(CUT_END_RATE) instead of uprating 57.95p by calendar 2026 RPI, which gave
59.75p on the March EFO and would give 60.03p on the October one. Each
1 April step from 2028 still applies the previous calendar year's RPI.
This matches the duty path #2717 uses to derive road fuel volumes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review of #2717 at 8dc456ec. I checked the YAML against the October 2026 detailed forecast tables (economy, receipts, expenditure) and Annex Table A.3, read with openpyxl. I also hand-checked a sample of the changed test expectations, read the importer change, and compared the values with the Autumn Budget 2026 dashboard's October scenario. This builds on Vahid's round 1 and does not repeat it.

Round 1 status at head. Items 1 (2025 interest income is now the HAXV outturn, -2.76%), 3, 4, 5, 7, 8 and 9 are fixed. Item 6 was kept on purpose. Two things are still open. The merge order with #2638 is not settled, and #2638 is still open. Item 2 now sits with #2719, not #2715; see finding 2.

Must fix

None found.

Should fix

  1. Population: the October tables already give the October forecast. The YAML keeps ons.population on the March 2026 vintage until the October long-term determinants come out (yoy_growth.yaml:1088). But the method in the same comment (Q2 real GDP, Table 1.1, over Q2 real GDP per person, Table 1.5) works on the October tables now. With full-precision cells it gives this fiscal-year growth:

    2025 2026 2027 2028 2029 2030 2031
    October tables 0.33% 0.20% 0.13% 0.17% 0.21% 0.25% 0.24%
    Stored (March) 0.30% 0.35% 0.29% 0.32% 0.34% 0.36% 0.24%

    The stored path is 0.11pp to 0.16pp a year too high from 2026 to 2030, which adds up to 0.69% by 2030. household_weight uprates by this index, so every aggregate carries the gap. Every per-capita series does too. For example, per-capita GDP in 2027 is 3263.82 / 3161.46 / 1.0029 - 1 = 2.94% as stored, but 3.10% with the October population.

    • Suggested fix: derive 2024-2031 from Tables 1.1 and 1.5 with the method test_population_vintage.py already pins. Join to the ONS principal projection after 2031, then re-derive the per-capita series and the fuel litre proxies.
    • If you prefer to wait for the determinants, add the size of the gap to the comment and the changelog so that users can see it.
  2. Fuel duty: the comment points at a closed PR, and the gap it gives will grow. yoy_growth.yaml:311 says the alignment belongs with #2715. #2715 was closed and merged into #2719. #2719 sets 60.59p on 1 July 2027, which is the same as the volume path here. But from 1 April 2028 it applies the previous calendar year's RPI. This PR's volume path applies Q1 RPI each April (Table 1.7: 3.3591%, 2.8739%, 2.7928% and 2.1625% for 2028 to 2031). With the October RPI, the two paths are:

    1 April 2028 2029 2030 2031
    Volume path here (Q1 RPI) 62.63p 64.43p 66.23p 67.66p
    #2719 schedule (calendar RPI) 63.21p 65.13p 67.07p 68.61p
    Gap 0.58p 0.70p 0.84p 0.95p

    So after both PRs merge, "0.3p or less from 2028-29" is no longer true. Modelled duty in 2031-32 would be about 1.4% above the rates that the volumes were backed out at.

    • Suggested fix: whichever PR lands second uses one April convention for both the volumes and calculate_fuel_duty_rates.py. Then change the comment to cite #2719 and give the gap that remains. #2719's description already says it will rerun the generator on this PR's RPI. The road fuel volumes need the same check.

Nice to have

  1. Note how the dashboard scenario differs, for when the dashboard moves to this release. The Autumn Budget 2026 dashboard runs 2.151.0 with its own October override. It equals this PR on CPI, RPI, CPIH, earnings, actual rents, mortgage interest, non-labour income, both forecast gaps and social rent for 2027 and 2028. It differs in these places:

    • It keeps 2025 at March values (earnings 5.3% against 4.1% here).
    • It uses Table A.1 house prices to 1 decimal (2.1%, 2.4%, 2.8%, ...) where this PR uses Table 1.16 (2.09%, 2.44%, 2.78%, ...).
    • Its per-capita series use another population vintage.
    • Its social rent for 2029 and 2030 is calendar-year CPI + 1 (3.1%, 3.1%). This PR uses the September CPI forecast from Table 4.19 + 1 (3.0%, 3.2%), which follows the cap's definition.
    • It sets 60.59p from April 2027 as current law.

    None of these is a defect here. A short note in the PR body would explain why the dashboard and this release give different numbers.

Verified as correct

  • Table 1.6 earnings. 2025 4.1237% (0.0412), 2026 3.733%, 2027 2.9919%, 2028 2.1549%, 2029 2.2741%, 2030 2.4896% and 2031 2.6014% all match.
  • Table 1.7 inflation. RPI 4.1311%, 3.586%, 4.32%, 3.0349%, 2.9822%, 2.2892% and 2.1763% for 2025 to 2031 match. So do CPI 2025 to 2031 (3.373% to 2.00%), CPIH (3.8831% to 2.1763%), actual rents and private rentals (3.41%, 2.65%, 1.98%, 2.08%, 2.35% and 2.60% in every region).
  • Mortgage interest. 2026 to 2029 match: 6.2298%, 11.558%, 6.6765% and 4.7541%. The Table 1.7 note says that the OBR does not forecast RPI MIPs after 2029 Q4, so the 2030 carry-over is justified. The 2029-30 value is 5.1083%.
  • Table 1.16 house prices. 2025 2.6375%, 2026 2.0889% and 2031 2.7478% match.
  • Per-capita series and non-labour income, recomputed with the stored population.
    • Per-capita GDP (Table 1.4): 2025 3033.9 / 2890.3 / 1.0030 gives 0.0465, and 2031 gives 0.0332.
    • Per-capita mixed income (Table 1.12): 2025 0.0049, 2026 0.0282 and 2027 0.0307.
    • Non-labour income: 2025 0.0292, 2026 0.0302 and 2031 0.0332.
  • Receipts.
    • SDLT residential (Table 4.7): 11.598 / 11.554 gives 0.0038 for 2026, and 12.811 / 11.598 gives 0.1046 for 2027.
    • SDLT non-residential: -0.0459 for 2026 and 0.1805 for 2027.
    • Business rates (Table 4.8, 35.436 / 33.93): 0.0444.
    • NI business rates (Table 4.2): 0.0263.
  • Council tax (Expenditure Table 5.1, full precision). England is 0.0610 for 2026 and 0.0531 for 2031, and 2025 is 44.117 / 41.2225 = 0.0702. Scotland is 0.0386 and Wales is 0.0740.
  • Statutory inputs. The September CPI gaps come from Table 4.19's memo row: 3.44 - 3.42 gives 0.0002 for 2027, 2.042 - 2.10 gives -0.00058 for 2028, and 2.1727 - 2.10 gives 0.00073 for 2029. Social rent matches 3.5% + 1 for April 2027 and the same memo row + 1 (to 1 decimal) for 2028 to 2031. The Annex Table A.3 triple lock row (4.8, 3.9, 3.4, 2.5, 2.5, 2.5, 2.6) matches test_triple_lock_statutory_inputs.py. I found no gov.uk 2027-28 benefit and pension rates page. Secondary sources give 3.9% (£250.70 a week), but I did not confirm this against DWP.
  • Long-run joins. RPI and CPIH rise 0.000525 a year to 0.0239 in 2035, earnings rise 0.00246 a year to 0.0383 in 2036, and CPI holds at 2%. The 2.39% and 3.83% anchors are the same as before.
  • Fuel duty generator. 0.5795 × 1.0359 = 0.6003, then 0.6262, 0.6452, 0.6644 and 0.6796. The schedule test's 2027-28 blend, (0.6003 × 361 + 0.6262 × 5) / 366 = 600.654, matches.
  • Private school VAT share (Table 4.8 row 13, D13:H13). 1505 / 179861 = 0.008368, then 0.008380, 0.008300, 0.008190 and 0.008148. The SHA-256 of the workbook is the same as the one cited.
  • Water bills. 1.0283 × 1.0324 = 6.2%, × 1.0330 = 6.2% and × 1.0214 = 5.0%, with CPIH t-1.
  • Sample test expectations.
    • Scottish Child Payment 2028: £29.20 × 1.0344 = £30.20, so £1,570.40.
    • Plan 2 threshold 2030: 29,385 × 1.0229 = £30,057.84.
    • High value council tax surcharge value: £2.01m × 1.0244 × 1.0278 = £2,116,285.
  • Importer (import_obr_forecasts.py:848-853). The code now does what the comment says. On the real October workbook, only sheet 4.8 has a title number (43.8) that differs from its sheet name. Sheet 4.12 holds two tables, both titled 4.12, so the override cannot mislabel a second table. Rows are still matched by title text, not by number.

Tests run locally

At 8dc456ec, in a uv venv with .[dev] installed:

  • policyengine-core test on the 11 changed YAML test files: 106 passed.
  • pytest -n 6 on the 18 changed policyengine_uk/tests/*.py files: 716 passed in 10.5 minutes.

I did not run the full suite or the AHC deflator and bus fare refit scripts.

🤖 Generated with Claude Code

Comment thread policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml Outdated
Comment thread policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml Outdated
juaristi22 and others added 3 commits October 28, 2026 20:19
…into obr-october-2026-efo-2711

# Conflicts:
#	docs/book/programs/gov/dwp/state-pension.md
…ation gap

From 1 April 2028 the volumes now use the duty rates #2719
puts into current law, each April raised by the previous calendar year's RPI
(63.21p to 68.61p for 2028 to 2031) rather than by Q1 RPI. Once #2719 is
law, the model's duty on these volumes reproduces the OBR's road fuel
receipts. 2025 to 2027 and the July 2027 step (60.59p) are unchanged; the
litre proxies are re-derived.

The population comment and changelog give how far the March 2026 path sits
above the population the October 2026 economy tables imply: about 0.7% by
2030-31.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Population growth for 2021-22 to 2031-32 is now the OBR's October 2026
series, read from its economy tables as Q2 real GDP (Table 1.1) over Q2 real
GDP per person (Table 1.5). On the March 2026 EFO that reading reproduces the
long-term determinants for every forecast year, so it is the OBR's forecast
without waiting for the October determinants; 2032 onwards stays on the ONS
2024-based principal projection. 2026-27 to 2030-31 growth falls from 0.29%
to 0.36% a year to 0.13% to 0.25%, so household weights are about 0.7% lower
by 2030-31. The per-capita GDP, mixed income and non-labour income series,
rail journeys per person and the litre proxies are re-derived on it.

Also re-base the Pension Credit boundary test from main on the October 2026
forecasts, with the threshold and allowance derived in its docstring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks, Pavel. Round 2 is in 9251c19d and d73c8490, after a merge of main (9b96e746).

  1. Population. Switched, as you suggested.
    • 2021-22 to 2031-32 now come from the October tables: Q2 real GDP (Table 1.1) over Q2 real GDP per person (Table 1.5).
    • 2032 onwards stays on the March determinants' row, which from 2031-32 is the ONS 2024-based principal projection.
    • test_population_vintage.py now checks that the same reading of the March tables reproduces the March determinants for every year from 2023-24 to 2030-31, to 1e-9 per cent. It also pins 2021-2031 to the October tables, and a test checks that the level is about 0.7% lower by 2030-31.
    • The per-capita GDP, mixed income and non-labour income series are re-derived on it; per-capita GDP for 2027 is now 3.10%. So are rail journeys per person (rail_usage and savings_interest_income are still not uprated by the index they declare #1862) and the litre proxies.
    • The council tax and rail tests whose hand-worked numbers include weight growth are updated: 0.33% in 2025-26 and 0.97% in 2024-25.
  2. Fuel duty. From 1 April 2028 the volumes now use Autumn Budget 2026 measures in current law #2719's rule: the previous calendar year's RPI, giving 63.21p, 65.13p, 67.07p and 68.61p for 2028 to 2031.
  3. Dashboard note. The PR body now has a section on the five ways the dashboard's October override differs from this release.

The merge with main brought one more change. Main's new test_guarantee_credit_boundary_matches_main pins Pension Credit values worked out on the March forecasts. They are re-based on October, with the arithmetic in the docstring:

  • threshold: 238 × 1.039 × 1.033 − 17.96 × 1.035 × 1.034 / 0.6 = 223.4080;
  • Housing Benefit allowance: 274.6629.

The merge order with #2638 is still open.

Ran locally:

  • the population, council tax, rail, road fuel, capital gains, projection horizon, Pension Credit boundary, long-run joins, rent and corporate receipts tests: 549 passed;
  • earlier, on the merge, the YAML files main changed: 372 passed.

CI covers the rest.

🤖 Generated with Claude Code

@anth-volk

Copy link
Copy Markdown
Collaborator

Review of #2717, focused on two questions: does the update cover every OBR-sourced value, and were values derived from OBR forecasts elsewhere in the model refreshed (for example, anything based on the National Living Wage)? I reviewed 8dc456ecf and re-checked each finding below at d73c84908; I did not re-review round 2's population change. I read the code and parameters only. I did not run the tests or download the OBR workbooks, so the forecast values themselves rest on Vahid's check.

Coverage of the OBR tables

The PR updates the series the model stores, not whole tables:

  • economy Tables 1.4, 1.6, 1.7, 1.12 and 1.16, and since d73c84908 1.1 and 1.5 for population;
  • receipts Tables 4.2, 4.7, 4.8 and 4.19;
  • expenditure Table 5.1, for council tax.

Only Tables 1.6, 1.7, 1.16 and the four receipts series go through import_obr_forecasts; the rest are derived by hand. That matches the table list in #2711. Against "every OBR-sourced series", these still carry older forecasts at d73c84908:

  • gov.boe.base_rate: November 2025 market path for Bank Rate;
  • gov.dft.rail.fare_index: March 2025 RPI;
  • household.wealth.financial_assets: March 2024;
  • the local-authority ONS income uprating factors: November 2025 (calibration inputs, which the PR leaves out on purpose);
  • the experimental capital gains projection obr_eot: November 2025.

The National Living Wage forecast (economy Table 1.13) is not imported; #2721 tracks that.

Values derived from OBR forecasts

Bugs

  1. The rail fare index for 2027 to 2029 still uses March 2025 RPI forecasts (confidence 75%).
    • gov.dft.rail.fare_index holds hand-entered values whose comments say "OBR RPI ~3.2% + 1%" and "~2.9% + 1%", citing the March 2025 EFO. gov.dft.rail.prior_law_fare_index holds the same values.
    • rail_subsidy_spending multiplies rail_usage by the index.
    • The same RPI plus 1 point method on the October RPI forecasts quoted in Update the OBR forecasts to the October 2026 Economic and fiscal outlook #2711 (3.6% for 2026, 4.3% for 2027, 3.0% for 2028) gives rises of about 4.6%, 5.3% and 4.0%, against the stored 4.2%, 3.9% and 3.9%. The index would be about 2% higher by 2029.
  2. Bank Rate and household financial assets stay on older forecasts (confidence 65%). Both predate this PR, but fall within "every OBR-sourced series".
    • gov.boe.base_rate holds the November 2025 market path. plan_1_interest_rate and plan_4_interest_rate take the lower of RPI growth (now October 2026) and Bank Rate plus a margin, so the comparison mixes two forecast vintages. The effect is probably small in years where RPI is the lower of the two.
    • household.wealth.financial_assets is a March 2024 series that ends in 2028. It is the uprating index for the property wealth, corporate wealth and land value totals, which household_land_value, shareholding and the land value tax reforms read. Those totals stop growing after 2028.

Code quality

  • Stale comment on PROJECTION_END_YEAR (confidence 90%). In the economic_assumptions data module, it still says the growth file "holds the March 2026 forecast, which ends in 2030-31". The constant itself (2032) still fits the October forecast, which ends in 2031-32.
  • The hand-entered forecast values have no test or generator (confidence 70%). The fuel duty path has a generator, and test_long_run_joins ties the receipts series to earnings. Nothing ties the rail fare index, Bank Rate or financial assets to the forecast. Deriving the fare index from obr.rpi, or adding a test against it, would stop bug 1 from recurring.
  • The National Living Wage is not in "Not in this PR" (confidence 75%). Neither the PR body nor the economic assumptions README says that Table 1.13 isn't imported, or mentions the merge order with Project the minimum wage rates by the OBR's national living wage forecast #2700. A reader could assume the October update reaches the rules built on the National Living Wage.

🤖 Generated with Claude Code

…r 2026

- The current-law and prior-law regulated rail fare indices rise by the
  published July 2026 RPI (3.2%) plus 1 point in 2027, then by the previous
  calendar year's RPI forecast plus 1 point to 2031, in place of March 2025
  RPI. test_rail_fare_index.py ties each step to obr.rpi.
- Bank Rate for 2026-2031 is the calendar-year average of the OBR's
  market-derived path (October 2026 economy Table 1.9), in place of the
  November 2025 path.
- Households' financial assets are October 2026 Table 1.11 to 2031, in place
  of the March 2024 series that ended in 2028.
- The PROJECTION_END_YEAR comment names the October forecast, and the README
  says the national living wage forecast (Table 1.13) is not read here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks, @anth-volk. Addressed in a75c74ae:

  1. Rail fare index. Both the current-law and prior-law indices now follow the October forecast, and both run to 2031.
    • 2027 rises by the published July 2026 RPI (3.2%, ONS CZBH) plus 1 point, which is still 4.2%.
    • From 2028 they rise by the previous calendar year's obr.rpi plus 1 point: 5.3%, 4.0%, 4.0% and 3.3%. July RPI is the regulated-fare measure, but it isn't published yet for those years.
    • The current-law index is 1.388 in 2029, against 1.369 before.
    • test_rail_fare_index.py ties each projected step to obr.rpi, so the next EFO can't leave them stale.
  2. Bank Rate and financial assets.
    • gov.boe.base_rate for 2026-2031 is now the calendar-year average of the OBR's market-derived path in October Table 1.9: 3.78% in 2026, then 4.23% to 4.48%.
    • household.wealth.financial_assets is now October Table 1.11 to 2031. Its 2012-2019 values match the old series exactly, so it's the same source.
    • The October tables revise 2020 onwards down. So the property wealth, corporate wealth and land value totals it grows are about 10% lower in 2026 than on the March 2024 path, and they now grow to 2031.
    • Corporate tax incidence doesn't move: with a dataset, shareholding divides by the dataset's own weighted total.
  3. PROJECTION_END_YEAR comment. It now names the October forecast, which ends in 2031-32.
  4. National Living Wage.
  5. Left as they are. Both are now listed in the PR body:
    • the local-authority income uprating factors, which are calibration inputs;
    • the experimental obr_eot capital gains projection, which is an opt-in scenario with its own evidence horizon.

Ran locally: the land value, wealth tax, process-time, rail and benefit-unit capital tests (160 passed), and the household wealth, wealth tax, LVT and student loan YAML tests (65 passed). CI covers the rest.

🤖 Generated with Claude Code

@juaristi22
juaristi22 marked this pull request as ready for review October 28, 2026 21:04

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 2 review of #2717 at a75c74ae8. I reviewed only the branch's own commits since 8dc456ecf (9251c19, d73c849, a75c74a), not the merge of main. I checked the new values against the October 2026 economy tables, re-did the arithmetic, and ran the touched tests.

Earlier findings

  • Should fix 1 (population): fixed in d73c849. The YAML now gives 0.20%, 0.13%, 0.17%, 0.21%, 0.25% and 0.24% for 2026 to 2031. I re-derived them from Q2 Table 1.1 real GDP over Q2 Table 1.5 real GDP per person. They match to the rounding. 2032 and later stay on the ONS principal projection, as before.
  • Should fix 2 (fuel duty): fixed in 9251c19. The volumes now use the previous calendar year's RPI from April 2028, the same rule as #2719. The comment cites #2719.
  • Nice to have 3 (dashboard): done. The PR body has a section on the five differences.

Must fix

None.

Should fix

  1. The changelog names only the population change. a75c74a also moves three series that change results:

    • Bank Rate for 2026 to 2031 (Plan 1 and Plan 4 student loan interest);
    • the regulated rail fare index from 2028 (rail_subsidy_spending; 1.388 in 2029, against 1.369);
    • households' financial assets, which make the property wealth, corporate wealth and land value totals about 10% lower in 2026, and let them grow to 2031.

    Land value tax and wealth tax reform scores will move with the last one. Please add one sentence for each to changelog.d/obr-october-2026-efo-2711.changed.md.

Nice to have

  1. Bank Rate mixes two conventions. 2026 to 2031 are now calendar-year averages from Table 1.9. 2023 to 2025 are still point values (4.25%, 5.25% and 4%). Table 1.9 gives calendar-year averages of 4.681%, 5.111% and 4.255% for these years. It has no effect on Plan 1 or Plan 4 interest while RPI is lower than Bank Rate plus the margin. But one convention is easier to check. Consider taking 2023 to 2025 from the same table.

Verified as correct

  • Bank Rate. 0.0378, 0.0423, 0.0434, 0.0430, 0.0436 and 0.0448 are Table 1.9's calendar-year values for 2026 to 2031 (3.7773, 4.2342, 4.3449, 4.3036, 4.3595 and 4.4821), rounded to 4 decimals.
  • Financial assets. 2022 to 2031 match Table 1.11's households' financial assets, calendar years (for example 6,580.6 to £6,581bn and 7,390.3 to £7,390bn). 2012 to 2019 are the same as the old series.
  • Rail fare index. 2027: 1.217 x 1.042 = 1.268. From 2028, the steps use the previous calendar year's obr.rpi (4.32%, 3.03%, 2.98% and 2.29%) plus 1 point, rounded to 0.1 points: 5.3%, 4.0%, 4.0% and 3.3%. This gives 1.335, 1.388, 1.444 and 1.492. These match the YAML. The prior-law index has the same steps.
  • Pension Credit boundary test. 238 x 1.039 x 1.033 - 17.96 x 1.035 x 1.034 / 0.6 = 223.4080, as the docstring says.
  • Litre proxies after 2031. They equal about minus the population growth. This follows from the documented formula when volume and price are flat, and main has the same pattern.
  • Comments. The PROJECTION_END_YEAR comment and the "Not in this PR" items (Table 1.13, #2700, #2721, #2638) are correct.

Tests run locally

At a75c74ae8, uv venv with .[dev]:

  • pytest -n 6 on test_population_vintage.py, test_rail_fare_index.py, test_rail_usage_uprating.py, test_council_tax_uprating.py, test_pension_credit_guarantee_reform_projections.py, test_fuel_duty_schedule.py, test_long_run_joins.py and test_triple_lock_statutory_inputs.py: 372 passed.
  • policyengine-core test on the household wealth and student loan YAML folders: 52 passed.

🤖 Generated with Claude Code

Comment thread changelog.d/obr-october-2026-efo-2711.changed.md Outdated
Comment thread policyengine_uk/parameters/gov/boe/base_rate.yaml Outdated
…hangelog

Every Bank Rate value is now a calendar-year average from the October 2026
economy Table 1.9: Bank of England outturn to 2025, then the OBR's
market-derived path. Before, 2020-2025 were point values. The changelog
fragment also names the Bank Rate, rail fare index and household financial
assets changes and what they move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up review of #2717 at 50665fb51 (one commit since a75c74ae8).

Must fix

None.

Should fix

None. Should fix 1 (changelog) is fixed in 50665fb.

Nice to have

None. Nice to have 2 (Bank Rate convention) is fixed in 50665fb.

Verified as correct

  • Bank Rate. Every value from 2020 to 2031 is now Table 1.9's calendar-year average, rounded to 4 decimals. I checked 2020 to 2025 against the table.
  • Effect on student loans. plan_1_interest_rate and plan_4_interest_rate change only in 2023-24, from 5.25% to 5.68%. In 2024 and 2025 RPI is lower than Bank Rate plus 1 point, so those years do not move.
  • Changelog. It now names Bank Rate, the rail fare indices and financial assets, with the effect of each.

I have no open findings on this PR.

Tests run locally

At 50665fb51: the student loan YAML folder (28 passed), and test_student_loan_existing_holder_projection.py and test_student_loan_plan_uprating.py (37 passed).

🤖 Generated with Claude Code

@juaristi22
juaristi22 enabled auto-merge October 28, 2026 21:35

@PavelMakarchuk PavelMakarchuk left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving at 50665fb51. All findings from my reviews are closed. CI passes at this head. Merge order: whichever of this PR, #2638, #2719 and #2700 lands later must re-derive the values that the PR body names.

🤖 Generated with Claude Code

@juaristi22
juaristi22 added this pull request to the merge queue Oct 28, 2026
MaxGhenis added a commit that referenced this pull request Oct 28, 2026
Both sides added entries to two lists. GENERATION_STEPS keeps
add_energy_price_indices after create_economic_assumption_indices,
before the Pension Credit and Housing Benefit projections, which do not
read it. The generated-parameter test adds the energy index prefixes to
the base's generated_prefixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged via the queue into main with commit 1688f98 Oct 29, 2026
20 of 21 checks passed
@juaristi22
juaristi22 deleted the obr-october-2026-efo-2711 branch October 29, 2026 00:05
MaxGhenis added a commit that referenced this pull request Oct 29, 2026
#2717 moved ons.population for 2022-2030 to the October 2026 EFO. The
per-person series is the OBR's savings income over population, so each year
is re-derived: 2025-26 is now 0.32%, not 0.35%. The docs table and the
GDP-per-head comparison (10.2% from 2023-24 to 2025-26) follow.

The file, copy, clone and export tests now also check that the data they
return projects by the declared rule, as the review asked.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 29, 2026
GDP per head rises 4.0% in 2024-25 and 4.6% in 2025-26 since #2717, not 3.9%
and 4.7%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
vahid-ahmadi added a commit that referenced this pull request Oct 29, 2026
Resolves the conflicts with the October 2026 EFO update (#2717) by keeping
this branch's household interest series (HAXV outturn, then March 2026
Tables 1.9 x 1.11) in place of main's non-labour income proxy, and keeps
savings_interest_income on the per-person interest index in the docs.

Main's October population growth changes the per-person series, so it is
re-derived with the same formula, (1 + aggregate) / (1 + population) - 1,
and the 2025 test example follows (0.9692 rather than 0.9695).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 29, 2026
Four files conflicted:
- the petrol and diesel schedule and its two tests: keep the Budget 2026
  schedule (60.59p on 1 July 2027) and rerun calculate_fuel_duty_rates.py
  --update on the October RPI forecast, which moves the April steps to
  63.21p, 65.13p, 67.07p and 68.61p (2028-31) and regenerates LPG and
  natural gas; the hand-computed rates in test_fuel_duty_schedule.py,
  petrol_and_diesel_schedule.yaml and road_fuel_gases.yaml follow;
- main's re-based Pension Credit boundary test: keep main's threshold,
  allowance and £0.87 step with the Pension Tax Allowance off, and pin £1.98
  with it on (guarantee credit now ends at £13,280 of private pension).

The October forecast raises the April 2028 new State Pension by 3.4%, so the
2028-29 Pension Tax Allowance case moves to a £13,480.26 threshold and a
full allowance of £183.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants