-
Notifications
You must be signed in to change notification settings - Fork 201
Description
Implement Michigan Family Independence Program (FIP)
Overview
Implementation of Michigan's Family Independence Program (FIP), the state's TANF cash assistance program providing temporary financial assistance to families with children.
Status Checklist
- Documentation collected
- Parameters created (6 files)
- Variables implemented (11 files)
- Tests written (66 test cases across 8 files)
- CI passing
- Formulas verified against BEM manuals
- Per-person deduction logic implemented
- Dual-test system implemented (20% initial, 50% benefit)
- PR ready for review
Implementation Summary
Michigan FIP (Branch: mi_tanf_simple)
Current Status: All formulas verified against Michigan DHHS Bridges Eligibility Manual (BEM). All tests passing.
Key Features Implemented:
- ✅ Payment standards by family size with historical values (2008-2024 frozen, 2025 increase)
- ✅ Per-person earned income deductions ($200 + percentage per working person)
- ✅ Dual-test system: 20% for initial eligibility, 50% for benefit calculation
- ✅ Resource limits with 2019 increase ($3,000→$15,000)
- ✅ Uses federal TANF demographic eligibility
- ✅ Multiple earner households with per-person deductions
- ✅ Proper use of adds pattern
Formula (Per BEM 518 and BEM 520):
Earned Income Deduction (applied separately to each working person):
- Flat deduction: $200 per person
- Percentage deduction: 20% OR 50% of remainder
Initial Eligibility Test (new applicants only - BEM 520 Section C):
- Uses 20% deduction rate (Qualifying Deficit Test)
- Determines IF household qualifies for FIP
Benefit Calculation (everyone - BEM 520 Section D):
- Uses 50% deduction rate (Issuance Deficit Test)
- Determines HOW MUCH benefit household receives
- Applies to both new applicants and enrolled recipients
Countable Income = Sum(per-person countable earned) + gross unearned
Monthly Benefit = MAX(Payment Standard - Countable Income, 0)
Verification: Formulas match BEM 518 (BPB 2023-013), BEM 520 (BPB 2023-002), and BEM 503 (BPB 2025-022) exactly.
Folder Structure
Parameters (6 files)
policyengine_us/parameters/gov/states/mi/mdhhs/fip/
├── resource_limit.yaml # $3,000→$15,000 (2019)
├── income/deductions/earned_income_disregard/ # 3 files
│ ├── flat_amount.yaml # $200 (since 2008)
│ ├── initial_percent.yaml # 20% (initial eligibility)
│ └── ongoing_percent.yaml # 20%→50% in 2011 (benefit calc)
└── payment_standard/ # 2 files
├── amounts.yaml # 2017 frozen & 2025 increased
└── additional_person_increment.yaml # $80→$95
Variables (11 files)
policyengine_us/variables/gov/states/mi/mdhhs/fip/
├── eligibility/ # 3 files
│ ├── mi_fip_eligible.py
│ ├── mi_fip_income_eligible.py # Dual-test logic!
│ └── mi_fip_resources_eligible.py
├── income/ # 6 files
│ ├── mi_fip_earned_income_after_deductions_person.py # 50% (benefit)
│ ├── mi_fip_earned_income_after_deductions_initial_person.py # 20% (eligibility)
│ ├── mi_fip_countable_earned_income.py # Aggregates 50% version
│ ├── mi_fip_countable_earned_income_initial.py # Aggregates 20% version
│ ├── mi_fip_countable_income.py # For benefit calc (50%)
│ └── mi_fip_countable_income_initial.py # For initial test (20%)
├── mi_fip.py # Main benefit
└── mi_fip_payment_standard.py
Tests (8 files, 66 test cases total)
policyengine_us/tests/policy/baseline/gov/states/mi/mdhhs/fip/
├── eligibility/ # 3 files, 18 tests
│ ├── mi_fip_eligible.yaml # 5 tests
│ ├── mi_fip_income_eligible.yaml # 7 tests (20% vs 50%)
│ └── mi_fip_resources_eligible.yaml # 6 tests
├── income/ # 2 files, 14 tests
│ ├── mi_fip_countable_earned_income.yaml # 8 tests (50% benefit)
│ └── mi_fip_countable_income.yaml # 6 tests
├── integration.yaml # 17 integration tests
├── mi_fip.yaml # 7 tests
└── mi_fip_payment_standard.yaml # 10 tests
Program Documentation
Benefit Amounts
Payment Standards (Effective 2024-12-01):
| Family Size | Monthly Benefit | Annual | 2008-2024 (Frozen) |
|---|---|---|---|
| 1 person | $363 | $4,356 | $306 |
| 2 people | $478 | $5,736 | $403 |
| 3 people | $583 | $6,996 | $492 |
| 4 people | $707 | $8,484 | $597 |
| 5 people | $822 | $9,864 | $694 |
| 6 people | $981 | $11,772 | $828 |
| 7 people | $1,072 | $12,864 | $905 |
| 8+ people | +$95/person | - | +$80/person |
Historical Context: Payment standards frozen October 1, 2008 - November 30, 2024 (16 years). FY 2025 budget approved ~18.5% increase effective December 1, 2024.
Income Deductions
Earned Income (BEM 518 - Applied Per Person):
- $200 flat deduction per working person
- Plus percentage deduction:
- Initial eligibility (new applicants): 20%
- Benefit calculation (everyone): 50% (changed from 20% in 2011)
- Applied separately to each working person, then summed
Example (Dual earners: $800 + $400 = $1,200):
Benefit Calculation (50% rate for both):
Parent 1: $800 - [$200 + 50%×$600] = $300 countable
Parent 2: $400 - [$200 + 50%×$200] = $100 countable
Total: $400 countable
Initial Eligibility (20% rate for new applicants):
Parent 1: $800 - [$200 + 20%×$600] = $440 countable
Parent 2: $400 - [$200 + 20%×$200] = $160 countable
Total: $600 countable (must be < payment standard to qualify)
Unearned Income (BEM 503): No deductions - gross amount is countable
Resource Limits (BEM 400)
| Period | Asset Limit | Source |
|---|---|---|
| 2008-10-01 to 2018-12-31 | $3,000 | Historical |
| 2019-01-01 onwards | $15,000 | Governor Whitmer increase |
Example Calculations
Example 1: New Applicant - Passes Initial Eligibility, Gets Benefit
Household: Single parent + 2 children (family of 3), NEW applicant
Income: $600/month employment
Step 1: Initial Eligibility Test (20% rate)
Countable = $600 - [$200 + 20%×$400] = $600 - $280 = $320
Payment Standard = $583
$320 < $583 → PASSES, eligible for FIP
Step 2: Benefit Calculation (50% rate)
Countable = $600 - [$200 + 50%×$400] = $600 - $400 = $200
Benefit = $583 - $200 = $383/month
Example 2: New Applicant - Fails Initial Eligibility
Household: Single person, NEW applicant
Income: $1,000/month employment
Step 1: Initial Eligibility Test (20% rate)
Countable = $1,000 - [$200 + 20%×$800] = $1,000 - $360 = $640
Payment Standard = $363
$640 > $363 → FAILS, not eligible for FIP
(Benefit calculation doesn't run - already ineligible)
Example 3: Enrolled Recipient - Ongoing Eligibility
Household: Single parent + 2 children (family of 3), ENROLLED
Income: $1,000/month employment
Enrolled recipients skip initial eligibility test (already qualified)
Benefit Calculation (50% rate):
Countable = $1,000 - [$200 + 50%×$800] = $1,000 - $600 = $400
Payment Standard = $583
Benefit = $583 - $400 = $183/month
Example 4: Multiple Earners - Per-Person Deductions
Household: 2 parents + 2 children (family of 4), ENROLLED
Income: Parent 1 = $800/month, Parent 2 = $400/month
Benefit Calculation (50% rate, per-person):
Parent 1: $800 - [$200 + 50%×$600] = $300 countable
Parent 2: $400 - [$200 + 50%×$200] = $100 countable
Total countable = $400
Payment Standard (size 4) = $707
Benefit = $707 - $400 = $307/month
Testing & Verification
Test Results
✅ All 66 tests passing
- Integration tests: 17/17 passing
- Unit tests: 49/49 passing
- Coverage: 100%Test Coverage
| Test File | Count | Purpose |
|---|---|---|
| integration.yaml | 17 | End-to-end scenarios |
| mi_fip_payment_standard.yaml | 10 | Payment standards (sizes 1-9) |
| mi_fip_countable_earned_income.yaml | 8 | 50% benefit deductions |
| mi_fip_income_eligible.yaml | 7 | 20% vs 50% eligibility tests |
| mi_fip.yaml | 7 | Main benefit formula |
| mi_fip_resources_eligible.yaml | 6 | Asset limits |
| mi_fip_countable_income.yaml | 6 | Total income |
| mi_fip_eligible.yaml | 5 | Overall eligibility |
| Total | 66 |
Implementation Highlights
Dual-Test System (BEM 518 & 520)
- Qualifying Deficit Test: 20% rate for new applicants to determine eligibility
- Issuance Deficit Test: 50% rate for everyone to calculate benefits
- Correctly implements BEM's separation of eligibility determination from benefit calculation
Per-Person Deduction Logic
BEM 518: "Apply this disregard separately to each program group member's earned income"
- Each working person gets their own $200 deduction
- Families with multiple earners receive more total deductions
- Implemented via Person-level variables with SPMUnit aggregation using
adds
Legal Authority
- BEM 518 (BPB 2023-013, effective 7-1-2023): Income Budgeting
- BEM 520 (BPB 2023-002, effective 1-1-2023): Computing the Budget
- BEM 503 (BPB 2025-022, effective 10-1-2025): Unearned Income
- P.A. 280 of 1939, as amended
- MCL 400.57 et seq.
Simplified Implementation Exclusions
- Time limits (not cross-sectionally modelable)
- Work requirements (behavioral)
- Child support income test (complex, case-specific)
- Recoupment (overpayment recovery)
- Minimum benefit thresholds ($1 initial, $10 ongoing)
Official References
Primary Sources
- Michigan TANF State Plan 2017 - 2008 frozen payment standards
- Michigan TANF State Plan Rev 07-01-25 - 2025 updated standards
- BEM 518 - FIP Income Budgeting
- BEM 520 - Computing FIP Budget
- BEM 503 - Unearned Income
- RFT 210 - Payment Standards