Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/fix-aca-ptc-non-filers.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Gate aca_ptc on tax_unit_is_filer to prevent non-filers from receiving PTC.
16 changes: 16 additions & 0 deletions policyengine_us/tests/policy/baseline/gov/aca/ptc/aca_ptc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
slcsp: 1_200
aca_magi: 25_000
aca_required_contribution_percentage: 0.04
tax_unit_is_filer: true
output:
aca_ptc: 200 # 1200 - 0.04 * 25000 = 200

Expand All @@ -28,6 +29,7 @@
slcsp: 1_200
aca_magi: 25_000
aca_required_contribution_percentage: 0.05
tax_unit_is_filer: true
output:
aca_ptc: 0 # 1200 - 0.05 * 25000 = -50, floored to 0

Expand All @@ -39,5 +41,19 @@
slcsp: 1_200
aca_magi: 25_000
aca_required_contribution_percentage: 0.04
tax_unit_is_filer: true
output:
aca_ptc: 0

- name: ACA PTC zero for non-filers
absolute_error_margin: 0.01
period: 2025
input:
is_aca_ptc_eligible: true
slcsp: 1_200
aca_magi: 25_000
aca_required_contribution_percentage: 0.04
takes_up_aca_if_eligible: true
tax_unit_is_filer: false
output:
aca_ptc: 0 # Non-filers cannot claim PTC per 26 USC § 36B
5 changes: 4 additions & 1 deletion policyengine_us/variables/gov/aca/ptc/aca_ptc.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ def formula_2024(tax_unit, period, parameters):
income = tax_unit("aca_magi", period)
applicable_figure = tax_unit("aca_required_contribution_percentage", period)
takes_up_aca_if_eligible = tax_unit("takes_up_aca_if_eligible", period)
is_filer = tax_unit("tax_unit_is_filer", period)
return (
max_(0, plan_cost - income * applicable_figure) * takes_up_aca_if_eligible
max_(0, plan_cost - income * applicable_figure)
* takes_up_aca_if_eligible
* is_filer
)
Loading