Skip to content

Reconcile reported Medicaid coverage with modeled Medicaid enrollment in eCPS #1136

@MaxGhenis

Description

@MaxGhenis

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions