Skip to content

ACA marketplace enrollment should create filing obligation, not the reverse #7781

@baogorek

Description

@baogorek

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

  1. Person is eligible for marketplace insurance
  2. Person enrolls on the marketplace → receives Advanced PTC (APTC) as a monthly premium reduction
  3. Receiving APTC creates a legal obligation to file a tax return to reconcile the credit (IRC § 36B)
  4. 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_aca

This 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions