Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2d31a50
Raise the trading allowance to £3,000 from 6 April 2027
MaxGhenis Oct 28, 2026
e95275e
Raise the savings and property income rates by 2 more points from 202…
MaxGhenis Oct 28, 2026
8ee81b3
Keep the 5p fuel duty cut to 1 July 2027 (Budget 2026)
MaxGhenis Oct 28, 2026
66d0281
Extend the zero rate of VAT on domestic electricity to 30 June 2027 (…
MaxGhenis Oct 28, 2026
d4f803b
Add the Household Energy Payment (Budget 2026)
MaxGhenis Oct 28, 2026
d6b3611
Add the Pension Tax Allowance (Budget 2026)
MaxGhenis Oct 28, 2026
b5d2d77
Taper Carer's Allowance above the earnings limit (Budget 2026)
MaxGhenis Oct 28, 2026
e5e8942
Move older tests to the Budget 2026 rates
MaxGhenis Oct 28, 2026
948d15d
Stop expecting zero Carer's Allowance over the 2030-31 limit
MaxGhenis Oct 28, 2026
064826e
Put petrol and diesel at the OBR's 60.59p from 1 July 2027
MaxGhenis Oct 28, 2026
5bd68fd
Take overlapping benefits off only the weeks the Carer's Allowance ta…
MaxGhenis Oct 28, 2026
805bf0e
Bound the finance cost relief rise only where the old relief was unca…
MaxGhenis Oct 28, 2026
d43e015
Count the Household Energy Payment in HBAI income
MaxGhenis Oct 28, 2026
9521429
Uprate LPG and natural gas duty by RPI from 1 July 2027
MaxGhenis Oct 28, 2026
1386278
Say the savings, property and carers taper changes are not yet law
MaxGhenis Oct 28, 2026
835a765
Apply the Carer's Allowance couple and overlap rules to each part of …
MaxGhenis Oct 28, 2026
b1c4f95
Carry supplied and reformed Carer's Allowance amounts through 2030-31
MaxGhenis Oct 28, 2026
7de3747
Uprate the Pension Tax Allowance threshold by the triple lock index
MaxGhenis Oct 28, 2026
d436a27
Follow reformed intermediates and the full new State Pension rate
MaxGhenis Oct 28, 2026
16497d7
Merge origin/main into ab26-autumn-budget-2026
MaxGhenis Oct 28, 2026
f51c6dc
Pin the 2028 guarantee credit boundary with and without the Pension T…
MaxGhenis Oct 28, 2026
bffa9e8
Tell a Carer's Allowance stage's origin by its formula, not its value
MaxGhenis Oct 29, 2026
7279bfb
Keep a Carer's Allowance stage's dates only where formula and amount …
MaxGhenis Oct 29, 2026
9917bfa
Merge origin/main: the October 2026 EFO (#2717)
MaxGhenis Oct 29, 2026
8db87df
Answer review round 7: a fraction of a penny is an award, and no cycle
MaxGhenis Oct 29, 2026
b428941
Couples elect the larger Carer's Allowance award under the taper
MaxGhenis Oct 29, 2026
ab9d57b
Answer review round 9, and use HM Treasury's July 2027 gas rate
MaxGhenis Oct 29, 2026
ae88f0c
Answer review round 10: name the earnings reader, fix the fuel script…
MaxGhenis Oct 29, 2026
ce9b262
Answer review round 11: break a weekly tie by the award over the year
MaxGhenis Oct 29, 2026
db33fab
Answer review round 12: say where float32 rounds the award
MaxGhenis Oct 29, 2026
f78bffa
Merge main into ab26-autumn-budget-2026
juaristi22 Oct 29, 2026
c086c49
Count the Household Energy Payment in the other investment income test
juaristi22 Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/ab26-carers-allowance-taper.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Replace the cliff edge at the Carer's Allowance earnings limit with the 100% taper that Budget 2026 announced, in England and Wales: the weekly allowance falls by £1 for each £1 of weekly earnings above the limit. The taper starts within 2030-31; until DWP confirms the date the model starts it on 6 October 2030, so 2030-31 carries 182 of its 365 days. In that year the weeks before the taper and the weeks under it each get their own couple restriction and overlapping-benefit reduction, so State Pension reduces the allowance only in the weeks the allowance pays for. A couple caring for the same person elect which of them has the allowance, and the model gives it to the partner with the larger award (before, it preferred the benefit-unit head), so the taper never leaves a couple with less than the cliff edge did, and one partner has the award for the year: where the two have the same award for some weeks, the couple elect the one with the larger award over the year. An amount before the couple restriction or the overlap rule that an input supplies, or that a reform neutralizes, calculates with a formula of its own or otherwise changes, reaches the payment with the whole year's treatment for the stages after it, even where it equals the model's. The payment ignores the stage before the couple restriction wherever an input supplies, or a reform calculates, the amount before overlap. A mask that takes away a fraction of a penny counts as a change, since the couple restriction chooses only among partners with an award. A payment of less than half a penny for the year is nil.
1 change: 1 addition & 0 deletions changelog.d/ab26-electricity-vat.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Extend the temporary zero rate of VAT on domestic electricity to 30 June 2027, and apply it in Northern Ireland from 1 April 2027, as announced at Budget 2026.
1 change: 1 addition & 0 deletions changelog.d/ab26-fuel-duty.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Keep the 5p fuel duty cut, and the proportionate cut for LPG and natural gas, to 1 July 2027, as announced at Budget 2026. On that date petrol and diesel rise to the OBR's forecast of 60.59p (57.95p uprated by RPI growth to 2027 Q1), and LPG and natural gas return to their full rates with the same uprating, at the rates HM Treasury publishes (natural gas 25.82p a kilogram); all three then rise by RPI each 1 April from 2028.
1 change: 1 addition & 0 deletions changelog.d/ab26-household-energy-payment.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add the Household Energy Payment announced at Budget 2026: £100 in 2026-27 for households in council tax bands A to D in England, counted in household benefits, government spending and HBAI income (as HBAI counted the 2022 Council Tax Rebate).
1 change: 1 addition & 0 deletions changelog.d/ab26-pension-tax-allowance.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add the Pension Tax Allowance announced at Budget 2026: from 6 April 2027 to 5 April 2030, people over State Pension age (or reaching it within the tax year) get a non-refundable 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 (52 weeks at the weekly rate, so it follows any change to that rate). Universal Credit's deduction for tax on earnings sees it.
1 change: 1 addition & 0 deletions changelog.d/ab26-savings-property-rates.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Raise the savings and property income rates to 24%, 44% and 49% from 6 April 2027 (Budget 2026).
1 change: 1 addition & 0 deletions changelog.d/ab26-trading-allowance.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Raise the trading allowance to £3,000 from 6 April 2027 (Budget 2026).
69 changes: 59 additions & 10 deletions docs/book/assumptions/carer-support-payment-earnings.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,65 @@ second candidate entitlement before reducing either payment for overlapping
benefits. A selected carer whose overlapping benefit removes the payment
still retains the underlying entitlement.

The law provides election or decision rules; the model does not observe that
choice. Among otherwise eligible partners, it prefers a reported recipient,
then an eligible benefit-unit head, then the eldest eligible partner. Member
order breaks an age tie. This is a modelling convention, not statutory
priority. An ineligible reported recipient or head cannot displace an eligible
partner. The caring-hours, earnings, age and take-up conditions are unchanged.

The convention does not maximise the couple's payment. It can select a partner
whose overlapping benefits reduce CA or CSP to zero, while suppressing a
payment that the other otherwise-eligible partner could receive if selected.
The couple jointly elect which of them has the entitlement; the Secretary of
State decides only where they don't. The data don't record the election, so
the model takes the one that gives the larger award: of the otherwise eligible
partners, the one whose candidate award is larger has the entitlement. The
model's own awards differ only under the Budget 2026 Carer's Allowance
earnings taper; everywhere else each eligible partner has the same rate. An
award that an input supplies can differ in any year, and the election then
follows it. Where the awards are equal, the model prefers a reported
recipient, then an eligible benefit-unit head, then the eldest eligible
partner, and member order breaks an age tie. That order is a modelling
convention, not statutory priority. An ineligible reported recipient or head
cannot displace an eligible partner. The caring-hours, earnings, age and
take-up conditions stay as they are.

In 2030-31, the year the taper starts, the model applies the election
separately to the weeks before the taper and the weeks under it, since the law
restricts entitlement day by day. Where the two partners have the same award
for those weeks, the couple elect the one with the larger award over the year,
and then the order above applies. A partner below the earnings limit has the
full rate in both parts and the larger award over the year, so the couple
elect them for the whole year, even where the other partner's award under the
taper equals the full rate, as it does at a taper rate of zero. Where both
partners earn over the limit, neither has an award before the taper, and the
couple elect the one with the larger award under it. Either way one partner
has the award for the year, at any taper rate of zero or more. A
`carers_allowance_pre_couple_limit` that an input supplies carries no dates,
so the restriction keeps one partner's award for the whole year.
The parts of the year reach the payment as shares of the year:
`carers_allowance_pre_overlap` is the amount from
`carers_allowance_pre_couple_limit` that the restriction keeps, and
overlapping benefits come off for the share of the year in which the
restriction keeps it.

The shares describe an amount only where the model's own formulas calculate
it from the parts of the year and, for every member of the benefit unit, it
is the amount the parts give: within half a penny, and an award, however
small, exactly where the parts give one, since the couple restriction chooses
only among partners with an award. An amount that an input supplies, or that
a reform neutralizes or calculates with a formula of its own, carries no
dates, even where it equals the model's: a value cannot show where it came
from. So does an amount that a reform changes while keeping the formula, for
example by adding `defined_for`. A `carers_allowance_pre_couple_limit` of that
kind gets the couple restriction for the whole year, and the whole year's
overlapping benefits come off what the restriction keeps. A
`carers_allowance_pre_overlap` of that kind comes after the couple
restriction, so only the whole year's overlapping benefits come off it.
Either way, the payment starts from that value, and where the
`carers_allowance_pre_overlap` is of that kind, the payment doesn't read the
stage before it. A reform that changes only a variable's label, say, keeps
the parts of the year. The test of the formula covers the whole variable, so
a reform that wraps the formula to change one person's amount moves every
amount to the whole-year treatment. The model treats less than half a penny
for the year, which in practice is floating-point residue where an
overlapping benefit equals the award, as nil, and pays a penny.

The election compares awards before overlapping benefits, so it doesn't always
maximise what the couple receive: it can choose a partner whose overlapping
benefits reduce CA or CSP to zero, where choosing the other partner would pay
something.

The existing same-person default remains: two qualifying reported awards, or
awards that caring hours and take-up cannot explain, indicate different care
Expand Down
31 changes: 31 additions & 0 deletions docs/book/programs/gov/treasury/cost-of-living-payments.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,37 @@ PolicyEngine models these via:
- `council_tax_rebate/bands.yaml` — qualifying CT bands (A–D)
- `council_tax_rebate/amount.yaml` — the £150 rebate amount

## Household Energy Payment (2026-27)

Budget 2026 (paragraph 6.24) announced a one-off £100 Household Energy
Payment for households in council tax bands A to D in England, which local
authorities pay into bank accounts from January 2027. PolicyEngine models it as
`household_energy_payment` (Household, YEAR), with parameters at
`parameters/gov/treasury/household_energy_payment/`:

- `amount.yaml`: £100 in model year 2026 (6 April 2026 to 5 April 2027),
zero otherwise
- `bands.yaml`: qualifying bands (A to D)
- `countries.yaml`: qualifying countries (England)

It counts in `household_benefits` and `gov_spending`, as the Energy Bills
Rebate does, and in `hbai_household_net_income`: HBAI counted the 2022
Council Tax Rebate and the Energy Bills Support Scheme as miscellaneous
income ([HBAI quality and methodology report FYE 2023](https://www.gov.uk/government/statistics/households-below-average-income-for-financial-years-ending-1995-to-2023/households-below-average-income-series-quality-and-methodology-information-report-fye-2023)).
The devolved governments receive a Barnett share instead, which the model
does not allocate, and the model leaves out the £100 million of further
local-authority funding for targeted support.

The payment goes to the householder [liable for council tax on their main
home](https://www.gov.uk/government/news/what-the-autumn-budget-2026-means-for-your-energy-bills),
including most households exempt from council tax; full criteria are to
follow. The model pays every household in a qualifying band. Survey data
hold only main homes, so the second homes and empty properties the scheme
excludes do not arise. The model can't tell which households have a
landlord liable for council tax (council tax in the rent), so it pays them,
which slightly overstates recipients. `council_tax_band` defaults to band D,
so a household whose survey record has no band qualifies.

## Cost-of-Living Payments (2022-23 and 2023-24)

Two successive packages, both modelled through the variable
Expand Down
60 changes: 35 additions & 25 deletions docs/engineering/excise-duties.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ parameter history starts on 1 August 2023; the preceding alcohol regime and a
complete 2023/24 calculation are outside this implementation. Tobacco rates
start on 22 November 2023. The new alcohol, tobacco and car formulas return their
default zero before 2024; that is an unmodelled period, not a statutory exemption.
Gas duty covers 2022/23 onwards and includes the 1 January 2027 and 1 March 2027
increases. SI 2026/555 removed the September 2026 step announced at Budget 2025
and moved the December 2026 step to 1 January 2027. Rates after the last dated
entry stay constant; the gas parameters do not forecast future inflation
increases.
Gas duty covers 2022/23 onwards. SI 2026/555 removed the September 2026 step
that Budget 2025 announced and moved the December 2026 step to 1 January 2027.
Budget 2026 then kept the proportionate cut to 1 July 2027, when the gas rates
return to their full levels with RPI growth on top, and rise by RPI each 1 April
from 2028, as petrol and diesel do (see below).

For alcohol and tobacco, a model year such as `2026` represents 6 April 2026 to
5 April 2027. Quantities and cigarette retail prices are constant across that
Expand Down Expand Up @@ -154,35 +154,45 @@ matching the legislation. No universal litre-to-kilogram density is assumed.
The existing `fuel_duty` output includes these charges. Rural fuel duty relief
continues to apply only to petrol and diesel.

From 1 March 2027 onwards, the gas parameters hold LPG at £0.3161/kg and natural
gas at £0.2470/kg. This implementation stops at the last numerical rates in the
HMRC 2026-to-2027 schedule and does not extrapolate gas rates using an inflation
forecast. This is a modelling limitation: HMRC states that RPI uprating resumes
from 2027/28. The petrol and diesel rate includes forecast RPI uprating each
1 April from 2027, so its rates rise while the gas rates stay flat. Later-year gas duty is therefore lower than it would be
under the same uprating assumption. Analyses beyond March 2027 that require
consistent fuel-duty forecasts must supply an uprated gas-rate path explicitly.
Budget 2026's costing says that on 1 July 2027 "fuel duty rates will increase
by 5ppl and will be uprated in line with the Retail Prices Index (RPI)", and
applies the cut to other fuels in proportion. So on 1 July 2027 the gas rates
return to their full rates before the 2022 cut (LPG £0.3161/kg, natural gas
£0.2470/kg), with the same RPI growth as petrol and diesel. HM Treasury
publishes the rates from 1 July 2027 in Annex A of Budget 2026's Overview
of Tax Legislation and Rates: £0.3305/kg and £0.2582/kg (the uprating gives
£0.2583/kg for natural gas, and the model uses HM Treasury's rate). Each
1 April from 2028 they rise by the previous calendar
year's RPI growth. `calculate_fuel_duty_rates.py` writes these steps to
1 April 2031, as it does for petrol and diesel, and the parameters' uprating
metadata continues them. That is policy, not law.

Sources: [HMRC fuel duty rates 2026 to 2027](https://www.gov.uk/government/publications/fuel-duty-rates-for-2026-to-2027/fuel-duty-rates-2026-to-2027)
(RPI uprating from 2027/28),
[HMRC amended fuel duty rates 2026 to 2027](https://www.gov.uk/government/publications/amended-fuel-duty-rates-for-2026-to-2027/amended-fuel-duty-rates-2026-to-2027)
and [SI 2026/164 as amended by SI 2026/555](https://www.legislation.gov.uk/uksi/2026/164).
[SI 2026/164 as amended by SI 2026/555](https://www.legislation.gov.uk/uksi/2026/164)
and [Budget 2026 policy costings, page 13](https://assets.publishing.service.gov.uk/media/6ae1883fe4367e5c8b0467df/AB26_Policy_Costing.pdf#page=13).

## Petrol and diesel rate

The main rate on unleaded petrol and diesel is keyed to each statutory change:
52.95p a litre from 23 March 2022, continued by annual orders to 31 December 2026;
55.95p from 1 January 2027 (SI 2026/164 as amended by SI 2026/555); and the Hydrocarbon Oil
Duties Act 1979 rate of 57.95p from 1 March 2027. Budget 2025 states that rates
will be uprated by RPI from April 2027, and HM Treasury's Budget 2025 costing
dates this from 1 April 2027. That uprating is policy, not law: HMRC's amended
note of 22 May 2026 says final rates will be confirmed at Budget 2026. No
official source names the RPI measure. The model applies the previous calendar
52.95p a litre from 23 March 2022, continued by annual orders to 31 December 2026
(SI 2026/164 as amended by SI 2026/555). Those orders then stepped to 55.95p on
1 January 2027 and to the Hydrocarbon Oil Duties Act 1979 rate of 57.95p on
1 March 2027. Budget 2026 (paragraph 6.211) cancelled both steps and kept the
cut to 1 July 2027. Its costing (page 13) says: "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." That is policy, not law. The OBR's October 2026 EFO (paragraph 3.19)
puts the rate at 60.59p from 1 July 2027: RPI growth in the year to 2027 Q1
(4.5565%, economy Table 1.7) on the 57.95p pre-cut rate. The model
uses that figure, and `calculate_fuel_duty_rates.py` refuses to write any
other July rate. From 1 April 2028, each step applies the previous calendar
year's RPI growth from the OBR forecast in
`gov.economic_assumptions.yoy_growth.obr.rpi` on each 1 April, rounded to the
nearest hundredth of a penny. The steps to 1 April 2031 are written out by
`calculate_fuel_duty_rates.py`, and a test fails when they fall out of date
with the RPI forecast. Later steps come from the parameter's uprating metadata.
`gov.economic_assumptions.yoy_growth.obr.rpi`, rounded to the nearest
hundredth of a penny. The script writes the steps to 1 April 2031, and a test
fails when they fall out of date with the RPI forecast. After a new EFO, set
the script's July rate and RPI growth to its forecast and rerun it. Later steps come from the parameter's uprating metadata.
The RPI index ends in 2039, so the last step is 1 April 2040.

An annual reform names a model year and replaces the rate for all of it. For
Expand Down
11 changes: 10 additions & 1 deletion policyengine_uk/data/fiscal_partition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,7 @@ exclusions:
- {variable: married_couples_allowance_deduction, kind: component, head: income_tax, note: "Inside capped_mcad."}
- {variable: other_tax_credits, kind: component, head: income_tax, note: "A tax reduction, subtracted inside income_tax."}
- {variable: property_finance_cost_relief, kind: component, head: income_tax, note: "A tax reduction, subtracted inside income_tax."}
- {variable: pension_tax_allowance, kind: component, head: income_tax, note: "A tax reduction, subtracted inside income_tax."}
- {variable: basic_rate_earned_income_tax, kind: assessment, head: income_tax, note: "Earned income tax by band; earned_income_tax does not read it."}
- {variable: higher_rate_earned_income_tax, kind: assessment, head: income_tax, note: "As above."}
- {variable: add_rate_earned_income_tax, kind: assessment, head: income_tax, note: "As above."}
Expand Down Expand Up @@ -1257,7 +1258,7 @@ spending_heads:
totals: [gov_spending, household_benefits]
sign: nonnegative
caseload: false
# Cost-of-living and energy support (none in force at current law)
# Cost-of-living and energy support
- id: cost_of_living_support_payment
label: Cost-of-living support payment
variable: cost_of_living_support_payment
Expand All @@ -1274,6 +1275,14 @@ spending_heads:
totals: [gov_spending, household_benefits]
sign: nonnegative
zero_at_baseline: expected
# Paid in 2026-27 only (Budget 2026), so not zero at current law.
- id: household_energy_payment
label: Household Energy Payment
variable: household_energy_payment
entity: household
report_group: cost_of_living_support
totals: [gov_spending, household_benefits]
sign: nonnegative
- id: epg_subsidy
label: Energy Price Guarantee subsidy
variable: epg_subsidy
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
description: Share of the fiscal year in which Carer's Allowance tapers on earnings above the limit instead of stopping in full.
values:
# The taper "will begin within the 2030-31 financial year, with a precise
# start date confirmed in due course" (policy costings, page 16). Until DWP
# confirms the date, the model starts it on 6 October 2030, the middle of
# 2030-31. fiscal_year_blend day-weights the year, so 2030-31 carries 182
# of its 365 days. Change the date here when DWP confirms it.
0001-01-01: 0
2030-10-06: 1
metadata:
unit: /1
period: year
fiscal_year_blend: true
label: Carer's Allowance earnings taper share of year
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: Countries in which Carer's Allowance tapers on earnings above the limit. Scotland pays Carer Support Payment instead, and Northern Ireland keeps the withdrawal in full.
values:
0001-01-01:
- ENGLAND
- WALES
metadata:
unit: list
period: year
label: Carer's Allowance earnings taper countries
reference:
- title: Budget 2026, paragraph 6.13 (the taper will "apply in England and Wales")
href: https://assets.publishing.service.gov.uk/media/6ae1ec57bdb574cf1c9b3f12/E03668986_HMT_Budget_2026_ELAY__2_.pdf#page=116
Loading
Loading