policyengine-uk 2.39.1__py3-none-any.whl → 2.40.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- policyengine_uk/__init__.py +0 -4
- policyengine_uk/data/__init__.py +4 -1
- policyengine_uk/data/dataset_schema.py +116 -3
- policyengine_uk/data/economic_assumptions.py +174 -171
- policyengine_uk/data/uprating_indices.yaml +87 -0
- policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml +232 -26
- policyengine_uk/system.py +22 -4
- policyengine_uk/tests/microsimulation/reforms_config.yaml +2 -2
- policyengine_uk/variables/gov/local_authorities/domestic_rates.py +0 -14
- {policyengine_uk-2.39.1.data → policyengine_uk-2.40.0.data}/data/share/openfisca/openfisca-country-template/CHANGELOG.md +22 -0
- {policyengine_uk-2.39.1.dist-info → policyengine_uk-2.40.0.dist-info}/METADATA +2 -2
- {policyengine_uk-2.39.1.dist-info → policyengine_uk-2.40.0.dist-info}/RECORD +16 -17
- policyengine_uk/data/uprating_growth_factors.csv +0 -83
- policyengine_uk/tests/policy/baseline/gov/local_authorities/domestic_rates.yaml +0 -7
- {policyengine_uk-2.39.1.data → policyengine_uk-2.40.0.data}/data/share/openfisca/openfisca-country-template/LICENSE +0 -0
- {policyengine_uk-2.39.1.data → policyengine_uk-2.40.0.data}/data/share/openfisca/openfisca-country-template/README.md +0 -0
- {policyengine_uk-2.39.1.dist-info → policyengine_uk-2.40.0.dist-info}/WHEEL +0 -0
- {policyengine_uk-2.39.1.dist-info → policyengine_uk-2.40.0.dist-info}/licenses/LICENSE +0 -0
policyengine_uk/__init__.py
CHANGED
@@ -13,9 +13,5 @@ from policyengine_uk.system import (
|
|
13
13
|
from pathlib import Path
|
14
14
|
import os
|
15
15
|
from policyengine_core.taxbenefitsystems import TaxBenefitSystem
|
16
|
-
from policyengine_uk.data.economic_assumptions import (
|
17
|
-
BASELINE_GROWFACTORS,
|
18
|
-
apply_growth_factors,
|
19
|
-
)
|
20
16
|
|
21
17
|
REPO = Path(__file__).parent
|
policyengine_uk/data/__init__.py
CHANGED
@@ -8,7 +8,7 @@ from pathlib import Path
|
|
8
8
|
import h5py
|
9
9
|
|
10
10
|
|
11
|
-
class
|
11
|
+
class UKSingleYearDataset:
|
12
12
|
person: pd.DataFrame
|
13
13
|
benunit: pd.DataFrame
|
14
14
|
household: pd.DataFrame
|
@@ -61,6 +61,7 @@ class UKDataset:
|
|
61
61
|
|
62
62
|
self.data_format = "arrays"
|
63
63
|
self.tables = (self.person, self.benunit, self.household)
|
64
|
+
self.table_names = ("person", "benunit", "household")
|
64
65
|
|
65
66
|
def save(self, file_path: str):
|
66
67
|
with pd.HDFStore(file_path) as f:
|
@@ -80,10 +81,11 @@ class UKDataset:
|
|
80
81
|
return data
|
81
82
|
|
82
83
|
def copy(self):
|
83
|
-
return
|
84
|
+
return UKSingleYearDataset(
|
84
85
|
person=self.person.copy(),
|
85
86
|
benunit=self.benunit.copy(),
|
86
87
|
household=self.household.copy(),
|
88
|
+
fiscal_year=self.time_period,
|
87
89
|
)
|
88
90
|
|
89
91
|
def validate(self):
|
@@ -110,9 +112,120 @@ class UKDataset:
|
|
110
112
|
input_variables, period=fiscal_year
|
111
113
|
)
|
112
114
|
|
113
|
-
return
|
115
|
+
return UKSingleYearDataset(
|
114
116
|
person=entity_dfs["person"],
|
115
117
|
benunit=entity_dfs["benunit"],
|
116
118
|
household=entity_dfs["household"],
|
117
119
|
fiscal_year=fiscal_year,
|
118
120
|
)
|
121
|
+
|
122
|
+
|
123
|
+
class UKMultiYearDataset:
|
124
|
+
def __init__(
|
125
|
+
self,
|
126
|
+
file_path: str = None,
|
127
|
+
datasets: list[UKSingleYearDataset] | None = None,
|
128
|
+
):
|
129
|
+
if datasets is not None:
|
130
|
+
self.datasets = {}
|
131
|
+
for dataset in datasets:
|
132
|
+
if not isinstance(dataset, UKSingleYearDataset):
|
133
|
+
raise TypeError(
|
134
|
+
"All items in datasets must be of type UKSingleYearDataset."
|
135
|
+
)
|
136
|
+
year = int(dataset.time_period[:4])
|
137
|
+
self.datasets[year] = dataset
|
138
|
+
|
139
|
+
if file_path is not None:
|
140
|
+
UKSingleYearDataset.validate_file_path(file_path)
|
141
|
+
with pd.HDFStore(file_path) as f:
|
142
|
+
self.datasets = {}
|
143
|
+
for year in f.keys():
|
144
|
+
if year.startswith("/person/"):
|
145
|
+
fiscal_year = int(year.split("/")[2])
|
146
|
+
person_df = f[year]
|
147
|
+
benunit_df = f[f"/benunit/{fiscal_year}"]
|
148
|
+
household_df = f[f"/household/{fiscal_year}"]
|
149
|
+
self.datasets[fiscal_year] = UKSingleYearDataset(
|
150
|
+
person=person_df,
|
151
|
+
benunit=benunit_df,
|
152
|
+
household=household_df,
|
153
|
+
fiscal_year=fiscal_year,
|
154
|
+
)
|
155
|
+
|
156
|
+
self.data_format = "time_period_arrays"
|
157
|
+
self.time_period = list(sorted(self.datasets.keys()))[0]
|
158
|
+
|
159
|
+
def get_year(self, fiscal_year: int) -> UKSingleYearDataset:
|
160
|
+
if fiscal_year in self.datasets:
|
161
|
+
return self.datasets[fiscal_year]
|
162
|
+
else:
|
163
|
+
raise ValueError(f"No dataset found for year {fiscal_year}.")
|
164
|
+
|
165
|
+
def __getitem__(self, fiscal_year: int):
|
166
|
+
return self.get_year(fiscal_year)
|
167
|
+
|
168
|
+
def save(self, file_path: str):
|
169
|
+
Path(file_path).unlink(
|
170
|
+
missing_ok=True
|
171
|
+
) # Remove existing file if it exists
|
172
|
+
with pd.HDFStore(file_path) as f:
|
173
|
+
for year, dataset in self.datasets.items():
|
174
|
+
f.put(
|
175
|
+
f"person/{year}",
|
176
|
+
dataset.person,
|
177
|
+
format="table",
|
178
|
+
data_columns=True,
|
179
|
+
)
|
180
|
+
f.put(
|
181
|
+
f"benunit/{year}",
|
182
|
+
dataset.benunit,
|
183
|
+
format="table",
|
184
|
+
data_columns=True,
|
185
|
+
)
|
186
|
+
f.put(
|
187
|
+
f"household/{year}",
|
188
|
+
dataset.household,
|
189
|
+
format="table",
|
190
|
+
data_columns=True,
|
191
|
+
)
|
192
|
+
f.put(
|
193
|
+
f"time_period/{year}",
|
194
|
+
pd.Series([year]),
|
195
|
+
format="table",
|
196
|
+
data_columns=True,
|
197
|
+
)
|
198
|
+
|
199
|
+
def copy(self):
|
200
|
+
new_datasets = {
|
201
|
+
year: dataset.copy() for year, dataset in self.datasets.items()
|
202
|
+
}
|
203
|
+
return UKMultiYearDataset(datasets=list(new_datasets.values()))
|
204
|
+
|
205
|
+
@staticmethod
|
206
|
+
def validate_file_path(file_path: str):
|
207
|
+
if not file_path.endswith(".h5"):
|
208
|
+
raise ValueError(
|
209
|
+
"File path must end with '.h5' for UKMultiYearDataset."
|
210
|
+
)
|
211
|
+
if not Path(file_path).exists():
|
212
|
+
raise FileNotFoundError(f"File not found: {file_path}")
|
213
|
+
|
214
|
+
# Check if the file contains datasets for multiple years
|
215
|
+
with h5py.File(file_path, "r") as f:
|
216
|
+
if not any(key.startswith("/person/") for key in f.keys()):
|
217
|
+
raise ValueError("No person dataset found in the file.")
|
218
|
+
if not any(key.startswith("/benunit/") for key in f.keys()):
|
219
|
+
raise ValueError("No benunit dataset found in the file.")
|
220
|
+
if not any(key.startswith("/household/") for key in f.keys()):
|
221
|
+
raise ValueError("No household dataset found in the file.")
|
222
|
+
|
223
|
+
def load(self):
|
224
|
+
data = {}
|
225
|
+
for year, dataset in self.datasets.items():
|
226
|
+
for df in (dataset.person, dataset.benunit, dataset.household):
|
227
|
+
for col in df.columns:
|
228
|
+
if col not in data:
|
229
|
+
data[col] = {}
|
230
|
+
data[col][year] = df[col].values
|
231
|
+
return data
|
@@ -1,181 +1,184 @@
|
|
1
|
-
import
|
1
|
+
from policyengine_uk.data import UKMultiYearDataset, UKSingleYearDataset
|
2
|
+
from policyengine_uk.system import system
|
3
|
+
import yaml
|
4
|
+
from policyengine_core.parameters import ParameterNode
|
2
5
|
from pathlib import Path
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
def create_policyengine_uprating_factors_table(print_diff=True):
|
10
|
-
from policyengine_uk.system import system
|
11
|
-
|
12
|
-
df = pd.DataFrame()
|
13
|
-
|
14
|
-
variable_names = []
|
15
|
-
years = []
|
16
|
-
yoy_values = []
|
17
|
-
|
18
|
-
parameter_by_variable = {}
|
19
|
-
|
20
|
-
for variable in system.variables.values():
|
21
|
-
if variable.uprating is not None:
|
22
|
-
parameter = system.parameters.get_child(
|
23
|
-
variable.uprating.replace("indices", "yoy_growth")
|
24
|
-
)
|
25
|
-
parameter_by_variable[variable.name] = parameter.name
|
26
|
-
for year in range(START_YEAR, END_YEAR + 1):
|
27
|
-
variable_names.append(variable.name)
|
28
|
-
years.append(str(year))
|
29
|
-
yoy_values.append(round(parameter(year), 3))
|
30
|
-
|
31
|
-
df["Variable"] = variable_names
|
32
|
-
df["Year"] = years
|
33
|
-
df["Value"] = yoy_values
|
34
|
-
|
35
|
-
# Convert to there is a column for each year
|
36
|
-
df = df.pivot(index="Variable", columns="Year", values="Value")
|
37
|
-
df = df.sort_values("Variable")
|
38
|
-
|
39
|
-
file_path = Path(__file__).parent / "uprating_growth_factors.csv"
|
40
|
-
|
41
|
-
# Read old CSV if it exists
|
42
|
-
old_df = None
|
43
|
-
if file_path.exists():
|
44
|
-
old_df = pd.read_csv(file_path, index_col=0)
|
45
|
-
# Ensure all columns are strings in old_df
|
46
|
-
old_df.columns = old_df.columns.astype(str)
|
47
|
-
|
48
|
-
# Prepare new dataframe
|
49
|
-
df["Parameter"] = df.index.map(parameter_by_variable)
|
50
|
-
df = df[
|
51
|
-
["Parameter"] + [str(year) for year in range(START_YEAR, END_YEAR + 1)]
|
52
|
-
]
|
53
|
-
|
54
|
-
# Print diff if old CSV existed and print_diff is True
|
55
|
-
if old_df is not None and print_diff:
|
56
|
-
print_csv_diff(old_df, df)
|
57
|
-
# Save new CSV
|
58
|
-
df.to_csv(file_path)
|
59
|
-
|
60
|
-
return pd.read_csv(file_path)
|
61
|
-
|
62
|
-
|
63
|
-
def print_csv_diff(old_df, new_df):
|
64
|
-
"""Print differences between old and new dataframes."""
|
65
|
-
print("\n" + "=" * 80)
|
66
|
-
print("CSV diff report")
|
67
|
-
print("=" * 80)
|
68
|
-
|
69
|
-
# Check for new rows
|
70
|
-
new_rows = set(new_df.index) - set(old_df.index)
|
71
|
-
if new_rows:
|
72
|
-
print(f"\n✅ New rows added ({len(new_rows)}):")
|
73
|
-
for row in sorted(new_rows):
|
74
|
-
print(f" - {row}")
|
75
|
-
|
76
|
-
# Check for deleted rows
|
77
|
-
deleted_rows = set(old_df.index) - set(new_df.index)
|
78
|
-
if deleted_rows:
|
79
|
-
print(f"\n❌ Rows deleted ({len(deleted_rows)}):")
|
80
|
-
for row in sorted(deleted_rows):
|
81
|
-
print(f" - {row}")
|
82
|
-
|
83
|
-
# Check for changed values
|
84
|
-
common_rows = set(old_df.index) & set(new_df.index)
|
85
|
-
common_cols = set(old_df.columns) & set(new_df.columns)
|
86
|
-
|
87
|
-
changes = []
|
88
|
-
for row in common_rows:
|
89
|
-
for col in common_cols:
|
90
|
-
old_val = old_df.loc[row, col]
|
91
|
-
new_val = new_df.loc[row, col]
|
92
|
-
|
93
|
-
# Handle NaN values
|
94
|
-
if pd.isna(old_val) and pd.isna(new_val):
|
95
|
-
continue
|
96
|
-
elif pd.isna(old_val) or pd.isna(new_val):
|
97
|
-
changes.append((row, col, old_val, new_val))
|
98
|
-
elif old_val != new_val:
|
99
|
-
changes.append((row, col, old_val, new_val))
|
100
|
-
|
101
|
-
if changes:
|
102
|
-
print(f"\n🔄 Value changes ({len(changes)}):")
|
103
|
-
print(
|
104
|
-
f"{'Variable':<30} {'Column':<15} {'Old value':<15} {'New value':<15}"
|
105
|
-
)
|
106
|
-
print("-" * 75)
|
107
|
-
for row, col, old_val, new_val in sorted(changes):
|
108
|
-
old_str = str(old_val) if not pd.isna(old_val) else "NaN"
|
109
|
-
new_str = str(new_val) if not pd.isna(new_val) else "NaN"
|
110
|
-
print(f"{row:<30} {str(col):<15} {old_str:<15} {new_str:<15}")
|
111
|
-
|
112
|
-
# Check for new columns
|
113
|
-
new_cols = set(new_df.columns) - set(old_df.columns)
|
114
|
-
if new_cols:
|
115
|
-
print(f"\n✅ New columns added ({len(new_cols)}):")
|
116
|
-
for col in sorted(new_cols):
|
117
|
-
print(f" - {col}")
|
118
|
-
|
119
|
-
# Check for deleted columns
|
120
|
-
deleted_cols = set(old_df.columns) - set(new_df.columns)
|
121
|
-
if deleted_cols:
|
122
|
-
print(f"\n❌ Columns deleted ({len(deleted_cols)}):")
|
123
|
-
for col in sorted(deleted_cols):
|
124
|
-
print(f" - {col}")
|
125
|
-
|
126
|
-
if not (new_rows or deleted_rows or changes or new_cols or deleted_cols):
|
127
|
-
print("\n✨ No changes detected - CSV is identical!")
|
128
|
-
|
129
|
-
print("\n" + "=" * 80 + "\n")
|
130
|
-
|
131
|
-
|
132
|
-
def convert_yoy_growth_to_index(
|
133
|
-
growth_factors: pd.DataFrame,
|
134
|
-
):
|
135
|
-
"""
|
136
|
-
Convert year-on-year growth factors to an index.
|
137
|
-
"""
|
138
|
-
growth_factors = growth_factors.copy()
|
139
|
-
# Get the first year column (skip 'Variable' and 'Parameter' columns)
|
140
|
-
year_columns = [
|
141
|
-
col
|
142
|
-
for col in growth_factors.columns
|
143
|
-
if col not in ["Variable", "Parameter"]
|
144
|
-
]
|
145
|
-
index = growth_factors[year_columns[0]] * 0 + 1
|
146
|
-
for year in year_columns:
|
147
|
-
index *= 1 + growth_factors[year]
|
148
|
-
growth_factors[year] = index
|
149
|
-
return growth_factors
|
150
|
-
|
151
|
-
|
152
|
-
def apply_growth_factors(
|
153
|
-
dataset: UKDataset,
|
154
|
-
growth_factors: pd.DataFrame,
|
155
|
-
start_year: int,
|
156
|
-
end_year: int,
|
6
|
+
import numpy as np
|
7
|
+
|
8
|
+
|
9
|
+
def apply_uprating(
|
10
|
+
dataset: UKMultiYearDataset,
|
157
11
|
):
|
158
|
-
|
159
|
-
end_year = str(end_year)
|
12
|
+
# Apply uprating to the dataset.
|
160
13
|
dataset = dataset.copy()
|
161
|
-
growth_factors_indices = convert_yoy_growth_to_index(growth_factors)
|
162
|
-
for i in range(len(growth_factors)):
|
163
|
-
variable = growth_factors["Variable"].values[i]
|
164
|
-
start_index = growth_factors_indices[start_year].values[i]
|
165
|
-
end_index = growth_factors_indices[end_year].values[i]
|
166
14
|
|
167
|
-
|
168
|
-
|
169
|
-
|
15
|
+
if not isinstance(dataset, UKMultiYearDataset):
|
16
|
+
raise TypeError("dataset must be of type UKMultiYearDataset.")
|
17
|
+
|
18
|
+
for year in dataset.datasets.keys():
|
19
|
+
if year == min(dataset.datasets.keys()):
|
20
|
+
continue # Don't uprate the first year
|
21
|
+
current_year = dataset.datasets[year]
|
22
|
+
prev_year = dataset.datasets[year - 1]
|
23
|
+
apply_single_year_uprating(current_year, prev_year, system.parameters)
|
170
24
|
|
171
25
|
return dataset
|
172
26
|
|
173
27
|
|
174
|
-
|
175
|
-
|
176
|
-
|
28
|
+
def apply_single_year_uprating(
|
29
|
+
current_year: UKSingleYearDataset,
|
30
|
+
previous_year: UKSingleYearDataset,
|
31
|
+
parameters: ParameterNode,
|
32
|
+
):
|
33
|
+
# Apply uprating to a single year dataset.
|
34
|
+
|
35
|
+
# First, apply standard variable-YoY growth based uprating.
|
36
|
+
|
37
|
+
with open(Path(__file__).parent / "uprating_indices.yaml", "r") as f:
|
38
|
+
uprating = yaml.safe_load(f)
|
39
|
+
for index_name, variables in uprating.items():
|
40
|
+
index_rel_change = parameters.get_child(index_name)(
|
41
|
+
current_year.time_period
|
42
|
+
)
|
43
|
+
for variable in variables:
|
44
|
+
for table_name, df in zip(
|
45
|
+
current_year.table_names, current_year.tables
|
46
|
+
):
|
47
|
+
if variable in df.columns:
|
48
|
+
prev_year_value = getattr(previous_year, table_name)[
|
49
|
+
variable
|
50
|
+
]
|
51
|
+
current_year_value = prev_year_value * index_rel_change
|
52
|
+
getattr(current_year, table_name)[
|
53
|
+
variable
|
54
|
+
] = current_year_value
|
55
|
+
|
56
|
+
# Next, apply custom uprating.
|
57
|
+
|
58
|
+
# Council Tax is uprated by OBR forecasts/outturns by country.
|
59
|
+
|
60
|
+
current_year = uprate_council_tax(current_year, previous_year, parameters)
|
61
|
+
|
62
|
+
# Rent is uprated by OBR forecasts/outturns by region.
|
63
|
+
|
64
|
+
current_year = uprate_rent(current_year, previous_year, parameters)
|
65
|
+
|
66
|
+
current_year.validate()
|
67
|
+
|
68
|
+
return current_year
|
177
69
|
|
178
70
|
|
179
|
-
|
180
|
-
|
181
|
-
|
71
|
+
def uprate_council_tax(
|
72
|
+
current_year: UKSingleYearDataset,
|
73
|
+
previous_year: UKSingleYearDataset,
|
74
|
+
parameters: ParameterNode,
|
75
|
+
):
|
76
|
+
# Uprate council tax for a single year dataset.
|
77
|
+
|
78
|
+
council_tax = (
|
79
|
+
parameters.gov.economic_assumptions.yoy_growth.obr.council_tax
|
80
|
+
)
|
81
|
+
region = current_year.household["region"]
|
82
|
+
country = np.select(
|
83
|
+
[
|
84
|
+
region == "WALES",
|
85
|
+
region == "SCOTLAND",
|
86
|
+
region == "NORTHERN IRELAND",
|
87
|
+
],
|
88
|
+
[
|
89
|
+
"WALES",
|
90
|
+
"SCOTLAND",
|
91
|
+
"NORTHERN IRELAND",
|
92
|
+
],
|
93
|
+
default="ENGLAND",
|
94
|
+
)
|
95
|
+
growth_rates = np.select(
|
96
|
+
[
|
97
|
+
country == "ENGLAND",
|
98
|
+
country == "WALES",
|
99
|
+
country == "SCOTLAND",
|
100
|
+
],
|
101
|
+
[
|
102
|
+
council_tax.england(current_year.time_period),
|
103
|
+
council_tax.wales(current_year.time_period),
|
104
|
+
council_tax.scotland(current_year.time_period),
|
105
|
+
],
|
106
|
+
default=0,
|
107
|
+
)
|
108
|
+
|
109
|
+
current_year.household["council_tax"] = previous_year.household[
|
110
|
+
"council_tax"
|
111
|
+
] * (1 + growth_rates)
|
112
|
+
return current_year
|
113
|
+
|
114
|
+
|
115
|
+
def uprate_rent(
|
116
|
+
current_year: UKSingleYearDataset,
|
117
|
+
previous_year: UKSingleYearDataset,
|
118
|
+
parameters: ParameterNode,
|
119
|
+
):
|
120
|
+
# Uprate rent for a single year dataset.
|
121
|
+
is_private_rented = (
|
122
|
+
current_year.household["tenure_type"] == "RENT_PRIVATELY"
|
123
|
+
)
|
124
|
+
region = current_year.household["region"]
|
125
|
+
prev_rent = previous_year.household["rent"]
|
126
|
+
growth = parameters.gov.economic_assumptions.yoy_growth
|
127
|
+
year = int(current_year.time_period)
|
128
|
+
social_rent_growth = growth.obr.social_rent(year)
|
129
|
+
|
130
|
+
if year < 2022:
|
131
|
+
raise ValueError(
|
132
|
+
"Rent uprating is not supported for years before 2022."
|
133
|
+
)
|
134
|
+
elif year < 2025:
|
135
|
+
# We have regional growth rates for private rent.
|
136
|
+
regional_growth_rate = growth.ons.private_rental_prices(year)[
|
137
|
+
region.values
|
138
|
+
]
|
139
|
+
current_year.household["rent"] = np.where(
|
140
|
+
is_private_rented,
|
141
|
+
prev_rent * (1 + regional_growth_rate),
|
142
|
+
prev_rent * (1 + social_rent_growth),
|
143
|
+
)
|
144
|
+
elif year >= 2025:
|
145
|
+
# Back out private rent growth from the aggregate
|
146
|
+
# from latest English Housing Survey data
|
147
|
+
PRIVATE_RENTAL_HOUSEHOLDS = 0.188
|
148
|
+
SOCIAL_RENTAL_HOUSEHOLDS = 0.164
|
149
|
+
|
150
|
+
total_rental_households = (
|
151
|
+
PRIVATE_RENTAL_HOUSEHOLDS + SOCIAL_RENTAL_HOUSEHOLDS
|
152
|
+
)
|
153
|
+
|
154
|
+
private_weight = PRIVATE_RENTAL_HOUSEHOLDS / total_rental_households
|
155
|
+
social_weight = SOCIAL_RENTAL_HOUSEHOLDS / total_rental_households
|
156
|
+
|
157
|
+
aggregate_growth = growth.obr.rent(year)
|
158
|
+
private_rent_growth = (
|
159
|
+
aggregate_growth - social_weight * social_rent_growth
|
160
|
+
) / private_weight
|
161
|
+
print(
|
162
|
+
f"Backed out private rent growth: {private_rent_growth:.1%} in {year}"
|
163
|
+
)
|
164
|
+
print(f"OBR aggregate rent growth: {aggregate_growth:.1%} in {year}")
|
165
|
+
print(f"Social rent growth: {social_rent_growth:.1%} in {year}")
|
166
|
+
|
167
|
+
current_year.household["rent"] = np.where(
|
168
|
+
is_private_rented,
|
169
|
+
prev_rent * (1 + private_rent_growth),
|
170
|
+
prev_rent * (1 + social_rent_growth),
|
171
|
+
)
|
172
|
+
|
173
|
+
return current_year
|
174
|
+
|
175
|
+
|
176
|
+
def reset_uprating(
|
177
|
+
dataset: UKMultiYearDataset,
|
178
|
+
):
|
179
|
+
# Remove all uprating from the dataset.
|
180
|
+
|
181
|
+
first_year = min(dataset.datasets.keys())
|
182
|
+
for year in dataset.datasets:
|
183
|
+
if year != first_year:
|
184
|
+
dataset.datasets[year] = dataset.datasets[first_year].copy()
|
@@ -0,0 +1,87 @@
|
|
1
|
+
gov.economic_assumptions.yoy_growth.obr.average_earnings:
|
2
|
+
- employee_pension_contributions
|
3
|
+
- employer_pension_contributions
|
4
|
+
- employment_income
|
5
|
+
- employment_income_before_lsr
|
6
|
+
- personal_pension_contributions
|
7
|
+
- student_loan_repayments
|
8
|
+
gov.economic_assumptions.yoy_growth.obr.consumer_price_index:
|
9
|
+
- afcs_reported
|
10
|
+
- alcohol_and_tobacco_consumption
|
11
|
+
- attendance_allowance_reported
|
12
|
+
- bsp_reported
|
13
|
+
- carers_allowance_reported
|
14
|
+
- child_benefit_reported
|
15
|
+
- child_tax_credit_reported
|
16
|
+
- childcare_expenses
|
17
|
+
- clothing_and_footwear_consumption
|
18
|
+
- communication_consumption
|
19
|
+
- diesel_spending
|
20
|
+
- dla_m_reported
|
21
|
+
- dla_sc_reported
|
22
|
+
- domestic_energy_consumption
|
23
|
+
- education_consumption
|
24
|
+
- esa_contrib_reported
|
25
|
+
- esa_income_reported
|
26
|
+
- food_and_non_alcoholic_beverages_consumption
|
27
|
+
- free_school_fruit_veg
|
28
|
+
- free_school_meals
|
29
|
+
- free_school_milk
|
30
|
+
- health_consumption
|
31
|
+
- household_furnishings_consumption
|
32
|
+
- housing_benefit_reported
|
33
|
+
- housing_water_and_electricity_consumption
|
34
|
+
- iidb_reported
|
35
|
+
- incapacity_benefit_reported
|
36
|
+
- income_support_reported
|
37
|
+
- jsa_contrib_reported
|
38
|
+
- jsa_income_reported
|
39
|
+
- maintenance_expenses
|
40
|
+
- maternity_allowance_reported
|
41
|
+
- miscellaneous_consumption
|
42
|
+
- pension_credit_reported
|
43
|
+
- petrol_spending
|
44
|
+
- pip_dl_reported
|
45
|
+
- pip_m_reported
|
46
|
+
- recreation_consumption
|
47
|
+
- restaurants_and_hotels_consumption
|
48
|
+
- sda_reported
|
49
|
+
- state_pension
|
50
|
+
- state_pension_reported
|
51
|
+
- statutory_maternity_pay
|
52
|
+
- statutory_paternity_pay
|
53
|
+
- statutory_sick_pay
|
54
|
+
- transport_consumption
|
55
|
+
- universal_credit_reported
|
56
|
+
- winter_fuel_allowance_reported
|
57
|
+
- working_tax_credit_reported
|
58
|
+
gov.economic_assumptions.yoy_growth.obr.mortgage_interest:
|
59
|
+
- mortgage_interest_repayment
|
60
|
+
gov.economic_assumptions.yoy_growth.obr.per_capita.gdp:
|
61
|
+
- capital_gains
|
62
|
+
- capital_gains_before_response
|
63
|
+
- corporate_wealth
|
64
|
+
- dividend_income
|
65
|
+
- gross_financial_wealth
|
66
|
+
- lump_sum_income
|
67
|
+
- main_residence_value
|
68
|
+
- maintenance_income
|
69
|
+
- miscellaneous_income
|
70
|
+
- mortgage_capital_repayment
|
71
|
+
- net_financial_wealth
|
72
|
+
- non_residential_property_value
|
73
|
+
- other_investment_income
|
74
|
+
- other_residential_property_value
|
75
|
+
- owned_land
|
76
|
+
- pension_income
|
77
|
+
- private_transfer_income
|
78
|
+
- property_income
|
79
|
+
- savings
|
80
|
+
- savings_interest_income
|
81
|
+
- sublet_income
|
82
|
+
gov.economic_assumptions.yoy_growth.obr.per_capita.mixed_income:
|
83
|
+
- self_employment_income
|
84
|
+
gov.economic_assumptions.yoy_growth.obr.private_pension_index:
|
85
|
+
- private_pension_income
|
86
|
+
gov.economic_assumptions.yoy_growth.ons.population:
|
87
|
+
- household_weight
|
@@ -59,7 +59,7 @@ obr:
|
|
59
59
|
reference:
|
60
60
|
- title: OBR EFO March 2025 (detailed forecast tables, economy, Table 1.6, Row Q)
|
61
61
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
62
|
-
|
62
|
+
|
63
63
|
consumer_price_index:
|
64
64
|
description: Consumer price index year-on-year growth.
|
65
65
|
values:
|
@@ -90,7 +90,7 @@ obr:
|
|
90
90
|
reference:
|
91
91
|
- title: OBR EFO March 2025
|
92
92
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
93
|
-
|
93
|
+
|
94
94
|
non_labour_income:
|
95
95
|
description: Non-labour income year-on-year growth.
|
96
96
|
values:
|
@@ -109,14 +109,14 @@ obr:
|
|
109
109
|
reference:
|
110
110
|
- title: OBR EFO March 2025
|
111
111
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
112
|
-
|
112
|
+
|
113
113
|
council_tax:
|
114
114
|
england:
|
115
|
-
description: Growth in the level
|
115
|
+
description: Growth in the level of council tax receipts in England.
|
116
116
|
values:
|
117
117
|
2023-01-01: 0.051
|
118
118
|
2024-01-01: 0.051
|
119
|
-
2025-01-01: 0.
|
119
|
+
2025-01-01: 0.050
|
120
120
|
2026-01-01: 0.043
|
121
121
|
2027-01-01: 0.043
|
122
122
|
2028-01-01: 0.043
|
@@ -124,14 +124,14 @@ obr:
|
|
124
124
|
metadata:
|
125
125
|
unit: /1
|
126
126
|
reference:
|
127
|
-
|
128
|
-
|
127
|
+
- title: OBR EFO March 2025 (2023-2025 based on outturn)
|
128
|
+
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
129
129
|
scotland:
|
130
|
-
description: Growth in the level
|
130
|
+
description: Growth in the level of council tax receipts in Scotland.
|
131
131
|
values:
|
132
|
-
2023-01-01: 0.
|
133
|
-
2024-01-01: 0.
|
134
|
-
2025-01-01: 0.
|
132
|
+
2023-01-01: 0.052
|
133
|
+
2024-01-01: 0.001
|
134
|
+
2025-01-01: 0.088
|
135
135
|
2026-01-01: 0.027
|
136
136
|
2027-01-01: 0.027
|
137
137
|
2028-01-01: 0.027
|
@@ -139,14 +139,14 @@ obr:
|
|
139
139
|
metadata:
|
140
140
|
unit: /1
|
141
141
|
reference:
|
142
|
-
|
143
|
-
|
142
|
+
- title: OBR EFO March 2025 (2023-2025 based on outturn)
|
143
|
+
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
144
144
|
wales:
|
145
|
-
description: Growth in the level
|
145
|
+
description: Growth in the level of council tax receipts in Wales.
|
146
146
|
values:
|
147
|
-
2023-01-01: 0.
|
148
|
-
2024-01-01: 0.
|
149
|
-
2025-01-01: 0.
|
147
|
+
2023-01-01: 0.058
|
148
|
+
2024-01-01: 0.077
|
149
|
+
2025-01-01: 0.072
|
150
150
|
2026-01-01: 0.041
|
151
151
|
2027-01-01: 0.041
|
152
152
|
2028-01-01: 0.041
|
@@ -154,10 +154,9 @@ obr:
|
|
154
154
|
metadata:
|
155
155
|
unit: /1
|
156
156
|
reference:
|
157
|
-
|
158
|
-
|
157
|
+
- title: OBR EFO March 2025 (2023-2025 based on outturn)
|
158
|
+
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
159
159
|
|
160
|
-
|
161
160
|
per_capita:
|
162
161
|
gdp:
|
163
162
|
description: Per capita GDP year-on-year growth.
|
@@ -177,7 +176,7 @@ obr:
|
|
177
176
|
reference:
|
178
177
|
- title: OBR EFO March 2025
|
179
178
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
180
|
-
|
179
|
+
|
181
180
|
mixed_income:
|
182
181
|
description: Per capita mixed income year-on-year growth.
|
183
182
|
values:
|
@@ -196,7 +195,7 @@ obr:
|
|
196
195
|
reference:
|
197
196
|
- title: OBR EFO March 2025
|
198
197
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
199
|
-
|
198
|
+
|
200
199
|
non_labour_income:
|
201
200
|
description: Per capita non-labour income year-on-year growth.
|
202
201
|
values:
|
@@ -215,7 +214,7 @@ obr:
|
|
215
214
|
reference:
|
216
215
|
- title: OBR EFO March 2025
|
217
216
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
218
|
-
|
217
|
+
|
219
218
|
house_prices:
|
220
219
|
description: House prices year-on-year growth.
|
221
220
|
values:
|
@@ -234,7 +233,7 @@ obr:
|
|
234
233
|
reference:
|
235
234
|
- title: OBR EFO March 2025
|
236
235
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
237
|
-
|
236
|
+
|
238
237
|
mortgage_interest:
|
239
238
|
description: Mortgage interest year-on-year growth.
|
240
239
|
values:
|
@@ -253,12 +252,12 @@ obr:
|
|
253
252
|
reference:
|
254
253
|
- title: OBR EFO March 2025
|
255
254
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
256
|
-
|
255
|
+
|
257
256
|
social_rent:
|
258
257
|
description: Rent year-on-year growth (CPI+1%, one year lagged).
|
259
258
|
values:
|
260
259
|
2022-01-01: 0.050
|
261
|
-
2023-01-01: 0.
|
260
|
+
2023-01-01: 0.070
|
262
261
|
2024-01-01: 0.067
|
263
262
|
2025-01-01: 0.033
|
264
263
|
2026-01-01: 0.042
|
@@ -271,6 +270,25 @@ obr:
|
|
271
270
|
reference:
|
272
271
|
- title: OBR EFO March 2025
|
273
272
|
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
273
|
+
rent:
|
274
|
+
description: Rent year-on-year growth, private and social (ONS series D7GQ).
|
275
|
+
|
276
|
+
values:
|
277
|
+
2022-01-01: 0.041
|
278
|
+
2023-01-01: 0.063
|
279
|
+
2024-01-01: 0.074
|
280
|
+
2025-01-01: 0.057
|
281
|
+
2026-01-01: 0.036
|
282
|
+
2027-01-01: 0.027
|
283
|
+
2028-01-01: 0.023
|
284
|
+
2029-01-01: 0.024
|
285
|
+
|
286
|
+
metadata:
|
287
|
+
unit: /1
|
288
|
+
label: rent growth
|
289
|
+
reference:
|
290
|
+
- title: OBR EFO March 2025
|
291
|
+
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2025/
|
274
292
|
|
275
293
|
ons:
|
276
294
|
population:
|
@@ -291,6 +309,177 @@ ons:
|
|
291
309
|
reference:
|
292
310
|
- title: ONS Population Projections
|
293
311
|
href: https://www.ons.gov.uk/
|
312
|
+
private_rental_prices:
|
313
|
+
UNITED_KINGDOM:
|
314
|
+
description: Private rental prices year-on-year growth in United Kingdom.
|
315
|
+
values:
|
316
|
+
2022-01-01: 0.050398
|
317
|
+
2023-01-01: 0.080953
|
318
|
+
2024-01-01: 0.086137
|
319
|
+
metadata:
|
320
|
+
unit: /1
|
321
|
+
label: united kingdom private rental prices growth
|
322
|
+
reference:
|
323
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
324
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
325
|
+
ENGLAND:
|
326
|
+
description: Private rental prices year-on-year growth in England.
|
327
|
+
values:
|
328
|
+
2022-01-01: 0.048965
|
329
|
+
2023-01-01: 0.078981
|
330
|
+
2024-01-01: 0.08694
|
331
|
+
metadata:
|
332
|
+
unit: /1
|
333
|
+
label: england private rental prices growth
|
334
|
+
reference:
|
335
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
336
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
337
|
+
WALES:
|
338
|
+
description: Private rental prices year-on-year growth in Wales.
|
339
|
+
values:
|
340
|
+
2022-01-01: 0.049352
|
341
|
+
2023-01-01: 0.090369
|
342
|
+
2024-01-01: 0.082778
|
343
|
+
metadata:
|
344
|
+
unit: /1
|
345
|
+
label: wales private rental prices growth
|
346
|
+
reference:
|
347
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
348
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
349
|
+
SCOTLAND:
|
350
|
+
description: Private rental prices year-on-year growth in Scotland.
|
351
|
+
values:
|
352
|
+
2022-01-01: 0.062296
|
353
|
+
2023-01-01: 0.107356
|
354
|
+
2024-01-01: 0.073967
|
355
|
+
metadata:
|
356
|
+
unit: /1
|
357
|
+
label: scotland private rental prices growth
|
358
|
+
reference:
|
359
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
360
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
361
|
+
NORTHERN_IRELAND:
|
362
|
+
description: Private rental prices year-on-year growth in Northern Ireland.
|
363
|
+
values:
|
364
|
+
2022-01-01: 0.08965
|
365
|
+
2023-01-01: 0.089197
|
366
|
+
2024-01-01: 0.090822
|
367
|
+
metadata:
|
368
|
+
unit: /1
|
369
|
+
label: northern ireland private rental prices growth
|
370
|
+
reference:
|
371
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
372
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
373
|
+
NORTH_EAST:
|
374
|
+
description: Private rental prices year-on-year growth in North East.
|
375
|
+
values:
|
376
|
+
2022-01-01: 0.042495
|
377
|
+
2023-01-01: 0.055804
|
378
|
+
2024-01-01: 0.073116
|
379
|
+
metadata:
|
380
|
+
unit: /1
|
381
|
+
label: north east private rental prices growth
|
382
|
+
reference:
|
383
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
384
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
385
|
+
NORTH_WEST:
|
386
|
+
description: Private rental prices year-on-year growth in North West.
|
387
|
+
values:
|
388
|
+
2022-01-01: 0.062822
|
389
|
+
2023-01-01: 0.07947
|
390
|
+
2024-01-01: 0.094498
|
391
|
+
metadata:
|
392
|
+
unit: /1
|
393
|
+
label: north west private rental prices growth
|
394
|
+
reference:
|
395
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
396
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
397
|
+
YORKSHIRE:
|
398
|
+
description:
|
399
|
+
Private rental prices year-on-year growth in Yorkshire and The
|
400
|
+
Humber.
|
401
|
+
values:
|
402
|
+
2022-01-01: 0.05625
|
403
|
+
2023-01-01: 0.072295
|
404
|
+
2024-01-01: 0.063506
|
405
|
+
metadata:
|
406
|
+
unit: /1
|
407
|
+
label: yorkshire and the humber private rental prices growth
|
408
|
+
reference:
|
409
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
410
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
411
|
+
EAST_MIDLANDS:
|
412
|
+
description: Private rental prices year-on-year growth in East Midlands.
|
413
|
+
values:
|
414
|
+
2022-01-01: 0.053405
|
415
|
+
2023-01-01: 0.067085
|
416
|
+
2024-01-01: 0.087371
|
417
|
+
metadata:
|
418
|
+
unit: /1
|
419
|
+
label: east midlands private rental prices growth
|
420
|
+
reference:
|
421
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
422
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
423
|
+
WEST_MIDLANDS:
|
424
|
+
description: Private rental prices year-on-year growth in West Midlands.
|
425
|
+
values:
|
426
|
+
2022-01-01: 0.043415
|
427
|
+
2023-01-01: 0.077504
|
428
|
+
2024-01-01: 0.084456
|
429
|
+
metadata:
|
430
|
+
unit: /1
|
431
|
+
label: west midlands private rental prices growth
|
432
|
+
reference:
|
433
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
434
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
435
|
+
EAST_OF_ENGLAND:
|
436
|
+
description: Private rental prices year-on-year growth in East of England.
|
437
|
+
values:
|
438
|
+
2022-01-01: 0.044759
|
439
|
+
2023-01-01: 0.058668
|
440
|
+
2024-01-01: 0.077271
|
441
|
+
metadata:
|
442
|
+
unit: /1
|
443
|
+
label: east of england private rental prices growth
|
444
|
+
reference:
|
445
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
446
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
447
|
+
LONDON:
|
448
|
+
description: Private rental prices year-on-year growth in London.
|
449
|
+
values:
|
450
|
+
2022-01-01: 0.042829
|
451
|
+
2023-01-01: 0.095307
|
452
|
+
2024-01-01: 0.103031
|
453
|
+
metadata:
|
454
|
+
unit: /1
|
455
|
+
label: london private rental prices growth
|
456
|
+
reference:
|
457
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
458
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
459
|
+
SOUTH_EAST:
|
460
|
+
description: Private rental prices year-on-year growth in South East.
|
461
|
+
values:
|
462
|
+
2022-01-01: 0.050307
|
463
|
+
2023-01-01: 0.071938
|
464
|
+
2024-01-01: 0.077617
|
465
|
+
metadata:
|
466
|
+
unit: /1
|
467
|
+
label: south east private rental prices growth
|
468
|
+
reference:
|
469
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
470
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
471
|
+
SOUTH_WEST:
|
472
|
+
description: Private rental prices year-on-year growth in South West.
|
473
|
+
values:
|
474
|
+
2022-01-01: 0.059055
|
475
|
+
2023-01-01: 0.069351
|
476
|
+
2024-01-01: 0.06671
|
477
|
+
metadata:
|
478
|
+
unit: /1
|
479
|
+
label: south west private rental prices growth
|
480
|
+
reference:
|
481
|
+
- title: ONS Index of Private Housing Rental Prices, UK monthly estimates
|
482
|
+
href: https://www.ons.gov.uk/economy/inflationandpriceindices/datasets/indexofprivatehousingrentalpricesreferencetables
|
294
483
|
ofwat:
|
295
484
|
water_bills:
|
296
485
|
description: Water and sewerage bills year-on-year growth.
|
@@ -311,3 +500,20 @@ ofwat:
|
|
311
500
|
href: https://www.ofwat.gov.uk/price-review/
|
312
501
|
- title: Ofwat 2025-26 media statement
|
313
502
|
href: https://www.ofwat.gov.uk/average-bills-2025-26-press-statement/
|
503
|
+
finance_ni:
|
504
|
+
domestic_rates:
|
505
|
+
description: Domestic rates year-on-year growth.
|
506
|
+
values:
|
507
|
+
2024-01-01: 0.050
|
508
|
+
2025-01-01: 0.047
|
509
|
+
2026-01-01: 0.0
|
510
|
+
2027-01-01: 0.0
|
511
|
+
2028-01-01: 0.0
|
512
|
+
2029-01-01: 0.0
|
513
|
+
2020-01-01: 0.0
|
514
|
+
metadata:
|
515
|
+
unit: /1
|
516
|
+
label: domestic rates growth
|
517
|
+
reference:
|
518
|
+
- title: Finance NI (based on outturn)
|
519
|
+
href: https://www.finance-ni.gov.uk/
|
policyengine_uk/system.py
CHANGED
@@ -6,7 +6,10 @@ from policyengine_core.simulations import (
|
|
6
6
|
Simulation as CoreSimulation,
|
7
7
|
Microsimulation as CoreMicrosimulation,
|
8
8
|
)
|
9
|
-
from policyengine_uk.data.dataset_schema import
|
9
|
+
from policyengine_uk.data.dataset_schema import (
|
10
|
+
UKSingleYearDataset,
|
11
|
+
UKMultiYearDataset,
|
12
|
+
)
|
10
13
|
from policyengine_core.tools.hugging_face import download_huggingface_dataset
|
11
14
|
|
12
15
|
import pandas as pd
|
@@ -183,10 +186,25 @@ class Microsimulation(CoreMicrosimulation):
|
|
183
186
|
if Path(dataset_file_path).exists():
|
184
187
|
if dataset_file_path.endswith(".h5"):
|
185
188
|
try:
|
186
|
-
|
187
|
-
|
189
|
+
UKSingleYearDataset.validate_file_path(
|
190
|
+
dataset_file_path
|
191
|
+
)
|
192
|
+
dataset = UKSingleYearDataset(
|
193
|
+
file_path=dataset_file_path
|
194
|
+
)
|
195
|
+
except:
|
196
|
+
pass
|
197
|
+
|
198
|
+
try:
|
199
|
+
UKMultiYearDataset.validate_file_path(
|
200
|
+
dataset_file_path
|
201
|
+
)
|
202
|
+
dataset = UKMultiYearDataset(
|
203
|
+
file_path=dataset_file_path
|
204
|
+
)
|
188
205
|
except:
|
189
|
-
|
206
|
+
pass
|
207
|
+
dataset = Dataset.from_file(dataset_file_path)
|
190
208
|
|
191
209
|
super().__init__(*args, dataset=dataset, **kwargs)
|
192
210
|
|
@@ -16,7 +16,7 @@ reforms:
|
|
16
16
|
parameters:
|
17
17
|
gov.hmrc.child_benefit.amount.additional: 25
|
18
18
|
- name: Reduce Universal Credit taper rate to 20%
|
19
|
-
expected_impact: -
|
19
|
+
expected_impact: -36.5
|
20
20
|
parameters:
|
21
21
|
gov.dwp.universal_credit.means_test.reduction_rate: 0.2
|
22
22
|
- name: Raise Class 1 main employee NICs rate to 10%
|
@@ -24,7 +24,7 @@ reforms:
|
|
24
24
|
parameters:
|
25
25
|
gov.hmrc.national_insurance.class_1.rates.employee.main: 0.1
|
26
26
|
- name: Raise VAT standard rate by 2pp
|
27
|
-
expected_impact:
|
27
|
+
expected_impact: 18.8
|
28
28
|
parameters:
|
29
29
|
gov.hmrc.vat.standard_rate: 0.22
|
30
30
|
- name: Raise additional rate by 3pp
|
@@ -7,17 +7,3 @@ class domestic_rates(Variable):
|
|
7
7
|
definition_period = YEAR
|
8
8
|
value_type = float
|
9
9
|
unit = GBP
|
10
|
-
|
11
|
-
def formula(household, period, parameters):
|
12
|
-
rates = parameters(period).gov.local_authorities.domestic_rates.rates
|
13
|
-
local_authority = household("local_authority", period)
|
14
|
-
rate_defined = pd.Series(local_authority.decode_to_str()).isin(
|
15
|
-
rates._children
|
16
|
-
)
|
17
|
-
percent = np.zeros(household.count, dtype=float)
|
18
|
-
if any(rate_defined):
|
19
|
-
percent[rate_defined] = rates[local_authority[rate_defined]]
|
20
|
-
main_residence_value = household("main_residence_value", period)
|
21
|
-
return percent * main_residence_value
|
22
|
-
else:
|
23
|
-
return 0
|
@@ -5,6 +5,25 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
7
|
|
8
|
+
## [2.40.0] - 2025-07-21 13:23:31
|
9
|
+
|
10
|
+
### Added
|
11
|
+
|
12
|
+
- UKMultiYearDataset class to handle multiple fiscal years.
|
13
|
+
- Uprating of datasets using the `uprate` method.
|
14
|
+
|
15
|
+
## [2.39.3] - 2025-07-17 12:45:26
|
16
|
+
|
17
|
+
### Fixed
|
18
|
+
|
19
|
+
- NI domestic rates taken as reported.
|
20
|
+
|
21
|
+
## [2.39.2] - 2025-07-17 10:41:08
|
22
|
+
|
23
|
+
### Fixed
|
24
|
+
|
25
|
+
- Use outturn data for council tax growth in England, Scotland, and Wales for 2023-2025.
|
26
|
+
|
8
27
|
## [2.39.1] - 2025-07-16 11:08:29
|
9
28
|
|
10
29
|
### Fixed
|
@@ -1955,6 +1974,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
1955
1974
|
|
1956
1975
|
|
1957
1976
|
|
1977
|
+
[2.40.0]: https://github.com/PolicyEngine/openfisca-uk/compare/2.39.3...2.40.0
|
1978
|
+
[2.39.3]: https://github.com/PolicyEngine/openfisca-uk/compare/2.39.2...2.39.3
|
1979
|
+
[2.39.2]: https://github.com/PolicyEngine/openfisca-uk/compare/2.39.1...2.39.2
|
1958
1980
|
[2.39.1]: https://github.com/PolicyEngine/openfisca-uk/compare/2.39.0...2.39.1
|
1959
1981
|
[2.39.0]: https://github.com/PolicyEngine/openfisca-uk/compare/2.38.2...2.39.0
|
1960
1982
|
[2.38.2]: https://github.com/PolicyEngine/openfisca-uk/compare/2.38.1...2.38.2
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: policyengine-uk
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.40.0
|
4
4
|
Summary: PolicyEngine tax and benefit system for the UK
|
5
5
|
Project-URL: Homepage, https://github.com/PolicyEngine/policyengine-uk
|
6
6
|
Project-URL: Repository, https://github.com/PolicyEngine/policyengine-uk
|
@@ -15,7 +15,7 @@ Classifier: Operating System :: POSIX
|
|
15
15
|
Classifier: Programming Language :: Python
|
16
16
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
17
17
|
Requires-Python: >=3.10
|
18
|
-
Requires-Dist: microdf-python
|
18
|
+
Requires-Dist: microdf-python==0.4.4
|
19
19
|
Requires-Dist: policyengine-core>=3.6.4
|
20
20
|
Provides-Extra: dev
|
21
21
|
Requires-Dist: black; extra == 'dev'
|
@@ -1,13 +1,13 @@
|
|
1
|
-
policyengine_uk/__init__.py,sha256=
|
1
|
+
policyengine_uk/__init__.py,sha256=ud1uvjBep-lcZKBWUd0eo-PAT_FM92_PqUlDp5OYl4g,355
|
2
2
|
policyengine_uk/entities.py,sha256=9yUbkUWQr3WydNE-gHhUudG97HGyXIZY3dkgQ6Z3t9A,1212
|
3
3
|
policyengine_uk/model_api.py,sha256=D5OuQpQbdBXiF6r7LvCLWjsTkAWtkeBJWz2ebsJ-GN0,189
|
4
4
|
policyengine_uk/modelled_policies.yaml,sha256=TLhvmkuI9ip-Fjq63n66RzDErCkN8K4BzY6XLxLMtFg,463
|
5
5
|
policyengine_uk/repo.py,sha256=-dqpIMUD7UUj94ql9XwaMrFJUYKvNhFQ_9uj83Z8uh0,55
|
6
|
-
policyengine_uk/system.py,sha256=
|
7
|
-
policyengine_uk/data/__init__.py,sha256=
|
8
|
-
policyengine_uk/data/dataset_schema.py,sha256=
|
9
|
-
policyengine_uk/data/economic_assumptions.py,sha256=
|
10
|
-
policyengine_uk/data/
|
6
|
+
policyengine_uk/system.py,sha256=wsMtkWDneSTJ2M4UZcBWTjZ-0rRyt2IfTbp255mQ7cM,9550
|
7
|
+
policyengine_uk/data/__init__.py,sha256=J0bZ3WnvPzZ4qfVLYcwOc4lziMUMdbcMqJ3xwjoekbM,101
|
8
|
+
policyengine_uk/data/dataset_schema.py,sha256=C178v_9OGqx2WXRFfpi3WzdekFuuTB0ulHyTleHB4hM,8357
|
9
|
+
policyengine_uk/data/economic_assumptions.py,sha256=YOwoY2Id5Zrhvz5hFbjZEc-maPCzNvNgsVD7xXzu5v4,5825
|
10
|
+
policyengine_uk/data/uprating_indices.yaml,sha256=kQtfeGWyqge4dbJhs0iF4kTMqovuegill_Zfs8orJi4,2394
|
11
11
|
policyengine_uk/parameters/gov/README.md,sha256=bHUep1_2pLHD3Or8SwjStOWXDIbW9OuYxOd4ml8IXcM,13
|
12
12
|
policyengine_uk/parameters/gov/benefit_uprating_cpi.yaml,sha256=2zOSdJeUhDZYYsKE2vLkcK-UbKNoOSVwfac0QIAp02g,250
|
13
13
|
policyengine_uk/parameters/gov/contrib/README.md,sha256=b282dmUFAmj7cXSfiMLyE81q5Y0Gnehy-6atLus-ESs,70
|
@@ -313,7 +313,7 @@ policyengine_uk/parameters/gov/dwp/winter_fuel_payment/eligibility/taxable_incom
|
|
313
313
|
policyengine_uk/parameters/gov/economic_assumptions/create_economic_assumption_indices.py,sha256=Z4dYghSit5gXo4V3wBpnLIc9zgTX4cfEyb_TUlJkTGY,1937
|
314
314
|
policyengine_uk/parameters/gov/economic_assumptions/lag_average_earnings.py,sha256=ksHcyUQkLAJmKizCeSg8j0hzPc7ajgIvbExWLgCra4U,701
|
315
315
|
policyengine_uk/parameters/gov/economic_assumptions/lag_cpi.py,sha256=IdtaMLN1_OSu-RFZsQV8vBlbOvXsPlnNlsOuinRHrxg,642
|
316
|
-
policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml,sha256
|
316
|
+
policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml,sha256=-jlJMshUlEw2D26ToNoToxidGmXdRECl8-n2owy9o2E,16734
|
317
317
|
policyengine_uk/parameters/gov/hmrc/README.md,sha256=nkHVZl6lsjI93sR8uC7wAbul3_61wJrsP08iaW8f5lk,7
|
318
318
|
policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml,sha256=1oMbevU0ESHR51mcAG39POd1DA1FgPUep4hL6ojj-P4,2049
|
319
319
|
policyengine_uk/parameters/gov/hmrc/business_rates/README.md,sha256=9ud50i_gMjGj6VymF-nzFDTzkFRMMJx6ybpLwbWzvpI,17
|
@@ -528,7 +528,7 @@ policyengine_uk/reforms/policyengine/disable_simulated_benefits.py,sha256=siEs1E
|
|
528
528
|
policyengine_uk/tests/test_parameter_metadata.py,sha256=_2w2dSokAf5Jskye_KIL8eh80N7yIrUszlmqnZtwQws,450
|
529
529
|
policyengine_uk/tests/code_health/test_variables.py,sha256=9Y-KpmzhyRGy9eEqocK9z91NXHX5QIF3mDMNGvegb7Q,1398
|
530
530
|
policyengine_uk/tests/microsimulation/README.md,sha256=1toB1Z06ynlUielTrsAaeo9Vb-c3ZrB3tbbR4E1xUGk,3924
|
531
|
-
policyengine_uk/tests/microsimulation/reforms_config.yaml,sha256=
|
531
|
+
policyengine_uk/tests/microsimulation/reforms_config.yaml,sha256=lHBXxuYDtpS5oTfpZEv-9E-o-UZiCn7zf824xvQQ4_s,1086
|
532
532
|
policyengine_uk/tests/microsimulation/test_reform_impacts.py,sha256=xM3M2pclEhA9JIFpnuiPMy1fEBFOKcSzroRPk73FPls,2635
|
533
533
|
policyengine_uk/tests/microsimulation/test_validity.py,sha256=RWhbSKrnrZCNQRVmGYlM8hnpe1_Blo5_xP8vr8u3kV0,694
|
534
534
|
policyengine_uk/tests/microsimulation/update_reform_impacts.py,sha256=2pxp2RNLWxV4CesGKKHmg3qBs79Jq2Jcq3GJIBk4euU,4824
|
@@ -667,7 +667,6 @@ policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_child
|
|
667
667
|
policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_income_condition.yaml,sha256=qpqIYXa4ubJQiuPZnKR2kLk7or_tZhbYMu6Y4em2hi0,1718
|
668
668
|
policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_program_eligible.yaml,sha256=ve_hP9HjD1Gjnscdz71ZU7bRFRlTGmpi_lXBOHkhySU,805
|
669
669
|
policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_work_condition.yaml,sha256=kZTgT961Ia33PniUQ6yUeUwa3cVD_-rr3HYvdnbkoFM,3456
|
670
|
-
policyengine_uk/tests/policy/baseline/gov/local_authorities/domestic_rates.yaml,sha256=pYQJD-a2wj6gnLpq9gXAjo1-Ee_hFgJIQterHE2o278,158
|
671
670
|
policyengine_uk/tests/policy/baseline/gov/treasury/energy_bills_rebate/council_tax_rebate.yaml,sha256=tl-dRq-75a7T0ymQ_xwklmqgNqvt3O_orcAYMumqpvU,449
|
672
671
|
policyengine_uk/tests/policy/baseline/gov/treasury/energy_bills_rebate/energy_bills_credit.yaml,sha256=TUHCdT1wvtVY9s4aFMU1nhDMQlPZOBRG6yyTaYY12uQ,114
|
673
672
|
policyengine_uk/tests/policy/baseline/gov/treasury/energy_bills_rebate/energy_bills_rebate.yaml,sha256=w5EpdQMaIiqGVhJkKwoJU3T2T1uE2BvaZAVFT7ioTz0,279
|
@@ -1078,7 +1077,7 @@ policyengine_uk/variables/gov/hmrc/tax_free_childcare/conditions/tax_free_childc
|
|
1078
1077
|
policyengine_uk/variables/gov/hmrc/tax_free_childcare/conditions/tax_free_childcare_program_eligible.py,sha256=GZHeYz5tHXwy7iqo-naYXYUNVA6Y1u4bEMQVVS_vN_0,493
|
1079
1078
|
policyengine_uk/variables/gov/hmrc/tax_free_childcare/conditions/tax_free_childcare_work_condition.py,sha256=zuUx7TP8xw79d9WQtY6QO1O2tPjPYQz-PJQ9V7sBbw4,1806
|
1080
1079
|
policyengine_uk/variables/gov/local_authorities/README.md,sha256=XVumqnA1PuLF98hZ3hTQkhU6j2ehCIQHLkkC8Ha16Q8,20
|
1081
|
-
policyengine_uk/variables/gov/local_authorities/domestic_rates.py,sha256=
|
1080
|
+
policyengine_uk/variables/gov/local_authorities/domestic_rates.py,sha256=meAt9FNmcXaxAmZ08nc1ixQUbUDuTqd9Oi6nqfY7yas,193
|
1082
1081
|
policyengine_uk/variables/gov/revenue_scotland/expected_lbtt.py,sha256=xR6hatdjVGf9eBOKOovyKUs-rqVdpDN9TL9ywn4nIwM,538
|
1083
1082
|
policyengine_uk/variables/gov/revenue_scotland/land_and_buildings_transaction_tax.py,sha256=ZwH7XQHYkw8Iw3OtFZeHgFL3R2Z4RkGNGsaJ8GdxGw0,544
|
1084
1083
|
policyengine_uk/variables/gov/revenue_scotland/lbtt_liable.py,sha256=nZ0w0eDFEeJSHYzo2GUvL9BOLyNBjcCEhyC24i3sE7s,486
|
@@ -1368,10 +1367,10 @@ policyengine_uk/variables/misc/spi_imputed.py,sha256=iPVlBF_TisM0rtKvO-3-PQ2UYCe
|
|
1368
1367
|
policyengine_uk/variables/misc/uc_migrated.py,sha256=zFNcUJaO8gwmbL1iY9GKgUt3G6J9yrCraqBV_5dCvlM,306
|
1369
1368
|
policyengine_uk/variables/misc/categories/lower_middle_or_higher.py,sha256=C54tHYz2DmOyvQYCC1bF8RJwRZinhAq_e3aYC-9F5fM,157
|
1370
1369
|
policyengine_uk/variables/misc/categories/lower_or_higher.py,sha256=81NIbLLabRr9NwjpUZDuV8IV8_mqmp5NM-CZvt55TwE,129
|
1371
|
-
policyengine_uk-2.
|
1372
|
-
policyengine_uk-2.
|
1373
|
-
policyengine_uk-2.
|
1374
|
-
policyengine_uk-2.
|
1375
|
-
policyengine_uk-2.
|
1376
|
-
policyengine_uk-2.
|
1377
|
-
policyengine_uk-2.
|
1370
|
+
policyengine_uk-2.40.0.data/data/share/openfisca/openfisca-country-template/CHANGELOG.md,sha256=2G0rtwRDXgWe4UU8Fkg_BOscYoCOzL0seIj5y3dr7JA,57061
|
1371
|
+
policyengine_uk-2.40.0.data/data/share/openfisca/openfisca-country-template/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
1372
|
+
policyengine_uk-2.40.0.data/data/share/openfisca/openfisca-country-template/README.md,sha256=PCy7LRLdUDQS8U4PaeHeBVnyBZAqHv1dAVDDvEcom20,1976
|
1373
|
+
policyengine_uk-2.40.0.dist-info/METADATA,sha256=zjGj02SFc6sRVUcXo3SjQpYAcXpt8fiOSs6xO3DR58I,3502
|
1374
|
+
policyengine_uk-2.40.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
1375
|
+
policyengine_uk-2.40.0.dist-info/licenses/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
|
1376
|
+
policyengine_uk-2.40.0.dist-info/RECORD,,
|
@@ -1,83 +0,0 @@
|
|
1
|
-
Variable,Parameter,2022,2023,2024,2025,2026,2027,2028,2029
|
2
|
-
afcs_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
3
|
-
alcohol_and_tobacco_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
4
|
-
attendance_allowance_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
5
|
-
bsp_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
6
|
-
capital_gains,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
7
|
-
capital_gains_before_response,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
8
|
-
carers_allowance_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
9
|
-
child_benefit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
10
|
-
child_tax_credit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
11
|
-
childcare_expenses,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
12
|
-
clothing_and_footwear_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
13
|
-
communication_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
14
|
-
corporate_wealth,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
15
|
-
council_tax,gov.economic_assumptions.yoy_growth.obr.council_tax,0.053,0.056,0.064,0.046,0.045,0.046,0.045,0.045
|
16
|
-
diesel_spending,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
17
|
-
dividend_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
18
|
-
dla_m_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
19
|
-
dla_sc_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
20
|
-
domestic_energy_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
21
|
-
education_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
22
|
-
employee_pension_contributions,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
23
|
-
employer_pension_contributions,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
24
|
-
employment_income,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
25
|
-
employment_income_before_lsr,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
26
|
-
esa_contrib_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
27
|
-
esa_income_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
28
|
-
food_and_non_alcoholic_beverages_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
29
|
-
free_school_fruit_veg,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
30
|
-
free_school_meals,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
31
|
-
free_school_milk,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
32
|
-
gross_financial_wealth,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
33
|
-
health_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
34
|
-
household_furnishings_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
35
|
-
household_weight,gov.economic_assumptions.yoy_growth.ons.population,0.003,0.014,0.01,0.011,0.007,0.008,0.004,0.005
|
36
|
-
housing_benefit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
37
|
-
housing_water_and_electricity_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
38
|
-
iidb_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
39
|
-
incapacity_benefit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
40
|
-
income_support_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
41
|
-
jsa_contrib_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
42
|
-
jsa_income_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
43
|
-
lump_sum_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
44
|
-
main_residence_value,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
45
|
-
maintenance_expenses,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
46
|
-
maintenance_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
47
|
-
maternity_allowance_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
48
|
-
miscellaneous_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
49
|
-
miscellaneous_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
50
|
-
mortgage_capital_repayment,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
51
|
-
mortgage_interest_repayment,gov.economic_assumptions.yoy_growth.obr.mortgage_interest,0.262,0.485,0.221,0.136,0.126,0.082,0.042,0.047
|
52
|
-
net_financial_wealth,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
53
|
-
non_residential_property_value,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
54
|
-
other_investment_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
55
|
-
other_residential_property_value,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
56
|
-
owned_land,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
57
|
-
pension_credit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
58
|
-
pension_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
59
|
-
personal_pension_contributions,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
60
|
-
petrol_spending,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
61
|
-
pip_dl_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
62
|
-
pip_m_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
63
|
-
private_pension_income,gov.economic_assumptions.yoy_growth.obr.private_pension_index,0.05,0.05,0.05,0.047,0.037,0.022,0.021,0.023
|
64
|
-
private_transfer_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
65
|
-
property_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
66
|
-
recreation_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
67
|
-
rent,gov.economic_assumptions.yoy_growth.obr.rent,0.04,0.063,0.074,0.057,0.036,0.027,0.023,0.024
|
68
|
-
restaurants_and_hotels_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
69
|
-
savings,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
70
|
-
savings_interest_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
71
|
-
sda_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
72
|
-
self_employment_income,gov.economic_assumptions.yoy_growth.obr.per_capita.mixed_income,0.063,0.024,0.048,0.047,0.031,0.031,0.036,0.038
|
73
|
-
state_pension,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
74
|
-
state_pension_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
75
|
-
statutory_maternity_pay,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
76
|
-
statutory_paternity_pay,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
77
|
-
statutory_sick_pay,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
78
|
-
student_loan_repayments,gov.economic_assumptions.yoy_growth.obr.average_earnings,0.064,0.069,0.047,0.037,0.022,0.021,0.023,0.025
|
79
|
-
sublet_income,gov.economic_assumptions.yoy_growth.obr.per_capita.gdp,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
|
80
|
-
transport_consumption,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
81
|
-
universal_credit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
82
|
-
winter_fuel_allowance_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
83
|
-
working_tax_credit_reported,gov.economic_assumptions.yoy_growth.obr.consumer_price_index,0.1,0.057,0.023,0.032,0.019,0.02,0.02,0.02
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|