Skip to content

Commit 91bb4ef

Browse files
Add HBAI income concept page to the docs (#1196)
* Update HBAI docs page, add missing uprating assumptions * Grammar
1 parent 9939aea commit 91bb4ef

12 files changed

Lines changed: 155 additions & 33 deletions

File tree

changelog_entry.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- bump: patch
2+
changes:
3+
fixed:
4+
- Documentation improved for HBAI income concept.
5+
- Restructured HBAI income variables to better match the official definition.

docs/book/_toc.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ parts:
77
- caption: Economic assumptions
88
chapters:
99
- file: assumptions/growthfactors
10+
- caption: Validation
11+
chapters:
12+
- file: validation/hbai
1013
- caption: Programs
1114
chapters:
1215
- file: programs/gov/hmrc/child-benefit

docs/book/validation/hbai.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# HBAI
2+
3+
PolicyEngine UK includes variables that match to the Households Below Average Income (HBAI) income concepts. These are:
4+
5+
- `hbai_household_net_income`: Household net income, before housing costs
6+
- `hbai_household_net_income_ahc`: Household net income, after housing costs
7+
- `equiv_hbai_household_net_income`: Equivalised household net income, before housing costs (BHC)
8+
- `equiv_hbai_household_net_income_ahc`: Equivalised household net income, after housing costs (AHC)
9+
10+
These variables are used in the HBAI income distribution and poverty [statistics](https://www.gov.uk/government/statistics/households-below-average-income-for-financial-years-ending-1995-to-2024/households-below-average-income-an-analysis-of-the-uk-income-distribution-fye-1995-to-fye-2024), which are published by the Department for Work and Pensions (DWP) in the UK. The HBAI income concepts are defined [here](https://www.gov.uk/government/statistics/households-below-average-income-for-financial-years-ending-1995-to-2023/households-below-average-income-series-quality-and-methodology-information-report-fye-2023#income-definition).
11+
12+
The table below shows how the HBAI income components map to PolicyEngine variables. The HBAI income definition is based on the income of all members of a household, and includes various sources of income, subtractions, and housing costs (for the AHC variant).
13+
14+
| HBAI component | PolicyEngine variable/notes |
15+
|------|-------------|
16+
| **Income** | |
17+
| Usual net earnings from employment |`employment_income` |
18+
| Profit or loss from self-employment (losses are treated as a negative income) | `self_employment_income`|
19+
| Income received from dividends (from FYE 2022) |`dividend_income`|
20+
| State support - all benefits and tax credits |`hbai_benefits`|
21+
| Income from occupational and private pensions |`private_pension_income` (includes occupational pension income)|
22+
| Investment income |`dividend_income`, `savings_interest_income`, `property_income`|
23+
| Maintenance payments |`maintenance_income`|
24+
| Income from educational grants and scholarships (including, for students, student loans and parental contributions) |`student_payments`|
25+
| The cash value of certain forms of income in kind (free school meals, free school breakfast, free school milk, free school fruit and vegetables, Healthy Start vouchers and free TV licences for those aged 75 and over who receive Pension Credit) |`free_school_meals`, `free_school_fruit_veg`, `free_school_milk`, [Healthy Start vouchers currently to-add](https://github.com/PolicyEngine/policyengine-uk/issues/1193), `free_tv_licence_value`|
26+
| **Subtractions** | |
27+
| Income tax payments |`income_tax`|
28+
| National Insurance contributions |`national_insurance`|
29+
| Domestic rates/council tax |`council_tax` and `domestic_rates`|
30+
| Contributions to occupational pension schemes (including all additional voluntary contributions (AVCs) to occupational pension schemes, and any contributions to stakeholder and personal pensions) |`employee_pension_contributions`, `personal_pension_contributions`|
31+
| All maintenance and child support payments, which are deducted from the income of the person making the payment |`maintenance_expenses`|
32+
| Parental contributions to students living away from home | [Missing](https://github.com/PolicyEngine/policyengine-uk/issues/1194)|
33+
| Student loan repayments | `student_loan_repayments`|
34+
| **Housing costs** | |
35+
| Rent (gross of housing benefit) | `rent`|
36+
| Water rates, community water charges and council water charges | `water_and_sewerage_charges`|
37+
| Mortgage interest payments | `mortgage_interest_repayment`|
38+
| Structural insurance premiums (for owner occupiers) | [Missing](https://github.com/PolicyEngine/policyengine-uk/issues/1195) |
39+
| Ground rent and service charges |`housing_service_charges`|
40+
41+
## Nowcasting/forecasting
42+
43+
44+
Each of the variables above is either derived from other variables, or is a direct input variable. Direct input variables are uprated in future years according to economic indices, specified in the table below.
45+
46+
| Variable | Index | Notes |
47+
|----------|-------|-------|
48+
| `employment_income` | gov.obr.per_capita.employment_income | Uprated based on OBR per capita employment income projections |
49+
| `self_employment_income` | gov.obr.per_capita.mixed_income | Uprated based on OBR per capita mixed income projections |
50+
| `dividend_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
51+
| `hbai_benefits` | Various | Different benefits use different uprating indices, mostly gov.obr.consumer_price_index |
52+
| `private_pension_income` | gov.obr.private_pension_index | Uprated based on OBR private pension index |
53+
| `savings_interest_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
54+
| `property_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
55+
| `maintenance_income` | gov.obr.per_capita.gdp | Uprated based on OBR per capita GDP projections |
56+
| `student_payments` | Not uprated directly | Currently no specific uprating for student payments |
57+
| `free_school_meals` |gov.obr.consumer_price_index | Uprated based on CPI inflation |
58+
| `free_school_fruit_veg` | gov.obr.consumer_price_index | Uprated based on CPI inflation |
59+
| `free_school_milk` | gov.obr.consumer_price_index | Uprated based on CPI inflation |
60+
| `free_tv_licence_value` | Not directly uprated | Depends on policy parameters |
61+
| `income_tax` | Derived | Calculated based on income and tax policy |
62+
| `national_insurance` | Derived | Calculated based on income and NI policy |
63+
| `council_tax` | gov.obr.council_tax | Uprated based on OBR council tax revenue projections |
64+
| `domestic_rates` | gov.obr.council_tax | Uprated with council tax as proxy |
65+
| `employee_pension_contributions` | gov.obr.per_capita.employment_income | Uprated based on per capita employment income growth |
66+
| `personal_pension_contributions` | gov.obr.per_capita.employment_income | Uprated based on per capita employment income growth |
67+
| `maintenance_expenses` | gov.obr.consumer_price_index | Uprated based on CPI inflation |
68+
| `student_loan_repayments` | gov.obr.average_earnings | Uprated based on OBR average earnings projections |
69+
| `rent` | gov.obr.rent | Uprated based on OBR rent projections |
70+
| `water_and_sewerage_charges` | gov.obr.consumer_price_index | Uprated based on CPI as proxy |
71+
| `mortgage_interest_repayment` | gov.obr.mortgage_interest | Uprated based on OBR mortgage interest projections |
72+
| `housing_service_charges` | gov.obr.consumer_price_index | Uprated based on CPI as proxy |

policyengine_uk/data/uprating_growth_factors.csv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ employment_income_before_lsr,gov.obr.per_capita.employment_income,0,0.072,0.074,
2626
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
2727
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
2828
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_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
2930
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
3031
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
3132
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
@@ -39,6 +40,7 @@ jsa_contrib_reported,gov.obr.consumer_price_index,0,0.039,0.101,0.057,0.023,0.03
3940
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
4041
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
4142
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
43+
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
4244
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
4345
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
4446
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
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from policyengine_uk.model_api import *
2+
3+
4+
class free_tv_licence_value(Variable):
5+
label = "free TV licence value"
6+
entity = Household
7+
definition_period = YEAR
8+
value_type = float
9+
unit = "/1"
10+
reference = (
11+
"https://www.legislation.gov.uk/ukpga/2003/21/section/365A",
12+
"https://www.tvlicensing.co.uk/reducedfee",
13+
)
14+
15+
def formula(household, period, parameters):
16+
owns_tv = household("household_owns_tv", period)
17+
discount = household("tv_licence_discount", period)
18+
would_evade = household("would_evade_tv_licence_fee", period)
19+
fee = parameters(period).gov.dcms.bbc.tv_licence.colour
20+
return (owns_tv & ~would_evade) * fee * discount

policyengine_uk/variables/gov/dfe/free_school_milk.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ class free_school_milk(Variable):
77
definition_period = YEAR
88
value_type = float
99
unit = GBP
10+
uprating = "gov.obr.consumer_price_index"

policyengine_uk/variables/household/consumption/housing_costs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ class housing_costs(Variable):
88
definition_period = YEAR
99
unit = GBP
1010

11-
adds = ["rent", "mortgage"]
11+
adds = ["rent", "mortgage", "water_and_sewerage_charges"]
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from policyengine_uk.model_api import *
2+
3+
4+
class hbai_benefits(Variable):
5+
label = "HBAI-included benefits"
6+
entity = Household
7+
definition_period = YEAR
8+
value_type = float
9+
unit = GBP
10+
adds = [
11+
"child_benefit",
12+
"esa_income",
13+
"esa_contrib",
14+
"housing_benefit",
15+
"income_support",
16+
"jsa_income",
17+
"jsa_contrib",
18+
"pension_credit",
19+
"universal_credit",
20+
"working_tax_credit",
21+
"child_tax_credit",
22+
"attendance_allowance",
23+
"afcs",
24+
"bsp",
25+
"carers_allowance",
26+
"dla",
27+
"iidb",
28+
"incapacity_benefit",
29+
"pip",
30+
"sda",
31+
"state_pension",
32+
"maternity_allowance",
33+
"statutory_sick_pay",
34+
"statutory_maternity_pay",
35+
"ssmg",
36+
"cost_of_living_support_payment",
37+
"winter_fuel_allowance",
38+
"tax_free_childcare",
39+
]

policyengine_uk/variables/household/income/hbai_household_net_income.py

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,48 +21,22 @@ class hbai_household_net_income(Variable):
2121
"private_pension_income",
2222
"private_transfer_income",
2323
"maintenance_income",
24-
"child_benefit",
25-
"esa_income",
26-
"esa_contrib",
27-
"housing_benefit",
28-
"income_support",
29-
"jsa_income",
30-
"jsa_contrib",
31-
"pension_credit",
32-
"universal_credit",
33-
"working_tax_credit",
34-
"child_tax_credit",
35-
"attendance_allowance",
36-
"afcs",
37-
"bsp",
38-
"carers_allowance",
39-
"dla",
40-
"iidb",
41-
"incapacity_benefit",
42-
"jsa_contrib",
43-
"pip",
44-
"sda",
45-
"state_pension",
46-
"maternity_allowance",
47-
"statutory_sick_pay",
48-
"statutory_maternity_pay",
49-
"ssmg",
50-
"cost_of_living_support_payment",
51-
"winter_fuel_allowance",
52-
"tax_free_childcare",
24+
"hbai_benefits",
5325
"free_school_meals",
5426
"free_school_fruit_veg",
5527
"free_school_milk",
56-
"tv_licence_discount",
28+
"free_tv_licence_value",
5729
# Reference for tax-free-childcare: https://assets.publishing.service.gov.uk/media/5e7b191886650c744175d08b/households-below-average-income-1994-1995-2018-2019.pdf
5830
]
5931
subtracts = [
6032
"council_tax",
6133
"domestic_rates",
62-
"wealth_tax",
6334
"income_tax",
6435
"national_insurance",
6536
"student_loan_repayments",
37+
"employee_pension_contributions",
38+
"personal_pension_contributions",
39+
"maintenance_expenses",
6640
]
6741

6842

policyengine_uk/variables/household/income/hbai_household_net_income_ahc.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ class hbai_household_net_income_ahc(Variable):
1111
unit = GBP
1212

1313
adds = ["hbai_household_net_income"]
14-
subtracts = ["housing_costs"]
14+
subtracts = [
15+
"rent",
16+
"water_and_sewerage_charges",
17+
"mortgage_interest_repayment",
18+
]

0 commit comments

Comments
 (0)