Skip to content

Implement Michigan Family Independence Program (FIP) #6813

@hua7450

Description

@hua7450

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

Research Sources

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions