Skip to content

Commit 67404da

Browse files
MaxGhenisclaude
andauthored
Integrate property_income_tax into total income_tax (#1408)
* Integrate property_income_tax into total income_tax This fix ensures that property income is taxed at the property-specific rates (22%, 42%, 47% from April 2027) rather than the standard earned income rates. Changes: - Add taxable_property_income to earned_taxable_income_exclusions (prevents double-taxation of property income) - Add property_income_tax to income_tax_pre_charges - Add property_income_tax to income_tax_additions - Add integration tests verifying property_income_tax flows into income_tax This implements the November 2025 Autumn Budget property income tax increases correctly, allowing microsimulation to show the revenue impact of the +2pp rate increase. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Update expected reform impacts after property tax integration The integration of property_income_tax into total income_tax slightly shifts the baseline, which changes the expected fiscal impacts of other reforms by small amounts. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 49c2e54 commit 67404da

File tree

5 files changed

+59
-5
lines changed

5 files changed

+59
-5
lines changed

policyengine_uk/parameters/gov/hmrc/income_tax/earned_taxable_income_exclusions.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ values:
33
0000-01-01:
44
- taxable_savings_interest_income
55
- taxable_dividend_income
6+
- taxable_property_income
67
- received_allowances_earned_income
78
- marriage_allowance
8-
9+
910
metadata:
1011
unit: list
1112
label: Earned taxable income exclusions

policyengine_uk/parameters/gov/hmrc/income_tax/income_tax_additions.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ values:
77
- earned_income_tax
88
- savings_income_tax
99
- dividend_income_tax
10+
- property_income_tax
1011
- CB_HITC
1112
- personal_pension_contributions_tax

policyengine_uk/tests/microsimulation/reforms_config.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ reforms:
44
parameters:
55
gov.hmrc.income_tax.rates.uk[0].rate: 0.21
66
- name: Raise higher rate by 1pp
7-
expected_impact: 5.3
7+
expected_impact: 5.0
88
parameters:
99
gov.hmrc.income_tax.rates.uk[1].rate: 0.42
1010
- name: Raise personal allowance by ~800GBP/year
@@ -16,18 +16,18 @@ reforms:
1616
parameters:
1717
gov.hmrc.child_benefit.amount.additional: 25
1818
- name: Reduce Universal Credit taper rate to 20%
19-
expected_impact: -30.2
19+
expected_impact: -31.0
2020
parameters:
2121
gov.dwp.universal_credit.means_test.reduction_rate: 0.2
2222
- name: Raise Class 1 main employee NICs rate to 10%
23-
expected_impact: 13.0
23+
expected_impact: 13.2
2424
parameters:
2525
gov.hmrc.national_insurance.class_1.rates.employee.main: 0.1
2626
- name: Raise VAT standard rate by 2pp
2727
expected_impact: 18.8
2828
parameters:
2929
gov.hmrc.vat.standard_rate: 0.22
3030
- name: Raise additional rate by 3pp
31-
expected_impact: 4.6
31+
expected_impact: 4.5
3232
parameters:
3333
gov.hmrc.income_tax.rates.uk[2].rate: 0.48

policyengine_uk/tests/policy/reforms/nov_2025_budget/income_source_tax_rates.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,54 @@
182182
output:
183183
# £1000 at NEW rate 47%
184184
property_income_tax: 1000 * 0.47
185+
186+
# =============================================================================
187+
# INTEGRATION TESTS - verify income_tax includes source-specific taxes
188+
# These tests verify that property_income_tax flows into total income_tax
189+
# =============================================================================
190+
191+
- name: Property tax flows into income_tax - basic rate - 2028
192+
period: 2028
193+
absolute_error_margin: 1
194+
input:
195+
# Person with just personal allowance worth of employment income
196+
employment_income: 12570
197+
property_income: 2000
198+
output:
199+
# Property allowance is £1000, so £1000 taxable at 22%
200+
property_income_tax: 220
201+
# Total income_tax should include property_income_tax
202+
# Employment: £0 (covered by PA), Property: £220
203+
income_tax: 220
204+
205+
- name: Property tax flows into income_tax - higher rate - 2028
206+
period: 2028
207+
absolute_error_margin: 1
208+
input:
209+
employment_income: 60000
210+
property_income: 2000
211+
output:
212+
# £1000 at 42%
213+
property_income_tax: 420
214+
# income_tax = earned_income_tax + savings_income_tax + dividend_income_tax + property_income_tax
215+
# Earned income tax on £60000: PA=£12570, taxable=£47430
216+
# Basic rate (20%): £37700 at 20% = £7540
217+
# Higher rate (40%): £9730 at 40% = £3892
218+
# Total earned: £11432
219+
# Property: £420
220+
# Total: £11852
221+
income_tax: 11852
222+
223+
- name: Savings tax flows into income_tax - higher rate - 2028
224+
period: 2028
225+
absolute_error_margin: 1
226+
input:
227+
employment_income: 60000
228+
savings_interest_income: 2000
229+
output:
230+
# £1500 at 42% (after £500 savings allowance)
231+
savings_income_tax: 630
232+
# Earned: £11432 (same as above)
233+
# Savings: £630
234+
# Total: £12062
235+
income_tax: 12062

policyengine_uk/variables/gov/hmrc/income_tax/income_tax_pre_charges.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ class income_tax_pre_charges(Variable):
1616
"earned_income_tax",
1717
"savings_income_tax",
1818
"dividend_income_tax",
19+
"property_income_tax",
1920
]

0 commit comments

Comments
 (0)