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.
- policyengine_uk/__init__.py +4 -0
- policyengine_uk/data/__init__.py +0 -4
- policyengine_uk/data/dataset_schema.py +32 -2
- policyengine_uk/data/economic_assumptions.py +12 -23
- policyengine_uk/data/uprating_growth_factors.csv +83 -83
- policyengine_uk/parameters/gov/benefit_uprating_cpi.yaml +2 -1
- policyengine_uk/parameters/gov/contrib/create_private_pension_uprating.py +7 -11
- policyengine_uk/parameters/gov/dwp/IIDB/maximum.yaml +1 -1
- policyengine_uk/parameters/gov/dwp/state_pension/basic_state_pension/amount.yaml +1 -1
- policyengine_uk/parameters/gov/dwp/state_pension/new_state_pension/amount.yaml +1 -1
- policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/create_triple_lock.py +23 -15
- policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/include_earnings.yaml +8 -0
- policyengine_uk/parameters/gov/dwp/state_pension/triple_lock/include_inflation.yaml +6 -0
- policyengine_uk/parameters/gov/economic_assumptions/create_economic_assumption_indices.py +64 -0
- policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml +265 -0
- policyengine_uk/parameters/gov/hmrc/fuel_duty/petrol_and_diesel.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/income_tax/allowances/personal_allowance/amount.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/income_tax/rates/scotland/rates.yaml +6 -6
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/lower_earnings_limit.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/primary_threshold.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/secondary_threshold.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_1/thresholds/upper_earnings_limit.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_2/small_profits_threshold.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_4/thresholds/lower_profits_limit.yaml +1 -1
- policyengine_uk/parameters/gov/hmrc/national_insurance/class_4/thresholds/upper_profits_limit.yaml +1 -1
- policyengine_uk/parameters/gov/indices/private_rent_index.yaml +1 -1
- policyengine_uk/parameters/gov/simulation/private_school_vat/private_school_fees.yaml +1 -1
- policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/base.yaml +1 -1
- policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/higher.yaml +1 -1
- policyengine_uk/parameters/gov/social_security_scotland/pawhp/amount/lower.yaml +1 -1
- policyengine_uk/parameters/household/consumption/total_by_category.yaml +1 -1
- policyengine_uk/parameters/household/poverty/absolute_poverty_threshold_ahc.yaml +2 -1
- policyengine_uk/parameters/household/poverty/absolute_poverty_threshold_bhc.yaml +2 -1
- policyengine_uk/parameters/household/wealth/national_balance_sheet.yaml +1 -1
- policyengine_uk/system.py +33 -11
- policyengine_uk/tests/microsimulation/reforms_config.yaml +4 -4
- policyengine_uk/tests/policy/baseline/gov/dfe/extended_childcare_entitlement/extended_childcare_entitlement.yaml +2 -2
- policyengine_uk/utils/create_triple_lock.py +6 -2
- policyengine_uk/variables/gov/dfe/free_school_fruit_veg.py +1 -1
- policyengine_uk/variables/gov/dfe/free_school_meals.py +1 -1
- policyengine_uk/variables/gov/dfe/free_school_milk.py +1 -1
- policyengine_uk/variables/gov/dwp/afcs_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/attendance_allowance_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/basic_state_pension.py +1 -1
- policyengine_uk/variables/gov/dwp/bsp_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/carers_allowance_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/child_tax_credit_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/dla/dla_m_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/dla/dla_sc_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/esa_contrib_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/esa_income_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/housing_benefit/housing_benefit_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/iidb_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/incapacity_benefit_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/income_support_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/jsa_contrib_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/jsa_income_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/maternity_allowance_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/pension_credit/pension_credit_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/pip/pip_dl_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/pip/pip_m_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/sda_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/state_pension_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/universal_credit/universal_credit_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/winter_fuel_allowance_reported.py +1 -1
- policyengine_uk/variables/gov/dwp/working_tax_credit_reported.py +1 -1
- policyengine_uk/variables/gov/gov_tax.py +1 -0
- policyengine_uk/variables/gov/hmrc/capital_gains_tax/capital_gains_before_response.py +1 -1
- policyengine_uk/variables/gov/hmrc/child_benefit_reported.py +1 -1
- policyengine_uk/variables/gov/hmrc/student_loan_repayments.py +1 -1
- policyengine_uk/variables/household/demographic/household_weight.py +1 -1
- policyengine_uk/variables/household/income/capital_gains.py +1 -1
- policyengine_uk/variables/household/income/inflation_adjustment.py +3 -1
- policyengine_uk/variables/household/income/statutory_maternity_pay.py +1 -1
- policyengine_uk/variables/household/income/statutory_paternity_pay.py +1 -1
- policyengine_uk/variables/household/income/statutory_sick_pay.py +1 -1
- policyengine_uk/variables/household/wealth/gross_financial_wealth.py +1 -1
- policyengine_uk/variables/household/wealth/net_financial_wealth.py +1 -1
- policyengine_uk/variables/household/wealth/savings.py +1 -1
- policyengine_uk/variables/input/consumption/alcohol_and_tobacco_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/childcare_expenses.py +1 -1
- policyengine_uk/variables/input/consumption/clothing_and_footwear_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/communication_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/diesel_spending.py +1 -1
- policyengine_uk/variables/input/consumption/education_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/energy.py +1 -1
- policyengine_uk/variables/input/consumption/food_and_non_alcoholic_beverages_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/health_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/household_furnishings_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/housing_water_and_electricity_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/miscellaneous_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/petrol_spending.py +1 -1
- policyengine_uk/variables/input/consumption/property/council_tax.py +1 -1
- policyengine_uk/variables/input/consumption/property/employee_pension_contributions.py +1 -1
- policyengine_uk/variables/input/consumption/property/employer_pension_contributions.py +1 -1
- policyengine_uk/variables/input/consumption/property/maintenance_expenses.py +1 -1
- policyengine_uk/variables/input/consumption/property/mortgage_capital_repayment.py +1 -1
- policyengine_uk/variables/input/consumption/property/mortgage_interest_repayment.py +1 -1
- policyengine_uk/variables/input/consumption/property/personal_pension_contributions.py +1 -1
- policyengine_uk/variables/input/consumption/recreation_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/restaurants_and_hotels_consumption.py +1 -1
- policyengine_uk/variables/input/consumption/transport_consumption.py +1 -1
- policyengine_uk/variables/input/corporate_wealth.py +1 -1
- policyengine_uk/variables/input/dividend_income.py +1 -1
- policyengine_uk/variables/input/employment_income.py +1 -1
- policyengine_uk/variables/input/employment_income_before_lsr.py +1 -1
- policyengine_uk/variables/input/lump_sum_income.py +1 -1
- policyengine_uk/variables/input/main_residence_value.py +1 -1
- policyengine_uk/variables/input/maintenance_income.py +1 -1
- policyengine_uk/variables/input/miscellaneous_income.py +1 -1
- policyengine_uk/variables/input/non_residential_property_value.py +1 -1
- policyengine_uk/variables/input/other_investment_income.py +1 -1
- policyengine_uk/variables/input/other_residential_property_value.py +1 -1
- policyengine_uk/variables/input/owned_land.py +1 -1
- policyengine_uk/variables/input/pension_income.py +1 -1
- policyengine_uk/variables/input/private_pension_income.py +1 -1
- policyengine_uk/variables/input/private_transfer_income.py +1 -1
- policyengine_uk/variables/input/property_income.py +1 -1
- policyengine_uk/variables/input/rent.py +1 -1
- policyengine_uk/variables/input/savings_interest_income.py +1 -1
- policyengine_uk/variables/input/self_employment_income.py +1 -1
- policyengine_uk/variables/input/state_pension.py +1 -1
- policyengine_uk/variables/input/sublet_income.py +1 -1
- {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/CHANGELOG.md +17 -0
- {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/METADATA +1 -1
- {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/RECORD +130 -143
- policyengine_uk/parameters/gov/obr/add_per_capita_parameters.py +0 -40
- policyengine_uk/parameters/gov/obr/average_earnings.yaml +0 -30
- policyengine_uk/parameters/gov/obr/consumer_price_index.yaml +0 -28
- policyengine_uk/parameters/gov/obr/council_tax.yaml +0 -18
- policyengine_uk/parameters/gov/obr/employment_income.yaml +0 -28
- policyengine_uk/parameters/gov/obr/extend_forecast.py +0 -32
- policyengine_uk/parameters/gov/obr/gdp.yaml +0 -28
- policyengine_uk/parameters/gov/obr/house_prices.yaml +0 -27
- policyengine_uk/parameters/gov/obr/mixed_income.yaml +0 -24
- policyengine_uk/parameters/gov/obr/mortgage_interest.yaml +0 -27
- policyengine_uk/parameters/gov/obr/non_labour_income.yaml +0 -24
- policyengine_uk/parameters/gov/obr/rent.yaml +0 -27
- policyengine_uk/parameters/gov/obr/rpi.yaml +0 -29
- policyengine_uk/parameters/gov/ons/README.md +0 -3
- policyengine_uk/parameters/gov/ons/household.yaml +0 -51
- policyengine_uk/parameters/gov/ons/population.yaml +0 -37
- policyengine_uk/parameters/gov/ons/rpi.yaml +0 -19
- {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/LICENSE +0 -0
- {policyengine_uk-2.35.0.data → policyengine_uk-2.36.0.data}/data/share/openfisca/openfisca-country-template/README.md +0 -0
- {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/WHEEL +0 -0
- {policyengine_uk-2.35.0.dist-info → policyengine_uk-2.36.0.dist-info}/licenses/LICENSE +0 -0
policyengine_uk/__init__.py
CHANGED
@@ -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
|
policyengine_uk/data/__init__.py
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
import pandas as pd
|
2
|
-
from
|
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(
|
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 =
|
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
|
-
|
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(
|
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))
|
28
|
-
|
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"] =
|
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
|
-
|
61
|
-
|
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,
|
56
|
+
print_csv_diff(old_df, df)
|
68
57
|
# Save new CSV
|
69
|
-
|
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,
|
2
|
-
afcs_reported,gov.obr.consumer_price_index,0
|
3
|
-
alcohol_and_tobacco_consumption,gov.obr.consumer_price_index,0
|
4
|
-
attendance_allowance_reported,gov.obr.consumer_price_index,0
|
5
|
-
bsp_reported,gov.obr.consumer_price_index,0
|
6
|
-
capital_gains,gov.obr.
|
7
|
-
capital_gains_before_response,gov.obr.
|
8
|
-
carers_allowance_reported,gov.obr.consumer_price_index,0
|
9
|
-
child_benefit_reported,gov.obr.consumer_price_index,0
|
10
|
-
child_tax_credit_reported,gov.obr.consumer_price_index,0
|
11
|
-
childcare_expenses,gov.obr.consumer_price_index,0
|
12
|
-
clothing_and_footwear_consumption,gov.obr.consumer_price_index,0
|
13
|
-
communication_consumption,gov.obr.consumer_price_index,0
|
14
|
-
corporate_wealth,
|
15
|
-
council_tax,gov.obr.council_tax,0
|
16
|
-
diesel_spending,gov.obr.consumer_price_index,0
|
17
|
-
dividend_income,gov.obr.per_capita.gdp,0
|
18
|
-
dla_m_reported,gov.obr.consumer_price_index,0
|
19
|
-
dla_sc_reported,gov.obr.consumer_price_index,0
|
20
|
-
domestic_energy_consumption,gov.obr.consumer_price_index,0
|
21
|
-
education_consumption,gov.obr.consumer_price_index,0
|
22
|
-
employee_pension_contributions,gov.obr.average_earnings,0
|
23
|
-
employer_pension_contributions,gov.obr.average_earnings,0
|
24
|
-
employment_income,gov.obr.average_earnings,0
|
25
|
-
employment_income_before_lsr,gov.obr.average_earnings,0
|
26
|
-
esa_contrib_reported,gov.obr.consumer_price_index,0
|
27
|
-
esa_income_reported,gov.obr.consumer_price_index,0
|
28
|
-
food_and_non_alcoholic_beverages_consumption,gov.obr.consumer_price_index,0
|
29
|
-
free_school_fruit_veg,gov.obr.consumer_price_index,0
|
30
|
-
free_school_meals,gov.obr.consumer_price_index,0
|
31
|
-
free_school_milk,gov.obr.consumer_price_index,0
|
32
|
-
gross_financial_wealth,
|
33
|
-
health_consumption,gov.obr.consumer_price_index,0
|
34
|
-
household_furnishings_consumption,gov.obr.consumer_price_index,0
|
35
|
-
household_weight,gov.ons.population,0
|
36
|
-
housing_benefit_reported,gov.obr.consumer_price_index,0
|
37
|
-
housing_water_and_electricity_consumption,gov.obr.consumer_price_index,0
|
38
|
-
iidb_reported,gov.obr.consumer_price_index,0
|
39
|
-
incapacity_benefit_reported,gov.obr.consumer_price_index,0
|
40
|
-
income_support_reported,gov.obr.consumer_price_index,0
|
41
|
-
jsa_contrib_reported,gov.obr.consumer_price_index,0
|
42
|
-
jsa_income_reported,gov.obr.consumer_price_index,0
|
43
|
-
lump_sum_income,gov.obr.per_capita.gdp,0
|
44
|
-
main_residence_value,
|
45
|
-
maintenance_expenses,gov.obr.consumer_price_index,0
|
46
|
-
maintenance_income,gov.obr.per_capita.gdp,0
|
47
|
-
maternity_allowance_reported,gov.obr.consumer_price_index,0
|
48
|
-
miscellaneous_consumption,gov.obr.consumer_price_index,0
|
49
|
-
miscellaneous_income,gov.obr.per_capita.gdp,0
|
50
|
-
mortgage_capital_repayment,gov.obr.
|
51
|
-
mortgage_interest_repayment,gov.obr.mortgage_interest,0
|
52
|
-
net_financial_wealth,
|
53
|
-
non_residential_property_value,
|
54
|
-
other_investment_income,gov.obr.per_capita.gdp,0
|
55
|
-
other_residential_property_value,
|
56
|
-
owned_land,
|
57
|
-
pension_credit_reported,gov.obr.consumer_price_index,0
|
58
|
-
pension_income,gov.obr.per_capita.gdp,0
|
59
|
-
personal_pension_contributions,gov.obr.average_earnings,0
|
60
|
-
petrol_spending,gov.obr.consumer_price_index,0
|
61
|
-
pip_dl_reported,gov.obr.consumer_price_index,0
|
62
|
-
pip_m_reported,gov.obr.consumer_price_index,0
|
63
|
-
private_pension_income,gov.
|
64
|
-
private_transfer_income,gov.obr.per_capita.gdp,0
|
65
|
-
property_income,gov.obr.per_capita.gdp,0
|
66
|
-
recreation_consumption,gov.obr.consumer_price_index,0
|
67
|
-
rent,gov.obr.rent,0
|
68
|
-
restaurants_and_hotels_consumption,gov.obr.consumer_price_index,0
|
69
|
-
savings,
|
70
|
-
savings_interest_income,gov.obr.per_capita.gdp,0
|
71
|
-
sda_reported,gov.obr.consumer_price_index,0
|
72
|
-
self_employment_income,gov.obr.per_capita.mixed_income,0
|
73
|
-
state_pension,gov.obr.consumer_price_index,0
|
74
|
-
state_pension_reported,gov.obr.consumer_price_index,0
|
75
|
-
statutory_maternity_pay,gov.obr.consumer_price_index,0
|
76
|
-
statutory_paternity_pay,gov.obr.consumer_price_index,0
|
77
|
-
statutory_sick_pay,gov.obr.consumer_price_index,0
|
78
|
-
student_loan_repayments,gov.obr.average_earnings,0
|
79
|
-
sublet_income,gov.obr.per_capita.gdp,0
|
80
|
-
transport_consumption,gov.obr.consumer_price_index,0
|
81
|
-
universal_credit_reported,gov.obr.consumer_price_index,0
|
82
|
-
winter_fuel_allowance_reported,gov.obr.consumer_price_index,0
|
83
|
-
working_tax_credit_reported,gov.obr.consumer_price_index,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
|
@@ -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(
|
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
|
-
|
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(
|
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.
|
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.
|
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
|
-
|
12
|
-
|
13
|
-
|
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)
|
21
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
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.
|
38
|
+
"gov.economic_assumptions.yoy_growth.triple_lock",
|
31
39
|
data={"values": values, "metadata": {"unit": "/1"}},
|
32
40
|
)
|
33
|
-
parameters.gov.
|
34
|
-
"
|
41
|
+
parameters.gov.economic_assumptions.yoy_growth.add_child(
|
42
|
+
"triple_lock", new_parameter
|
35
43
|
)
|
36
44
|
return parameters
|
@@ -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
|