Repository navigation
Update the economic assumptions to the October 2026 EFO - #2717
Conversation
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>
Aggregate impact on certified data: passBase Checks: 0 broken by this change, 1 failing on both sides, 0 fixed. Moves flagged for review: 517 (thresholds in Notes
Moves flagged for review
477 more flags are in the report artifact. Receipts by tax head
Spending by benefit and service
Caseloads
Government balance, each component counted once
Model totals
Household income totals
Population
Poverty rates
People in poverty
Inequality
Mean household net income in each side's own deciles
Standard reform costings (change in gov_balance)
Standard reforms: change in each reform's target
Household net income by decileMean 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.
Checks failing on both base and head (1)
Counted-once checkEach 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.
Provenance
Dataset: Receipts by tax head: head levels
Spending by benefit and service: head levels
Caseloads: head levels
Government balance, each component counted once: head levels
Model totals: head levels
Household income totals: head levels
Population: head levels
Poverty rates: head levels
People in poverty: head levels
Inequality: head levels
Mean household net income in each side's own deciles: head levels
Standard reform costings (change in gov_balance): head levels
Standard reforms: change in each reform's target: head levels
|
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>
|
Review of #2717 at 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
#2692 (index anchoring). It does not bite here. No Fuel duty. 60.59p is 57.95p (the 5p cut ended) × (1 + 2027 Q1 RPI, 4.557%), as the comment at Findings
VerdictThe 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
🤖 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>
|
Thanks, Vahid. Round 1 is addressed in
Ran locally on 🤖 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>
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
left a comment
There was a problem hiding this comment.
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
-
Population: the October tables already give the October forecast. The YAML keeps
ons.populationon 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_weightuprates 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.pyalready 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.
- Suggested fix: derive 2024-2031 from Tables 1.1 and 1.5 with the method
-
Fuel duty: the comment points at a closed PR, and the gap it gives will grow.
yoy_growth.yaml:311says 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.
- Suggested fix: whichever PR lands second uses one April convention for both the volumes and
Nice to have
-
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 teston the 11 changed YAML test files: 106 passed.pytest -n 6on the 18 changedpolicyengine_uk/tests/*.pyfiles: 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
…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>
|
Thanks, Pavel. Round 2 is in
The merge with main brought one more change. Main's new
The merge order with #2638 is still open. Ran locally:
CI covers the rest. 🤖 Generated with Claude Code |
|
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 Coverage of the OBR tablesThe PR updates the series the model stores, not whole tables:
Only Tables 1.6, 1.7, 1.16 and the four receipts series go through
The National Living Wage forecast (economy Table 1.13) is not imported; #2721 tracks that. Values derived from OBR forecasts
Bugs
Code quality
🤖 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>
|
Thanks, @anth-volk. Addressed in
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 |
PavelMakarchuk
left a comment
There was a problem hiding this comment.
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
-
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
- 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_YEARcomment 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 6ontest_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.pyandtest_triple_lock_statutory_inputs.py: 372 passed.policyengine-core teston the household wealth and student loan YAML folders: 52 passed.
🤖 Generated with Claude Code
…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
left a comment
There was a problem hiding this comment.
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_rateandplan_4_interest_ratechange 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
PavelMakarchuk
left a comment
There was a problem hiding this comment.
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
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>
#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>
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>
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>
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>
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):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:
sources/road_fuel_volume.py, which reproduces March exactly.petrol_and_diesel.yamlis regenerated from the new RPI. It stays current law; Budget 2026's duty schedule is not part of this PR.scripts/fit_bus_cap_savings.pyis re-run: the high band's mean fare moves from £3.96 to £3.95, and the shares and other fares stay.test_rail_fare_index.pyties each step toobr.rpi.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.pypins 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
test_triple_lock_statutory_inputs.py).obr_efo_october_2026_receipts.xlsx). The fixture keeps sheets 4.2, 4.7 and 4.8.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:
Not in this PR
obr.national_living_wageand Read the OBR's national living wage forecast (EFO Table 1.13) in import_obr_forecasts #2721 tracks the importer. Until Project the minimum wage rates by the OBR's national living wage forecast #2700 merges, the minimum wage rates and the rules built on them stay at April 2026 levels. Whichever of Project the minimum wage rates by the OBR's national living wage forecast #2700 and this PR merges second copies this PR's 2032+ earnings path into that series.obr_eotcapital gains projection: calibration inputs and an opt-in scenario, left on their November 2025 vintage.🤖 Generated with Claude Code