Skip to content

Implement West Virginia Child Care Assistance Program (CCAP)#7948

Draft
hua7450 wants to merge 8 commits intoPolicyEngine:mainfrom
hua7450:wv-ccap
Draft

Implement West Virginia Child Care Assistance Program (CCAP)#7948
hua7450 wants to merge 8 commits intoPolicyEngine:mainfrom
hua7450:wv-ccap

Conversation

@hua7450
Copy link
Copy Markdown
Collaborator

@hua7450 hua7450 commented Apr 8, 2026

Summary

Implements West Virginia's Child Care Assistance Program (CCAP) -- the state's CCDF-funded child care subsidy providing provider reimbursement minus parent copayment for eligible families.

Closes #7947

Regulatory Authority

Eligibility

Requirement Source How Modeled
Child under age 13 Policy Manual Ch.3 p.18 wv_ccap_eligible_child (age < 13)
Special needs child up to 18 Policy Manual Ch.3 p.18 wv_ccap_eligible_child (is_disabled branch)
Child is US citizen or qualified immigrant Policy Manual Ch.3; Appendix E is_ccdf_immigration_eligible_child (federal variable)
Child resides in WV Policy Manual Ch.3 p.18 defined_for = StateCode.WV
Child is dependent of family Policy Manual Ch.3 p.18 is_tax_unit_dependent
Parent in qualifying activity (employment/education/training) Policy Manual Ch.3 p.18 wv_ccap_activity_eligible (weekly hours >= 20)
Both parents active in two-parent family Policy Manual Ch.3 p.18 wv_ccap_activity_eligible (all heads/spouses must qualify)
Gross income <= 150% FPL (initial) Policy Manual Ch.5 p.42 wv_ccap_income_eligible with fpl_limit/initial param
Gross income <= 185% FPL (ongoing/enrolled) Policy Manual Ch.5 p.42; CCDF Plan Sec 2.2.3 wv_ccap_income_eligible with fpl_limit/ongoing + wv_ccap_enrolled flag
Income below 85% SMI absolute cap CCDF Plan Sec 2.2.4; SMI Chart wv_ccap_income_eligible with smi_rate param x hhs_smi
TANF recipients categorically eligible Policy Manual Ch.3 p.18 is_tanf_enrolled bypasses income test

Income Rules

Countable income (wv_ccap_countable_income, uses adds from sources.yaml):

  • Earned: employment_income, self_employment_income
  • Unearned: social_security, ssi, unemployment_compensation, workers_compensation, pension_income, alimony_income, child_support_received, dividend_income, interest_income, rental_income, veterans_benefits, military_retirement_pay, tanf

Excluded income (not in sources list): SNAP, LIEAP/LIHEAP, foster care payments, educational grants/loans, one-time lump sums.

Thresholds:

  • Initial application: 150% FPL
  • Ongoing (enrolled): 185% FPL (graduated phase-out)
  • Absolute cap: 85% SMI by family size

Provider Rates (Appendix B, daily, effective Oct 1 2024)

Family Child Care Home

Age Group Tier I Tier II Tier III
Infant (0-12mo) $30 $33 $36
Toddler (13-23mo) $28 $31 $34
Pre-School (2-4yr) $26 $29 $32
School-Age (5+yr) $26 $29 $32

Family Child Care Facility

Age Group Tier I Tier II Tier III
Infant $35 $38 $41
Toddler $34 $37 $40
Pre-School $32 $35 $38
School-Age $32 $35 $38

Child Care Center

Age Group Tier I Tier II Tier III
Infant $39 $42 $45
Toddler $36 $39 $42
Pre-School $32 $35 $39
School-Age $32 $35 $39

Other Care Types

Type Rate
Out of School Time (all ages) $14.50/day (Tier I only)
Informal/Relative (under 2) $7.50/day
Informal/Relative (2 and over) $6.00/day
Special Needs supplement +$3.00/day
Non-Traditional Hours supplement +$6.00/day

Co-payment

The actual WV sliding fee scale is a 176-cell lookup table (16 FPL brackets x 11 family sizes). This implementation uses a simplified percentage-of-income approximation derived from the 3-person family column as a representative middle case:

FPL Range Co-pay Rate
Below 40% FPL 0% (exempt)
40-70% FPL 2.5% of income
70-110% FPL 3.0% of income
110-150% FPL 3.5% of income
150-185% FPL 4.0% of income

Caps and exemptions:

  • Maximum co-payment: 7% of gross income (CCDF Plan Sec 3.1)
  • Foster/kinship families: $0 co-payment (CCDF Plan Sec 3.3)
  • Families below 40% FPL: $0 co-payment (CCDF Plan Sec 3.3)

Benefit Calculation

daily_benefit_per_child = min(daily_rate + supplements, daily_charge)
monthly_reimbursement = sum_over_children(daily_benefit * days_per_month)
monthly_benefit = min(pre_subsidy_childcare_expenses - copay, monthly_reimbursement)

Where:

  • daily_rate = provider rate from Appendix B (by type x tier x age)
  • supplements = special needs (+$3/day) and/or non-traditional hours (+$6/day)
  • daily_charge = actual provider charge (derived from pre_subsidy_childcare_expenses / days_per_month)
  • days_per_month = childcare_days_per_week * 52/12
  • copay = family-level co-payment (single amount regardless of number of children)

Not Modeled (by design)

What Source Why Excluded
Court-supervised children up to 18 Policy Manual Ch.3 p.18 No is_under_court_supervision variable in PolicyEngine
CPS/protective services referral (bypasses activity) Policy Manual Ch.3 p.18 Administrative determination, not simulatable
90-day job search limit Policy Manual Ch.3 p.18 Time-limited activity, not simulatable in monthly model
CPS family fee waiver ($0 copay) CCDF Plan Sec 3.3 p.42 No CPS referral status variable
Supplemental Child Care (non-CCDF) Supplemental Policy (Apr 2023) Separate program with different funding stream
Part-day conversion chart Appendix C Attendance-level tracking, not simulatable
12-month eligibility period Policy Manual Ch.6 p.53 Administrative timeline, not relevant to point-in-time simulation

Files Added

parameters/gov/states/wv/dhhr/ccap/
  eligibility/
    child_age_limit.yaml
    special_needs_child_age_limit.yaml
    min_parent_age.yaml
    activity_hours.yaml
  income/
    fpl_limit/
      initial.yaml
      ongoing.yaml
    smi_rate.yaml
    countable_income/
      sources.yaml
  copayment/
    rate.yaml
    max_share.yaml
  rates/
    family_home.yaml
    family_facility.yaml
    center.yaml
    out_of_school_time.yaml
    informal_relative.yaml
  supplements/
    special_needs.yaml
    non_traditional_hours.yaml
  age_group/
    months.yaml
    informal_months.yaml

variables/gov/states/wv/dhhr/ccap/
  eligibility/
    wv_ccap_eligible.py
    wv_ccap_eligible_child.py
    wv_ccap_activity_eligible.py
    wv_ccap_income_eligible.py
  wv_ccap_provider_type.py       (enum: 5 provider types)
  wv_ccap_quality_tier.py        (enum: Tier I/II/III)
  wv_ccap_child_age_category.py  (enum: Infant/Toddler/Pre-School/School-Age)
  wv_ccap_informal_age_group.py  (enum: Under 2 / 2 and Over)
  wv_ccap_enrolled.py            (input: initial vs ongoing applicant)
  wv_ccap_non_traditional_hours.py (input: non-traditional hours flag)
  wv_ccap_countable_income.py    (adds from sources.yaml)
  wv_ccap_copay.py               (% of income, 7% cap, foster exemption)
  wv_ccap_daily_rate.py          (rate lookup by type x tier x age)
  wv_ccap_daily_benefit.py       (min(rate + supplements, charge))
  wv_ccap.py                     (monthly benefit = reimbursement - copay)
  wv_child_care_subsidies.py     (integration wrapper)

tests/policy/baseline/gov/states/wv/dhhr/ccap/
  wv_ccap_eligible_child.yaml    (5 cases)
  wv_ccap_income_eligible.yaml   (4 cases)
  wv_ccap_copay.yaml             (4 cases)
  wv_ccap_daily_rate.yaml        (7 cases)
  wv_ccap_eligible.yaml          (6 cases)
  wv_ccap_daily_benefit.yaml     (3 cases)
  wv_ccap_countable_income.yaml  (3 cases)
  wv_ccap_child_age_category.yaml (6 cases)
  wv_child_care_subsidies.yaml   (1 case)
  edge_cases.yaml                (50 cases)
  integration.yaml               (5 cases)

Test Plan

  • 94 tests pass (unit + integration + edge cases across 11 test files)
  • CI passes

hua7450 and others added 4 commits April 8, 2026 00:32
Adds eligibility, income testing, copayment, provider rates, and benefit
calculation for WV's CCDF-funded child care subsidy program. Ref PolicyEngine#7947

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (20b8599) to head (60deb0a).
⚠️ Report is 55 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #7948    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files            1        16    +15     
  Lines           17       255   +238     
==========================================
+ Hits            17       255   +238     
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 4 commits April 8, 2026 02:19
- Age groups: Infant 0-24mo, Toddler 25-36mo, Preschool 37-59mo (was wrong)
- 18 rate values corrected for Toddler + Preschool across 3 provider types
- Initial FPL limit: 150% → 185% (150% was unsupported by documentation)
- 16 page references fixed (+7 offset for Policy Manual, off-by-1 for State Plan)
- 9 reference titles updated with specific subsections
- Activity hours and copay references corrected to proper sections

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ge=8)

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

Implement West Virginia Child Care Assistance Program (CCAP)

1 participant