Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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/council-tax-population-double-count.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Stop projected council tax counting the growth in households twice (#2067). Each country's council tax series is the growth in its receipts, which already includes growth in the number of Band D equivalent dwellings, while household weights grow with population as well. Each household's bill now grows by its country's receipts growth divided by the growth in household weights, so each country's weighted total grows with its receipts; before, totals outgrew receipts by population growth, 0.4% to 0.7% a year from 2025-26 (2.8% by 2030-31). The 2023-24 and 2024-25 values, which held Band D level growth, now hold receipts outturns: MHCLG's council tax requirement for England, the Scottish Government's net amount billed and the Welsh Government's net collectable debit.
10 changes: 6 additions & 4 deletions docs/book/assumptions/growthfactors.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,15 @@ We use per capita GDP for these variables: `capital_gains`, `capital_gains_badr`

## Council tax

We use the OBR's Council Tax receipts and projections.
We project each country's council tax receipts, net of council tax reduction, with the OBR's forecasts (March 2026 EFO, Expenditure Table 4.1) from 2025-26, and official outturns before then: MHCLG's council tax requirement for England, the Scottish Government's net amount billed and the Welsh Government's net collectable debit.

| Fiscal year | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 |
| Fiscal year | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 | 2030 |
|-------------|------|------|------|------|------|------|------|------|
| Growth rate | 5.3% | 5.6% | 6.4% | 4.6% | 4.5% | 4.6% | 4.5% | 4.5% |
| England | 6.6% | 6.5% | 7.0% | 5.5% | 6.1% | 6.2% | 5.6% | 5.5% |
| Scotland | 6.4% | 2.4% | 3.8% | 3.8% | 3.8% | 3.8% | 3.8% | 3.8% |
| Wales | 7.1% | 9.9% | 7.7% | 7.4% | 7.4% | 7.4% | 7.4% | 7.4% |

We apply this to: `council_tax`
Receipts are the Band D level times the tax base, the number of Band D equivalent dwellings, so they grow with the number of homes as well as with bills. Household weights grow with population, so each household's `council_tax` grows by its country's receipts growth divided by population growth: (1 + receipts growth) / (1 + population growth) − 1. Each country's weighted total then grows with its receipts. Northern Ireland has no council tax (it has domestic rates), so any `council_tax` a dataset gives its households is held flat.

## Mortgage interest

Expand Down
2 changes: 1 addition & 1 deletion docs/book/validation/hbai.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ Each of the variables above is either derived from other variables, or is a dire
| `free_tv_licence_value` | Not directly uprated | Depends on policy parameters |
| `income_tax` | Derived | Calculated based on income and tax policy |
| `national_insurance` | Derived | Calculated based on income and NI policy |
| `council_tax` | gov.obr.council_tax | Uprated based on outturn CT levels by region growth to 2025, then OBR projections of levels by region onwardss |
| `council_tax` | gov.economic_assumptions.yoy_growth.obr.council_tax | Uprated by each country's council tax receipts growth (official outturns to 2024-25, then OBR forecasts) divided by population growth, so each country's weighted total tracks its receipts; held flat in Northern Ireland |
| `domestic_rates` | gov.economic_assumptions.yoy_growth.finance_ni.domestic_rates | Uprated by growth in Northern Ireland's combined regional and district domestic rate poundage to 2026-27, then by an assumed 4.33% a year (2026-27's growth) |
| `employee_pension_contributions` | gov.obr.per_capita.employment_income | Uprated based on per capita employment income growth |
| `personal_pension_contributions` | gov.obr.per_capita.employment_income | Uprated based on per capita employment income growth |
Expand Down
38 changes: 32 additions & 6 deletions policyengine_uk/data/economic_assumptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,12 +407,34 @@ def uprate_residential_property(
return current_year


def household_weight_growth_path(uprating: dict | None = None) -> str:
"""The growth series that projects household weights.

The one ``uprating_indices.yaml`` lists ``household_weight`` under.
"""
uprating = _uprating_index_map() if uprating is None else uprating
paths = [path for path, names in uprating.items() if "household_weight" in names]
if len(paths) != 1:
raise ValueError(
"uprating_indices.yaml must list household_weight under exactly one "
f"growth series, not {paths}"
)
return paths[0]


def uprate_council_tax(
current_year: UKSingleYearDataset,
previous_year: UKSingleYearDataset,
parameters: ParameterNode,
):
# Uprate council tax for a single year dataset.
#
# Each country's series is the growth in its council tax receipts: the
# Band D level times the tax base, the number of Band D equivalent
# dwellings. Household weights grow too, by their own series, so each bill
# grows by receipts growth net of the weights' growth. A country's
# weighted total then grows by its receipts growth. Growing the bills by
# receipts growth counted the growth in households twice (#2067).

council_tax = parameters.gov.economic_assumptions.yoy_growth.obr.council_tax
region = pd.Series(np.asarray(current_year.household["region"]).astype(str))
Expand All @@ -422,16 +444,20 @@ def uprate_council_tax(
"Cannot uprate council tax for unrecognised regions: "
f"{sorted(unrecognised)}"
)
growth_by_region = {
name: 0.0
weight_growth = parameters.get_child(household_weight_growth_path())(
current_year.time_period
)
factor_by_region = {
name: 1.0
if series is None
else council_tax.get_child(series)(current_year.time_period)
else (1 + council_tax.get_child(series)(current_year.time_period))
/ (1 + weight_growth)
for name, series in _COUNCIL_TAX_GROWTH_SERIES.items()
}
growth_rates = region.map(growth_by_region).to_numpy()
factors = region.map(factor_by_region).to_numpy()

current_year.household["council_tax"] = previous_year.household["council_tax"] * (
1 + growth_rates
current_year.household["council_tax"] = (
previous_year.household["council_tax"] * factors
)
return current_year

Expand Down
8 changes: 8 additions & 0 deletions policyengine_uk/parameters/gov/economic_assumptions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,14 @@ threshold by the same rises, up to the last year of
The EFO refresh does not touch `finance_ni.domestic_rates`; OBR does not
publish a Northern Ireland domestic rates bill series (see below).

For `obr.council_tax`, take each country's growth in receipts from
Expenditure Table 4.1, not its "council tax level" row: dataset projection
divides the receipts growth by the growth in household weights itself
(#2067). When a forecast year becomes an outturn, replace it with the growth
in the published liability the comments in `yoy_growth.yaml` name, and add the
figures to `PUBLISHED_OUTTURNS` in
`policyengine_uk/tests/test_council_tax_uprating.py`.

## Northern Ireland domestic rates

`finance_ni.domestic_rates` is the growth in the average Northern Ireland
Expand Down
63 changes: 51 additions & 12 deletions policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -596,13 +596,32 @@ obr:
- title: OBR EFO March 2026 (detailed forecast tables, economy, Table 1.12)
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2026/

# Growth in each country's council tax receipts, net of council tax
# reduction. Receipts are the Band D level times the tax base (Band D
# equivalent dwellings), so they grow with the number of homes as well as
# with bills. Dataset projection grows household weights separately, so it
# grows each household's bill by this series net of the weights' growth
# (uprate_council_tax, #2067). The fiscal year starting in year t is stored
# at t-01-01, as growth over the year before, rounded to 4 decimals.
#
# 2025-2030 are OBR's receipts forecasts. 2023 and 2024 are outturns of the
# liability behind each country's OBR line, net of council tax reduction,
# from the official statistics named below
# (policyengine_uk/tests/test_council_tax_uprating.py recomputes them). They
# are amounts due, not cash collected, so changes in in-year collection
# rates do not move them. Before #2067 these two years held Band D level
# growth instead.
council_tax:
england:
description: Growth in the level of council tax receipts in England.
description: Growth in council tax receipts in England.
values:
# Outturn (2023-2024)
2023-01-01: 0.051
2024-01-01: 0.051
# Outturn (2023-2024): growth in the council tax requirement including
# adult social care and parish precepts (MHCLG, 2025-26 release, Table
# 1): £36,313.2m in 2022-23, £38,718.3m in 2023-24, £41,222.4m in
# 2024-25. OBR's England line is this requirement: its 2024-25 outturn
# is £41.2225bn.
2023-01-01: 0.0662
2024-01-01: 0.0647
# Forecast (2025-2030) from OBR EFO March 2026, Expenditure Table 4.1
2025-01-01: 0.0702
2026-01-01: 0.0545
Expand All @@ -613,14 +632,21 @@ obr:
metadata:
unit: /1
reference:
- title: MHCLG, Council Tax levels set by local authorities in England 2025 to 2026, Table 1 (2023 and 2024)
href: https://www.gov.uk/government/statistics/council-tax-levels-set-by-local-authorities-in-england-2025-to-2026
- title: OBR EFO March 2026 (detailed forecast tables, expenditure, Table 4.1)
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2026/
scotland:
description: Growth in the level of council tax receipts in Scotland.
description: Growth in council tax receipts in Scotland.
values:
# Outturn (2023-2024)
2023-01-01: 0.052
2024-01-01: 0.001
# Outturn (2023-2024): growth in the net amount of council tax billed,
# after council tax reduction and excluding water and sewerage charges
# (Scottish Government, Council Tax Collection Statistics 2024-25,
# Figure 1): £2,825.6m in 2022-23, £3,005.8m in 2023-24, £3,076.8m in
# 2024-25. OBR's 2024-25 outturn, £2.9384bn, is the amount of that
# year's bills received by 31 March 2025.
2023-01-01: 0.0638
2024-01-01: 0.0236
# Forecast (2025-2030) from OBR EFO March 2026, Expenditure Table 4.1
2025-01-01: 0.0384
2026-01-01: 0.0384
Expand All @@ -631,14 +657,21 @@ obr:
metadata:
unit: /1
reference:
- title: Scottish Government, Council Tax Collection Statistics 2024-25, Figure 1 (2023 and 2024)
href: https://www.gov.scot/publications/council-tax-collection-statistics-2024-25/pages/3/
- title: OBR EFO March 2026 (detailed forecast tables, expenditure, Table 4.1)
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2026/
wales:
description: Growth in the level of council tax receipts in Wales.
description: Growth in council tax receipts in Wales.
values:
# Outturn (2023-2024)
2023-01-01: 0.058
2024-01-01: 0.077
# Outturn (2023-2024): growth in the net collectable council tax debit,
# net of the council tax reduction scheme (Welsh Government, Council
# tax collection rates, Table 2 total debits of each year's release):
# £1,981.6m in 2022-23, £2,122.1m in 2023-24, £2,331.6m in 2024-25.
# OBR's 2024-25 outturn, £2.2284bn, is the amount of that year's bills
# collected in the year.
2023-01-01: 0.0709
2024-01-01: 0.0987
# Forecast (2025-2030) from OBR EFO March 2026, Expenditure Table 4.1
2025-01-01: 0.0773
2026-01-01: 0.0743
Expand All @@ -649,6 +682,12 @@ obr:
metadata:
unit: /1
reference:
- title: Welsh Government, Council tax collection rates April 2022 to March 2023 (2023)
href: https://www.gov.wales/council-tax-collection-rates-april-2022-march-2023
- title: Welsh Government, Council tax collection rates April 2023 to March 2024 (2023 and 2024)
href: https://www.gov.wales/council-tax-collection-rates-april-2023-march-2024
- title: Welsh Government, Council tax collection rates April 2024 to March 2025 (2024)
href: https://www.gov.wales/council-tax-collection-rates-april-2024-march-2025
- title: OBR EFO March 2026 (detailed forecast tables, expenditure, Table 4.1)
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2026/

Expand Down
Loading
Loading