Repository navigation
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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_enrolledcomes from ASECMCARE == 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):
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
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.Invariants (all tested)
medicare_gross_cost,medicare_cost,cbo_medicare_benefitandqmb_cost_sharingequal a reference implementation for any year 2015-2100 and any premiums;medicare_costandcbo_medicare_benefitlie 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.test_medicare_per_capita_cost.py,test_medicare_cost_part_d_premium.pyandtest_cbo_medicare_benefit_series.pynow use the scaled spending.Tests
pyteston the four core Medicare test modules andtest_part_b_msp_offset.py: pass.policyengine-core teston the 18 YAML files that reference the Medicare consumers or CBO income: 138 passed. Every changed expectation is recomputed by hand in its comment.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_benefitfalls (1 − 0.971) × (18,983 − 255.86) = $543.09 per enrollee;medicare_costfalls $550.51 where not floored.Not addressed
part_d_lisper 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.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