Problem
medicaid_category currently serves two roles:
- a legal eligibility pathway: why a person qualifies for Medicaid; and
- a cost/risk grouping input: which per-capita Medicaid spending cell is assigned through
medicaid_group and medicaid_cost.
Those are not the same concept. A policy reform can change the legal pathway that qualifies an already-enrolled person without changing their underlying expected medical cost. Reclassifying the person from one legal pathway to another should not by itself create a large Medicaid cost change.
Current code shape
medicaid_group.py maps to AGED_DISABLED when:
medicaid_category == SSI_RECIPIENT, or
is_ssi_recipient_for_medicaid, or
is_optional_senior_or_disabled_for_medicaid.
It does not classify a baseline Medicaid expansion/parent/adult enrollee as aged/disabled just because is_ssi_disabled, is_disabled, Medicare/disability evidence, age, or other stable risk traits are true.
So the spending group can change only because the legal eligibility route changes, even if the person's traits and enrollment status are unchanged.
Concrete example from SSI asset-limit analysis
SSI eligibility reforms can change medicaid_category from an existing full-Medicaid pathway to SSI_RECIPIENT, which changes medicaid_group to AGED_DISABLED and creates a large Medicaid cost increase even when the person was already Medicaid-enrolled at baseline.
Run context:
- Dataset: rebuilt enhanced CPS 2024 H5 from
policyengine-us-data SIPP/SSI work: /Users/maxghenis/.codex-worktrees/us-data-sipp-ssi-sga-income-filter-20260524/policyengine_us_data/storage/enhanced_cps_2024.h5
- Model:
policyengine-us==1.705.16
- Audit files in
/Users/maxghenis/PolicyEngine/ssi-asset-limits:
.local-results/net-fiscal/ten_twenty_2026_new_ssi_medicaid_model_buckets_peus_1_705_16.csv
.local-results/net-fiscal/no_limit_2026_new_ssi_medicaid_model_buckets_peus_1_705_16.csv
For the $10k/$20k SSI asset-limit reform:
- 267.2k new SSI recipients were already Medicaid-enrolled at baseline but changed Medicaid spending group.
- This produced +$3.94B/year in modeled Medicaid cost, with no change in enrollment.
- Almost all were age 18-64,
is_ssi_disabled=true, and reported Medicaid at baseline.
- Top state: North Carolina, 239.2k people and +$3.63B/year.
For removing the SSI asset limit entirely:
- 615.6k new SSI recipients were already Medicaid-enrolled but changed spending group.
- This produced +$8.47B/year in modeled Medicaid cost, again with no enrollment change.
Why this matters beyond SSI
The same issue can arise for any reform or missing pathway that changes categorical route but not underlying health risk, for example:
- an expansion adult later qualifying through SSI, optional ABD, medically needy, or a working-disabled buy-in;
- a parent/caretaker or young adult moving into another pathway;
- state-specific Medicaid pathways being added or reordered;
- 209(b), MSP/QMB, or medically needy implementation changing legal category precedence.
The model should not let eligibility hierarchy changes masquerade as changes in expected medical spending.
Suggested approach
- Separate legal pathway from spending/risk classification.
- Keep
medicaid_category as a legal eligibility-pathway variable.
- Add or revise a separate cost-group variable based on stable enrollee traits and calibrated risk/spending cells, not just current policy pathway.
- Use traits such as age, disability evidence, Medicare status, pregnancy, child status, and possibly baseline/reporting evidence where appropriate.
- If legal pathway matters for federal/state financing, model that separately from total expected medical cost.
- Preserve category precedence for eligibility while avoiding mechanical
medicaid_cost jumps when only category precedence changes.
Acceptance criteria
- Add tests covering an already-Medicaid-enrolled person whose legal Medicaid pathway changes under a reform but whose traits and enrollment status do not.
medicaid_cost does not change solely because the legal eligibility category changes, unless a documented financing or cost model intentionally says it should.
- Eligibility-pathway outputs remain available for legal/program analysis.
- Cost/risk-group outputs are documented as distinct from eligibility-pathway outputs.
- SSI asset-limit analyses can distinguish new Medicaid enrollment from cost/risk reclassification effects.
Problem
medicaid_categorycurrently serves two roles:medicaid_groupandmedicaid_cost.Those are not the same concept. A policy reform can change the legal pathway that qualifies an already-enrolled person without changing their underlying expected medical cost. Reclassifying the person from one legal pathway to another should not by itself create a large Medicaid cost change.
Current code shape
medicaid_group.pymaps toAGED_DISABLEDwhen:medicaid_category == SSI_RECIPIENT, oris_ssi_recipient_for_medicaid, oris_optional_senior_or_disabled_for_medicaid.It does not classify a baseline Medicaid expansion/parent/adult enrollee as aged/disabled just because
is_ssi_disabled,is_disabled, Medicare/disability evidence, age, or other stable risk traits are true.So the spending group can change only because the legal eligibility route changes, even if the person's traits and enrollment status are unchanged.
Concrete example from SSI asset-limit analysis
SSI eligibility reforms can change
medicaid_categoryfrom an existing full-Medicaid pathway toSSI_RECIPIENT, which changesmedicaid_grouptoAGED_DISABLEDand creates a large Medicaid cost increase even when the person was already Medicaid-enrolled at baseline.Run context:
policyengine-us-dataSIPP/SSI work:/Users/maxghenis/.codex-worktrees/us-data-sipp-ssi-sga-income-filter-20260524/policyengine_us_data/storage/enhanced_cps_2024.h5policyengine-us==1.705.16/Users/maxghenis/PolicyEngine/ssi-asset-limits:.local-results/net-fiscal/ten_twenty_2026_new_ssi_medicaid_model_buckets_peus_1_705_16.csv.local-results/net-fiscal/no_limit_2026_new_ssi_medicaid_model_buckets_peus_1_705_16.csvFor the $10k/$20k SSI asset-limit reform:
is_ssi_disabled=true, and reported Medicaid at baseline.For removing the SSI asset limit entirely:
Why this matters beyond SSI
The same issue can arise for any reform or missing pathway that changes categorical route but not underlying health risk, for example:
The model should not let eligibility hierarchy changes masquerade as changes in expected medical spending.
Suggested approach
medicaid_categoryas a legal eligibility-pathway variable.medicaid_costjumps when only category precedence changes.Acceptance criteria
medicaid_costdoes not change solely because the legal eligibility category changes, unless a documented financing or cost model intentionally says it should.