Skip to content

[codex] Model Medicare Part B premiums net of MSP coverage#7971

Closed
MaxGhenis wants to merge 6 commits intoPolicyEngine:mainfrom
MaxGhenis:codex/medicare-partb-localfix
Closed

[codex] Model Medicare Part B premiums net of MSP coverage#7971
MaxGhenis wants to merge 6 commits intoPolicyEngine:mainfrom
MaxGhenis:codex/medicare-partb-localfix

Conversation

@MaxGhenis
Copy link
Copy Markdown
Contributor

What changed

  • model baseline medicare_part_b_premiums from enrollment and IRMAA/base premium schedules instead of treating Part B as a copied input
  • keep the reported CPS value as medicare_part_b_premiums_reported for audit use
  • net modeled Part B out-of-pocket premiums by a cycle-free MSP standard-premium offset
  • avoid the prior filing-status cycle in IRMAA calculations by using joint/separate status directly

Why

Part B premiums feed baseline SPM medical out-of-pocket expenses and therefore poverty projections. The prior baseline path copied reported/imputed Part B values, which is especially weak on the PUF/clone side. This PR moves the baseline to a model-consistent Part B path and nets out standard premiums covered on the beneficiary's behalf through MSP-like support.

Impact

  • makes baseline SPM MOOP more coherent for projections
  • preserves only IRMAA above the MSP-covered standard premium as out-of-pocket
  • keeps a separate reported variable for Census-style audits

Validation

  • uv run pytest -q policyengine_us/tests/policy/baseline/gov/hhs/medicare/test_part_b_msp_offset.py
  • direct local rebuild/measurement showed the MSP offset materially lowers modeled Part B totals but only modestly moves enhanced SPM poverty

Closes #7967.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 10, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (e8a542a) to head (adcc622).
⚠️ Report is 25 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7971    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            1        10     +9     
  Lines           17       134   +117     
==========================================
+ Hits            17       134   +117     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@MaxGhenis
Copy link
Copy Markdown
Contributor Author

Superseded by clean replacement PR #7972 from codex/medicare-partb-msp-clean.

@MaxGhenis MaxGhenis closed this Apr 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Model Medicare Part B premiums in baseline SPM MOOP

1 participant