Skip to content

Add 2015-2020 Medicare Part A premiums and 2015-2023 Part A deductibles - #10117

Merged
MaxGhenis merged 2 commits into
mainfrom
medicare-part-a-history
Oct 12, 2026
Merged

MaxGhenis merged 2 commits into
mainfrom
medicare-part-a-history

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The Medicare Part A full premium (gov.hhs.medicare.part_a.full_premium) and reduced premium (reduced_premium) had values only from 2021, and the Part A inpatient hospital deductible (deductible) only for 2024–2025. CountryTaxBenefitSystem backdates every parameter's earliest value to 2015 (FIRST_MODELED_YEAR). As a result:

  • Premiums, 2015–2020. The 2021 amounts ($471 full, $259 reduced) were used. The real amounts were lower, e.g. $407 and $224 in 2015.
  • Deductible, 2015–2023. The 2024 amount ($1,632) was used, against $1,260 in 2015 and $1,600 in 2023.
  • Deductible, 2026. The file had no 2026 value, so 2026 used 2025's $1,676. CMS set $1,736.

Change

Adds each year's amount, with a reference to that year's Federal Register notice:

Year Full premium Reduced premium Deductible
2015 $407 $224 $1,260
2016 $411 $226 $1,288
2017 $413 $227 $1,316
2018 $422 $232 $1,340
2019 $437 $240 $1,364
2020 $458 $252 $1,408
2021 (unchanged) (unchanged) $1,484
2022 (unchanged) (unchanged) $1,556
2023 (unchanged) (unchanged) $1,600
2026 (unchanged) (unchanged) $1,736

Sources.

  • Premiums: the annual "CY YYYY Part A Premiums for the Uninsured Aged and for Certain Disabled Individuals Who Have Exhausted Other Entitlement" notices, 79 FR 61312 (2015) through 84 FR 61622 (2020). The reduced premium's existing 2021 value had no reference, so this adds 85 FR 71913.
  • Deductibles: the annual "CY YYYY Inpatient Hospital Deductible and Hospital and Extended Care Services Coinsurance Amounts" notices, 79 FR 61309 (2015) through 87 FR 59094 (2023).
  • Links: each reference is the govinfo PDF with the file page of the notice's summary, which states the amounts. That is page 1 except for the 2019 premium notice (page 2), which starts at the bottom of a page.
  • 2026 deductible: cites the CMS 2026 fact sheet, like the existing 2024 and 2025 values.
  • Statute: adds references to 42 U.S.C. § 1395i-2(d) for the premiums and § 1395e(b)(1) for the deductible.

Verification

Every value was transcribed once into a canonical table. A script checks it against:

  1. Notice text. Each notice's summary sentence and the body sentence that states the amount, from the Federal Register API raw text.
  2. Cited page. pdftotext of the cited govinfo PDF page, which must contain the summary sentence with the amount.
  3. Trustees Report. Medicare Trustees Report 2026 Table V.E1, "HI Cost-Sharing and Premium Amounts" (file page 212). All 36 values for 2015–2026 match.
  4. Statutory arithmetic.
    • Each full premium is the notice's unrounded monthly actuarial rate rounded to the dollar (§ 1395i-2(d)(2)), e.g. $406.53 → $407.
    • Each reduced premium is 55 percent of the rounded full premium, rounded to the dollar (§ 1395i-2(d)(4)(A)).
    • Each deductible notice multiplies the prior year's deductible (which equals this table's prior-year value, back to 2014's $1,216) by the stated payment-rate increase and real case-mix change. The product, rounded to the nearest $4 (§ 1395e(b)(1)), is the published deductible.
  5. Independent compilation. A separate agent compiled the same 36 amounts from CMS newsroom pages only, with no Federal Register notices or Trustees data. It found 0 differences. CMS's pages state each amount for 2016–2026 directly. For 2015 they give the deductible ($1,260) directly and the premiums as the 2016 amounts with their increases over 2015, which back out to $407 and $224.
  6. Repo YAML. The parameter files match the canonical table, and each new reference's href and FR citation are present.

All pass. The evidence (24 notices, the scripts and their output) is in ~/reviews/medicare-part-a-history-2015-2023/ on Max's machine.

One printing quirk, which changes nothing here: the 2022 deductible notice prints the unrounded amount as "$1,558". The product $1,484 × 1.0201 × 1.029 is $1,557.73, and that rounds to the published $1,556. The printed $1,558 is midway between multiples of $4 and would round up to $1,560.

Tests

  • YAML. 12 cases in base_part_a_premium.yaml: the full (20 quarters) and reduced (35 quarters) premium for each year 2015–2020. All 12 fail on main.
  • Python. test_part_a_cost_sharing_history.py, 40 cases, reads the three parameter files directly, since the loaded parameters already include the backdated values. It checks the invariants below. The three "announced amount for every modeled year" cases fail on main. It loads no model and no dataset and runs in under a second once the package is imported. The deductible has no consumer variable, so YAML cannot test it.

Local: base_part_a_premium.yaml 20 passed; test_part_a_cost_sharing_history.py 40 passed.

Invariants

For each of the three parameter files:

  • the values take effect on January 1 of every year from FIRST_MODELED_YEAR (2015) through the last announced year, with no gaps.

For every announced year:

  • the full premium is a whole number of dollars (§ 1395i-2(d)(2));
  • the reduced premium equals 55 percent of the full premium, rounded half up to the dollar (§ 1395i-2(d)(4)(A)). CMS reduces the rounded full premium: for 2022 the unrounded rate of $499.29 would give $275, but the notice sets $274, which is 55 percent of $499;
  • the deductible is a multiple of $4 (§ 1395e(b)(1)).

The announced years are a small finite set (2015–2026), so the tests check all of them instead of sampling with Hypothesis.

Impact

None on microsimulations.

  • Premiums. base_part_a_premium charges a premium only to people with fewer than 40 quarters of coverage. medicare_quarters_of_coverage defaults to 40, and the default dataset (populace_us_2024.h5, sha256 6496cc43…) has no such variable, so every simulated enrollee gets premium-free Part A.
  • Deductible. No variable reads gov.hhs.medicare.part_a.deductible.

What changes are household calculations for 2015–2020 that set fewer than 40 quarters. For example, a 2015 enrollee with 20 quarters owes $4,884 a year (was $5,652), and a 2018 enrollee with 35 quarters owes $2,784 (was $3,108). Parameter readers (the API, policyengine.py) also see the corrected 2015–2023 and 2026 deductibles.

Related

axiom: TheAxiomFoundation/rulespec-us#1679 queued. The blockers: rulespec-us pins us-rulespec-2026-08-08-obbb-alien-snap, which predates the corpus's Medicare statute rows; the 2015–2025 annual notices are not ingested; and signed encoder runs need approval.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 11, 2026 15:37
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ding

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis marked this pull request as ready for review October 11, 2026 20:10
@MaxGhenis
MaxGhenis merged commit 0f66e44 into main Oct 12, 2026
33 checks passed
@MaxGhenis
MaxGhenis deleted the medicare-part-a-history branch October 12, 2026 01:11
@MaxGhenis

Copy link
Copy Markdown
Contributor Author

US + core hub merge audit, us#10117 at f2fdb38502e4a961d0e3a5366c73362a3b8f4380 (squash): 2015–2020 Medicare Part A premiums and 2015–2023 (and 2026) Part A deductibles.

  • Adopted on 2026-10-12: the session that opened it can no longer be woken; Fleet ops placed it with the hub.
  • Review: independent GPT-6.1 Sol review APPROVE at this head. It fetched all 16 Federal Register notices, reproduced each published amount from the statutory rounding rules, and matched all 36 values to the 2026 Trustees Report Table V.E1. Its four findings are non-blocking (one pre-existing reference that doesn't state 2021's $471, two wording points, one optional test hardening). The hub carries them as a small follow-up rather than restarting CI for them.
  • Gates checked live at merge:
    • gh pr checks exits 0;
    • the latest Pull request run at the head concluded success;
    • MERGEABLE;
    • not a draft;
    • no reviewer's latest review requests changes;
    • the semantic-overlap guard;
    • head pinned.
  • Impact: none on microsimulations, as the description shows and the review confirmed. Only enrollees with fewer than 40 quarters of coverage pay a Part A premium, and the default dataset has no such input. No variable reads the deductible. Household calculations for 2015–2020 with fewer than 40 quarters change; for example, a 2015 enrollee with 20 quarters owes $4,884 a year, not $5,652.
  • Axiom: Encode Medicare Part A premiums and inpatient hospital deductible: 42 U.S.C. 1395i-2(d) and 1395e(b), with the 2015-2026 CMS amounts (PE #10117) TheAxiomFoundation/rulespec-us#1679, queued.

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