Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/ma-connectorcare-exact-fpl-ratio.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Decide Massachusetts ConnectorCare's income ceiling and Plan Type bands on the exact ratio of ACA MAGI to the prior-year poverty guideline instead of the truncated `aca_magi_fraction`. 956 CMR 12.04(3)(b) puts income "at or below 150%" in Plan Type 2A, "over 150% and not over 200%" in 2B, and so on up to 3C, "not over 400%"; truncation put incomes from 150.003% to 150.994% (and the same slivers above 200%, 250% and 300%) in the cheaper band below. The 400% ceiling changes results only under a reform that extends the federal credit above 400%.
Original file line number Diff line number Diff line change
Expand Up @@ -16,41 +16,44 @@ metadata:
href: https://www.mahealthconnector.org/wp-content/uploads/amended-956CMR12.00.pdf#page=13

brackets:
# Household income measured as ACA MAGI as a share of the federal poverty line.
# Band boundaries are lower-exclusive / upper-inclusive per 956 CMR 12.04(3)(b),
# so thresholds use the "x.0001" convention matching the published "150.1%"
# banding. The schedule is a flat dollar step function decoupled from the
# affordability percent-of-income schedule (Board-set, 956 CMR 12.12(9)); every
# band is $0 before the PY2026 effective date.
# Plan Type 2A, 100-150% FPL -> $0 per person per month.
# Household income measured as ACA MAGI as a share of the prior-year federal
# poverty guideline, the exact ratio. Band boundaries are lower-exclusive /
# upper-inclusive per 956 CMR 12.04(3)(b) ("at or below 150%", "over 150% and
# not over 200%"), so each threshold is the band's lower edge and
# ma_connector_care evaluates the scale with right-closed brackets: a ratio
# exactly at a threshold stays in the band below it. The schedule is a flat
# dollar step function decoupled from the affordability percent-of-income
# schedule (Board-set, 956 CMR 12.12(9)); every band is $0 before the PY2026
# effective date.
# Plan Type 2A, 100% to 150% FPL -> $0 per person per month.
- threshold:
2026-01-01: 1
amount:
0000-01-01: 0
2026-01-01: 0
# Plan Type 2B, 150.1-200% FPL -> $53.
# Plan Type 2B, over 150% to 200% FPL -> $53.
- threshold:
2026-01-01: 1.5001
2026-01-01: 1.5
amount:
0000-01-01: 0
2026-01-01: 53
# Plan Type 3A, 200.1-250% FPL -> $103.
# Plan Type 3A, over 200% to 250% FPL -> $103.
- threshold:
2026-01-01: 2.0001
2026-01-01: 2
amount:
0000-01-01: 0
2026-01-01: 103
# Plan Type 3B, 250.1-300% FPL -> $152.
# Plan Type 3B, over 250% to 300% FPL -> $152.
- threshold:
2026-01-01: 2.5001
2026-01-01: 2.5
amount:
0000-01-01: 0
2026-01-01: 152
# Plan Type 3C, 300.1-400% FPL -> $235. This tier is a pilot extended through
# Plan Type 3C, over 300% to 400% FPL -> $235. This tier is a pilot extended through
# FY2026 in the state budget and may lapse in out-years; it is carried forward
# without end-dating as a current-law assumption.
- threshold:
2026-01-01: 3.0001
2026-01-01: 3
amount:
0000-01-01: 0
2026-01-01: 235
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Integration tests for Massachusetts ConnectorCare (PY2026 premium wrap).
#
# These exercise the full chain: aca_magi_fraction (income gate) and
# These exercise the full chain: the exact ratio of ACA MAGI to the prior-year
# guideline (income gate and Plan Type band) and
# is_aca_ptc_eligible (member gate) -> ma_connector_care_member_eligible ->
# ma_connector_care_eligible -> ma_connector_care (residual subsidy) ->
# healthcare_benefit_value (household resource aggregation).
#
# In Scenarios 1-5 slcsp, aca_ptc, and aca_magi_fraction are supplied directly
# (slcsp as an annual value) so every expected value is fully hand-verifiable.
# In Scenarios 1-5 slcsp and aca_ptc are supplied directly (slcsp as an annual
# value), and income is aca_magi against a prior-year tax_unit_fpg pinned to
# $10,000, so every expected value is fully hand-verifiable.
# slcsp is a MONTH variable; supplying it at the YEAR period sets the annual sum.
# Scenario 6 instead derives aca_magi_fraction, aca_ptc, and is_aca_ptc_eligible
# from raw employment_income (only slcsp is supplied), per the Code Integrity note
Expand All @@ -20,12 +22,12 @@
#
# Amount formula recap:
# n_members = count of ma_connector_care_member_eligible (= is_aca_ptc_eligible)
# per_person_mo = enrollee_premium.calc(aca_magi_fraction) # single_amount bracket
# per_person_mo = enrollee_premium.calc(ACA MAGI / prior-year FPG, right=True)
# contribution = 12 * per_person_mo * n_members
# subsidy = max(0, slcsp_annual - aca_ptc - contribution)
# amount = where(ma_connector_care_eligible, subsidy, 0)
# Bracket (per person per month): [1.0,1.5001)->0, [1.5001,2.0001)->53,
# [2.0001,2.5001)->103, [2.5001,3.0001)->152, [3.0001,inf)->235.
# Bracket (per person per month, right-closed): [1.0,1.5]->0, (1.5,2.0]->53,
# (2.0,2.5]->103, (2.5,3.0]->152, (3.0,inf)->235.

- name: Scenario 1, single adult at 175% FPL, band 2B ($53/mo), positive residual.
# n_members=1, band 2B -> per_person 53. contribution = 12*53 = 636.
Expand All @@ -40,7 +42,9 @@
tax_units:
tax_unit:
members: [person1]
aca_magi_fraction: 1.75
aca_magi: 17_500
tax_unit_fpg:
2025: 10_000
slcsp: 7_200
aca_ptc: 5_000
assigned_aca_ptc: 5_000
Expand Down Expand Up @@ -68,7 +72,9 @@
tax_units:
tax_unit:
members: [person1]
aca_magi_fraction: 1.4
aca_magi: 14_000
tax_unit_fpg:
2025: 10_000
slcsp: 6_000
aca_ptc: 5_500
assigned_aca_ptc: 5_500
Expand Down Expand Up @@ -100,7 +106,9 @@
tax_units:
tax_unit:
members: [person1, person2]
aca_magi_fraction: 1.75
aca_magi: 17_500
tax_unit_fpg:
2025: 10_000
slcsp: 7_200
aca_ptc: 5_000
assigned_aca_ptc: 5_000
Expand Down Expand Up @@ -129,7 +137,9 @@
tax_units:
tax_unit:
members: [person1]
aca_magi_fraction: 3.5
aca_magi: 35_000
tax_unit_fpg:
2025: 10_000
slcsp: 8_000
aca_ptc: 4_000
assigned_aca_ptc: 4_000
Expand Down Expand Up @@ -159,7 +169,9 @@
tax_units:
tax_unit:
members: [person1]
aca_magi_fraction: 3.5
aca_magi: 35_000
tax_unit_fpg:
2025: 10_000
slcsp: 5_000
aca_ptc: 3_000
assigned_aca_ptc: 3_000
Expand Down Expand Up @@ -221,7 +233,9 @@
tax_units:
tax_unit:
members: [person1]
aca_magi_fraction: 1.75
aca_magi: 17_500
tax_unit_fpg:
2025: 10_000
slcsp: 7_200
aca_ptc: 5_000
assigned_aca_ptc: 5_000
Expand Down Expand Up @@ -261,7 +275,9 @@
tax_units:
tax_unit:
members: [person1, person2, person3, person4, person5]
aca_magi_fraction: 3.5
aca_magi: 35_000
tax_unit_fpg:
2025: 10_000
slcsp: 20_000
aca_ptc: 0
assigned_aca_ptc: 0
Expand Down
Loading