Repository navigation
Project Medicaid LTC home equity limits with CMS's rounded CPI-U increase - #10162
Conversation
… projection The agricultural home equity limit used plain CPI-U uprating, which follows the CPI-U series' February 1 projection keys, so the limit stepped on February 1 (2028: $1,189,000 in January, $1,217,000 from February). It now uses the September-to-September CPI-U cadence effective January 1 that CMS applies under 42 USC 1396p(f)(1)(C), which reproduces CMS's published 2026 limits from 2025. Its unpublished 2027 and 2028 values are dropped in favor of that uprating. The non-agricultural limit's 2027 value ($1,159,000) appears in no CMS bulletin; it is the CPI-U projection. Uprating cannot fill a year before the fixed 2028 $1,000,000 value, so it stays, labeled as a projection, with a test that keeps it equal to the uprated agricultural limit. The bulletin citations now carry their actual subject lines and pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r1 found that the Sep-to-Sep CPI-U ratio misses CMS's published 2021 maximum: CMS applies its reported "CPI Increase" rounded to 0.1% ($893,000 x 1.014 = $906,000; the unrounded 1.371% gives $905,000). The model's CPI-U series is also seasonally adjusted from 2024, so it gives 2.3% for 2025 where CMS used 2.4%. extend_medicaid_home_equity_limits now projects the limits in uprating_extensions.py, following the Louisiana precedent: the percentage is the not seasonally adjusted September-to-September change (published Septembers in the new cpi_u_nsa_september, otherwise both months from the model series), rounded to 0.1% and floored at zero, applied year to year and rounded to the nearest $1,000. This reproduces every CMS percentage on file (2020, 2021, 2022, 2025, 2026) and the published 2021, 2022, 2025 and 2026 limits. The non-agricultural 2027 value is now derived rather than hand-entered ($1,165,000 on the current CPI-U path), and a YAML case with a parameter override restores agricultural boundary coverage after 2028. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rs by date Review r2 found that Case 21's inline override sets every year, so a lookup frozen at 2028 would still pass. A simulation test now reads the 2028 and 2029 projected limits from the parameters and checks the chassis screen at 2028 + $1, the 2029 limit and 2029 + $1; freezing the lookup at 2028 fails it. The zero-floor test now uses a synthetic 1% fall, since the 2014-15 dip already rounded to -0.0%. The non-agricultural fill now covers every unencoded year before the section 71108(c) start year rather than the gap between the two newest values, so adding a later explicit value cannot skip 2027. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r3: starting the non-agricultural fill at the agricultural limit's first projected year would skip 2027 if CMS's 2027 agricultural value were encoded before the non-agricultural one, leaving 2027 at the 2026 value. The fill now starts after the non-agricultural limit's earliest encoded year. A regression on a small parameter tree covers both orders; the old range fails it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR Review: Project Medicaid LTC home equity limits with CMS's rounded CPI-U increasePR #10162 (author: MaxGhenis, head SummaryThe PR replaces how main projects the Medicaid long-term care home equity limits (
The policy content is right:
I found nothing critical and nothing that must change. The suggestions below are optional polish. Critical (must fix)None. Should addressNone. Suggestions
Verified correct
Axiom line assessmentValid. The line reads
CI statusAll 26 checks pass (
Branch status
Verdict: APPROVE |
DTrim99
left a comment
There was a problem hiding this comment.
Approving: the projection follows 42 U.S.C. 1396p(f)(1)(C) and H.R. 1 § 71108. It reproduces every published CMS home equity limit tested (2020, 2021, 2022, 2025, 2026), including 2021's $906,000, which only the rounded 1.4% increase gives. All 8 BLS Septembers match, and 12 hand checks pass. Six optional suggestions in the comment above, notably adding the September 2026 CPI once BLS publishes it on Oct 14 (2027 would become $1,168,000).
Summary
This PR fixes two problems in main's Medicaid long-term care home equity limits (
parameters/gov/hhs/medicaid/eligibility/long_term_care/home_equity/). Both were flagged in the #9184 thread on 8/20.agricultural_limit.yamlstepped on February 1, not January 1.gov.bls.cpi.cpi_uuprating, which appends a value at every CPI-U entry after the last explicit value.limit.yamlandagricultural_limit.yamlpinned2027-01-01: 1_159_000, and the agricultural file also pinned2028-01-01: 1_189_000. Both were cited to CMCS bulletins that don't contain them.Method
42 USC 1396p(f)(1)(C) increases the limits "from year to year based on the percentage increase in the consumer price index ... rounded to the nearest $1,000".
CMS's annual bulletins report a "CPI Increase for " to one decimal place and apply that rounded percentage to the prior year's limit:
Each is the September-to-September change in the not seasonally adjusted CPI-U (BLS CUUR0000SA0), rounded to 0.1%. The rounding matters: $893,000 × 1.014 = $905,502, which rounds to the published 2021 maximum of $906,000. The unrounded 1.371% would give $905,000.
extend_medicaid_home_equity_limitsinparameters/uprating_extensions.pynow projects the limits this way. It follows the existing Louisiana CPI-U precedent in that module (get_la_cpi_u_percentage_increase), which also handles the model's CPI-U series being seasonally adjusted from January 2024:gov.bls.cpi.cpi_u_nsa_september(2018–2025, from the BLS API) when both years have one. Otherwise both Septembers come from the model series throughget_projected_cpi_u_for_month, so the two series are never mixed. The change is rounded to 0.1% (half up) and floored at zero.With the current CPI-U path, the 2027 projection is 3.1%, giving $1,165,000 for both limits (was $1,159,000). The agricultural limit is $1,192,000 in 2028 and $1,219,000 in 2029.
Citations
Corrected subject lines and pages:
#page=2.#page=3.#page=9, where its §71108 dollar figures are.limit.yamlhad cited the April 2026 PDF under the December 2025 bulletin's subject line.Tests
tests/core/test_medicaid_home_equity_limit_indexing.py, 19 cases. One builds a three-person simulation; the rest read parameters or call the extension helpers on a small synthetic parameter tree. Locally19 passed in 1.19s, after model import. It checks against independent CMS figures, not PolicyEngine output:test_cpi_increase_matches_cms: the computed percentage equals CMS's reported "CPI Increase" for 2020, 2021, 2022, 2025 and 2026.test_year_to_year_increases_reproduce_cms_limits: chaining the computed increases reproduces the published minimum and maximum for 2020→2021, 2021→2022 and 2022→2025 (through 2023 and 2024).test_a_falling_index_is_not_an_increase: a synthetic 1% fall gives 0 and a 1% rise gives 1.0. The real 2014–15 dip already rounds to −0.0%, so it couldn't test the floor.test_non_agricultural_fill_follows_its_own_coverage: on a synthetic tree, 2027 is filled from the agricultural projection whether or not CMS's 2027 agricultural value has been encoded first.test_chassis_screen_reads_each_years_agricultural_limit: in 2029 the chassis screen passes an agricultural home at the projected 2028 limit + $1 and at the 2029 limit, and fails it at the 2029 limit + $1. The thresholds come from the parameters because they move with the CPI-U forecast. Freezing the screen's lookup at 2028 fails this test; a YAML case with an all-years override cannot catch that.is_medicaid_long_term_care_home_equity_eligible.yaml:agricultural_limitto $1,200,000 with an inline parameter override. In 2029 it brackets both thresholds exactly:Local runs:
is_medicaid_long_term_care_eligible.yaml: 3 passed.test_parameter_files.py,code_health/test_uprating_placement.py,tests/policy/baseline/parameters/(includingtest_uprating_extensions.py) and the new test: 76 passed.Invariants (tested)
Impact
Published years 2025–2026 are unchanged. Projected years move:
Only the YEAR-period chassis screen (
is_medicaid_long_term_care_home_equity_eligible) reads these parameters on main. Open PR #9184 readslimit(WA) and its ownminimum_limit, which still uses an unrounded cadence; the hub owns that PR.axiom: us:statutes/42/1396p/f (f)(1)(C) year-to-year CMS indexing — rulespec-us#1718 queued; §71108 2028 cap and agricultural carve-out — rulespec-us#1593 queued
Follow-up from the #9184 review thread (8/20); chip w1-08.
🤖 Generated with Claude Code