-
Notifications
You must be signed in to change notification settings - Fork 205
Description
Problem
PR #7753 proposes gating aca_ptc on tax_unit_is_filer — requiring a tax unit to be a filer before they can receive the Premium Tax Credit. This has the causal direction backwards.
How ACA PTC actually works
- Person is eligible for marketplace insurance
- Person enrolls on the marketplace → receives Advanced PTC (APTC) as a monthly premium reduction
- Receiving APTC creates a legal obligation to file a tax return to reconcile the credit (IRC § 36B)
- Person files → final PTC is computed on their return
The correct causal chain is: ACA enrollment → filing obligation, not filing → ACA eligibility.
Why this matters for microsimulation
In policyengine-us-data's calibration pipeline, we apply takeup draws for takes_up_aca_if_eligible (do they enroll?) and would_file_taxes_voluntarily (would they file if not required?). If aca_ptc is gated on is_filer, then tax units that enroll on the marketplace but wouldn't otherwise file voluntarily get $0 PTC — even though their enrollment itself obligates them to file.
This created a persistent mismatch between the calibration matrix (X@w) and the simulation output (sim.calculate) in policyengine-us-data, because the two paths handled the interaction differently.
Proposed fix
PR #7754 adds takes_up_aca_if_eligible as an OR condition in tax_unit_is_filer:
return required | files_for_credits | files_voluntarily | files_for_acaThis means ACA marketplace enrollment implies filing, which is the correct causal direction. The * is_filer gate proposed in #7753 becomes unnecessary — ACA enrollees will always pass it.
Recommendation
- Merge Add Connecticut HB-5114 renter's tax credit reform #7754 (ACA enrollment → filer)
- Close Gate aca_ptc on tax_unit_is_filer for non-filers #7753 (filer → ACA eligibility) as superseded