PolicyEngine / PolicyEngine/microcosm

US: humanitarian immigration statuses absent from the imputation — H.R.1 §71109/§71302 eligibility channels compute ≈$0

Open
#767 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
4
Avg merge
1d 3h
Merged PRs (30d)
94

Description

Evidence

On the certified US release (populace-us-2024 Build P, read through policyengine.py 5.0.1), immigration_status carries variation but no records in the categories H.R.1 removes from program eligibility:

status records
CITIZEN 153,491
UNDOCUMENTED 6,682
LEGAL_PERMANENT_RESIDENT 5,702
CUBAN_HAITIAN_ENTRANT 226
DACA 220
REFUGEE / ASYLEE / DEPORTATION_WITHHELD / CONDITIONAL_ENTRANT / PAROLED_ONE_YEAR / TPS 0

years_since_us_entry is populated (100% nonzero).

Why it matters

Three enacted H.R.1 eligibility channels key off exactly these categories and therefore compute ≈$0 on this file:

  1. Medicaid — §71109 narrows qualified immigrants to LPR + Cuban/Haitian entrants + COFA, effective 2026-10-01. Encoded in policyengine-us (gov/hhs/medicaid/eligibility/eligible_immigration_statuses, 2026-10-01 value).
  2. CHIP — same §71109, same date (KFF summary of the law). Not yet encoded in policyengine-us (filed separately), but the data gap binds regardless.
  3. ACA PTC — §71302: below-FPL lawfully-present exception repealed from 2026; ineligible_immigration_statuses adds TPS/REFUGEE/ASYLEE/DEPORTATION_WITHHELD/PAROLED_ONE_YEAR from 2027-01-01. Encoded in policyengine-us.

CBO scores §71109 alone at −$6B federal Medicaid over 10 years and +100k uninsured by 2034. Any distributional analysis of the law on this file silently zeroes all three channels. Context: the IARIW OBBBA paper (PolicyEngine/obbba-paper) discloses this as a data boundary in its methods; the multi-year extension needs it fixed.

Ask

Carry humanitarian/temporary-protection statuses in the imputation so eligibility rules can see them. Design options, not mutually exclusive:

  1. Impute the missing categories onto the CPS base — reassign a calibrated share of current LPR/citizen records (or model directly from ACS/SIPP citizenship + entry-year + origin) to REFUGEE / ASYLEE / DEPORTATION_WITHHELD / PAROLED_ONE_YEAR / TPS / CONDITIONAL_ENTRANT, targeted to external stocks (DHS/ORR admissions, KFF/ASPE coverage counts of refugees-asylees on Medicaid/CHIP).
  2. A stored eligibility-check surface: alongside takes_up_*_if_eligible, a data-level flag family (e.g., passes_immigration_eligibility_check_{program}) that rules engines respect — so eligibility shocks flow to Medicaid, CHIP, and PTC coherently rather than being program-dollar overrides. This generalizes beyond immigration (verification/redetermination churn could use the same surface).
  3. Interim (consumer-side, documented in the OBBBA repo): a seeded reform-level reassignment of statuses in the right proportions — acceptable for sensitivity work, not for certified estimates.

Acceptance criteria

  • immigration_status distribution on the release includes the humanitarian categories with weighted totals validated against a stated external source.
  • The three H.R.1 channels above produce nonzero, sign-correct effects when toggled on a certified release.
  • Certification notes state the imputation source and target for each category.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how immigration_status is imputed in the certified populace-us-2024 release and inspect policyengine-us's gov/hhs/medicaid/eligibility/eligible_immigration_statuses entry point and the ACA ineligible_immigration_statuses rule. Compare weighted category totals with the stated external sources and run certified-release scenarios; done means humanitarian categories are present, all three channels show nonzero sign-correct effects, and certification notes record sources and targets.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.