PolicyEngine / PolicyEngine/policyengine-us
Add federal vs. state cost attribution for benefit programs (Medicaid FMAP, SNAP OBBBA, CHIP eFMAP, etc.)
- Dominant language
- Python
- Stars
- 163
- Forks
- 213
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 96
Description
## Problem
PolicyEngine-US currently computes total program cost for benefit programs (SNAP, Medicaid, CHIP, TANF, SSI, LIHEAP, WIC, HCV, CCDF, etc.) but does not attribute that cost between the federal government and state governments. As a result, reforms or participation changes show a single "program cost" delta, which misstates the **federal** fiscal impact — the number most relevant to CBO-style scoring and the question "how much does this cost the feds vs. states?"
For most of these programs the federal/state split is statutory and deterministic given a small set of parameters (matching rates, payment error rates, etc.). Building the math into the model lets us produce proper federal vs. state fiscal impact estimates for benefit reforms.
## Proposed architecture
For each program, add two Person/SPMUnit-level variables:
- `_federal_cost` — portion borne by the federal government
- `_state_cost` — portion borne by states (including localities)
Each is computed as the existing program cost × a share variable, where the share comes from statutory parameters (FMAP tables, expansion match, block grant shares, etc.). In aggregate a user gets `federal_benefits_cost` and `state_benefits_cost` for free by summing over programs.
**Where data lives**: the *formulas* (rule) live in policyengine-us; state-by-year *matching rates, block grants, error rates* live as parameters, populated from the authoritative Federal Register notice / agency publication for each year. For prospective years with no published value, parameters can be backfilled from forecasts (separate work) or held at last observed.
## Programs in scope, with primary sources
### Medicaid (HHS)
- **Regular FMAP**: 42 U.S.C. § 1396d(b) — `FMAP = 100% - 45% × (state PCI / US PCI)²`, floor 50%, ceiling 83%. DC set at 70% by statute. Published annually by HHS/ASPE in the Federal Register.
- FY2026: 89 FR 94742 (Nov 29, 2024), FR Doc 2024-27910
- **Expansion FMAP**: 42 U.S.C. § 1396d(y) — 90% for 2020+ for the ACA adult group
- **Territory FMAPs**: § 1396d(b) + § 5101(b) of Consolidated Appropriations Act, 2023 — AS/Guam/NMI/VI permanently 83%; PR 76% through FY2027
- **Disaster-recovery FMAP adjustment**: 42 U.S.C. § 1396d(aa) (added by ACA § 2006)
- **Administrative match rates**: 42 U.S.C. § 1396b(a) — 50% default, 75% for claims processing ops / medical review, 90% for MMIS design & development
### CHIP (HHS)
- **Enhanced FMAP (eFMAP)**: 42 U.S.C. § 1397ee(b) — `eFMAP = FMAP + 30% × (100% - FMAP)`, ceiling 85%
- Published annually in same Federal Register notice as FMAP
### SNAP (USDA)
- **Benefits**: 7 U.S.C. § 2013(a) — 100% federal (currently). **Changes starting FY2028** under OBBBA (PL 119-21, § 10105), creating tiered state match based on state payment error rate (PER):
- PER < 6% → 0% state share
- PER 6%–8% → 5%
- PER 8%–10% → 10%
- PER ≥ 10% → 15%
- FY2028 uses FY2025 or FY2026 PER (state's election); FY2029+ uses PER from third preceding fiscal year
- Delay provision: if FY2025 PER > 13.33% (13.33 × 1.5 = 20%), match delayed to FY2029; if FY2026 PER > 13.33%, delayed to FY2030
- **Administrative costs**: 7 U.S.C. § 2025(a) — currently 50% federal match. **Reduced to 25% federal** starting FY2027 under OBBBA § 10104 (need to verify exact section).
- FNS implementation memo: https://www.fns.usda.gov/snap/obbb-implementation
### TANF (HHS)
- **Federal block grant**: 42 U.S.C. § 603(a) — fixed annual state family assistance grants (total ≈ $16.5B, frozen since PRWORA 1996)
- **State MOE**: 42 U.S.C. § 609(a)(7) — states must spend ≥ 75% (or 80% if failing work participation rate) of FY1994 historic state expenditures
- Complication: federal share is fixed regardless of caseload, so marginal reform impact ≠ average split. For microsim purposes, TANF benefits are reform-sensitive but the federal cost is not — this needs explicit handling (probably: reforms show the delta as state-borne once the federal grant is exhausted, or flag as "within federal block grant" vs. "state MOE")
### SSI / SSP (SSA)
- **Federal SSI**: 100% federal by statute (Title XVI of Social Security Act, 42 U.S.C. § 1381 et seq.)
- **State supplement (SSP)**: 100% state-funded (or fed-administered with state $). Already modeled as separate `ssi`/`state_supplement` variables in -us, so federal/state split is already cleanly separable.
### LIHEAP (HHS/ACF)
- **Block grant**: 42 U.S.C. § 8621 et seq. — 100% federal block grant to states. No state match required.
### WIC (USDA)
- 42 U.S.C. § 1786 — 100% federal (food packages + admin through grants)
### Section 8 / Housing Choice Voucher (HUD)
- 42 U.S.C. § 1437f — 100% federal (HAP and admin fees both from HUD)
### CCDF (HHS)
- **Federal side**: 42 U.S.C. § 9858 et seq. (CCDBG Act) — federal block grant, plus mandatory funding under 42 U.S.C. § 618
- **State match**: federal matching funds require state match at Medicaid FMAP rate for the matching portion (42 U.S.C. § 618(a)(2))
- **State MOE**: required to draw down mandatory federal funds
- Similar complication to TANF (block grant + match structure)
### Head Start (HHS/ACF)
- 42 U.S.C. § 9831 et seq. — federal grants to local agencies; 20% non-federal share typically from provider (in-kind, not state), usually out of scope for microsim since PolicyEngine models the household-received benefit
### Foster care / adoption assistance (HHS)
- Title IV-E, 42 U.S.C. § 670 et seq. — federal share = FMAP for maintenance payments; 50% for administration
- Less user-facing in PolicyEngine-US but part of same FMAP infrastructure
### School meals (USDA)
- 42 U.S.C. § 1751 et seq. (NSLA) — 100% federal reimbursement for meal claims
### Summary table
| Program | Federal share | State share | Key citation |
|---|---|---|---|
| SNAP benefits (≤FY2027) | 100% | 0% | 7 USC 2013(a) |
| SNAP benefits (FY2028+) | 85-100% (PER-tiered) | 0-15% | OBBBA § 10105 |
| SNAP admin | 50% → 25% FY2027+ | 50% → 75% | 7 USC 2025(a); OBBBA |
| Medicaid (non-expansion) | FMAP (50-83%) | 17-50% | 42 USC 1396d(b) |
| Medicaid (expansion) | 90% | 10% | 42 USC 1396d(y) |
| CHIP | eFMAP (65-85%) | 15-35% | 42 USC 1397ee(b) |
| TANF | block grant (fixed) | MOE floor | 42 USC 603, 609 |
| SSI | 100% (federal benefit) | 0% federal + 100% SSP | 42 USC 1381 |
| LIHEAP | 100% | 0% | 42 USC 8621 |
| WIC | 100% | 0% | 42 USC 1786 |
| HCV (Section 8) | 100% | 0% | 42 USC 1437f |
| CCDF | block grant + FMAP match | MOE + match | 42 USC 618, 9858 |
| School meals | 100% | 0% | 42 USC 1751 |
## Proposed phasing
1. **Medicaid** (this PR) — FMAP parameter by state-year, 90% expansion, `medicaid_federal_cost` / `medicaid_state_cost` variables. Regular + expansion only; CHIP deferred.
2. **CHIP** — eFMAP parameter derived from FMAP + 30pp rule with 85% cap; `chip_federal_cost` / `chip_state_cost`.
3. **SNAP** — SNAP benefits (trivial pre-FY2028 100% federal; OBBBA tier logic + PER parameter for FY2028+). Admin out of scope (not currently modeled).
4. **SSI** — trivial wrapper (already modeled as separate fed + SSP variables); add `ssi_federal_cost` / `ssi_state_cost` aggregates.
5. **Simple 100% federal programs** — LIHEAP, WIC, HCV, school meals: add zero-state-cost variables so they participate in aggregates.
6. **TANF / CCDF** — deferred; require explicit block grant modeling. Open question: for reforms that would push spending past the federal cap, how to attribute marginal cost?
7. **Aggregates** — `federal_benefits_cost` and `state_benefits_cost` summing across programs.
## Deliverables
- Per-program `_federal_cost` / `_state_cost` Person-level variables with full statutory references in the `reference` field
- Parameters under `gov///cost_share/` with primary source URLs in `metadata.reference`
- YAML tests per program verifying federal/state split for representative states (including at least one low-FMAP, one high-FMAP, one DC, one territory where applicable, and expansion vs. non-expansion for Medicaid)
- Aggregates across programs
Contributor guide
Assessment
This issue has not been assessed yet.