Skip to content

Commit a96dded

Browse files
DTrim99claude
andcommitted
Add NY A04038 Enhanced Empire State Child Credit for Infants Act reform
Implements Assembly Bill A04038 which doubles the Empire State Child Credit for qualifying children under age one, effective tax year 2026. Closes #7181 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent a67e4d7 commit a96dded

File tree

7 files changed

+255
-0
lines changed

7 files changed

+255
-0
lines changed

changelog_entry.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- bump: minor
2+
changes:
3+
added:
4+
- NY A04038 Enhanced Empire State Child Credit for Infants Act reform.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
description: The New York Enhanced Empire State Child Credit for Infants Act (Assembly Bill A04038) applies if this is true.
2+
metadata:
3+
unit: bool
4+
period: year
5+
label: NY A04038 Enhanced Empire State Child Credit for Infants in effect
6+
reference:
7+
- title: NY Assembly Bill 2025-A04038
8+
href: https://assembly.state.ny.us/leg/?default_fld=&bn=A04038&term=2025&Summary=Y&Actions=Y&Text=Y
9+
values:
10+
0000-01-01: false
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
description: New York multiplies the Empire State Child Credit by this amount based on the child's age under the Enhanced Empire State Child Credit for Infants Act.
2+
metadata:
3+
type: single_amount
4+
threshold_unit: year
5+
amount_unit: /1
6+
label: NY A04038 infant child credit multiplier
7+
period: year
8+
reference:
9+
- title: NY Assembly Bill 2025-A04038
10+
href: https://assembly.state.ny.us/leg/?default_fld=&bn=A04038&term=2025&Summary=Y&Actions=Y&Text=Y
11+
12+
brackets:
13+
- threshold:
14+
2026-01-01: 0
15+
amount:
16+
2026-01-01: 2 # Double for children under age 1
17+
- threshold:
18+
2026-01-01: 1
19+
amount:
20+
2026-01-01: 1 # Standard credit for children age 1+

policyengine_us/reforms/reforms.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .biden.budget_2025 import create_capital_gains_tax_increase_reform
2121
from .eitc import create_halve_joint_eitc_phase_out_rate_reform
2222
from .states.ny.wftc import create_ny_working_families_tax_credit_reform
23+
from .states.ny.a04038 import create_ny_a04038_enhanced_escc_infants_reform
2324
from .states.sc.h3492 import create_sc_h3492_eitc_refundable_reform
2425
from .harris.lift.middle_class_tax_credit import (
2526
create_middle_class_tax_credit_reform,
@@ -179,6 +180,9 @@ def create_structural_reforms_from_parameters(parameters, period):
179180
create_halve_joint_eitc_phase_out_rate_reform(parameters, period)
180181
)
181182
ny_wftc = create_ny_working_families_tax_credit_reform(parameters, period)
183+
ny_a04038_enhanced_escc_infants = (
184+
create_ny_a04038_enhanced_escc_infants_reform(parameters, period)
185+
)
182186
sc_h3492_eitc_refundable = create_sc_h3492_eitc_refundable_reform(
183187
parameters, period
184188
)
@@ -327,6 +331,7 @@ def create_structural_reforms_from_parameters(parameters, period):
327331
capital_gains_tax_increase,
328332
halve_joint_eitc_phase_out_rate,
329333
ny_wftc,
334+
ny_a04038_enhanced_escc_infants,
330335
sc_h3492_eitc_refundable,
331336
middle_class_tax_credit,
332337
rent_relief_tax_credit,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .ny_a04038_enhanced_escc_infants import (
2+
create_ny_a04038_enhanced_escc_infants_reform,
3+
)
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
from policyengine_us.model_api import *
2+
3+
4+
def create_ny_a04038_enhanced_escc_infants() -> Reform:
5+
"""
6+
NY Assembly Bill A04038 - Enhanced Empire State Child Credit for Infants Act
7+
8+
Doubles the Empire State Child Credit for qualifying children under age one,
9+
effective tax year 2026 and thereafter.
10+
11+
Reference: https://assembly.state.ny.us/leg/?default_fld=&bn=A04038&term=2025
12+
"""
13+
14+
class ny_ctc_post_2024_base(Variable):
15+
value_type = float
16+
entity = TaxUnit
17+
label = "New York CTC post-2024 base amount"
18+
documentation = (
19+
"Base New York CTC amount before phase-out under post-2024 rules"
20+
)
21+
unit = USD
22+
definition_period = YEAR
23+
reference = (
24+
"https://assembly.state.ny.us/leg/?default_fld=&bn=A04038&term=2025",
25+
"https://www.nysenate.gov/legislation/laws/TAX/606",
26+
)
27+
defined_for = "ny_ctc_post_2024_eligible"
28+
29+
def formula(tax_unit, period, parameters):
30+
p = parameters(period).gov.states.ny.tax.income.credits.ctc
31+
p_reform = parameters(period).gov.contrib.states.ny.a04038
32+
person = tax_unit.members
33+
age = person("age", period)
34+
35+
# Post-2024 CTC rules (2025-2027)
36+
qualifies_for_federal_ctc = person("ctc_qualifying_child", period)
37+
qualifies = qualifies_for_federal_ctc & (age >= p.minimum_age)
38+
39+
# Calculate base credit amount by age
40+
credit_by_age = p.post_2024.amount.calc(age)
41+
42+
# Apply infant multiplier if reform is in effect
43+
multiplier = where(
44+
p_reform.in_effect,
45+
p_reform.multiplier.calc(age),
46+
1,
47+
)
48+
49+
qualifying_credit = qualifies * credit_by_age * multiplier
50+
51+
return tax_unit.sum(qualifying_credit)
52+
53+
class reform(Reform):
54+
def apply(self):
55+
self.update_variable(ny_ctc_post_2024_base)
56+
57+
return reform
58+
59+
60+
def create_ny_a04038_enhanced_escc_infants_reform(
61+
parameters, period, bypass: bool = False
62+
):
63+
if bypass:
64+
return create_ny_a04038_enhanced_escc_infants()
65+
66+
p = parameters(period).gov.contrib.states.ny.a04038
67+
68+
if p.in_effect:
69+
return create_ny_a04038_enhanced_escc_infants()
70+
else:
71+
return None
72+
73+
74+
ny_a04038_enhanced_escc_infants = (
75+
create_ny_a04038_enhanced_escc_infants_reform(None, None, bypass=True)
76+
)
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# NY A04038 Enhanced Empire State Child Credit for Infants Act Tests
2+
# Tests the doubled CTC for children under age 1, effective 2026
3+
4+
# Basic test - infant (age 0) gets doubled credit
5+
- name: Infant under age 1 gets doubled credit
6+
period: 2026
7+
reforms: policyengine_us.reforms.states.ny.a04038.ny_a04038_enhanced_escc_infants.ny_a04038_enhanced_escc_infants
8+
input:
9+
gov.contrib.states.ny.a04038.in_effect: true
10+
people:
11+
person1:
12+
age: 35
13+
is_tax_unit_head: true
14+
employment_income: 50_000
15+
infant:
16+
age: 0
17+
is_tax_unit_dependent: true
18+
tax_units:
19+
tax_unit:
20+
members: [person1, infant]
21+
households:
22+
household:
23+
members: [person1, infant]
24+
state_code: NY
25+
output:
26+
# Base credit for ages 0-3 in 2026 is $1,000
27+
# Doubled for infant: $1,000 * 2 = $2,000
28+
ny_ctc_post_2024_base: 2_000
29+
30+
# Child age 1 gets standard credit (no doubling)
31+
- name: Child age 1 gets standard credit
32+
period: 2026
33+
reforms: policyengine_us.reforms.states.ny.a04038.ny_a04038_enhanced_escc_infants.ny_a04038_enhanced_escc_infants
34+
input:
35+
gov.contrib.states.ny.a04038.in_effect: true
36+
people:
37+
person1:
38+
age: 35
39+
is_tax_unit_head: true
40+
employment_income: 50_000
41+
child:
42+
age: 1
43+
is_tax_unit_dependent: true
44+
tax_units:
45+
tax_unit:
46+
members: [person1, child]
47+
households:
48+
household:
49+
members: [person1, child]
50+
state_code: NY
51+
output:
52+
# Base credit for ages 0-3 in 2026 is $1,000
53+
# Age 1 does not qualify for doubling: $1,000 * 1 = $1,000
54+
ny_ctc_post_2024_base: 1_000
55+
56+
# Mixed ages - infant and older child
57+
- name: Mixed ages - infant doubled, older child standard
58+
period: 2026
59+
reforms: policyengine_us.reforms.states.ny.a04038.ny_a04038_enhanced_escc_infants.ny_a04038_enhanced_escc_infants
60+
input:
61+
gov.contrib.states.ny.a04038.in_effect: true
62+
people:
63+
person1:
64+
age: 35
65+
is_tax_unit_head: true
66+
employment_income: 50_000
67+
infant:
68+
age: 0
69+
is_tax_unit_dependent: true
70+
child:
71+
age: 5
72+
is_tax_unit_dependent: true
73+
tax_units:
74+
tax_unit:
75+
members: [person1, infant, child]
76+
households:
77+
household:
78+
members: [person1, infant, child]
79+
state_code: NY
80+
output:
81+
# Infant (age 0): $1,000 * 2 = $2,000
82+
# Child (age 5): $500 * 1 = $500 (ages 4-16 get $500 in 2026)
83+
# Total: $2,500
84+
ny_ctc_post_2024_base: 2_500
85+
86+
# Reform not in effect - standard credit
87+
- name: Reform not in effect uses standard credit
88+
period: 2026
89+
reforms: policyengine_us.reforms.states.ny.a04038.ny_a04038_enhanced_escc_infants.ny_a04038_enhanced_escc_infants
90+
input:
91+
gov.contrib.states.ny.a04038.in_effect: false
92+
people:
93+
person1:
94+
age: 35
95+
is_tax_unit_head: true
96+
employment_income: 50_000
97+
infant:
98+
age: 0
99+
is_tax_unit_dependent: true
100+
tax_units:
101+
tax_unit:
102+
members: [person1, infant]
103+
households:
104+
household:
105+
members: [person1, infant]
106+
state_code: NY
107+
output:
108+
# Without reform, infant gets standard $1,000
109+
ny_ctc_post_2024_base: 1_000
110+
111+
# Two infants get doubled credits
112+
- name: Two infants both get doubled credits
113+
period: 2026
114+
reforms: policyengine_us.reforms.states.ny.a04038.ny_a04038_enhanced_escc_infants.ny_a04038_enhanced_escc_infants
115+
input:
116+
gov.contrib.states.ny.a04038.in_effect: true
117+
people:
118+
person1:
119+
age: 35
120+
is_tax_unit_head: true
121+
employment_income: 50_000
122+
infant1:
123+
age: 0
124+
is_tax_unit_dependent: true
125+
infant2:
126+
age: 0
127+
is_tax_unit_dependent: true
128+
tax_units:
129+
tax_unit:
130+
members: [person1, infant1, infant2]
131+
households:
132+
household:
133+
members: [person1, infant1, infant2]
134+
state_code: NY
135+
output:
136+
# Two infants: $1,000 * 2 * 2 = $4,000
137+
ny_ctc_post_2024_base: 4_000

0 commit comments

Comments
 (0)