Risk stratification sounds like a data-science buzzword until you have to build the thing. For a Medicare Advantage plan, it's a concrete pipeline: take a population of members, score each one's clinical and financial risk, and rank them so care management and documentation teams know who to touch first. Here's how I'd architect it.
The core idea
Population health risk stratification = scoring + segmentation. You compute a per-member risk signal, then bucket members into tiers (e.g., rising-risk, high-risk, catastrophic) so finite resources go where they move outcomes and revenue most.
The mistake teams make is treating it as a single ML model. In practice you want a layered signal: a stable, explainable base (RAF + chronic conditions) plus optional predictive overlays. Explainability matters because care managers won't act on a black-box score, and auditors won't accept one.
Step 1: Build the member feature record
{
"member_id": "SYNTH-77310",
"age": 73,
"hccs": ["HCC37_1", "HCC85", "HCC18"],
"raf": 1.842,
"gaps": ["a1c_overdue", "no_pcp_visit_180d"],
"utilization": { "ed_visits_12m": 3, "inpatient_12m": 1 }
}
The RAF here is your defensible, model-grounded risk anchor under CMS-HCC V28. Everything else is supplemental signal.
Step 2: Score and tier
def risk_tier(member):
base = member["raf"]
util = 0.15 * member["utilization"]["ed_visits_12m"] \
+ 0.30 * member["utilization"]["inpatient_12m"]
score = base + util
if score >= 3.0: return "catastrophic"
if score >= 1.8: return "high"
if score >= 1.0: return "rising"
return "stable"
Keep the weights transparent and tunable. The point isn't a perfect model; it's a defensible, reproducible ranking your operational teams trust.
Step 3: Make "rising-risk" actionable
The tier that quietly drives the most ROI is rising-risk — members trending toward high cost who still have open documentation and care gaps. Surface their specific gaps (overdue labs, undocumented chronic conditions) so outreach has a concrete target instead of a vague "high risk" label.
Step 4: Close the loop with documentation
Stratification that doesn't feed back into documentation is half a system. When a rising-risk member has a suspected-but-undocumented chronic condition, that's both a care opportunity and a RAF-accuracy opportunity. The pipeline should emit those as work items.
Don't rebuild the risk model from scratch
You can hand-roll feature engineering, but the HCC mapping and V28 weighting logic is fiddly, version-sensitive, and audit-relevant. It's worth grounding the pipeline on a maintained VBC Risk Analytics population health risk stratification engine rather than maintaining your own copy of the model tables.
For the non-engineering framing of how MA plans use stratification operationally, see Population Health Risk Stratification for MA Plans.
VBC Risk Analytics. Educational only — not coding, billing, or clinical advice; verify against the current CMS Rate Announcement. Synthetic data only.
Top comments (0)