PolicyEngine / PolicyEngine/policyengine-us

Adults in the Medicaid coverage gap are charged the full benchmark premium

Open
#9,472 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
162
Forks
212
Avg merge
3d 3h
Merged PRs (30d)
97

Description

**Observed** (API, 2026): a single childless 30-year-old in Wyoming with **$0 income** gets `spm_unit_medical_out_of_pocket_expenses` = $11,769 with `medicaid` = 0 and `premium_tax_credit` = 0. Texas: $6,962. The premium is flat below 100% FPL and drops to $336 at $16,000, so `household_net_income` jumps by $11,433 when the household crosses the poverty line — a large negative cliff in the wrong direction.

**Cause**: `takes_up_aca_if_eligible` defaults to `True`, and `pays_aca_premium` tests immigration status, other coverage and age, but not whether any subsidy exists. Adults below 100% FPL in a non-expansion state have no Medicaid pathway and no PTC (26 CFR 1.36B-2(b)(1)), yet the model charges them the full benchmark premium.

**Expected**: these households are uninsured in practice — Wyoming DOH's 2026 coverage chart labels 0–99% FPL "No Coverage" for non-disabled adults. Premium should be $0 there (or take-up should require subsidy eligibility). Affects AL, FL, GA, KS, MS, SC, TN, TX, WY (WI covers adults to 100% FPL).

**Repro**: `POST /us/calculate`, one person age 30, `employment_income` 0 / 8000 / 12000 / 16000, `state_name: WY`, requesting `medicaid`, `premium_tax_credit`, `spm_unit_medical_out_of_pocket_expenses`.

Related: #8168 (marketplace take-up calibration).

Contributor guide

Open the contributing guide

Research direction

Start at the POST /us/calculate entry point and trace takes_up_aca_if_eligible and pays_aca_premium for a 30-year-old in Wyoming. Reproduce the 2026 cases with employment_income of 0, 8000, 12000, and 16000 while requesting Medicaid, premium_tax_credit, and spm_unit_medical_out_of_pocket_expenses. Done means adults below 100% FPL in non-expansion states are not charged the benchmark premium, without breaking subsidy-eligible cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.