Skip to content

Commit 1c23026

Browse files
Improve rent uprating (#1227)
* Improve rent uprating * Add safety check * Add links to docs
1 parent 5ff50fd commit 1c23026

6 files changed

Lines changed: 62 additions & 17 deletions

File tree

changelog_entry.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- bump: minor
2+
changes:
3+
fixed:
4+
- Uprating for rent split by private and social rented sectors.

docs/book/assumptions/growthfactors.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Economic assumptions
22

3-
We project economic variables using year-over-year growth rates stored in `parameters/gov/economic_assumptions/yoy_growth.yaml`. We generate index values from these rates to update household variables. We source all values from the OBR's Economic and Fiscal Outlook (March 2025) unless we specify otherwise.
3+
We project economic variables using year-over-year growth rates stored in `parameters/gov/economic_assumptions/yoy_growth.yaml`. We generate index values from these rates to update household variables. We source all values from the OBR's Economic and Fiscal Outlook ([March 2025](https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/)) unless we specify otherwise.
44

55
## Consumer price index
66

@@ -95,7 +95,7 @@ We apply this to: `self_employment_income`
9595

9696
## Population
9797

98-
We use ONS population projections.
98+
We use ONS population [projections](https://www.ons.gov.uk/peoplepopulationandcommunity/populationandmigration/populationprojections/bulletins/nationalpopulationprojections/2022based).
9999

100100
| Fiscal year | 2022 | 2023 | 2024 | 2025 | 2026 | 2027 | 2028 | 2029 |
101101
|-------------|------|------|------|------|------|------|------|------|

policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -254,21 +254,20 @@ obr:
254254
- title: OBR EFO March 2025
255255
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
256256

257-
rent:
258-
description: Rent year-on-year growth.
257+
social_rent:
258+
description: Rent year-on-year growth (CPI+1%, one year lagged).
259259
values:
260-
2021-01-01: 0.018
261-
2022-01-01: 0.04
262-
2023-01-01: 0.063
263-
2024-01-01: 0.074
264-
2025-01-01: 0.057
265-
2026-01-01: 0.036
266-
2027-01-01: 0.027
267-
2028-01-01: 0.023
268-
2029-01-01: 0.024
260+
2022-01-01: 0.050
261+
2023-01-01: 0.110
262+
2024-01-01: 0.067
263+
2025-01-01: 0.033
264+
2026-01-01: 0.042
265+
2027-01-01: 0.029
266+
2028-01-01: 0.030
267+
2029-01-01: 0.030
269268
metadata:
270269
unit: /1
271-
label: rent growth
270+
label: social rent growth
272271
reference:
273272
- title: OBR EFO March 2025
274273
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/

policyengine_uk/variables/household/consumption/benunit_rent.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ class benunit_rent(Variable):
55
value_type = float
66
entity = BenUnit
77
label = "Rent"
8-
documentation = "Gross rent that members of this family are liable for"
8+
documentation = "Gross rent that members of this family are liable for (social housing only)"
99
definition_period = YEAR
1010
unit = GBP
11-
11+
uprating = "gov.economic_assumptions.indices.obr.social_rent"
1212
adds = ["personal_rent"]

policyengine_uk/variables/input/consumption/property/council_tax.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def formula(household, period, parameters):
1515
# We don't have growth rates for council tax by nation before this.
1616
return 0
1717

18+
if household.simulation.dataset is None:
19+
return 0
20+
1821
data_year = household.simulation.dataset.time_period
1922

2023
original_ct = household("council_tax", data_year)

policyengine_uk/variables/input/rent.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,43 @@ class rent(Variable):
1111
value_type = float
1212
unit = GBP
1313
quantity_type = FLOW
14-
uprating = "gov.economic_assumptions.indices.obr.rent"
14+
15+
def formula(household, period, parameters):
16+
if period.start.year < 2023:
17+
# We don't have growth rates for rent before this.
18+
return 0
19+
20+
if household.simulation.dataset is None:
21+
return 0
22+
23+
data_year = household.simulation.dataset.time_period
24+
original_rent = household("rent", data_year)
25+
tenure_type = household("tenure_type", period).decode_to_str()
26+
27+
is_social_rent = (tenure_type == "RENT_FROM_COUNCIL") | (
28+
tenure_type == "RENT_FROM_HA"
29+
)
30+
31+
is_private_rent = tenure_type == "RENT_PRIVATELY"
32+
33+
obr = parameters.gov.economic_assumptions.indices.obr
34+
35+
private_rent_uprating = obr.lagged_average_earnings(
36+
period
37+
) / obr.lagged_average_earnings(data_year)
38+
social_rent_uprating = obr.social_rent(period) / obr.social_rent(
39+
data_year
40+
)
41+
42+
return select(
43+
[
44+
is_social_rent,
45+
is_private_rent,
46+
True,
47+
],
48+
[
49+
original_rent * social_rent_uprating,
50+
original_rent * private_rent_uprating,
51+
original_rent,
52+
],
53+
)

0 commit comments

Comments
 (0)