Repository navigation
Conversation
Budget 2026 paragraph 6.254 and the policy costings (page 23) raise the Income Tax trading allowance from £1,000 to £3,000 from 6 April 2027, to be legislated in Finance Bill 2026-27 (Table 6.1, item 15). The £1,000 YAML cases move to 2026-27; new 2027-28 cases cover full relief at £3,000, the cliff just above it, partial relief and expenses above the allowance. The property test's allowance and boundary draws move to £3,000. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…7-28 Budget 2026 paragraphs 6.246 and 6.247 add 2 percentage points to the savings and property rates from 6 April 2027, on top of Budget 2025's 22%, 42% and 47%: 24%, 44% and 49% (Table 6.1, items 61 and 62). Property rates apply in England, Wales and Northern Ireland, which the model already does (Scottish taxpayers' property income stays on the Scottish rates); savings rates apply UK-wide. Finance cost relief reads the property basic rate, so it rises to 24%, as the costing note says. The ISA cash-interest charge reads the savings basic rate (SI 2026/1018 reg. 22A(3)), so it rises too. Tests: hard-coded 22/42/47% expectations recomputed at 24/44/49%; new Budget 2026 YAML cases for each band and country; property tests for the exact 2-point rise, Scotland's exclusion from property rates, UK-wide savings rates and the finance cost relief bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Budget 2026 (paragraph 6.211; policy costings page 13) extends the 5p cut from 1 January 2027 to 1 July 2027. On that date rates rise by 5p and are uprated by RPI, then by RPI each 1 April from 2028. Other road fuels keep a proportionate cut to the same date. - petrol_and_diesel.yaml: 52.95p to 30 June 2027; the January and March 2027 steps are gone. The generator now uprates the 57.95p pre-cut rate by 2026 RPI on 1 July 2027, then each 1 April from 2028. - lpg.yaml, natural_gas.yaml: full rates from 1 July 2027. - Tests and the excise duty engineering note follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Budget 2026) Budget 2026 (paragraph 6.210; policy costings page 12) extends the temporary 0% rate from 31 March 2027 to 1 July 2027, and expects it to apply UK-wide from April 2027 (section 4.3: "Extended VAT relief is expected to apply in Northern Ireland from April 2027"). - great_britain.yaml: 5% returns on 1 July 2027, not 1 April. - northern_ireland.yaml: 0% from 1 April to 30 June 2027. - Tests follow the new day weights: FY 2026-27 GB 178/365 at 5%, NI 360/365; FY 2027-28 280/366 at 5% in every nation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Budget 2026 (paragraph 6.24; section 4.3; Table 6.1 item 1) gives £100 to
households in council tax bands A to D in England, delivered by local
authorities from January 2027. The devolved governments get a Barnett
share instead, which the model does not allocate.
- Parameters gov.treasury.household_energy_payment.{amount, bands,
countries}: £100 in model year 2026 only, bands A to D, England.
- Variable household_energy_payment, counted in household_benefits,
gov_spending and pre_budget_change_household_benefits as the Energy
Bills Rebate is, with its own fiscal partition head and programme entry.
- council_tax_band defaults to D, so 2026 England fixtures with no band
now carry the £100; their expected totals are updated and say so.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 6 April 2027 to 5 April 2030, people over State Pension age, or reaching it within the tax year, get a non-refundable Step 6 Income Tax reduction of 20% of the full new State Pension above the Personal Allowance, rounded up to the pound (£94 in 2027-28), tapered by £1 for every £3 of total income above the full new State Pension (Budget 2026 paragraph 6.182, policy costings p. 63, HM Treasury explainer). Each Step 6 reduction is capped at the tax the earlier ones leave (utils/income_tax_reductions.py); finance cost relief now uses the same helper. Universal Credit's deduction for tax on earnings reads income_tax_subtractions, so it sees the allowance. Also pins the Household Energy Payment outside HBAI income, as the 2022 council tax rebate is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Budget 2026 (paragraph 6.13, costings p. 16) replaces the withdrawal of Carer's Allowance in full above the weekly earnings limit with a 100% taper on the earnings above it, in England and Wales, from a date within 2030-31. Until DWP confirms the date the taper starts on 6 October 2030; the day-weighted share gives 2030-31 182 of its 365 days. The weekly excess over the limit is a variable of its own, which the gainful-employment test now reads. 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: 115 (thresholds in New warnings
Notes
Moves flagged for review
75 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
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.
No change in any year: population. Checks failing on both base and head (1)
Counted-once checkEach of 92 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
|
Five existing test files pinned values that Budget 2026 changes in current law: - the property basic rate and the savings rates from 2027-28 are 24%, not 22% (property income rate reforms, finance cost relief accounting, the savings starting rate path, and the ISA cash interest charge, which is at the savings basic rate in force for the year under SI 2026/1018 reg. 15); - the trading allowance is £3,000 from 2027-28, which sets relevant UK earnings for pension relief; - the Household Energy Payment is in household_benefits in 2026-27 but not in HBAI income. The finance cost relief bound now reads the property basic rate from the parameters and pins the uncapped case Hypothesis found. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 6 October 2030 the Budget 2026 taper pays the rate less the earnings above the limit in England and Wales, so a carer £1 over it keeps most of the allowance. The case now checks only that the earnings count as gainful employment; test_carers_allowance_earnings_taper.py checks the amounts. 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>
…per pays In 2030-31 the taper covers 182 of the year's 365 days, so a carer over the earnings limit is paid in those weeks only. carers_allowance took a full year of overlapping benefits off that part-year amount: a carer earning £250 a week with £40 a week of State Pension got £0 instead of 182/365 x (rate - £46 - £40) x 52 = £234.54. The new carers_allowance_share_of_year_payable gives the share of the year the earnings condition lets the allowance be paid; the taper and the overlap deduction both use it. Adds the worked case, full-year and below-limit checks, and a property test of the weekly overlap rule over the paid weeks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pped The relief is limited to the tax left after earlier reductions. Where that capped the Budget 2025 relief, the 2-point rise in the rates raises the cap too, so the relief can rise by more than 2% of the costs: with £7,800 of other tax credits it goes from £86 to £240. The property test now applies the 2-point bound only where the old relief was its full 22%, and a worked test pins the capped case. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HBAI counted the 2022 £150 Council Tax Rebate and the Energy Bills Support Scheme as miscellaneous income (HBAI quality and methodology report FYE 2023), so the tests' premise that the rebate stayed out of HBAI was wrong. The payment is the same kind of support to the same bands, so it now raises hbai_household_net_income by £100. The variable and docs also say who it goes to (the householder liable for council tax on their main home, most exempt households included) and what the model cannot see: households whose landlord is liable are paid. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Budget 2026 restores fuel duty on 1 July 2027 "uprated in line with RPI", then each 1 April from 2028 (costings page 13), and LPG and natural gas take the proportionate cut to the same date. Their full rates came back unuprated. calculate_fuel_duty_rates.py now writes all three schedules: the full rate times RPI growth to 2027 Q1 (4.5565%, which gives the OBR's 60.59p for petrol and diesel) on 1 July 2027, then the previous calendar year's RPI each April, with RPI uprating metadata after 2031. LPG is 33.05p and natural gas 25.83p from 1 July 2027. Also corrects the petrol schedule's comment, which still described the calendar-2026 step. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Checked against what Microcosm needs to score the Budget measures (PolicyEngine/microcosm#1418). This PR covers most of the engine side. Three things look missing:
For the Carer's Allowance taper, the newly entitled carers come from the data's The next Microcosm national and local-area pair waits for this PR's release, with #2712. |
…2030-31 Review round 2 of #2719 found four problems in the round 1 fixes. - The couple restriction picked one partner for the whole of 2030-31, so a partner below the earnings limit lost the award for the weeks before the other partner's taper starts. carers_allowance_taper.py now gives the weekly award for the weeks before the taper and the weeks under it; the restriction and the overlapping-benefit rule apply to each part, weighted by its share of the year. carers_allowance_share_of_year_payable is gone. - A supplied carers_allowance_pre_overlap lost its overlap deduction when the earnings condition gave a zero share. It now meets the whole year's overlapping benefits, as before the taper. - The savings and property rate properties failed where the 24% finance cost relief changes the property allowance election. They now hold the election fixed, pin the counterexample, and a worked test covers the flip. - The excise duty docs still described flat gas rates and the old July uprating. CI at 1386278 also failed 8 YAML cases that pinned 2026 HBAI income for band D households in England without the £100 Household Energy Payment, which round 1 moved into HBAI income. They now include it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…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>
Review round 3 on #2719 found the 2030-31 calculation recomputed the award from its parts, so a value supplied for, or a reform that neutralizes, carers_allowance_pre_couple_limit or carers_allowance_pre_overlap no longer reached the payment. Each stage now reads the one before it. Within the parts of the year where a person's weekly award is positive it is the same amount, so carers_allowance_pre_overlap is the candidate award times the share of those parts the couple restriction keeps, and carers_allowance takes the overlapping benefits off for the share kept. A supplied carers_allowance_pre_couple_limit carries no dates, so the restriction and the whole year's overlap apply to it. Less than a penny for the year is nil: where an overlapping benefit equals the award, float32 left a fraction of a penny that made receives_carers_allowance true, in 2031-32 as well as 2030-31. Tests: supplied and neutralized intermediates in 2030-31 and 2031-32, a Hypothesis property for an overlapping benefit equal to the award, and a penny floor on the two 2030-31 properties. The 10 new tests fail on 835a765. Also fixes the uc_statutory_pay comment (5,198.80 with the Household Energy Payment). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The threshold was uprated by the new State Pension amount itself, so a reform that sets that amount to nil divided by zero in parameter uprating (main's test_state_pension_components reforms it to 0, and CI failed on the merge ref at 835a765). The new State Pension is projected with the triple lock index, so uprating the threshold by the same index gives the same baseline values (to 1e-11 in 2028-29 to 2031-32). A reform to the new State Pension rate now leaves the threshold alone unless the threshold is reformed with it. Tests: the threshold rises in line with the new State Pension without a reform, and a rate reform of nil or £300 leaves it and gives a finite allowance (both fail on the old uprating). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@juaristi22 On item 1 of your comment: Machine Games Duty (Table 6.1 line 56) now has its own draft, #2731.
It stays a draft until review agrees, and won't merge in Budget week. |
|
Thanks. Where each one is:
On the Carer's Allowance pool: noted. This PR doesn't add a draw, so restricting |
Carer's Allowance in 2030-31 uses the shares of the year only where an amount is the award the parts of the year add up to, to the penny; an amount supplied or set by a reform gets the whole year's couple restriction and overlap, so a replacement reaches the payment. A payment under half a penny for the year is nil, so a penny left after overlap is paid. The Pension Tax Allowance threshold is 52 weeks at the new State Pension weekly rate, computed in the formula, so it follows dated and undated reforms to the rate; the threshold parameter is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ax Allowance Main's cliff probe froze a £1.01 step for current law in 2028. The Budget 2026 Pension Tax Allowance takes the claimant out of Income Tax at the boundary, and Pension Credit counts income net of tax, so guarantee credit now ends at £13,165 of private pension rather than £13,315 and the step is £1.61. Main's value is kept as the case with the allowance off. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
In 2030-31 an amount before the couple restriction or the overlap rule carries the parts of the year only where the simulation calculates it with the model's own formula: no input supplies it, and no reform neutralizes it or puts a formula of its own in its place. The payment takes the same decision from both stages, so a reform that changes only the partner's award before the couple limit gets the whole year's restriction and the whole year's overlap for both partners, and a reform amount equal to the model's no longer passes as the model's. A reform that updates a stage but keeps its formula keeps the parts of the year. calculated_by moves from the benefit cap variable to utils/formula_origin.py so both can use it. The Pension Tax Allowance YAML header gives the taper's end unrounded (13,318.973), so 13,318.98 in whole pence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Draft: Budget week. Not for merge until the Budget-week merge rules lift.
This moves the Autumn Budget 2026 household measures from the dashboard repo's reforms (PolicyEngine/uk-autumn-budget-dashboard-2026#290) into current law. It is one PR so the merge queue runs once. It replaces #2713, #2714, #2715 and #2718, which are closed.
Sources:
None of the measures is law yet; each parameter says so.
Trading allowance (item 15)
Paragraph 6.254 and costings p. 23 set the allowance at £3,000 from 6 April 2027. The parameter gets a new
2027-04-06: 3_000value.trading_allowance_deductionalready reads it, so Income Tax and Class 4 NI follow.Known gap: the allowance also covers miscellaneous income (ITTOIA s. 783B), but the model applies it only to trading income. #290's review (issuecomment-6472453512) bounds the missing cost at about £71m in 2027-28.
Tests:
Savings and property income rates (items 61, 62)
Paragraphs 6.246 and 6.247 set 24%, 44% and 49% from 6 April 2027. The property rates apply in England, Wales and Northern Ireland; the savings rates UK-wide. The existing formulas already do the rest:
property_income_tax.formula_2027).rates.property.basic, so it becomes 24%, in line with costings p. 74.One consequence: under the model's reading of ITTOIA s. 274AA(5), Scottish landlords' relief also rises to 24%, while their property tax doesn't change.
Tests:
tests/policy/reforms/oct_2026_budget/savings_property_income_rates.yaml;test_budget_2026_savings_property_rates_properties.py. Mutation check: with the higher property rate at 43%, invariant 1 fails.The higher relief can also change the property allowance election. A Scottish landlord with £500 of rent and £435 of finance costs uses the £1,000 allowance at 22%, since the relief (£95.70) is worth less than the £100 of tax the allowance saves. At 24% the relief is £104.40, so the model drops the allowance: property income tax rises from £0 to £100 and income tax falls by £4.40. The model makes that choice only where it lowers the person's income tax (
uses_property_allowance). The rate identities hold for people whose election doesn't change, and a worked test covers this case.Fuel duty (item 3)
Paragraph 6.211 extends the 5p cut to 1 July 2027. Costings p. 13: "On 1 July 2027, fuel duty rates will increase by 5ppl and will be uprated in line with the Retail Prices Index (RPI). From 1 April 2028, fuel duty rates will be uprated annually in line with RPI." Other fuels get "a proportionate percentage cut (equivalent to 5ppl from the main fuel duty rate of 57.95 ppl)".
Changes:
calculate_fuel_duty_rates.pyuprates each full rate by RPI growth in the year to 2027 Q1 (4.5565%, economy Table 1.7). For petrol and diesel that is the OBR's 60.59p (October 2026 EFO ¶3.19: "from 52.95 pence per litre to 60.59 pence per litre"); the script refuses to write a different figure;This branch's RPI series is still the March 2026 EFO, so the April steps are 62.41p, 64.16p, 66.02p and 67.54p. #2717's October RPI moves them.
Day-weighted model-year rates (p/litre):
Electricity VAT (item 2)
Paragraph 6.210 extends the zero rate "to 1 July 2027. This is expected to apply UK-wide from April 2027". The parameter changes:
Day-weighted model years:
The dashboard (#290, 5d18a5e2) weights 2027-28 differently. It uses April to June's share of a year's domestic electricity use (22.30%), where this PR uses the day share (86 of 366, 23.50%). For the dashboard's £1,040 electricity bill, the 2027-28 saving is £11.04 there and £11.64 here.
This PR doesn't change how electricity spending is projected.
uprate_energymoves it by headline CPI from the dataset's declared price basis (calendar 2024 for the managed Microcosm bundle) and holds it flat where a dataset declares none (Enhanced FRS, priced at April 2026 Ofgem rates). The Treasury costing (p. 12) grows "nominal consumer expenditure on electricity" instead, price and volume together. The OBR's Table 1.20 electricity series is a wholesale price in £/MWh, not a bill. Its nearest retail series, Table 1.19 "Utilities", covers more than electricity and is post-measures, so it already contains this VAT cut. On it, spending would be about 1.1% lower in 2026-27 and 1.4% lower in 2027-28 than on CPI: roughly £8m and £4m off the costing's £755m and £305m. A pre-measures retail electricity index would be a separate change.Household Energy Payment (item 1)
Paragraph 6.24 and section 4.3: £100 for households in council tax bands A to D in England, delivered by local authorities from January 2027.
Changes:
gov.treasury.household_energy_payment.{amount, bands, countries}and variablehousehold_energy_payment;household_benefits,gov_spendingandpre_budget_change_household_benefits, as the Energy Bills Rebate does;Not modelled:
Fixture fallout:
council_tax_banddefaults to D, so 2026 England fixtures with no band now carry the £100. Seven tests' totals are updated, each with a comment.Pension Tax Allowance (item 52)
Sources:
The allowance is a non-refundable Step 6 reduction from 6 April 2027 to 5 April 2030:
gov.dwp.state_pension.new_state_pension.amount, so it follows any change to that rate, dated or undated. The model projects the April 2027 rate unrounded (241.30 × 1.039 = £250.711, from published inputs), so the threshold is £13,036.97, where the explainer gives £13,036.40, which is 52 × £250.70. Neither the explainer nor the Budget states the weekly rate, so the model doesn't enter £250.70; the gap closes when the uprating order sets the rate.Changes:
gov.hmrc.income_tax.reliefs.pension_tax_allowance.{in_effect, rate, taper}. There is no threshold parameter: the formula reads the new State Pension rate (above). An earlier version kept the explainer's £13,036.40 uprated by the new State Pension amount, which divided by zero under a nil-rate reform (CI at 835a765); 7de3747 uprated it by the triple lock index instead, which round 4 showed cut it loose from rate reforms (a pensioner on £15,600 under a £300 rate paid £606).pension_tax_allowance, last inincome_tax_subtractions.utils/income_tax_reductions.earlier_tax_reductions, gives that order.property_finance_cost_reliefnow uses the helper too, which avoids a dependency cycle.utils/uc_income_tax.py) takes theincome_tax_subtractionsentries off the tax on earnings. It handles finance cost relief separately, against the tax on property income first. So it picks up the allowance with no change of its own. This settles @PavelMakarchuk's point on Budget day: announced measures uk-autumn-budget-dashboard-2026#290 (issuecomment-6472987762). His mixed-age couple comes out at an allowance of £93.28, UC −£51.30 and net income +£41.97.pension_tax_allowanceis recorded as a component ofincome_tax.Later years: the allowance is recomputed each year as 20% × (threshold − Personal Allowance): £159 in 2028-29 and £226 in 2029-30 on the current forecast. Someone on exactly the full new State Pension and nothing else pays no Income Tax at any rate (a Hypothesis property over rates from £0 to £400 a week). Uprating the £94 instead would leave someone on exactly the full new State Pension owing about £62 in 2028-29, which breaks the guarantee in ¶3.19 and ¶6.182. The reading is logged in
~/reviews/uk-hub/RULINGS.md.Conflict to watch: draft #2545 restructures Step 6. Whichever lands second moves
pension_tax_allowanceinto the new structure.Tests:
tests/policy/reforms/oct_2026_budget/pension_tax_allowance.yaml, 15 cases:tests/test_pension_tax_allowance_properties.py. Mutation check: with a 20% taper in place of 1 in 3, the first property fails. The full new State Pension pays no Income Tax without a reform, with the rate at £300 for 2028-29 only (allowance £606), and at any undated rate from £0 to £400 a week; the dated and undated reform tests fail on both earlier threshold versions.tests/test_pension_tax_allowance_universal_credit.py: Pavel's couple, and the same income as a private pension (UC unchanged).Carer's Allowance taper (item 7)
Sources: paragraph 6.13 and costings p. 16. In England and Wales, the withdrawal of the allowance in full above the weekly earnings limit becomes a 100% taper on the earnings above it.
Start date: the costings say only "within the 2030-31 financial year, with a precise start date confirmed in due course". Until DWP confirms it, the model starts on 6 October 2030.
appliesis day-weighted (fiscal_year_blend), so 2030-31 carries 182 of 365 days. That is in line with Table 6.1's −£40m, then −£80m.Changes:
gov.dwp.carers_allowance.earnings_taper.{applies, rate, countries}.carers_allowance_weekly_earnings_above_limit, using the existing pence rule.is_gainfully_employed_for_carers_allowancenow reads it.carers_allowance_pre_couple_limitpaysrate − taper × excess, floored at zero, where the taper applies.carers_allowance_pre_overlap, and through itcarers_allowanceand UC unearned income (income_definitions/unearned.yaml), read the new amount.utils/carers_allowance_taper.py, read bycarers_allowance_pre_couple_limit,carers_allowance_pre_overlapandcarers_allowance). Both rules work week by week:carers_allowance_pre_overlapcarries no dates, so it still meets the whole year's overlapping benefits (round 2 caught the earlier fix dropping the deduction there);carers_allowance_pre_overlapiscarers_allowance_pre_couple_limittimes the share of those parts the couple restriction keeps, andcarers_allowancetakes the overlapping benefits off for the share kept. A value supplied for either intermediate, or a reform that neutralizes one, therefore reaches the payment (round 3 caught the round 2 fix recomputing the award and bypassing both);carers_allowance_pre_couple_limitgets the whole-year couple restriction and the whole year's overlap, and such acarers_allowance_pre_overlapthe whole year's overlap. Each stage asks the simulation whether it calculates the earlier stage with the model's formula (calculated_from_parts_of_yearinutils/carers_allowance_taper.py: no supplied input, not neutralized, and the formula's code is the model's, bycalculated_by, now inutils/formula_origin.py), and the payment asks it of both stages. Rounds 4 and 5 caught the earlier value tests: a reform giving the partner £1,000 paid £0, and a reform changing only the partner's award, or setting the model's own amount, took off half the head's State Pension (£200.55 too much paid). A reform that updates a stage but keeps the model's formula keeps the parts of the year;receives_carers_allowancetrue (round 3). A penny left over is paid: float32 stores £5,000.01 as £5,000.0098 (round 4 caught a £0.01 cutoff dropping it).is_entitled_to_carer_benefitcan't split the year, so in 2030-31 both partners of a couple who straddle the limit count as entitled, and both as receiving, for the year. The legacy carer premium and the UC carer element still give one amount. The Pension Credit carer addition counts entitled members, so it gives two: £5,505.49 for the couple above, against £2,752.75 when both partners are under the limit. This affects only couples over State Pension age who care for the same person and straddle the limit, in 2030-31.would_claim_carers_allowance; there is no new draw.Dependencies:
gov.dwp.carers_allowance.earnings_limitas it stands, and the tests read the limit and rate from the parameter tree, so they hold before and after Project the minimum wage rates by the OBR's national living wage forecast #2700.carers_allowance_weekly_earnings_above_limit.Tests:
tests/test_carers_allowance_earnings_taper.py.tests/policy/reforms/oct_2026_budget/carers_allowance_earnings_taper.yaml).carers_allowance_pre_couple_limit(£0 and £1,000) is what is paid, and neutralizing either intermediate pays nothing, in 2030-31 and 2031-32; a Hypothesis property that an overlapping benefit equal to the award leaves nothing paid or received; and the two 2030-31 properties also check anything paid is at least half a penny. The 10 new tests fail on 835a765. Round 4's: reforms replacingcarers_allowance_pre_couple_limit(£1,000 to the partner) andcarers_allowance_pre_overlap(£1,000 less £400 of State Pension for a head over the limit), and a penny left after overlap on £1,000.01 and £5,000.01; the 2030-31 replacement cases and the £5,000.01 cases fail on 7de3747. Round 5's: reforms that set the partner's award before the couple limit to nil, scale it by 1.0001 or add a penny, leaving the head's as the model's (the head gets the whole-year restriction and £400 off: the model's award less £400); a reform settingcarers_allowance_pre_overlapto the model's own amounts (the whole year's £400 off each); a reform that relabels both stages, which keeps the model's parts-of-year payment; and a Hypothesis property that 2030-31 pays any award a reform sets before the couple limit as 2031-32 does, and as the whole-year rule gives (head if they have an award, otherwise the partner, less the whole year's State Pension). The four 2030-31 partner and model's-own cases fail on f51c6dc; with the payment's check ofcarers_allowance_pre_couple_limitremoved, the three partner cases and the property fail.OBR October 2026 EFO
María's #2717 moves the economic assumptions to the October EFO, so this PR doesn't. An independent import of the same tables agreed with #2717 on 122 changed values to 0.005pp; the rest differ only where #2717 makes a deliberate choice (2025 revised, smoothed 2032+ joins, OBR private rents, road fuel re-derived). A trial merge of #2717 into this branch conflicts only in the three fuel duty files. Whichever lands second takes this PR's
calculate_fuel_duty_rates.py, reruns it with--update, and updates the hand-computed rates intest_fuel_duty_schedule.pyand the two fuel duty YAML tests. #2717 derives road fuel volumes at the same 60.59p path.Invariants
vat_changeis zero.hbai_household_net_income(tests/test_household_energy_payment_income_measures.py).test_road_fuel_gases_get_the_same_rpi_uprating).Review
Round 1 (GPT-6.1 Sol, at e5e8942) requested changes on nine findings. Here is where each stands:
is_gainfully_employed_for_carers_allowance); #2543 (draft) fixes it, storing the limit in penceRound 2 (GPT-6.1 Sol, at 1386278) confirmed findings 1, 3, 4, 8 and 9 resolved and 2, 5 and 7 deliberately deferred, and requested changes on four more:
Round 3 (GPT-6.1 Sol, at 835a765) confirmed all four round 2 findings resolved and requested changes on three more:
carers_allowance_pre_couple_limitorcarers_allowance_pre_overlapno longer reached the paymentreceives_carers_allowancetrueIt also measured the annual-flag limitation; the Carer's Allowance section now gives its effects as measured.
CI at 835a765 also failed two of main's State Pension tests on the merge ref: the Pension Tax Allowance threshold was uprated by the new State Pension amount, so a reform setting that amount to nil divided by zero. 7de3747 uprated it by the triple lock index instead.
CI at 7de3747 failed one of main's tests on the merge ref:
test_guarantee_credit_boundary_matches_mainfroze a £1.01 step in household net income where guarantee credit ends in 2028, for an 85-year-old on private pension. The Pension Tax Allowance takes them out of Income Tax at that point, and Pension Credit counts income net of tax (pension_credit_income.py), so guarantee credit ends at £13,165 of private pension rather than £13,315 and the step is £1.61. With the allowance off it is main's £1.01. f51c6dc merges main and pins both cases.Round 4 (GPT-6.1 Sol, at 7de3747) confirmed round 3's findings 2 and 3 resolved and finding 1 partly, and requested changes on three:
carers_allowance_pre_couple_limitwith positive amounts still lost the award in 2030-31: the shares rebuilt eligibility from the original rulesIt also flagged two wording points: the assumptions page implied the couple restriction applies to a supplied
carers_allowance_pre_overlap, and this body still named the old uprater. Both are fixed.Round 5 (GPT-6.1 Sol, at f51c6dc) confirmed round 4's findings 2 and 3 resolved, checked the £1.61 Pension Credit step (£5 less £2 of Pension Credit, £1.06 of Housing Benefit and £0.33 of Council Tax Reduction; £1.01 with the allowance off), found no deleted-parameter readers, and requested changes on one:
carers_allowance_pre_overlapto the model's own amounts, took off only the taper share of the head's State Pension (£200.55 too much paid)It also noted that #2726 leaves round 1's finding 7 to #2543; the round 1 table now says so. And £13,318.97 leaves a fraction of a penny (the end is £13,318.973), so the taper line now says £13,318.98.
Round 6 is running at bffa9e8.
Differences from the dashboard
The dashboard (#290) carries its own copies of these measures. They differ from this PR in:
is_SP_ageis reached by 6 October; this PR and the explainer use the tax year);A list with effects goes to #290 separately.
Impact
Not run yet. To follow on this PR.
Checks
household_benefitswithout the Household Energy Payment. e5e8942 moves them to the Budget values; the six files pass locally (137 tests)uc_statutory_pay,warm_home_discount,hbai_property_income,trading_loss_household_income). Each pinned 2026 HBAI income for a band D household in England without the £100 Household Energy Payment, which round 1 moved into HBAI; 835a765 adds it and fixes the comments that said HBAI leaves it outtest_state_pension_components.py(a nil new State Pension rate divided by zero in the Pension Tax Allowance threshold's uprating); 7de3747 fixes it, and on a local merge with main that file and the PTA properties pass (38 tests)test_guarantee_credit_boundary_matches_main(the 2028 step where guarantee credit ends moves from £1.01 to £1.61 under the allowance); f51c6dc merges main and pins both cases, which pass locally (3 tests)Reproducer: policyengine_uk/tests/policy/reforms/oct_2026_budget/savings_property_income_rates.yaml; policyengine_uk/tests/policy/reforms/oct_2026_budget/pension_tax_allowance.yaml; policyengine_uk/tests/test_carers_allowance_earnings_taper.py::test_ten_pounds_over_the_limit_takes_ten_pounds_off; policyengine_uk/tests/test_fuel_duty_schedule.py::test_scheduled_rate_on_each_date; policyengine_uk/tests/test_domestic_electricity_vat.py::test_rates_change_on_each_scheduled_date; policyengine_uk/tests/policy/baseline/gov/treasury/household_energy_payment/household_energy_payment.yaml; policyengine_uk/tests/policy/baseline/gov/hmrc/income_tax/allowances/trading_allowance_deduction.yaml
axiom: queued (rulespec-uk issues to follow; Budget 2026 measures are not yet legislated)
🤖 Generated with Claude Code