Skip to content

Scale Medicare per-enrollee spending to enrollees outside nursing homes - #10126

Draft
MaxGhenis wants to merge 3 commits into
cbo-medicare-net-of-premiumsfrom
medicare-noninstitutional-spending
Draft

MaxGhenis wants to merge 3 commits into
cbo-medicare-net-of-premiumsfrom
medicare-noninstitutional-spending

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #10118 (→ #10111 → #10107); review 3d8bb6d643...HEAD.

Problem

calibration.gov.hhs.medicare.per_capita_cost (CMS NHE Table 17, #10107) is Medicare spending per Part A and/or B enrollee, averaged over every enrollee, including nursing home residents. The microdata (CPS ASEC via Microcosm; medicare_enrolled comes from ASEC MCARE == 1) cover the civilian noninstitutionalized population, so the person-level Medicare values overstate the average for the people the model contains. CBO's household-income Medicare measure "excludes costs for institutionalized enrollees" (January 2026); CBO "estimates the number of institutionalized recipients and the benefits going to those recipients and removes those from the administrative totals to make the data compatible with how data are reported in the Current Population Survey" (WP 2018-07, file page 52).

The gap, by source and year

Spending per enrollee outside facilities relative to spending per enrollee (all enrollees = 1):

source who is excluded spending measure year ratio
MCBS Characteristics and Perceptions, Tables 1.1 and 4.1 MCBS long-term care facility residents, incl. assisted living Parts A, B and MA capitation 2006 0.924
2007 0.928
2008 0.928
2009 0.910
2010 0.924
2011 0.925
2012 0.918
2013 0.920
KFF (Jacobson, Neuman, Damico 2010), MCBS Cost & Use; the method CBO's 2006 distribution report cites in a facility on January 1, incl. assisted living FFS A+B 2006 0.953
MedPAC June 2025 ch. 5, Medicare administrative data long-stay nursing home residents (1.7% of beneficiaries) FFS A+B 2022 0.971

MCBS stopped publishing Medicare payments by residence after 2013; the 2015-2020 MCBS Chartbooks and the public use files do not split Medicare payments by residence. MedPAC's long-stay share fell from 2.6% (2013) to 1.7% (2022 and 2023); with 2022's relative spending, 2013's share would give 0.956.

Which definition

The CPS "is administered to a ... sample of households designed to represent the civilian noninstitutional population", and institutional group quarters "(for example, prisons and nursing homes) ... have never been part of the CPS sample" (BLS Handbook of Methods, CPS design); CBO describes the excluded population as "people living in long-term care institutions or correctional facilities" (CBO 2013b, file page 53). Assisted living, retirement homes and personal care homes are not institutional group quarter types in the Census Bureau's definitions. The MCBS "long-term care facility" includes "retirement homes, domiciliary or personal care facilities ... assisted and foster care homes" (CNP Appendix B), and 42% of KFF's full-year facility residents lived outside nursing homes. So this PR uses the nursing home definition (MedPAC): 0.971, a 2.9% gap. The MCBS facility definition gives a 7-9% gap; the nursing home correction is the smaller of the two, so it moves every consumer in the direction both readings agree on.

The ratio is constant from 2013 (per_capita_cost's first year): relative spending is published for 2022 only, and the 2006 relative under the broader definition (about 2.0, KFF) is lower than 2022's (2.76), which offsets 2013's higher share. CBO likewise holds its institutional share at the 2012 level from 2013.

Changes

  • New calibration.gov.hhs.medicare.noninstitutionalized_spending_ratio = 1 / (1 + 0.017 × (31,200 / 11,300 − 1)) = 0.971, with the derivation, the variants and their file pages in the YAML. With fee-for-service enrollment shares (62% of long-stay residents, 53% of others) it is 0.966; pricing Medicare Advantage at the long-stay risk score ratio (2.12 / 1.01) gives 0.975.
  • medicare_gross_cost = per_capita_cost × ratio.
  • medicare_cost = max(per_capita_cost × ratio − own Part A, gross Part B and expected Part D premiums, 0).
  • qmb_cost_sharing = per_capita_cost × ratio / 12 × QMB rate. (Value QMB cost sharing at Medicaid's CMS-64 spending per QMB #10123 replaces this formula with CMS-64 spending per QMB; if it lands first, this hunk drops.)
  • cbo_medicare_benefit = max((per_capita_cost − Part D LIS per enrollee) × ratio − premium income per enrollee, 0). CBO applies its institutional share to non-LIS benefits and handles LIS separately (WP 2018-07, file page 52). Premiums per enrollee are not scaled.
  • The ratio is measured on FFS Parts A and B and applied to all Medicare spending per enrollee, including Medicare Advantage, Part D and administration (stated in the YAML).

Invariants (all tested)

  1. The stored ratio is the MedPAC formula on the published cells, rounded to three decimals.
  2. It is strictly between 0 and 1 and the same on every date from 2013 (Hypothesis over dates).
  3. The documented FFS-composition and MA-risk-score variants bracket it.
  4. The MCBS facility definition gives a larger gap in every published year 2006-2013 (transcribed Table 1.1 and 4.1 cells).
  5. Differential (Hypothesis, reformed systems with ratio 0.5, 0.8, 0.95, 1): medicare_gross_cost, medicare_cost, cbo_medicare_benefit and qmb_cost_sharing equal a reference implementation for any year 2015-2100 and any premiums; medicare_cost and cbo_medicare_benefit lie in [0, gross]; no consumer falls when the ratio rises; a ratio of 1 reproduces the unscaled formulas; gross and QMB values scale exactly with the ratio; a person not enrolled gets zero.
  6. Existing invariants in test_medicare_per_capita_cost.py, test_medicare_cost_part_d_premium.py and test_cbo_medicare_benefit_series.py now use the scaled spending.

Tests

  • pytest on the four core Medicare test modules and test_part_b_msp_offset.py: pass.
  • policyengine-core test on the 18 YAML files that reference the Medicare consumers or CBO income: 138 passed. Every changed expectation is recomputed by hand in its comment.
  • Parameter and reference code-health tests (test_parameter_files.py, test_parameter_yaml_keys.py, test_reference_urls.py, test_no_concatenated_reference_urls.py, test_known_dead_reference_urls.py, test_uprating_placement.py, test_per_capita_uprating.py): 206 passed.

Impact

Pending: heavy-lock microsim for 2026, base = #10118 head 3d8bb6d, PR = d4cae00 (queued behind about 20 runs). Expected identities: gross falls 2.9% per enrollee; cbo_medicare_benefit falls (1 − 0.971) × (18,983 − 255.86) = $543.09 per enrollee; medicare_cost falls $550.51 where not floored.

Not addressed

  • part_d_lis per recipient (Model the Medicare Part D low-income subsidy as a CBO means-tested transfer #10127) averages over all LIS enrollees, including nursing home residents; CBO removes institutionalized LIS recipients and benefits (MBSF). Flagged to that PR.
  • CBO divides noninstitutional benefits by CPS reporters; pe-us multiplies a per-enrollee average by its own weighted enrollee count. The denominators differ (NHE person-years vs survey reporters).
  • per_capita_cost (NHE Table 17) already excludes the territories, so no territory adjustment.

Evidence (sources with SHA-256, scripts, notes, impact driver, review): ~/reviews/medicare-institutional-2026-10/.

axiom: n/a: microsim calibration of the Medicare benefit value, not a policy rule.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 11, 2026 16:53
per_capita_cost (CMS NHE Table 17) averages over every Part A and/or B
enrollee, including nursing home residents, whom the CPS-based microdata
exclude. Add calibration.gov.hhs.medicare.noninstitutionalized_spending_ratio
(0.971, from MedPAC's 2022 fee-for-service spending for long-stay nursing
home residents vs other beneficiaries and their 1.7% share) and apply it in
medicare_gross_cost, medicare_cost, qmb_cost_sharing and, before premiums
and after the Part D low-income subsidy, cbo_medicare_benefit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New test_medicare_noninstitutionalized_spending_ratio.py: the stored value
is the MedPAC formula, constant and below one from 2013; the documented
fee-for-service and Medicare Advantage variants bracket it; the MCBS facility
definition (2006-2013 Characteristics and Perceptions tables) gives a larger
gap every year; and, across reformed ratios, every consumer matches a
reference implementation, stays within [0, gross], does not fall when the
ratio rises, and reproduces the unscaled formulas at a ratio of one.
Hand-computed YAML expectations and the core consumer tests move to the
scaled spending.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
BLS's CPS design page says institutional group quarters such as nursing
homes have never been in the CPS sample; state that, rather than asserting
that assisted living residents are sampled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

1 participant