Model the $1,350/Month Obesity Drug Wave—Forecast Utilization Curves, PMPM Impact, and 3-Year Budget Exposure
python# GLP-1 Financial Impact Forecast glp1_drugs = { 'Ozempic': {'monthly_cost': 935, 'indication': 'diabetes'}, 'Wegovy': {'monthly_cost': 1349, 'indication': 'obesity'}, 'Mounjaro': {'monthly_cost': 1023, 'indication': 'diabetes'}, 'Zepbound': {'monthly_cost': 1060, 'indication': 'obesity'} } def forecast_glp1_impact(population, coverage_policy, forecast_months=36): # Eligibility Screening bmi_over_30 = population.filter(lambda m: m.bmi >= 30.0).count() diabetes_type2 = population.filter(lambda m: 'E11' in m.diagnoses).count() # Indication-Specific Pools if coverage_policy == 'diabetes_only': eligible = diabetes_type2 avg_monthly_cost = (935 + 1023) / 2 # Ozempic + Mounjaro elif coverage_policy == 'obesity_approved': eligible = bmi_over_30 + diabetes_type2 avg_monthly_cost = (935 + 1349 + 1023 + 1060) / 4 else: # exclude_obesity eligible = diabetes_type2 avg_monthly_cost = (935 + 1023) / 2 # Utilization Ramp Curve (S-curve adoption) results = [] for month in range(1, forecast_months + 1): # Uptake rate increases over time (logistic curve) uptake_rate = 0.12 / (1 + math.exp(-0.15 * (month - 18))) # Adherence drop-off (20% discontinue by month 12) if month <= 12: adherence = 1.0 - (0.20 * month / 12) else: adherence = 0.80 # Stabilizes at 80% long-term active_users = eligible * uptake_rate * adherence monthly_cost = active_users * avg_monthly_cost pmpm_impact = monthly_cost / len(population) results.append({ 'month': month, 'active_users': active_users, 'monthly_cost': monthly_cost, 'pmpm_impact': pmpm_impact, 'cumulative_cost': sum(r['monthly_cost'] for r in results) + monthly_cost }) return results # Example: 10,000 member population pop = load_population(10000) # Scenario 1: Cover diabetes only diabetes_only = forecast_glp1_impact(pop, 'diabetes_only', 36) print("Month 36 PMPM: {:.2f}".format(diabetes_only[35]['pmpm_impact'])) # ~42 PMPM # Scenario 2: Cover diabetes + obesity full_coverage = forecast_glp1_impact(pop, 'obesity_approved', 36) print("Month 36 PMPM: {:.2f}".format(full_coverage[35]['pmpm_impact'])) # ~138 PMPM # Delta: 96 PMPM difference = 11.5M over 3 years for 10K lives
markdown# GLP-1 Coverage Decision Tree (10,000 Lives Example) ## Policy 1: Exclude Obesity Indication ├─ Only cover diabetes (Ozempic, Mounjaro) ├─ Eligible: 8% of population (800 members) ├─ Month 36 Utilization: 96 active users (12% uptake × 80% adherence) ├─ Monthly Cost: $93,000 └─ **PMPM Impact: $9.30** ## Policy 2: Cover Obesity with Prior Authorization ├─ Cover obesity if BMI ≥35 + comorbidity OR BMI ≥40 ├─ Eligible: 22% of population (2,200 members) ├─ Month 36 Utilization: 264 active users ├─ Monthly Cost: $340,000 └─ **PMPM Impact: $34.00** ## Policy 3: Full Coverage (Diabetes + Obesity) ├─ Cover all FDA-approved indications ├─ Eligible: 30% of population (3,000 members) ├─ Month 36 Utilization: 360 active users ├─ Monthly Cost: $464,000 └─ **PMPM Impact: $46.40** ## Policy 4: Exclude All GLP-1s ├─ No coverage for weight loss or diabetes management ├─ Risk: Members pay cash ($1,350/mo) or use inferior alternatives ├─ Hidden cost: increased diabetes complications, cardiovascular events └─ **False savings — downstream costs exceed upfront drug spend**
Model utilization curves, coverage policy impact, and 3-year PMPM exposure. Make coverage decisions with financial certainty—not guesswork.
Run GLP-1 Impact Forecast→