-
Notifications
You must be signed in to change notification settings - Fork 205
Description
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
-
Reform activation check at creation time: The
enabledparameter is checked increate_eitc_winship_reform()at reform creation time (line 5 ofwinship.py), not at simulation time. Since structural reforms are created with base parameters before user modifications are applied, the reform is never included whenenableddefaults tofalse. -
Missing
takes_up_eitcmultiplier: The reform'seitcformula omits thetakes_up_eitcfactor that exists in the baseline. -
Default
agi_eitc_limitof 0: When the limit is 0, the conditionagi < 0is 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
enabledinside the formula usingwhere() - Include
takes_up_eitcmultiplier - Handle
agi_eitc_limit = 0as "no limit" rather than "no EITC"
Files to Modify
policyengine_us/reforms/winship.pypolicyengine_us/parameters/gov/contrib/individual_eitc/agi_eitc_limit.yaml(update description)