Skip to content

Include Medicare Part D IRMAA and paid Part A premiums in modeled MOOP/SPM premiums #8529

@daphnehanse11

Description

@daphnehanse11

Problem

PolicyEngine-US has Medicare premium variables that are currently not connected to the SPM/MOOP premium aggregation path:

  • income_adjusted_part_d_premium_surcharge computes the annual Medicare Part D income-related monthly adjustment amount for enrolled Medicare beneficiaries.
  • base_part_a_premium computes paid Medicare Part A premiums for people who do not qualify for premium-free Part A.
  • spm_unit_health_insurance_premiums only adds other_health_insurance_premiums, chip_premium, medicaid_premium, marketplace_net_premium, and medicare_part_b_premium.
  • spm_unit_medical_out_of_pocket_expenses then uses spm_unit_health_insurance_premiums, so these missing Medicare premiums also drop out of SPM expenses.

This means modeled MOOP/SPM expenses include Part B premiums but omit modeled Part D IRMAA and paid Part A premiums.

Evidence in current model

Relevant files:

  • policyengine_us/variables/gov/hhs/medicare/eligibility/part_d/income_adjusted_part_d_premium_surcharge.py
  • policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py
  • policyengine_us/variables/household/income/spm_unit/spm_unit_health_insurance_premiums.py
  • policyengine_us/variables/household/income/spm_unit/spm_unit_medical_out_of_pocket_expenses.py

Example output for a 2026 Medicare enrollee with 0 Medicare quarters and high prior-year income:

base_part_a_premium [6780.]
gross_medicare_part_b_premium [4654.8]
medicare_part_b_premium [4654.8]
income_adjusted_part_d_premium_surcharge [423.6]
spm_unit_health_insurance_premiums [4654.8]
spm_unit_medical_out_of_pocket_expenses [4654.8]

The SPM premium total equals only the modeled Part B premium. It excludes the modeled Part A premium and modeled Part D IRMAA surcharge.

Why this matters

This affects household-level SPM resources, poverty measures, and reform analyses that use modeled medical out-of-pocket expenses. It also matters for budget-style analyses if we are using these modeled premium variables to validate or decompose Medicare-related household costs.

CMS states that some Medicare beneficiaries pay a monthly Part A premium when they do not have enough quarters of coverage, and that high-income Part D beneficiaries pay IRMAA in addition to their plan premium:

Possible implementation approach

  • Add income_adjusted_part_d_premium_surcharge to spm_unit_health_insurance_premiums if we intend modeled Part D IRMAA to count as a household premium expense.
  • Add base_part_a_premium, or a net paid Part A premium variable, for Medicare enrollees who owe Part A premiums.
  • Consider whether Part D base plan premiums should also be represented separately. The current variable only captures the income-related surcharge, not the underlying plan premium.
  • Add regression tests showing that a Medicare enrollee with paid Part A and nonzero Part D IRMAA has those amounts reflected in spm_unit_health_insurance_premiums and spm_unit_medical_out_of_pocket_expenses.

Related but broader issues include #8089 and #8095. This issue is the narrower Medicare premium wiring gap.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions