Skip to content

Commit ce45352

Browse files
authored
Use deterministic marriage allowance take-up in CPS reform (#1676)
1 parent ac3a64b commit ce45352

3 files changed

Lines changed: 54 additions & 2 deletions

File tree

changelog.d/1676.changed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Make the CPS expanded Marriage Allowance reform use the explicit `would_claim_marriage_allowance` input instead of formula-time randomness.

policyengine_uk/reforms/cps/marriage_tax_reforms.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ def formula(person, period, parameters):
6363
)
6464
transferable_amount = person("partners_unused_personal_allowance", period)
6565
allowances = parameters(period).gov.hmrc.income_tax.allowances
66-
takeup_rate = allowances.marriage_allowance.takeup_rate
6766
capped_percentage = allowances.marriage_allowance.max
6867
expanded_ma_cap = parameters(
6968
period
@@ -81,7 +80,7 @@ def formula(person, period, parameters):
8180
np.ceil(amount_if_eligible_pre_rounding / rounding_increment)
8281
* rounding_increment
8382
)
84-
takes_up = random(person) < takeup_rate
83+
takes_up = person("would_claim_marriage_allowance", period)
8584
return eligible * amount_if_eligible * takes_up
8685

8786
class reform(Reform):

policyengine_uk/tests/policy/reforms/cps/marriage_tax_reforms.yaml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,32 @@
5656
# Low earner's partner has no unused PA to transfer, so low_earner's MA is 0.
5757
marriage_allowance: [1260, 0]
5858

59+
- name: Expanded MA — explicit Marriage Allowance take-up input drives the reform
60+
period: 2024
61+
absolute_error_margin: 10
62+
reforms:
63+
- policyengine_uk.reforms.cps.marriage_tax_reforms.expanded_ma_reform
64+
input:
65+
gov.hmrc.income_tax.allowances.marriage_allowance.takeup_rate: 0.0
66+
people:
67+
high_earner:
68+
age: 35
69+
employment_income: 60_000
70+
would_claim_marriage_allowance: true
71+
low_earner:
72+
age: 33
73+
employment_income: 10_000
74+
would_claim_marriage_allowance: true
75+
benunits:
76+
benunit:
77+
members: [high_earner, low_earner]
78+
is_married: true
79+
households:
80+
household:
81+
members: [high_earner, low_earner]
82+
output:
83+
marriage_allowance: [1260, 0]
84+
5985
- name: Marriage-neutral IT — single person's adjusted net income is unchanged by the reform
6086
period: 2024
6187
absolute_error_margin: 1
@@ -100,3 +126,29 @@
100126
members: [high_earner, low_earner]
101127
output:
102128
adjusted_net_income: [35_000, 35_000]
129+
130+
- name: Expanded MA — explicit no-claim input suppresses the reform even with full take-up rate
131+
period: 2024
132+
absolute_error_margin: 10
133+
reforms:
134+
- policyengine_uk.reforms.cps.marriage_tax_reforms.expanded_ma_reform
135+
input:
136+
gov.hmrc.income_tax.allowances.marriage_allowance.takeup_rate: 1.0
137+
people:
138+
high_earner:
139+
age: 35
140+
employment_income: 60_000
141+
would_claim_marriage_allowance: false
142+
low_earner:
143+
age: 33
144+
employment_income: 10_000
145+
would_claim_marriage_allowance: false
146+
benunits:
147+
benunit:
148+
members: [high_earner, low_earner]
149+
is_married: true
150+
households:
151+
household:
152+
members: [high_earner, low_earner]
153+
output:
154+
marriage_allowance: [0, 0]

0 commit comments

Comments
 (0)