Skip to content

Fix individual_eitc reform not responding to parameter changes #7779

@DTrim99

Description

@DTrim99

Bug Description

The individual_eitc (Winship EITC) reform does not respond to parameter changes in the app. When setting enabled to true and agi_eitc_limit to 100000, there is no impact.

Root Cause

  1. Reform activation check at creation time: The enabled parameter is checked in create_eitc_winship_reform() at reform creation time (line 5 of winship.py), not at simulation time. Since structural reforms are created with base parameters before user modifications are applied, the reform is never included when enabled defaults to false.

  2. Missing takes_up_eitc multiplier: The reform's eitc formula omits the takes_up_eitc factor that exists in the baseline.

  3. Default agi_eitc_limit of 0: When the limit is 0, the condition agi < 0 is false for virtually everyone.

Expected Behavior

When user sets enabled: true and agi_eitc_limit: 100000 in the app, households with AGI < $100,000 should receive the individual-income-based EITC calculation.

Solution

Restructure the reform to follow modern patterns (like NJ budget reforms):

  • Check enabled inside the formula using where()
  • Include takes_up_eitc multiplier
  • Handle agi_eitc_limit = 0 as "no limit" rather than "no EITC"

Files to Modify

  • policyengine_us/reforms/winship.py
  • policyengine_us/parameters/gov/contrib/individual_eitc/agi_eitc_limit.yaml (update description)

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