Skip to content

Add Vermont Child Care Assistance Program (CCAP)#7769

Draft
hua7450 wants to merge 6 commits intoPolicyEngine:mainfrom
hua7450:vt-ccap
Draft

Add Vermont Child Care Assistance Program (CCAP)#7769
hua7450 wants to merge 6 commits intoPolicyEngine:mainfrom
hua7450:vt-ccap

Conversation

@hua7450
Copy link
Collaborator

@hua7450 hua7450 commented Mar 12, 2026

Summary

Implements the Vermont Child Care Financial Assistance Program (CCFAP) in PolicyEngine, covering eligibility determination, income testing, rate lookups, family share calculation, and benefit computation.

Closes #7768

Regulatory Authority

Income Eligibility Tests

  1. Gross income <= 575% FPL (adjusted for family size) -- CCFAP Regulations Section II B 2; Income Guidelines
    • Pre-April 2024: previous limits
    • April 2024: expanded to 400% FPL (Act 76 FAQs)
    • October 2024: expanded to 575% FPL
  2. Asset limit < $1 million -- reuses federal is_ccdf_asset_eligible (dcf.vermont.gov/benefits/ccfap)
  3. Child age: 6 weeks to < 13 years (< 19 for special needs) -- CCFAP Regulations Section I B
  4. Citizenship/immigration: U.S. citizen or qualified noncitizen -- reuses is_ccdf_immigration_eligible_child (CCFAP Regulations Section II A; 45 CFR 98.20)
  5. Categorical exemptions (bypass income test): Reach Up/Reach First recipients, protective services children, foster children -- CCFAP Regulations Section II B 2a

Income Deductions & Exemptions

16 income exclusion categories per CCFAP Regulations Section II B 2:

  1. Proceeds from sale of property (unless business income)
  2. Bank withdrawals
  3. Money borrowed
  4. Tax refunds (including Renters Rebate and EITC)
  5. Public assistance (SNAP, Medicaid, Fuel Assistance, Reach Up, Reach First)
  6. USDA donated foods / home produce
  7. Wages of person under 18 (not primary caretaker)
  8. Education loans, grants, scholarships, work-study
  9. Incentive payments for training/education programs
  10. Supplemental Security Income (SSI)
  11. Child support paid to another household
  12. Adoption assistance payments
  13. Foster care payments from DCF
  14. Self-employment business expenses (except depreciation/Section 179)
  15. Federal/state program stipends
  16. Military pay for deployed household members

Implementation uses an inclusion-list approach (income/sources.yaml) listing 12 counted income sources. Excluded income types are implicitly omitted.

Income Standards

Using 2025 Federal Poverty Guidelines at 575% FPL (maximum eligibility threshold):

Family Size Annual FPG (2025) 575% FPL Annual 575% FPL Monthly
1 $15,650 $89,988 $7,499
2 $21,150 $121,613 $10,134
3 $26,650 $153,238 $12,770
4 $32,150 $184,863 $15,405
5 $37,650 $216,488 $18,041
6 $43,150 $248,113 $20,676

No-copay threshold: 175% FPL. Sliding scale from $0/week (<=175% FPL) to $425/week (575% FPL) in $25 increments per 25% FPL step.

Benefit Calculation

Formula (Understanding Payments Guide):

Weekly Benefit = max(sum(State Rate per eligible child) - Weekly Family Share, $0)
Annual Benefit = Weekly Benefit x 52

State Rate depends on three dimensions (State Rates; Capped Rates):

  • Provider type: Licensed Center or Registered Family Child Care Home
  • Age group: Infant (<24mo), Toddler (24-35mo), Preschool (36-59mo), School Age (60mo-12yr)
  • Care schedule: Part Time (1-25 hrs/wk), Full Time (26-50 hrs/wk), Extended Care (>50 hrs/wk)

Family Share (Income Guidelines):

  • Per-family flat weekly amount (not per-child)
  • $0 for categorically exempt families (Reach Up, protective services, foster)
  • Sliding scale: $0 at <=175% FPL, $50 at 200% FPL, ..., $425 at 575% FPL

Rate Tables (2024-06-30):

Licensed Center (weekly):

Age Part Time Full Time Extended
Infant $258 $471 $640
Toddler $243 $443 $602
Preschool $240 $439 $597
School Age $204 $371 $505

Registered Home (weekly):

Age Part Time Full Time Extended
Infant $212 $387 $527
Toddler $200 $364 $494
Preschool $198 $361 $491
School Age $176 $321 $436

Requirements Coverage

REQ Description Param Variable Test
REQ-001 VT residency defined_for = StateCode.VT All variables All tests use state_code: VT
REQ-002 Citizen/qualified noncitizen (federal) is_ccdf_immigration_eligible_child (reused) vt_ccfap_eligible_child.yaml
REQ-003 Child age 6wk-13yr (19 special needs) age_threshold/base.yaml, age_threshold/special_needs.yaml vt_ccfap_eligible_child vt_ccfap_eligible_child.yaml (10 cases)
REQ-005 Asset limit < $1M (federal) is_ccdf_asset_eligible (reused) vt_ccfap_eligible.yaml Case 7
REQ-006 Gross income <= 575% FPL income/fpl_limit.yaml vt_ccfap_income_eligible vt_ccfap_income_eligible.yaml (9 cases)
REQ-007 Gross income definition income/sources.yaml (12 sources) vt_ccfap_countable_income vt_ccfap_income_eligible.yaml, integration.yaml
REQ-008 16 income exclusions income/sources.yaml (inclusion list) vt_ccfap_countable_income Implicit via inclusion list
REQ-009 Age categories (infant/toddler/preschool/school-age) age_group/*.yaml vt_ccfap_age_group vt_ccfap_age_group.yaml (7 cases)
REQ-010 Care schedule PT/FT/Extended care_schedule/*.yaml vt_ccfap_care_schedule vt_ccfap_care_schedule.yaml (11 cases)
REQ-011 Provider types (licensed center vs registered home) -- vt_ccfap_provider_type vt_ccfap_provider_type.yaml (5 cases)
REQ-012 State rates by provider x age x schedule rates/licensed_center.yaml, rates/registered_home.yaml vt_ccfap_state_rate vt_ccfap_state_rate.yaml (24 cases)
REQ-013 Family share sliding scale $0-$425/wk family_share/scale.yaml vt_ccfap_family_share vt_ccfap_family_share.yaml (14 cases)
REQ-014 Benefit = sum(rates) - family_share >= $0 -- vt_ccfap vt_ccfap.yaml (10 cases), integration.yaml (11 cases)
REQ-015 Reach Up/Reach First -> 100% subsidy -- vt_reach_up_eligible (reused) vt_ccfap_eligible.yaml Case 3, vt_ccfap_family_share.yaml Case 5, vt_ccfap.yaml Case 3
REQ-016 Protective services -> 100% subsidy -- receives_or_needs_protective_services (reused) vt_ccfap_eligible.yaml Case 4, vt_ccfap_family_share.yaml Case 7, integration.yaml Case 11
REQ-018 Foster families -> 100% subsidy -- is_in_foster_care (reused) vt_ccfap_eligible.yaml Case 5, vt_ccfap_family_share.yaml Case 6, integration.yaml Case 4
REQ-021 Act 76 expansion timeline income/fpl_limit.yaml (400% at 2024-04-01, 575% at 2024-10-01) vt_ccfap_income_eligible Income tests use 2025 period

Coverage: 17/17 in-scope requirements implemented (100%)

Not Modeled

REQ Description Reason
REQ-004 Service need / reason for care Bare input variable (meets_ccdf_activity_test) -- not simulatable from household data
REQ-017 Family Support child care exemption No corresponding input variable in codebase
REQ-019 Adoptive parents with adoption subsidy exemption No receives_adoption_subsidy variable available
REQ-020 Adoptive parents with special needs child exemption Adoption-specific -- not simulatable
REQ-022 Enrollment-based payments (vs attendance) No attendance tracking in PolicyEngine
REQ-023 Provider rate excess over state rate Family bears difference; beyond subsidy calculation scope

Files Added

policyengine_us/
  parameters/gov/states/vt/dcf/ccfap/
    age_threshold/
      base.yaml                    # 13 years
      special_needs.yaml           # 19 years
    age_group/
      infant_max.yaml              # 24 months
      toddler_max.yaml             # 36 months
      preschool_max.yaml           # 60 months
    care_schedule/
      part_time_max.yaml           # 25 hours/week
      full_time_max.yaml           # 50 hours/week
    income/
      fpl_limit.yaml               # 4.0 (Apr 2024), 5.75 (Oct 2024)
      sources.yaml                 # 12 counted income sources
    family_share/
      scale.yaml                   # Sliding scale: FPL ratio -> weekly amount
    rates/
      licensed_center.yaml         # Weekly rates by age x schedule (2024 + 2025)
      registered_home.yaml         # Weekly rates by age x schedule (2024 + 2025)
  variables/gov/states/vt/dcf/ccfap/
    eligibility/
      vt_ccfap_eligible.py         # Overall CCFAP eligibility (SPMUnit)
      vt_ccfap_eligible_child.py   # Child eligibility - age + dependent + immigration (Person)
      vt_ccfap_income_eligible.py  # Income eligibility (SPMUnit)
    vt_ccfap.py                    # Annual CCFAP benefit (SPMUnit)
    vt_ccfap_age_group.py          # Age group enum (Person)
    vt_ccfap_care_schedule.py      # Care schedule enum (Person)
    vt_ccfap_countable_income.py   # Gross countable income (SPMUnit)
    vt_ccfap_family_share.py       # Weekly family copayment, annualized (SPMUnit)
    vt_ccfap_provider_type.py      # Provider type enum (Person)
    vt_ccfap_state_rate.py         # Weekly state rate per child (Person)
    vt_child_care_subsidies.py     # State child care subsidy aggregator (SPMUnit)
  tests/policy/baseline/gov/states/vt/dcf/ccfap/
    vt_ccfap.yaml                  # 10 benefit calculation tests
    vt_ccfap_age_group.yaml        # 7 age group tests
    vt_ccfap_care_schedule.yaml    # 11 care schedule tests
    vt_ccfap_eligible.yaml         # Overall eligibility tests
    vt_ccfap_eligible_child.yaml   # 10 child eligibility tests
    vt_ccfap_family_share.yaml     # 14 family share tests
    vt_ccfap_income_eligible.yaml  # 9 income eligibility tests
    vt_ccfap_provider_type.yaml    # 5 provider type tests
    vt_ccfap_state_rate.yaml       # 24 state rate tests
    integration.yaml               # 11 end-to-end integration tests

Totals: 12 parameter files, 11 variable files, 10 test files (33 files)

hua7450 and others added 3 commits March 12, 2026 13:54
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Closes PolicyEngine#7768

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codecov
Copy link

codecov bot commented Mar 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (752fae4) to head (4b740d9).
⚠️ Report is 46 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7769    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            2        14    +12     
  Lines           13       212   +199     
==========================================
+ Hits            13       212   +199     
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 Sentry.
📢 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.

hua7450 and others added 3 commits March 12, 2026 16:16
…d test name

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

Add Vermont Child Care Assistance Program (CCAP)

1 participant