Skip to content

Add Vermont premium assistance (Vermont Premium Assistance) - #9245

Draft
DTrim99 wants to merge 3 commits into
mainfrom
vt-premium-assistance
Draft

Add Vermont premium assistance (Vermont Premium Assistance)#9245
DTrim99 wants to merge 3 commits into
mainfrom
vt-premium-assistance

Conversation

@DTrim99

@DTrim99 DTrim99 commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Closes #9225.

Adds Vermont Premium Assistance (VPA), a state premium subsidy administered by the Department of Vermont Health Access (DVHA) through Vermont Health Connect. VPA is a flat 1.5 percentage-point reduction off the federal §36B applicable percentage, layered on top of the federal Advance Premium Tax Credit. It is available to federal-APTC-eligible Vermont enrollees with income at or below 300% of the federal poverty level. Modeled for program year 2026.

Authority: 33 V.S.A. § 1812(a).

This follows the state-premium-assistance pattern already established for MD/NM/CA/CO/WA/MA/NJ. VPA has the simplest mechanic of the set — it shifts the whole federal applicable-percentage schedule down 1.5pp rather than defining its own target-percentage schedule (MD/NM) or a per-member-per-month amount (WA/NJ/MA).

Regulatory authority

33 V.S.A. § 1812(a) (statute, authoritative for both the reduction and the ceiling):

"(a)(1) An individual or family eligible for federal premium tax credits under 26 U.S.C. § 36B with income less than or equal to 300 percent of federal poverty level shall be eligible for premium assistance from the State of Vermont. (2) The Department of Vermont Health Access shall establish a premium schedule on a sliding scale based on modified adjusted gross income ... The Department shall reduce the premium contribution for these individuals and families by 1.5 percent below the premium amount established in 26 U.S.C. § 36B. (3) Premium assistance shall be available for the same qualified health benefit plans for which federal premium tax credits are available."

Corroborating sources:

  • 2026 Eligibility Income Thresholds for QHP Subsidies (DVHA PDF, #page=1) — places VPA in the 300% FPL column; PY2026 thresholds are set from the 2025 FPL (prior-year FPL, matching aca_magi_fraction).
  • Vermont Health Connect — Financial Help (DVHA program page) — "VPA lowers your monthly health insurance bill by 1.5% of your household income. The applicable percentage is the portion of a subsidy-eligible household's income that can be spent on the marketplace's benchmark plan (second lowest-cost Silver plan)."

Eligibility

A tax unit is VPA-eligible (vt_premium_assistance_eligible, TaxUnit / YEAR, defined_for = StateCode.VT) when all of:

  1. Vermont resident (via defined_for = StateCode.VT).
  2. Any member is federal-APTC-eligible under §36B — tax_unit.any(members("is_aca_ptc_eligible")). §1812(a)(1),(3).
  3. Income ≤ 300% FPLaca_magi_fraction <= fpl_limit (3.0). §1812(a)(1).
  4. Program in_effect (true from 2026-01-01, open-ended — a standing statutory obligation with no sunset).

No income floor, no asset test, no applicant/recipient distinction (§1812(a) imposes none).

Benefit calculation

VPA reuses the federal ACA PTC machinery, reducing the applicable percentage by 1.5pp and returning only the incremental state portion above the federal APTC (vt_premium_assistance, USD, TaxUnit / YEAR, defined_for = "vt_premium_assistance_eligible"):

income = max_(aca_magi, 0)                                   # clamp: negative MAGI must not inflate the gap
federal_pct = aca_required_contribution_percentage
vt_pct = max_(0, federal_pct - reduction)                   # reduction = 0.015; floors at 0
contribution_gap = max_(0, income * (federal_pct - vt_pct))
slcsp = add(tax_unit, period, ["slcsp"])                    # MONTH -> annual, matching aca_ptc
premium_after_aptc = max_(0, slcsp - aca_ptc)
vt_premium_assistance = min_(contribution_gap, premium_after_aptc)

The algebra: contribution_gap = income × (federal_pct − vt_pct) = income × min(federal_pct, 0.015), capped at the premium remaining after the federal APTC.

Normal case (2026): in the PY2026 federal applicable-percentage schedule the figure floors at 2.1%, so federal_pct ≥ 0.015 always holds and federal_pct − vt_pct = 0.015 exactly. VPA is therefore 1.5% of household MAGI — precisely the DVHA description — capped at the remaining benchmark premium.

Low-income branch (defensive): when federal_pct ≤ 0.015, vt_pct floors to 0, the gap becomes income × federal_pct, and the min(gap, premium_after_aptc) cap lets VPA cover the full residual premium (net premium → $0). Given the 2.1% 2026 floor this branch is unreachable organically in 2026, but it is implemented and tested so the formula stays correct if the federal schedule floor ever drops below 1.5%. No value is hardcoded — the max_(0, ...) floor and the min_(...) cap produce this behavior structurally.

Requirements coverage

All 22 requirements in scope are implemented and tested (38/38 tests passing across 4 files, including two integration scenarios derived from raw income that drive the full federal ACA chain).

REQ Requirement Where
REQ-1 Any member federal-APTC-eligible vt_premium_assistance_eligible
REQ-2 Income ≤ 300% FPL (aca_magi_fraction <= 3.0) vt_premium_assistance_eligible (299/300/301% boundary)
REQ-3 No income floor vt_premium_assistance_eligible
REQ-4 No asset test / disregards inherent (negative requirement)
REQ-5 Flat 1.5pp reduction (0.015, not banded) applicable_percentage_reduction.yaml
REQ-6 No separate VT bracket — shift federal schedule vt_premium_assistance
REQ-7 Incremental state top-up on federal APTC vt_premium_assistance
REQ-8 Open-ended in_effect from 2026-01-01, no sunset in_effect.yaml (2025 off / 2026-27 on)
REQ-9 TaxUnit / YEAR, defined_for = StateCode.VT both variables
REQ-10 SLCSP annualized via add(tax_unit, period, ["slcsp"]) vt_premium_assistance
REQ-11 Low-income edge → full residual premium vt_premium_assistance.yaml, integration.yaml
REQ-12 Clamp aca_magi ≥ 0 vt_premium_assistance
REQ-13/14/15 Three parameters present and exercised parameter YAML
REQ-16/17 Both variables implemented and tested variable Python
REQ-18 Added to healthcare_benefit_value.adds healthcare_benefit_value.py
REQ-19 programs.yaml entry programs.yaml
REQ-20 Changelog fragment changelog.d/
REQ-21 Required case types (mid-band, low-income, boundary, non-eligible, non-VT) test YAML
REQ-22 Passes vectorized (microsim), not just scalar all YAML

Wiring note: the raw vt_premium_assistance is added to healthcare_benefit_value.adds, matching the CA/NM/CO/WA/MA/NJ precedent (not a takeup-gated assigned_ variant). A takeup-consistent assigned_vt_premium_assistance could be introduced later if the team wants parity with the federal PTC's takeup gating; out of scope here.

Not modeled

  • 33 V.S.A. § 1812(b) Vermont Cost-Sharing Reduction — a distinct state-funded CSR program (enhanced-Silver actuarial-value tiers 94/87/77/73% up to 300% FPL). It changes cost-sharing, a separate modeling axis from the premium subsidy; not part of VPA.
  • Advance-payment / reconciliation / insurer direct-payment mechanics — as with the federal APTC and the CA/MD/NM precedents.
  • Enrollment / enrollee-selection mechanics beyond is_aca_ptc_eligible and the 300% FPL test.
  • Code Vt. R. 13-590 (pre-ACA VHAP/Catamount legacy rule) is not applicable to modern VPA and is not cited.

Files added

policyengine_us/
├── parameters/gov/states/vt/dvha/premium_assistance/
│   ├── applicable_percentage_reduction.yaml     # 0.015
│   ├── fpl_limit.yaml                            # 3.0
│   └── in_effect.yaml                            # 2026-01-01 true, open-ended
├── variables/gov/states/vt/dvha/premium_assistance/
│   ├── vt_premium_assistance.py
│   └── vt_premium_assistance_eligible.py
└── tests/policy/baseline/gov/states/vt/dvha/premium_assistance/
    ├── vt_premium_assistance.yaml               # 13 cases
    ├── vt_premium_assistance_eligible.yaml      # 9 cases
    └── integration.yaml                         # 9 cases (2 derived-from-raw-income)

changelog.d/vt-premium-assistance.added.md

Files modified:

policyengine_us/variables/household/healthcare_benefit_value.py            # + "vt_premium_assistance"
policyengine_us/programs.yaml                                              # VPA entry (Healthcare, DVHA, VT, 2026)
policyengine_us/tests/policy/baseline/household/healthcare_benefit_value.yaml  # + Case 7 (VPA)

@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (63bcfc5) to head (2f35ed3).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #9245    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           12         3     -9     
  Lines          192        46   -146     
==========================================
- Hits           192        46   -146     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

DTrim99 and others added 3 commits August 6, 2026 13:10
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Reword applicable_percentage_reduction description: 0.015 is a 1.5
  percentage-POINT reduction to the federal section 36B applicable
  percentage, not a proportional "share"; add a statute-vs-DVHA
  reconciliation comment (statute says "1.5 percent" and defers the
  applicable-% table to 36B; DVHA operationalizes it as the pp cut).
- Quote the DVHA financial-help page's "1.5% of household income" language
  in its reference title; add the 2026 QHP thresholds PDF to in_effect so
  the 2026 start year is traceable.
- Comment the vt_premium_assistance formula: why 0.015 is subtracted (not
  scaled) and the low-income floor branch (unreachable in 2026 since the
  federal applicable % floors at 2.10% > 1.5%, retained for robustness).
- Add tests: income-derived integration scenario (derived slcsp/aca_ptc,
  VPA 681 at 290% FPL), a derived healthcare_benefit_value case, the
  tightest 3.0001 FPL just-above-ceiling case, and a zero-MAGI case.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@DTrim99
DTrim99 force-pushed the vt-premium-assistance branch from 998dc41 to 2f35ed3 Compare August 6, 2026 17:10
@DTrim99

DTrim99 commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator Author

Review fixes applied (/review-program/fix-pr)

Ran the full multi-agent local review — regulatory, references, code patterns, test coverage, and a sighted value-audit against 33 V.S.A. §1812(a) and the DVHA financial-help page + 2026 QHP income-thresholds PDF. Zero critical findings — the 1.5pp reduction, the ≤300% FPL gate, the max_(aca_magi, 0) clamp, the low-income floor branch, and the residual cap are all correct, and every federal ACA variable is reused, not reinvented. Applied all should-address items and every suggestion:

Documentation / references (the main theme)

  • The statute §1812(a)(2) literally says "reduce the premium contribution … by 1.5 percent" and defers the applicable-percentage table to federal §36B; DVHA operationalizes this as a 1.5 percentage-point cut to that applicable percentage. The applicable_percentage_reduction description had called 0.015 a "share" (implying a proportional cut) — reworded it to a percentage-point reduction and added an inline statute-vs-DVHA reconciliation comment, so a future reviewer can't misread it as a units bug.
  • Quoted the DVHA page's load-bearing "1.5% of household income" language in its reference title (it grounds the percentage-point mechanic), and added the 2026 QHP thresholds PDF to in_effect so the 2026 program-year start is traceable (the statute itself, effective 2014/amended 2018, has no start-year anchor).
  • Commented the formula's low-income floor branch (when the federal applicable % < 1.5%, VPA covers the full enrollee contribution) — noting it is organically unreachable in the 2026 baseline because the federal schedule floors at 2.10% > 1.5%, retained for robustness.

Tests (all passing — 42 VT cases)

  • A fully income-derived integration scenario (employment_income set → aca_magi_fraction 2.90, slcsp 15_588 and aca_ptc 11_204.18 both derived, VPA 681.00), exercising the income→premium→subsidy pipeline end-to-end.
  • A derived healthcare_benefit_value case proving VPA flows into net income (12_895.75 = 12_310.75 APTC + 585 VPA).
  • The tightest 3.0001 FPL just-above-ceiling case (→ ineligible) and a zero-MAGI case (→ 0).

No value (0.015, fpl_limit 3, in_effect date) or formula logic changed. The .../33/018/01812 href resolves correctly (VT's URL chapter segment is 018) and was kept. Rebased onto current main; CI green.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Model Vermont Premium Assistance (state 1.5pp reduction of ACA applicable percentage)

1 participant