Summary
Add an lcbp variable (Lowest Cost Bronze Plan) as a rating-area-level companion to slcsp. This would enable accurate computation of out-of-pocket bronze plan costs for ACA marketplace enrollees, symmetric with how silver costs are currently modeled.
Motivation
slcsp gives the Second Lowest Cost Silver Plan premium, age-curve adjusted by rating area. There is currently no equivalent for bronze. selected_marketplace_plan_benchmark_ratio defaults to 1.0 (silver benchmark) and policyengine-us-data PR #801 imputes it from CPS reported premiums — but there is no rules-based way to ask "what would this household pay for the lowest bronze plan?"
~35% of marketplace enrollees choose bronze (per CMS OEP data). Without lcbp, tools that want to show bronze plan costs must fall back to state-level average ratios, which don't account for rating area or age variation.
Proposed implementation
Mirror the slcsp variable structure exactly:
lcbp_age_0 — household-level, MONTH period. Looks up the base (age-0) lowest cost bronze plan premium by state + rating area from a parameter table (p.gov.aca.lcbp.state_rating_area_cost[state_code][rating_area]), same shape as the existing slcsp parameter tables.
lcbp_age_curve_amount_person — person-level, MONTH period. Multiplies lcbp_age_0 by the ACA age curve multiplier. Since ACA regulations mandate uniform age rating across all metal tiers, this reuses the existing p.gov.aca.age_curves parameters unchanged.
lcbp — tax-unit-level, MONTH period. adds = ["lcbp_age_curve_amount_person", "lcbp_family_tier_amount"] (family tier logic identical to silver).
The parameter data (rating-area-level age-0 bronze premiums) comes from the same CMS SLCSP/plan premium PUFs used to build the silver tables.
Relationship to policyengine-us-data
policyengine-us-data PR #618 added state-level CMS bronze enrollment targets, and PR #801 imputes selected_marketplace_plan_benchmark_ratio from CPS-reported premiums against the age-adjusted slcsp. The imputed ratio correctly captures metal tier choice because both numerator and denominator are age-adjusted. lcbp would give the rules-based complement — a computable bronze premium for any simulated household, not just CPS microdata households.
Usage
Once available:
bronze_net = max(0, lcbp - premium_tax_credit)
The PTC is unchanged by metal tier choice (it is always computed against the SLCSP benchmark), so net bronze cost is simply lcbp - ptc, floored at zero.
Summary
Add an
lcbpvariable (Lowest Cost Bronze Plan) as a rating-area-level companion toslcsp. This would enable accurate computation of out-of-pocket bronze plan costs for ACA marketplace enrollees, symmetric with how silver costs are currently modeled.Motivation
slcspgives the Second Lowest Cost Silver Plan premium, age-curve adjusted by rating area. There is currently no equivalent for bronze.selected_marketplace_plan_benchmark_ratiodefaults to 1.0 (silver benchmark) and policyengine-us-data PR #801 imputes it from CPS reported premiums — but there is no rules-based way to ask "what would this household pay for the lowest bronze plan?"~35% of marketplace enrollees choose bronze (per CMS OEP data). Without
lcbp, tools that want to show bronze plan costs must fall back to state-level average ratios, which don't account for rating area or age variation.Proposed implementation
Mirror the
slcspvariable structure exactly:lcbp_age_0— household-level, MONTH period. Looks up the base (age-0) lowest cost bronze plan premium by state + rating area from a parameter table (p.gov.aca.lcbp.state_rating_area_cost[state_code][rating_area]), same shape as the existingslcspparameter tables.lcbp_age_curve_amount_person— person-level, MONTH period. Multiplieslcbp_age_0by the ACA age curve multiplier. Since ACA regulations mandate uniform age rating across all metal tiers, this reuses the existingp.gov.aca.age_curvesparameters unchanged.lcbp— tax-unit-level, MONTH period.adds = ["lcbp_age_curve_amount_person", "lcbp_family_tier_amount"](family tier logic identical to silver).The parameter data (rating-area-level age-0 bronze premiums) comes from the same CMS SLCSP/plan premium PUFs used to build the silver tables.
Relationship to policyengine-us-data
policyengine-us-data PR #618 added state-level CMS bronze enrollment targets, and PR #801 imputes
selected_marketplace_plan_benchmark_ratiofrom CPS-reported premiums against the age-adjustedslcsp. The imputed ratio correctly captures metal tier choice because both numerator and denominator are age-adjusted.lcbpwould give the rules-based complement — a computable bronze premium for any simulated household, not just CPS microdata households.Usage
Once available:
The PTC is unchanged by metal tier choice (it is always computed against the SLCSP benchmark), so net bronze cost is simply
lcbp - ptc, floored at zero.