Problem
The enhanced CPS can contain source-reported Medicaid coverage inputs while PolicyEngine's modeled medicaid_enrolled remains false because no modeled eligibility pathway applies or take-up is false. This creates a data/model reconciliation problem for reforms that expand categorical eligibility, especially SSI reforms: a person can report Medicaid at baseline, but the model treats Medicaid as newly created by the reform.
Related policyengine-us issue: PolicyEngine/policyengine-us#8495
Audit evidence
In the SSI asset-limit audit using the rebuilt enhanced CPS 2024 H5:
/Users/maxghenis/.codex-worktrees/us-data-sipp-ssi-sga-income-filter-20260524/policyengine_us_data/storage/enhanced_cps_2024.h5
and policyengine-us==1.705.16, among people who become SSI recipients and newly Medicaid-enrolled in the model:
- $10k/$20k SSI asset limit: 4.5k weighted people outside the already-identified MI/MS gaps reported baseline Medicaid but had no modeled full-Medicaid pathway; modeled Medicaid cost increase about $88M.
- No SSI asset limit: 88.4k weighted people reported baseline Medicaid but had no modeled full-Medicaid pathway; modeled Medicaid cost increase about $1.22B.
Audit files in /Users/maxghenis/PolicyEngine/ssi-asset-limits:
.local-results/net-fiscal/ten_twenty_2026_new_medicaid_record_audit_peus_1_705_16.csv
.local-results/net-fiscal/no_limit_2026_new_medicaid_record_audit_peus_1_705_16.csv
.local-results/net-fiscal/new_medicaid_record_audit_summary_peus_1_705_16.csv
Why this is a us-data issue
policyengine-us-data already calibrates Medicaid enrollment to CMS targets through medicaid_enrolled constraints, but the source-reported Medicaid coverage variables are not currently reconciled into a clear baseline enrollment/coverage status for downstream reform scoring.
The data pipeline should make this conflict visible and either resolve it or preserve enough diagnostics so analyses can distinguish:
- true full Medicaid enrollment;
- limited-benefit Medicaid / MSP / QMB-like coverage;
- survey/source reporting inconsistency;
- missing
policyengine-us eligibility pathway;
- modeled eligible but take-up false.
Suggested approach
- Add an eCPS diagnostic for reported Medicaid coverage but
medicaid_enrolled == false under baseline current law.
- Add state and subgroup summaries to validation output, especially aged/disabled, Medicare, SSI, and reported Medicaid records.
- Decide whether reported Medicaid should seed a baseline
receives_medicaid/coverage input before calibration, or whether calibration should be allowed to override/report conflicts explicitly.
- Preserve enough variables for policy analysis to separate reported full Medicaid from limited-benefit Medicaid/MSP where possible.
- Coordinate with
policyengine-us #8495 so model formulas and data construction use the same interpretation.
Acceptance criteria
- eCPS validation reports weighted counts of reported-Medicaid/model-not-enrolled conflicts by state and key subgroup.
- SSI/Medicaid reform analyses can identify whether a modeled new Medicaid enrollee reported Medicaid at baseline.
- The pipeline documents how reported Medicaid coverage, modeled eligibility, take-up, and calibration targets interact.
Problem
The enhanced CPS can contain source-reported Medicaid coverage inputs while PolicyEngine's modeled
medicaid_enrolledremains false because no modeled eligibility pathway applies or take-up is false. This creates a data/model reconciliation problem for reforms that expand categorical eligibility, especially SSI reforms: a person can report Medicaid at baseline, but the model treats Medicaid as newly created by the reform.Related
policyengine-usissue: PolicyEngine/policyengine-us#8495Audit evidence
In the SSI asset-limit audit using the rebuilt enhanced CPS 2024 H5:
/Users/maxghenis/.codex-worktrees/us-data-sipp-ssi-sga-income-filter-20260524/policyengine_us_data/storage/enhanced_cps_2024.h5and
policyengine-us==1.705.16, among people who become SSI recipients and newly Medicaid-enrolled in the model:Audit files in
/Users/maxghenis/PolicyEngine/ssi-asset-limits:.local-results/net-fiscal/ten_twenty_2026_new_medicaid_record_audit_peus_1_705_16.csv.local-results/net-fiscal/no_limit_2026_new_medicaid_record_audit_peus_1_705_16.csv.local-results/net-fiscal/new_medicaid_record_audit_summary_peus_1_705_16.csvWhy this is a us-data issue
policyengine-us-dataalready calibrates Medicaid enrollment to CMS targets throughmedicaid_enrolledconstraints, but the source-reported Medicaid coverage variables are not currently reconciled into a clear baseline enrollment/coverage status for downstream reform scoring.The data pipeline should make this conflict visible and either resolve it or preserve enough diagnostics so analyses can distinguish:
policyengine-useligibility pathway;Suggested approach
medicaid_enrolled == falseunder baseline current law.receives_medicaid/coverage input before calibration, or whether calibration should be allowed to override/report conflicts explicitly.policyengine-us#8495 so model formulas and data construction use the same interpretation.Acceptance criteria