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
2 changes: 1 addition & 1 deletion docs/book/assumptions/growthfactors.ipynb

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/book/validation/hbai.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ Each of the variables above is either derived from other variables, or is a dire
|----------|-------|-------|
| `employment_income` | gov.obr.per_capita.employment_income | Uprated based on OBR per capita employment income projections |
| `self_employment_income` | gov.obr.per_capita.mixed_income | Uprated based on OBR per capita mixed income projections |
| `dividend_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `dividend_income` | gov.economic_assumptions.indices.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `hbai_benefits` | Various | Different benefits use different uprating indices, mostly gov.obr.consumer_price_index |
| `private_pension_income` | gov.obr.private_pension_index | Uprated based on OBR private pension index |
| `savings_interest_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `property_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `maintenance_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `savings_interest_income` | gov.economic_assumptions.indices.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `property_income` | gov.economic_assumptions.indices.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `maintenance_income` | gov.economic_assumptions.indices.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
| `student_payments` | Not uprated directly | Currently no specific uprating for student payments |
| `free_school_meals` |gov.obr.consumer_price_index | Uprated based on CPI inflation |
| `free_school_fruit_veg` | gov.obr.consumer_price_index | Uprated based on CPI inflation |
Expand All @@ -65,7 +65,7 @@ Each of the variables above is either derived from other variables, or is a dire
| `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 |
| `maintenance_expenses` | gov.obr.consumer_price_index | Uprated based on CPI inflation |
| `student_loan_repayments` | gov.obr.average_earnings | Uprated based on OBR average earnings projections |
| `student_loan_repayments` | gov.economic_assumptions.indices.obr.average_earnings | Uprated based on OBR average earnings projections |
| `rent` | gov.obr.rent | Uprated based on OBR rent projections |
| `water_and_sewerage_charges` | gov.obr.consumer_price_index | Uprated based on CPI as proxy |
| `mortgage_interest_repayment` | gov.obr.mortgage_interest | Uprated based on OBR mortgage interest projections |
Expand Down
38 changes: 19 additions & 19 deletions policyengine_uk/data/uprating_growth_factors.csv
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ afcs_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,
alcohol_and_tobacco_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
attendance_allowance_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
bsp_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
capital_gains,gov.obr.non_labour_income,0,0.072,0.138,0.066,0.08,0.068,0.056,0.045,0.034,0.035
capital_gains_before_response,gov.obr.non_labour_income,0,0.072,0.138,0.066,0.08,0.068,0.056,0.045,0.034,0.035
capital_gains,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.072,0.138,0.066,0.08,0.068,0.056,0.045,0.034,0.035
capital_gains_before_response,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.072,0.138,0.066,0.08,0.068,0.056,0.045,0.034,0.035
carers_allowance_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
child_benefit_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
child_tax_credit_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
Expand All @@ -14,15 +14,15 @@ communication_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023
corporate_wealth,household.wealth.corporate_wealth,0,0.0,-0.109,0.004,0.03,0.031,0.035,0.035,0.035,0.0
council_tax,gov.obr.council_tax,0,0.0,0.0,0.0,0.064,0.046,0.045,0.046,0.045,0.045
diesel_spending,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
dividend_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
dividend_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
dla_m_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
dla_sc_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
domestic_energy_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
education_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
employee_pension_contributions,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employer_pension_contributions,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employment_income,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employment_income_before_lsr,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employee_pension_contributions,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employer_pension_contributions,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employment_income,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
employment_income_before_lsr,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
esa_contrib_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
esa_income_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
food_and_non_alcoholic_beverages_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
Expand All @@ -40,43 +40,43 @@ incapacity_benefit_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.0
income_support_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
jsa_contrib_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
jsa_income_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
lump_sum_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
lump_sum_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
main_residence_value,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
maintenance_expenses,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
maintenance_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
maintenance_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
maternity_allowance_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
miscellaneous_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
miscellaneous_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
miscellaneous_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
mortgage_capital_repayment,gov.obr.house_prices,0,0.082,0.083,-0.01,0.027,0.024,0.025,0.026,0.023,0.024
mortgage_interest_repayment,gov.obr.mortgage_interest,0,0.003,0.262,0.485,0.221,0.136,0.126,0.082,0.042,0.047
net_financial_wealth,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
non_residential_property_value,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
other_investment_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
other_investment_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
other_residential_property_value,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
owned_land,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
pension_credit_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
pension_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
personal_pension_contributions,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
pension_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
personal_pension_contributions,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
petrol_spending,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
pip_dl_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
pip_m_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
private_pension_income,gov.obr.per_capita.non_labour_income,0,0.068,0.134,0.052,0.069,0.057,0.049,0.038,0.029,0.03
private_transfer_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
property_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
private_pension_income,gov.obr.private_pension_index,0,0.05,0.05,0.05,0.033,0.042,0.03,0.03,0.029,0.028
private_transfer_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
property_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
recreation_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
rent,gov.obr.rent,0,0.018,0.04,0.063,0.074,0.057,0.036,0.027,0.023,0.024
restaurants_and_hotels_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
savings,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
savings_interest_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
savings_interest_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
sda_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
self_employment_income,gov.obr.per_capita.mixed_income,0,0.06,0.063,0.024,0.048,0.047,0.031,0.031,0.036,0.038
state_pension,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
state_pension_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
statutory_maternity_pay,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
statutory_paternity_pay,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
statutory_sick_pay,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
student_loan_repayments,gov.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
sublet_income,gov.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
student_loan_repayments,gov.economic_assumptions.indices.obr.average_earnings,0,0.058,0.065,0.068,0.047,0.038,0.021,0.021,0.023,0.025
sublet_income,gov.economic_assumptions.indices.obr.per_capita.gdp,0,0.125,0.092,0.05,0.038,0.028,0.028,0.031,0.033,0.033
transport_consumption,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
universal_credit_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
winter_fuel_allowance_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
Expand Down
3 changes: 2 additions & 1 deletion policyengine_uk/parameters/gov/benefit_uprating_cpi.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
description: Most recent September CPIH index value, updated for each uprating occurrence (2005=100)
values:
2005-01-01: 100
2010-01-01: 114.48
metadata:
label: Benefit uprating index
uprating: gov.obr.consumer_price_index
uprating: gov.economic_assumptions.indices.obr.consumer_price_index
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
Parameter,
)

YEARS = list(range(2010, 2035))
YEARS = list(range(2020, 2035))


def add_private_pension_uprating_factor(
parameters: ParameterNode,
) -> ParameterNode:
values = {}
rpi = parameters.gov.obr.rpi
last_value = rpi(2008)
rpi = parameters.gov.economic_assumptions.indices.obr.rpi
last_value = rpi(YEARS[0] - 1)
for year in YEARS:
value = rpi(year - 1)
rel_change = value / rpi(year - 2)
Expand All @@ -20,11 +20,13 @@ def add_private_pension_uprating_factor(
last_value = new_index
values[f"{year}-01-01"] = new_index
new_parameter = Parameter(
"gov.obr.private_pension_index",
"gov.economic_assumptions.indices.obr.private_pension_index",
data={
"values": values,
},
)

parameters.gov.obr.add_child("private_pension_index", new_parameter)
parameters.gov.economic_assumptions.indices.obr.add_child(
"private_pension_index", new_parameter
)
return parameters
2 changes: 1 addition & 1 deletion policyengine_uk/parameters/gov/dwp/IIDB/maximum.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
label: Industrial Injuries Disablement Benefit maximum
reference: https://www.gov.uk/industrial-injuries-disablement-benefit/what-youll-get
unit: currency-GBP
uprating: gov.obr.consumer_price_index
uprating: gov.economic_assumptions.indices.obr.consumer_price_index
values:
2015-04-01: 182
2025-04-01:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@


def add_triple_lock(parameters: ParameterNode) -> ParameterNode:
average_earnings = parameters.gov.obr.average_earnings
cpi = parameters.gov.obr.consumer_price_index
obr = parameters.gov.economic_assumptions.indices.obr
average_earnings = obr.average_earnings
cpi = obr.consumer_price_index
min_rate = parameters.gov.dwp.state_pension.triple_lock.minimum_rate

values = {}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from policyengine_core.parameters import (
ParameterNode,
Parameter,
get_parameter,
)


def create_economic_assumption_indices(
parameters: ParameterNode,
) -> ParameterNode:
econ_assumptions: ParameterNode = parameters.gov.economic_assumptions
yoy_growth: ParameterNode = econ_assumptions.yoy_growth
indices = ParameterNode(
name="gov.economic_assumptions.indices",
data={},
)
econ_assumptions.add_child(
"indices",
indices,
)

for descendant in yoy_growth.get_descendants():
parent_node = parameters.get_child(
descendant.parent.name.replace("yoy_growth", "indices")
)
full_name = descendant.name
child_name = full_name.split(".")[-1]
if isinstance(descendant, ParameterNode):
mirror_node = ParameterNode(
name=descendant.name.replace("yoy_growth", "indices"),
data={},
)
parent_node.add_child(
child_name,
mirror_node,
)
else:
start_year = int(descendant.values_list[-1].instant_str[:4])
values = {start_year: 1.0}

for year in range(start_year + 1, 2030):
yoy_growth = descendant(year)
indices_value = round(
values[year - 1] * (1 + yoy_growth),
5,
)
values[year] = indices_value

mirror_parameter = Parameter(
name=descendant.name.replace("yoy_growth", "indices"),
data={
"values": {
f"{year}-01-01": value
for year, value in values.items()
},
},
)

parent_node.add_child(
child_name,
mirror_parameter,
)

return parameters
Loading