policyengine-uk 2.35.0__py3-none-any.whl → 2.36.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.
Files changed (147) hide show
  1. policyengine_uk/__init__.py +4 -0
  2. policyengine_uk/data/__init__.py +0 -4
  3. policyengine_uk/data/dataset_schema.py +32 -2
  4. policyengine_uk/data/economic_assumptions.py +12 -23
  5. policyengine_uk/data/uprating_growth_factors.csv +83 -83
  6. policyengine_uk/parameters/gov/benefit_uprating_cpi.yaml +2 -1
  7. policyengine_uk/parameters/gov/contrib/create_private_pension_uprating.py +7 -11
  8. policyengine_uk/parameters/gov/dwp/IIDB/maximum.yaml +1 -1
  9. policyengine_uk/parameters/gov/dwp/state_pension/basic_state_pension/amount.yaml +1 -1
  10. policyengine_uk/parameters/gov/dwp/state_pension/new_state_pension/amount.yaml +1 -1
  11. policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/create_triple_lock.py +23 -15
  12. policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/include_earnings.yaml +8 -0
  13. policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/include_inflation.yaml +6 -0
  14. policyengine_uk/parameters/gov/economic_assumptions/create_economic_assumption_indices.py +64 -0
  15. policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml +265 -0
  16. policyengine_uk/parameters/gov/hmrc/fuel_duty/petrol_and_diesel.yaml +1 -1
  17. policyengine_uk/parameters/gov/hmrc/income_tax/allowances/personal_allowance/amount.yaml +1 -1
  18. policyengine_uk/parameters/gov/hmrc/income_tax/rates/scotland/rates.yaml +6 -6
  19. policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/lower_earnings_limit.yaml +1 -1
  20. policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/primary_threshold.yaml +1 -1
  21. policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/secondary_threshold.yaml +1 -1
  22. policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/upper_earnings_limit.yaml +1 -1
  23. policyengine_uk/parameters/gov/hmrc/national_insurance/class_2/small_profits_threshold.yaml +1 -1
  24. policyengine_uk/parameters/gov/hmrc/national_insurance/class_4/thresholds/lower_profits_limit.yaml +1 -1
  25. policyengine_uk/parameters/gov/hmrc/national_insurance/class_4/thresholds/upper_profits_limit.yaml +1 -1
  26. policyengine_uk/parameters/gov/indices/private_rent_index.yaml +1 -1
  27. policyengine_uk/parameters/gov/simulation/private_school_vat/private_school_fees.yaml +1 -1
  28. policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/base.yaml +1 -1
  29. policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/higher.yaml +1 -1
  30. policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/lower.yaml +1 -1
  31. policyengine_uk/parameters/household/consumption/total_by_category.yaml +1 -1
  32. policyengine_uk/parameters/household/poverty/absolute_poverty_threshold_ahc.yaml +2 -1
  33. policyengine_uk/parameters/household/poverty/absolute_poverty_threshold_bhc.yaml +2 -1
  34. policyengine_uk/parameters/household/wealth/national_balance_sheet.yaml +1 -1
  35. policyengine_uk/system.py +33 -11
  36. policyengine_uk/tests/microsimulation/reforms_config.yaml +4 -4
  37. policyengine_uk/tests/policy/baseline/gov/dfe/extended_childcare_entitlement/extended_childcare_entitlement.yaml +2 -2
  38. policyengine_uk/utils/create_triple_lock.py +6 -2
  39. policyengine_uk/variables/gov/dfe/free_school_fruit_veg.py +1 -1
  40. policyengine_uk/variables/gov/dfe/free_school_meals.py +1 -1
  41. policyengine_uk/variables/gov/dfe/free_school_milk.py +1 -1
  42. policyengine_uk/variables/gov/dwp/afcs_reported.py +1 -1
  43. policyengine_uk/variables/gov/dwp/attendance_allowance_reported.py +1 -1
  44. policyengine_uk/variables/gov/dwp/basic_state_pension.py +1 -1
  45. policyengine_uk/variables/gov/dwp/bsp_reported.py +1 -1
  46. policyengine_uk/variables/gov/dwp/carers_allowance_reported.py +1 -1
  47. policyengine_uk/variables/gov/dwp/child_tax_credit_reported.py +1 -1
  48. policyengine_uk/variables/gov/dwp/dla/dla_m_reported.py +1 -1
  49. policyengine_uk/variables/gov/dwp/dla/dla_sc_reported.py +1 -1
  50. policyengine_uk/variables/gov/dwp/esa_contrib_reported.py +1 -1
  51. policyengine_uk/variables/gov/dwp/esa_income_reported.py +1 -1
  52. policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_reported.py +1 -1
  53. policyengine_uk/variables/gov/dwp/iidb_reported.py +1 -1
  54. policyengine_uk/variables/gov/dwp/incapacity_benefit_reported.py +1 -1
  55. policyengine_uk/variables/gov/dwp/income_support_reported.py +1 -1
  56. policyengine_uk/variables/gov/dwp/jsa_contrib_reported.py +1 -1
  57. policyengine_uk/variables/gov/dwp/jsa_income_reported.py +1 -1
  58. policyengine_uk/variables/gov/dwp/maternity_allowance_reported.py +1 -1
  59. policyengine_uk/variables/gov/dwp/pension_credit/pension_credit_reported.py +1 -1
  60. policyengine_uk/variables/gov/dwp/pip/pip_dl_reported.py +1 -1
  61. policyengine_uk/variables/gov/dwp/pip/pip_m_reported.py +1 -1
  62. policyengine_uk/variables/gov/dwp/sda_reported.py +1 -1
  63. policyengine_uk/variables/gov/dwp/state_pension_reported.py +1 -1
  64. policyengine_uk/variables/gov/dwp/universal_credit/universal_credit_reported.py +1 -1
  65. policyengine_uk/variables/gov/dwp/winter_fuel_allowance_reported.py +1 -1
  66. policyengine_uk/variables/gov/dwp/working_tax_credit_reported.py +1 -1
  67. policyengine_uk/variables/gov/gov_tax.py +1 -0
  68. policyengine_uk/variables/gov/hmrc/capital_gains_tax/capital_gains_before_response.py +1 -1
  69. policyengine_uk/variables/gov/hmrc/child_benefit_reported.py +1 -1
  70. policyengine_uk/variables/gov/hmrc/student_loan_repayments.py +1 -1
  71. policyengine_uk/variables/household/demographic/household_weight.py +1 -1
  72. policyengine_uk/variables/household/income/capital_gains.py +1 -1
  73. policyengine_uk/variables/household/income/inflation_adjustment.py +3 -1
  74. policyengine_uk/variables/household/income/statutory_maternity_pay.py +1 -1
  75. policyengine_uk/variables/household/income/statutory_paternity_pay.py +1 -1
  76. policyengine_uk/variables/household/income/statutory_sick_pay.py +1 -1
  77. policyengine_uk/variables/household/wealth/gross_financial_wealth.py +1 -1
  78. policyengine_uk/variables/household/wealth/net_financial_wealth.py +1 -1
  79. policyengine_uk/variables/household/wealth/savings.py +1 -1
  80. policyengine_uk/variables/input/consumption/alcohol_and_tobacco_consumption.py +1 -1
  81. policyengine_uk/variables/input/consumption/childcare_expenses.py +1 -1
  82. policyengine_uk/variables/input/consumption/clothing_and_footwear_consumption.py +1 -1
  83. policyengine_uk/variables/input/consumption/communication_consumption.py +1 -1
  84. policyengine_uk/variables/input/consumption/diesel_spending.py +1 -1
  85. policyengine_uk/variables/input/consumption/education_consumption.py +1 -1
  86. policyengine_uk/variables/input/consumption/energy.py +1 -1
  87. policyengine_uk/variables/input/consumption/food_and_non_alcoholic_beverages_consumption.py +1 -1
  88. policyengine_uk/variables/input/consumption/health_consumption.py +1 -1
  89. policyengine_uk/variables/input/consumption/household_furnishings_consumption.py +1 -1
  90. policyengine_uk/variables/input/consumption/housing_water_and_electricity_consumption.py +1 -1
  91. policyengine_uk/variables/input/consumption/miscellaneous_consumption.py +1 -1
  92. policyengine_uk/variables/input/consumption/petrol_spending.py +1 -1
  93. policyengine_uk/variables/input/consumption/property/council_tax.py +1 -1
  94. policyengine_uk/variables/input/consumption/property/employee_pension_contributions.py +1 -1
  95. policyengine_uk/variables/input/consumption/property/employer_pension_contributions.py +1 -1
  96. policyengine_uk/variables/input/consumption/property/maintenance_expenses.py +1 -1
  97. policyengine_uk/variables/input/consumption/property/mortgage_capital_repayment.py +1 -1
  98. policyengine_uk/variables/input/consumption/property/mortgage_interest_repayment.py +1 -1
  99. policyengine_uk/variables/input/consumption/property/personal_pension_contributions.py +1 -1
  100. policyengine_uk/variables/input/consumption/recreation_consumption.py +1 -1
  101. policyengine_uk/variables/input/consumption/restaurants_and_hotels_consumption.py +1 -1
  102. policyengine_uk/variables/input/consumption/transport_consumption.py +1 -1
  103. policyengine_uk/variables/input/corporate_wealth.py +1 -1
  104. policyengine_uk/variables/input/dividend_income.py +1 -1
  105. policyengine_uk/variables/input/employment_income.py +1 -1
  106. policyengine_uk/variables/input/employment_income_before_lsr.py +1 -1
  107. policyengine_uk/variables/input/lump_sum_income.py +1 -1
  108. policyengine_uk/variables/input/main_residence_value.py +1 -1
  109. policyengine_uk/variables/input/maintenance_income.py +1 -1
  110. policyengine_uk/variables/input/miscellaneous_income.py +1 -1
  111. policyengine_uk/variables/input/non_residential_property_value.py +1 -1
  112. policyengine_uk/variables/input/other_investment_income.py +1 -1
  113. policyengine_uk/variables/input/other_residential_property_value.py +1 -1
  114. policyengine_uk/variables/input/owned_land.py +1 -1
  115. policyengine_uk/variables/input/pension_income.py +1 -1
  116. policyengine_uk/variables/input/private_pension_income.py +1 -1
  117. policyengine_uk/variables/input/private_transfer_income.py +1 -1
  118. policyengine_uk/variables/input/property_income.py +1 -1
  119. policyengine_uk/variables/input/rent.py +1 -1
  120. policyengine_uk/variables/input/savings_interest_income.py +1 -1
  121. policyengine_uk/variables/input/self_employment_income.py +1 -1
  122. policyengine_uk/variables/input/state_pension.py +1 -1
  123. policyengine_uk/variables/input/sublet_income.py +1 -1
  124. {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/CHANGELOG.md +17 -0
  125. {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/METADATA +1 -1
  126. {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/RECORD +130 -143
  127. policyengine_uk/parameters/gov/obr/add_per_capita_parameters.py +0 -40
  128. policyengine_uk/parameters/gov/obr/average_earnings.yaml +0 -30
  129. policyengine_uk/parameters/gov/obr/consumer_price_index.yaml +0 -28
  130. policyengine_uk/parameters/gov/obr/council_tax.yaml +0 -18
  131. policyengine_uk/parameters/gov/obr/employment_income.yaml +0 -28
  132. policyengine_uk/parameters/gov/obr/extend_forecast.py +0 -32
  133. policyengine_uk/parameters/gov/obr/gdp.yaml +0 -28
  134. policyengine_uk/parameters/gov/obr/house_prices.yaml +0 -27
  135. policyengine_uk/parameters/gov/obr/mixed_income.yaml +0 -24
  136. policyengine_uk/parameters/gov/obr/mortgage_interest.yaml +0 -27
  137. policyengine_uk/parameters/gov/obr/non_labour_income.yaml +0 -24
  138. policyengine_uk/parameters/gov/obr/rent.yaml +0 -27
  139. policyengine_uk/parameters/gov/obr/rpi.yaml +0 -29
  140. policyengine_uk/parameters/gov/ons/README.md +0 -3
  141. policyengine_uk/parameters/gov/ons/household.yaml +0 -51
  142. policyengine_uk/parameters/gov/ons/population.yaml +0 -37
  143. policyengine_uk/parameters/gov/ons/rpi.yaml +0 -19
  144. {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/LICENSE +0 -0
  145. {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/README.md +0 -0
  146. {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/WHEEL +0 -0
  147. {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/licenses/LICENSE +0 -0
@@ -13,5 +13,9 @@ 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
+ )
16
20
 
17
21
  REPO = Path(__file__).parent
@@ -1,5 +1 @@
1
1
  from policyengine_uk.data.dataset_schema import UKDataset
2
- from policyengine_uk.data.economic_assumptions import (
3
- BASELINE_GROWFACTORS,
4
- apply_growth_factors,
5
- )
@@ -1,5 +1,11 @@
1
1
  import pandas as pd
2
- from policyengine_uk import Microsimulation
2
+ from typing import TYPE_CHECKING
3
+
4
+ if TYPE_CHECKING:
5
+ from policyengine_uk import Microsimulation
6
+
7
+ from pathlib import Path
8
+ import h5py
3
9
 
4
10
 
5
11
  class UKDataset:
@@ -7,6 +13,27 @@ class UKDataset:
7
13
  benunit: pd.DataFrame
8
14
  household: pd.DataFrame
9
15
 
16
+ @staticmethod
17
+ def validate_file_path(file_path: str):
18
+ if not file_path.endswith(".h5"):
19
+ raise ValueError("File path must end with '.h5' for UKDataset.")
20
+ if not Path(file_path).exists():
21
+ raise FileNotFoundError(f"File not found: {file_path}")
22
+
23
+ # Check if the file contains time_period, person, benunit, and household datasets
24
+ with h5py.File(file_path, "r") as f:
25
+ required_datasets = [
26
+ "time_period",
27
+ "person",
28
+ "benunit",
29
+ "household",
30
+ ]
31
+ for dataset in required_datasets:
32
+ if dataset not in f:
33
+ raise ValueError(
34
+ f"Dataset '{dataset}' not found in the file: {file_path}"
35
+ )
36
+
10
37
  def __init__(
11
38
  self,
12
39
  file_path: str = None,
@@ -16,6 +43,7 @@ class UKDataset:
16
43
  fiscal_year: int = 2025,
17
44
  ):
18
45
  if file_path is not None:
46
+ self.validate_file_path(file_path)
19
47
  with pd.HDFStore(file_path) as f:
20
48
  self.person = f["person"]
21
49
  self.benunit = f["benunit"]
@@ -59,7 +87,9 @@ class UKDataset:
59
87
  )
60
88
 
61
89
  @staticmethod
62
- def from_simulation(simulation: Microsimulation, fiscal_year: int = 2025):
90
+ def from_simulation(
91
+ simulation: "Microsimulation", fiscal_year: int = 2025
92
+ ):
63
93
  entity_dfs = {}
64
94
 
65
95
  for entity in ["person", "benunit", "household"]:
@@ -2,7 +2,7 @@ import pandas as pd
2
2
  from pathlib import Path
3
3
  from policyengine_uk.data.dataset_schema import UKDataset
4
4
 
5
- START_YEAR = 2020
5
+ START_YEAR = 2022
6
6
  END_YEAR = 2029
7
7
 
8
8
 
@@ -13,40 +13,29 @@ def create_policyengine_uprating_factors_table(print_diff=True):
13
13
 
14
14
  variable_names = []
15
15
  years = []
16
- index_values = []
16
+ yoy_values = []
17
17
 
18
18
  parameter_by_variable = {}
19
19
 
20
20
  for variable in system.variables.values():
21
21
  if variable.uprating is not None:
22
- parameter = system.parameters.get_child(variable.uprating)
22
+ parameter = system.parameters.get_child(
23
+ variable.uprating.replace("indices", "yoy_growth")
24
+ )
23
25
  parameter_by_variable[variable.name] = parameter.name
24
- start_value = parameter(START_YEAR)
25
26
  for year in range(START_YEAR, END_YEAR + 1):
26
27
  variable_names.append(variable.name)
27
- years.append(str(year)) # Convert to string here
28
- growth = parameter(year) / start_value
29
- index_values.append(round(growth, 3))
28
+ years.append(str(year))
29
+ yoy_values.append(round(parameter(year), 3))
30
30
 
31
31
  df["Variable"] = variable_names
32
32
  df["Year"] = years
33
- df["Value"] = index_values
33
+ df["Value"] = yoy_values
34
34
 
35
35
  # Convert to there is a column for each year
36
36
  df = df.pivot(index="Variable", columns="Year", values="Value")
37
37
  df = df.sort_values("Variable")
38
38
 
39
- # Create a table with growth factors by year
40
-
41
- df_growth = df.copy()
42
- for year in range(END_YEAR, START_YEAR, -1):
43
- year_str = str(year)
44
- prev_year_str = str(year - 1)
45
- df_growth[year_str] = round(
46
- df_growth[year_str] / df_growth[prev_year_str] - 1, 3
47
- )
48
- df_growth[str(START_YEAR)] = 0
49
-
50
39
  file_path = Path(__file__).parent / "uprating_growth_factors.csv"
51
40
 
52
41
  # Read old CSV if it exists
@@ -57,16 +46,16 @@ def create_policyengine_uprating_factors_table(print_diff=True):
57
46
  old_df.columns = old_df.columns.astype(str)
58
47
 
59
48
  # Prepare new dataframe
60
- df_growth["Parameter"] = df.index.map(parameter_by_variable)
61
- df_growth = df_growth[
49
+ df["Parameter"] = df.index.map(parameter_by_variable)
50
+ df = df[
62
51
  ["Parameter"] + [str(year) for year in range(START_YEAR, END_YEAR + 1)]
63
52
  ]
64
53
 
65
54
  # Print diff if old CSV existed and print_diff is True
66
55
  if old_df is not None and print_diff:
67
- print_csv_diff(old_df, df_growth)
56
+ print_csv_diff(old_df, df)
68
57
  # Save new CSV
69
- df_growth.to_csv(file_path)
58
+ df.to_csv(file_path)
70
59
 
71
60
  return pd.read_csv(file_path)
72
61
 
@@ -1,83 +1,83 @@
1
- Variable,Parameter,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029
2
- afcs_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
3
- 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
4
- 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
5
- 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
6
- 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
7
- 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
8
- 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
9
- 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
10
- 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
11
- childcare_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
12
- clothing_and_footwear_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
13
- communication_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
14
- 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
15
- 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
16
- 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
17
- 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
18
- 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
19
- 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
20
- 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
21
- 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
22
- 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
23
- 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
24
- 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
25
- 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
26
- 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
27
- 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
28
- 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
29
- free_school_fruit_veg,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
30
- free_school_meals,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
31
- free_school_milk,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.032,0.02,0.02,0.02,0.02
32
- gross_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
33
- health_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
34
- household_furnishings_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
35
- household_weight,gov.ons.population,0,0.004,0.003,0.014,0.01,0.011,0.007,0.008,0.004,0.005
36
- housing_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
37
- housing_water_and_electricity_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
38
- iidb_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
39
- incapacity_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
40
- 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
41
- 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
42
- 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
43
- 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
44
- 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
45
- 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
46
- 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
47
- 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
48
- 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
49
- 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
50
- 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
51
- 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
52
- 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
53
- 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
54
- 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
55
- 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
56
- 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
57
- 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
58
- 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
59
- 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
60
- 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
61
- 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
62
- 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
63
- 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
64
- 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
65
- 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
66
- 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
67
- rent,gov.obr.rent,0,0.018,0.04,0.063,0.074,0.057,0.036,0.027,0.023,0.024
68
- 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
69
- savings,household.wealth.financial_assets,0,0.014,-0.108,0.004,0.03,0.032,0.034,0.034,0.036,0.0
70
- 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
71
- 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
72
- 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
73
- 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
74
- 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
75
- 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
76
- 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
77
- 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
78
- 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
79
- 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
80
- 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
81
- 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
82
- 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
83
- working_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
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
@@ -1,6 +1,7 @@
1
1
  description: Most recent September CPIH index value, updated for each uprating occurrence (2005=100)
2
2
  values:
3
3
  2005-01-01: 100
4
+ 2010-01-01: 114.48
4
5
  metadata:
5
6
  label: Benefit uprating index
6
- uprating: gov.obr.consumer_price_index
7
+ uprating: gov.economic_assumptions.indices.obr.consumer_price_index
@@ -3,28 +3,24 @@ from policyengine_core.parameters import (
3
3
  Parameter,
4
4
  )
5
5
 
6
- YEARS = list(range(2010, 2035))
6
+ YEARS = list(range(2020, 2035))
7
7
 
8
8
 
9
9
  def add_private_pension_uprating_factor(
10
10
  parameters: ParameterNode,
11
11
  ) -> ParameterNode:
12
12
  values = {}
13
- rpi = parameters.gov.obr.rpi
14
- last_value = rpi(2008)
13
+ rpi = parameters.gov.economic_assumptions.yoy_growth.obr.rpi
15
14
  for year in YEARS:
16
- value = rpi(year - 1)
17
- rel_change = value / rpi(year - 2)
18
- rel_change = min(rel_change, 1.05)
19
- new_index = last_value * rel_change
20
- last_value = new_index
21
- values[f"{year}-01-01"] = new_index
15
+ values[f"{year}-01-01"] = min(rpi(year - 1), 0.05)
22
16
  new_parameter = Parameter(
23
- "gov.obr.private_pension_index",
17
+ "gov.economic_assumptions.yoy_growth.obr.private_pension_index",
24
18
  data={
25
19
  "values": values,
26
20
  },
27
21
  )
28
22
 
29
- parameters.gov.obr.add_child("private_pension_index", new_parameter)
23
+ parameters.gov.economic_assumptions.yoy_growth.obr.add_child(
24
+ "private_pension_index", new_parameter
25
+ )
30
26
  return parameters
@@ -6,7 +6,7 @@ metadata:
6
6
  label: Industrial Injuries Disablement Benefit maximum
7
7
  reference: https://www.gov.uk/industrial-injuries-disablement-benefit/what-youll-get
8
8
  unit: currency-GBP
9
- uprating: gov.obr.consumer_price_index
9
+ uprating: gov.economic_assumptions.indices.obr.consumer_price_index
10
10
  values:
11
11
  2015-04-01: 182
12
12
  2025-04-01:
@@ -27,7 +27,7 @@ values:
27
27
  metadata:
28
28
  unit: currency-GBP
29
29
  label: basic State Pension amount
30
- uprating: gov.dwp.state_pension.triple_lock.index
30
+ uprating: gov.economic_assumptions.indices.triple_lock
31
31
  reference:
32
32
  - title: House of Commons Library
33
33
  href: https://researchbriefings.files.parliament.uk/documents/SN05649/SN05649.pdf
@@ -13,7 +13,7 @@ values:
13
13
  metadata:
14
14
  unit: currency-GBP
15
15
  label: New State Pension amount
16
- uprating: gov.dwp.state_pension.triple_lock.index
16
+ uprating: gov.economic_assumptions.indices.triple_lock
17
17
  reference:
18
18
  - title: House of Commons Library
19
19
  href: https://researchbriefings.files.parliament.uk/documents/SN05649/SN05649.pdf
@@ -8,29 +8,37 @@ YEARS = list(range(2022, 2035))
8
8
 
9
9
 
10
10
  def add_triple_lock(parameters: ParameterNode) -> ParameterNode:
11
- average_earnings = parameters.gov.obr.average_earnings
12
- cpi = parameters.gov.obr.consumer_price_index
13
- min_rate = parameters.gov.dwp.state_pension.triple_lock.minimum_rate
11
+ obr = parameters.gov.economic_assumptions.yoy_growth.obr
12
+ average_earnings = obr.average_earnings
13
+ cpi = obr.consumer_price_index
14
+ triple_lock = parameters.gov.dwp.state_pension.triple_lock
15
+ min_rate = triple_lock.minimum_rate
14
16
 
15
17
  values = {}
16
18
 
17
- index = 1
18
-
19
19
  for year in YEARS:
20
- earnings_increase = average_earnings(year - 1) / average_earnings(
21
- year - 2
22
- )
23
- cpi_increase = cpi(year - 1) / cpi(year - 2)
20
+ earnings_increase = average_earnings(year - 1)
21
+ cpi_increase = cpi(year - 1)
24
22
  min_rate_y = min_rate(year)
25
- triple_lock_increase = max(earnings_increase, cpi_increase, min_rate_y)
26
- index *= triple_lock_increase
27
- values[f"{year}-01-01"] = round(index, 3)
23
+ if triple_lock.include_earnings(
24
+ year
25
+ ) and triple_lock.include_inflation(year):
26
+ triple_lock_increase = max(
27
+ earnings_increase, cpi_increase, min_rate_y
28
+ )
29
+ elif triple_lock.include_earnings(year):
30
+ triple_lock_increase = max(earnings_increase, min_rate_y)
31
+ elif triple_lock.include_inflation(year):
32
+ triple_lock_increase = max(cpi_increase, min_rate_y)
33
+ else:
34
+ triple_lock_increase = min_rate_y
35
+ values[f"{year}-01-01"] = round(triple_lock_increase, 3)
28
36
 
29
37
  new_parameter = Parameter(
30
- "gov.dwp.state_pension.triple_lock.index",
38
+ "gov.economic_assumptions.yoy_growth.triple_lock",
31
39
  data={"values": values, "metadata": {"unit": "/1"}},
32
40
  )
33
- parameters.gov.dwp.state_pension.triple_lock.add_child(
34
- "index", new_parameter
41
+ parameters.gov.economic_assumptions.yoy_growth.add_child(
42
+ "triple_lock", new_parameter
35
43
  )
36
44
  return parameters
@@ -0,0 +1,8 @@
1
+ description: Whether the triple lock should include average earnings.
2
+ values:
3
+ 2012-01-01: true
4
+ 2022-01-01: false
5
+ 2023-01-01: true
6
+ metadata:
7
+ unit: bool
8
+ label: include average earnings in triple lock
@@ -0,0 +1,6 @@
1
+ description: Whether the triple lock should include inflation.
2
+ values:
3
+ 2012-01-01: true
4
+ metadata:
5
+ unit: bool
6
+ label: include inflation in triple lock
@@ -0,0 +1,64 @@
1
+ from policyengine_core.parameters import (
2
+ ParameterNode,
3
+ Parameter,
4
+ get_parameter,
5
+ )
6
+
7
+
8
+ def create_economic_assumption_indices(
9
+ parameters: ParameterNode,
10
+ ) -> ParameterNode:
11
+ econ_assumptions: ParameterNode = parameters.gov.economic_assumptions
12
+ yoy_growth: ParameterNode = econ_assumptions.yoy_growth
13
+ indices = ParameterNode(
14
+ name="gov.economic_assumptions.indices",
15
+ data={},
16
+ )
17
+ econ_assumptions.add_child(
18
+ "indices",
19
+ indices,
20
+ )
21
+
22
+ for descendant in yoy_growth.get_descendants():
23
+ parent_node = parameters.get_child(
24
+ descendant.parent.name.replace("yoy_growth", "indices")
25
+ )
26
+ full_name = descendant.name
27
+ child_name = full_name.split(".")[-1]
28
+ if isinstance(descendant, ParameterNode):
29
+ mirror_node = ParameterNode(
30
+ name=descendant.name.replace("yoy_growth", "indices"),
31
+ data={},
32
+ )
33
+ parent_node.add_child(
34
+ child_name,
35
+ mirror_node,
36
+ )
37
+ else:
38
+ start_year = int(descendant.values_list[-1].instant_str[:4])
39
+ values = {start_year: 1.0}
40
+
41
+ for year in range(start_year + 1, 2030):
42
+ yoy_growth = descendant(year)
43
+ indices_value = round(
44
+ values[year - 1] * (1 + yoy_growth),
45
+ 5,
46
+ )
47
+ values[year] = indices_value
48
+
49
+ mirror_parameter = Parameter(
50
+ name=descendant.name.replace("yoy_growth", "indices"),
51
+ data={
52
+ "values": {
53
+ f"{year}-01-01": value
54
+ for year, value in values.items()
55
+ },
56
+ },
57
+ )
58
+
59
+ parent_node.add_child(
60
+ child_name,
61
+ mirror_parameter,
62
+ )
63
+
64
+ return parameters