Skip to content

Commit 04873f4

Browse files
Merge pull request #7914 from DTrim99/congress-working-parents-tax-relief-act
Add Working Parents Tax Relief Act of 2026
2 parents 811ad7d + bd21e8e commit 04873f4

12 files changed

Lines changed: 1967 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add Working Parents Tax Relief Act of 2026 EITC enhancement.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act increases the EITC credit percentage by this amount for filers with one qualifying child who has not attained age 4.
2+
3+
values:
4+
2026-01-01: 0.4224
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act credit percentage increase (1 child)
8+
unit: /1
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act increases the EITC credit percentage by this amount per qualifying young child for filers with two or more qualifying children.
2+
3+
values:
4+
2026-01-01: 0.3007
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act credit percentage increase per young child (2+ children)
8+
unit: /1
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act uses this indicator to determine whether the EITC enhancement for parents of young children is in effect.
2+
3+
values:
4+
0000-01-01: false
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act in effect
8+
unit: bool
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act limits the EITC percentage bonus to this many qualifying young children.
2+
3+
values:
4+
2026-01-01: 3
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act maximum young children for bonus
8+
unit: /1
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act increases the EITC phaseout percentage by this amount per qualifying young child.
2+
3+
values:
4+
2026-01-01: 0.05
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act phaseout percentage increase per young child
8+
unit: /1
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
description: The Working Parents Tax Relief Act sets this age as the threshold below which qualifying children receive the EITC enhancement.
2+
3+
values:
4+
2026-01-01: 4
5+
6+
metadata:
7+
label: Working Parents Tax Relief Act young child age threshold
8+
unit: year
9+
period: year
10+
reference:
11+
- title: IRC §32(b) - Percentages and amounts (baseline structure being amended)
12+
href: https://www.law.cornell.edu/uscode/text/26/32#b
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from .working_parents_tax_relief_act import (
2+
create_working_parents_tax_relief_act_reform,
3+
working_parents_tax_relief_act,
4+
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from .working_parents_tax_relief_act import (
2+
create_working_parents_tax_relief_act_reform,
3+
working_parents_tax_relief_act,
4+
)
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
from policyengine_us.model_api import *
2+
from policyengine_core.periods import period as period_
3+
4+
5+
def create_working_parents_tax_relief_act() -> Reform:
6+
7+
class eitc_young_child_count(Variable):
8+
value_type = int
9+
entity = TaxUnit
10+
label = "EITC-qualifying young children"
11+
unit = "/1"
12+
definition_period = YEAR
13+
14+
def formula(tax_unit, period, parameters):
15+
person = tax_unit.members
16+
is_child = person("is_qualifying_child_dependent", period)
17+
meets_eitc_id = person("meets_eitc_identification_requirements", period)
18+
is_eitc_eligible_child = is_child & meets_eitc_id
19+
age = person("age", period)
20+
p = parameters(
21+
period
22+
).gov.contrib.congress.mcdonald_rivet.working_parents_tax_relief_act
23+
is_young = age < p.young_child_age_threshold
24+
return tax_unit.sum(is_eitc_eligible_child & is_young)
25+
26+
class eitc_phase_in_rate(Variable):
27+
value_type = float
28+
entity = TaxUnit
29+
label = "EITC phase-in rate"
30+
unit = "/1"
31+
definition_period = YEAR
32+
33+
def formula(tax_unit, period, parameters):
34+
child_count = tax_unit("eitc_child_count", period)
35+
eitc = parameters(period).gov.irs.credits.eitc
36+
baseline_rate = eitc.phase_in_rate.calc(child_count)
37+
38+
p = parameters(
39+
period
40+
).gov.contrib.congress.mcdonald_rivet.working_parents_tax_relief_act
41+
if not p.in_effect:
42+
return baseline_rate
43+
44+
young_child_count = min_(
45+
tax_unit("eitc_young_child_count", period), p.max_young_children
46+
)
47+
48+
bonus = where(
49+
child_count == 1,
50+
where(
51+
young_child_count > 0,
52+
p.credit_percentage_increase_one_child,
53+
0,
54+
),
55+
young_child_count * p.credit_percentage_increase_per_young_child,
56+
)
57+
58+
return baseline_rate + bonus
59+
60+
class eitc_phase_out_rate(Variable):
61+
value_type = float
62+
entity = TaxUnit
63+
label = "EITC phase-out rate"
64+
unit = "/1"
65+
definition_period = YEAR
66+
67+
def formula(tax_unit, period, parameters):
68+
eitc = parameters(period).gov.irs.credits.eitc
69+
num_children = tax_unit("eitc_child_count", period)
70+
baseline_rate = eitc.phase_out.rate.calc(num_children)
71+
72+
p = parameters(
73+
period
74+
).gov.contrib.congress.mcdonald_rivet.working_parents_tax_relief_act
75+
if not p.in_effect:
76+
return baseline_rate
77+
78+
young_child_count = min_(
79+
tax_unit("eitc_young_child_count", period), p.max_young_children
80+
)
81+
82+
bonus = where(
83+
num_children >= 1,
84+
young_child_count * p.phaseout_percentage_increase_per_young_child,
85+
0,
86+
)
87+
88+
return baseline_rate + bonus
89+
90+
class eitc_maximum(Variable):
91+
value_type = float
92+
entity = TaxUnit
93+
label = "Maximum EITC"
94+
unit = USD
95+
definition_period = YEAR
96+
97+
def formula(tax_unit, period, parameters):
98+
child_count = tax_unit("eitc_child_count", period)
99+
eitc = parameters(period).gov.irs.credits.eitc
100+
baseline_max = eitc.max.calc(child_count)
101+
baseline_rate = eitc.phase_in_rate.calc(child_count)
102+
103+
p = parameters(
104+
period
105+
).gov.contrib.congress.mcdonald_rivet.working_parents_tax_relief_act
106+
if not p.in_effect:
107+
return baseline_max
108+
109+
# Per IRC §32(b): max = credit_percentage × earned_income_amount
110+
# Scale proportionally: new_max = baseline_max × (new_rate / baseline_rate)
111+
new_rate = tax_unit("eitc_phase_in_rate", period)
112+
ratio = where(baseline_rate > 0, new_rate / baseline_rate, 1)
113+
return baseline_max * ratio
114+
115+
class reform(Reform):
116+
def apply(self):
117+
self.add_variable(eitc_young_child_count)
118+
self.update_variable(eitc_phase_in_rate)
119+
self.update_variable(eitc_phase_out_rate)
120+
self.update_variable(eitc_maximum)
121+
122+
return reform
123+
124+
125+
def create_working_parents_tax_relief_act_reform(
126+
parameters, period, bypass: bool = False
127+
):
128+
if bypass:
129+
return create_working_parents_tax_relief_act()
130+
131+
p = parameters.gov.contrib.congress.mcdonald_rivet.working_parents_tax_relief_act
132+
reform_active = False
133+
current_period = period_(period)
134+
135+
for i in range(5):
136+
if p(current_period).in_effect:
137+
reform_active = True
138+
break
139+
current_period = current_period.offset(1, "year")
140+
141+
if reform_active:
142+
return create_working_parents_tax_relief_act()
143+
else:
144+
return None
145+
146+
147+
working_parents_tax_relief_act = create_working_parents_tax_relief_act_reform(
148+
None, None, bypass=True
149+
)

0 commit comments

Comments
 (0)