Medicare Advantage Enrollment

Description

Every month CMS publishes enrollment in every Medicare Advantage and Part D contract, by plan, state and county (the "CPSC" files). This product rolls that file up to the level an investor uses: parent organization × program × county × month, with the parent's stock ticker where it is a listed company, and a national monthly table per parent with month-over-month and year-over-year change.

The CPSC package is not Medicare Advantage only. It carries stand-alone Part D prescription drug plans (about 25M enrollees), cost and PACE contracts, and Medicare Advantage proper (about 35.5M in August 2026). A program column separates them: MA (local and regional coordinated care, PFFS, MSA), PDP, COST, PACE, OTHER. Filter to MA for Medicare Advantage share; PDP for the stand-alone drug plan market.

Suppression. CMS blanks any contract-plan-county cell with fewer than 11 enrollees. About 95% of raw cells are suppressed but they hold under 1% of enrollment. The rollup sums the unsuppressed cells and counts the suppressed plans per parent-county, so a parent's county total is a floor, not an estimate. National totals are unaffected in practice: 35,530,809 MA enrollees in August 2026 against CMS's own published total.

  • Source: CMS Monthly Enrollment by Contract/Plan/State/County (CPSC_Enrollment_Info and CPSC_Contract_Info), cms.gov. Parent → ticker map curated by Healthparse (data/reference/ma-parent-tickers.json), every parent string verified against the file.
  • Refresh cadence: monthly. CMS posts a month's file around the 10th to 14th of that same month (January slips to mid-February); we load on the 2nd of the following month.
  • Row count: about 288,000 parent-county-program rows per month; six months loaded (March to August 2026) at the 2026-09-08 export, about 1.73M rows. The national table has about 180 parents per program per month. August 2025 to February 2026 load on the next off-peak run, which also fills the year-over-year columns.
  • Coverage: 67% of MA enrollment and 81% of PDP enrollment map to a ticker; a further 18% of MA enrollment is explicitly classified as not investable (Kaiser, Blue Cross plans and HCSC, SCAN, Devoted, joint ventures) so a null ticker on those is a decision, not a gap. Cigna no longer appears as a parent after selling its Medicare business to HCSC in
  • Vintage: derived at export from the latest report month loaded.

Table: ma_enrollment_parent_county_monthly

Snowflake: HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_COUNTY_MONTHLY

Column Type Description Notes
report_month DATE First day of the CMS report month. Key.
program VARCHAR MA, PDP, COST, PACE, OTHER. Key. Filter to MA for Medicare Advantage.
parent_organization VARCHAR CMS "Parent Organization" string, exactly as filed. Key. Joins to the ticker map.
ticker / exchange VARCHAR Listed parent's ticker and exchange, where one exists. Null for non-profits, mutuals, private and JV parents.
fips_state_county VARCHAR 5-digit FIPS county code. Key. Null for out-of-area enrollment (about 4,800 enrollees).
state / county VARCHAR As published by CMS.
enrollment INTEGER Sum of unsuppressed plan enrollment for this parent, program and county. A floor: suppressed plans (under 11 each) are excluded.
suppressed_plan_count INTEGER Plans of this parent in this county whose enrollment CMS suppressed. Each holds at most 10 enrollees.
plan_count / contract_count INTEGER Plans and contracts of this parent active in the county that month.
_dataset / _vintage / _exported_at VARCHAR See README.

Table: ma_enrollment_parent_monthly

Snowflake: HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_MONTHLY

Column Type Description Notes
report_month / program / parent_organization / ticker / exchange As above. Key is the first three.
enrollment INTEGER National enrollment for the parent and program.
enrollment_prior_month / change_mom / pct_change_mom INTEGER / NUMERIC Prior calendar month and the change. Null when the prior month is not loaded.
enrollment_prior_year / change_yoy / pct_change_yoy INTEGER / NUMERIC Same month a year earlier and the change. Null until the 2025 months load.
plan_count / contract_count / county_count INTEGER Footprint that month.
suppressed_plan_county_rows INTEGER Count of suppressed plan-county cells for the parent.

Example queries (Snowflake)

-- 1. National MA share by listed parent, latest month, with monthly change.
SELECT "parent_organization", "ticker", "enrollment", "pct_change_mom"
FROM HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_MONTHLY
WHERE "program" = 'MA' AND "report_month" = (SELECT max("report_month") FROM HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_MONTHLY)
ORDER BY "enrollment" DESC LIMIT 20;

-- 2. County share shift: UNH vs HUM in Maricopa County, AZ, by month.
SELECT "report_month", "ticker", "enrollment", "plan_count"
FROM HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_COUNTY_MONTHLY
WHERE "program" = 'MA' AND "fips_state_county" = '04013' AND "ticker" IN ('UNH', 'HUM')
ORDER BY "report_month", "ticker";

-- 3. Where a parent is growing fastest: counties with the largest 6-month gain.
WITH first_last AS (
  SELECT "fips_state_county", "state", "county",
         min_by("enrollment", "report_month") AS first_enr,
         max_by("enrollment", "report_month") AS last_enr
  FROM HEALTHPARSE_DATA.MEDICARE_ADVANTAGE_ENROLLMENT.MA_ENROLLMENT_PARENT_COUNTY_MONTHLY
  WHERE "program" = 'MA' AND "ticker" = 'HUM' AND "fips_state_county" IS NOT NULL
  GROUP BY 1, 2, 3)
SELECT *, last_enr - first_enr AS gain FROM first_last ORDER BY gain DESC LIMIT 25;

Known limits

  • Suppression makes county totals floors. Under-11 cells are excluded; the count of suppressed plans is provided so a buyer can bound the gap.
  • Parent strings are CMS's. Mergers show up when CMS changes the parent string, not on the deal date. The ticker map is maintained by hand.
  • Six months of history at launch. August 2025 to February 2026 load on the next off-peak run; year-over-year is null until then.
  • Program mix. Stand-alone PDP is in the file; filter program or the totals will overstate Medicare Advantage.