Summary
The Medicaid work requirement variable (medicaid_work_requirement_eligible) reads monthly_hours_worked, which is a pure input variable with no formula and no data in any dataset (national or state). This means the work requirement incorrectly disqualifies nearly all expansion adults starting in 2027 when OBBBA work requirements take effect.
Details
medicaid_work_requirement_eligible (line 16) uses:
monthly_hours_worked = person("monthly_hours_worked", period)
meets_monthly_work_hours = monthly_hours_worked >= p.monthly_hours_threshold # 80 hours
But monthly_hours_worked is:
- A pure input variable with no formula (
variables/household/income/person/monthly_hours_worked.py)
- Not present in state H5 datasets (checked
staging/states/UT.h5 — only 182 variables, monthly_hours_worked not among them)
- Present as an empty group in the national enhanced CPS
- Returns zero for every person in microsimulations
Meanwhile, SNAP work requirements correctly use weekly_hours_worked_before_lsr, which IS populated from CPS data (~1.85M people with nonzero values in Utah alone).
| Variable |
In dataset? |
Used by |
weekly_hours_worked_before_lsr |
Yes |
SNAP ABAWD + general work requirements |
hours_worked_last_week |
Yes |
State programs (DC, MD, IL) |
monthly_hours_worked |
No |
Medicaid work requirements |
Impact
For 2027+ microsimulations, the 80 hours/month threshold is never met (since monthly_hours_worked = 0 for everyone). Only people with exemptions (students, disabled, pregnant, parents with kids ≤13) pass the work requirement. In Utah this filters ~198k expansion adults down to ~53k — a massive undercount.
Suggested fix
Either:
- Add a formula to
monthly_hours_worked deriving from hours_worked_last_week (e.g., hours_worked_last_week * 52 / 12) or weekly_hours_worked_before_lsr
- Change
medicaid_work_requirement_eligible to use weekly_hours_worked_before_lsr (consistent with SNAP) and compare against a weekly threshold instead
Option 2 is probably more consistent with how SNAP handles it.
Summary
The Medicaid work requirement variable (
medicaid_work_requirement_eligible) readsmonthly_hours_worked, which is a pure input variable with no formula and no data in any dataset (national or state). This means the work requirement incorrectly disqualifies nearly all expansion adults starting in 2027 when OBBBA work requirements take effect.Details
medicaid_work_requirement_eligible(line 16) uses:But
monthly_hours_workedis:variables/household/income/person/monthly_hours_worked.py)staging/states/UT.h5— only 182 variables,monthly_hours_workednot among them)Meanwhile, SNAP work requirements correctly use
weekly_hours_worked_before_lsr, which IS populated from CPS data (~1.85M people with nonzero values in Utah alone).weekly_hours_worked_before_lsrhours_worked_last_weekmonthly_hours_workedImpact
For 2027+ microsimulations, the 80 hours/month threshold is never met (since
monthly_hours_worked= 0 for everyone). Only people with exemptions (students, disabled, pregnant, parents with kids ≤13) pass the work requirement. In Utah this filters ~198k expansion adults down to ~53k — a massive undercount.Suggested fix
Either:
monthly_hours_workedderiving fromhours_worked_last_week(e.g.,hours_worked_last_week * 52 / 12) orweekly_hours_worked_before_lsrmedicaid_work_requirement_eligibleto useweekly_hours_worked_before_lsr(consistent with SNAP) and compare against a weekly threshold insteadOption 2 is probably more consistent with how SNAP handles it.