Skip to content

Complete Illinois CCAP copays and provider payment rates - #9189

Open
hua7450 wants to merge 14 commits into
PolicyEngine:mainfrom
hua7450:il-ccdf
Open

Complete Illinois CCAP copays and provider payment rates#9189
hua7450 wants to merge 14 commits into
PolicyEngine:mainfrom
hua7450:il-ccdf

Conversation

@hua7450

@hua7450 hua7450 commented Jul 31, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR extends the existing Illinois Child Care Assistance Program (CCAP) model from eligibility-only coverage to monthly family copayments, maximum base provider rates, and ordinary child care subsidy payments. It also updates countable income, continuing-family income eligibility, immigration treatment, benefit aggregation, and program metadata.

Fixes #9188.

Regulatory authority

The implementation uses the following official Illinois sources:

Income eligibility tests

  • Retain the 225% FPL limit for new applicants.
  • Allow an enrolled family to remain eligible up to the greater of the 275% FPL redetermination limit and the 85% state median income phase-out ceiling, effective July 1, 2025. The model does not track the three-month graduated phase-out period.
  • Remove qualified immigration status as a program eligibility gate because Illinois authorizes otherwise-eligible non-qualified children with State funds. The existing immigration-status variable remains available for funding classification.
  • Test the applicable income limits immediately below, at, and above the 225% FPL, 275% FPL, and 85% SMI boundaries.

Income deductions and exemptions

The countable-income calculation maps the official non-exempt categories to 11 model inputs: wages, farm and non-farm self-employment income (including specified-service self-employment), rental income, dividends, interest, pensions, veterans benefits, unemployment compensation, and workers compensation. It excludes the income categories identified as exempt in Illinois policy, fully deducts child support paid through a rate parameter, and floors countable income at zero.

The model excludes all child earned income (wages and farm income) as the approved approximation because the data do not identify whether a child is the CCAP applicant. Tests cover adult income, child earnings, child support paid, rental income, missing income, and a negative net amount.

Copayments

  • Encode every published Table A monthly copayment cell for family sizes 2 through 10, with histories beginning July 1, 2025 and July 1, 2026.
  • Charge the $1 minimum copayment at or below 100% FPL, including months with zero or missing income.
  • Assess Table B — 50% of the Table A copayment, encoded as a rate parameter rather than a second cell table — from September through May when every child in care is school age (age 5 through 13 and enrolled in school) and approved for part-day care. Halving the $1 minimum reproduces the published $0.50 lowest Table B cell. The policy anchors school age at September of the school year, which the model approximates with the annual age, and school enrollment uses the model's is_in_k12_school imputation (ages 5 through 17 assumed enrolled) unless specified.
  • Assess a zero copayment for child-only TANF non-parent relative cases and protective-care cases.
  • Clamp copayment lookup below family size 2 to the size-2 table and above family size 10 to the size-10 table because the published schedules contain no other family sizes.

Copay tests pin the exact published cells at each table threshold, one dollar above and below, the July 2025 activation boundary, and the July 2026 Table A transition. Table B tests cover the school-year window boundaries and each disqualifying condition: a full-day sibling, a child below school age, no school enrollment, an enrolled special-needs teenager above the school-age limit, and no child in care.

Benefit calculation

The model classifies each eligible child by four provider types, three county groups, three age groups, and daily care duration. It applies the official 2025 and 2026 maximum base rates for part-day, full-day, full-plus-part-day, and two-full-day care.

For each eligible child, the model:

  1. Multiplies the applicable maximum daily rate by nonnegative attending days.
  2. Caps monthly pre_subsidy_childcare_expenses at that maximum.
  3. Sums capped costs across eligible children.
  4. Subtracts one monthly family copayment and floors the subsidy at zero.

The subsidy pays base provider rates only, so il_ccap is a base-payment estimate; actual payments can also include quality and seniority add-ons. The PR publishes the result as monthly il_ccap, adds annual il_child_care_subsidies, and registers the Illinois amount in the federal child care subsidy aggregator.

Not modeled

  • The attendance rule, under which centers and homes are paid approved eligible days rather than attended days when a child attends at least 69.5% of approved days; approved days are not observable in survey data.
  • The $1 copayment for a parent who spends at least 75% of their scope of work in early childhood education and care (23 Ill. Adm. Code 2060.310(b)); the model has no occupation input.
  • Longitudinal copayment reassessment during the 12-month eligibility period.
  • Operational assignment of one family copayment among children and providers.
  • Quality and seniority add-ons because the acquired official sources do not publish their amounts.
  • Paid personal-leave payments because the model lacks provider leave-use history.
  • Separate copayment schedules outside published family sizes 2 through 10; the lookup uses the approved clamp instead.

Historical notes

The modeled payment schedules begin July 1, 2025, gated by an in_effect parameter, and carry the July 1, 2026 histories. Illinois transferred program administration from IDHS to IDEC on July 1, 2026; this PR retains the existing gov.states.il.dhs.ccap path to avoid an unrelated model-tree migration. The current IDEC provider page supplies the current program context.

Files

This PR changes 69 program files: 61 added and 8 updated.

  • Parameters: 36 files (34 added, 2 updated), including nine dated Table A copayment scales, the Table B rate and school-age bounds, and four provider-rate tables; the updates revise the Illinois countable-income source list and the federal CCDF subsidy-program registry.
  • Variables: 17 files (14 added, 3 updated), covering copayments, income, eligibility, provider classifications, payment rates, the subsidy, and aggregation.
  • Tests: 14 YAML files (12 added, 2 updated) with 115 cases, including 6 integration scenarios.
  • Metadata and changelog: update policyengine_us/programs.yaml and add one towncrier fragment.

Testing

  • make format: passed.
  • The full Illinois CCAP test directory passes locally: 129/129 cases (the 115 in this PR plus 14 pre-existing eligibility cases). The branch is merged with current main.

Testing was scoped to the Illinois CCAP paths; no broader package or microsimulation suite ran locally.

hua7450 and others added 6 commits July 31, 2026 14:16
Remove four features that were not genuinely modeled, each replaced by a
one-line comment at the site:

- 70% attendance rule (il_ccap_approved_eligible_days_per_month plus
  rates/attendance/threshold). The variable was input-only with no default,
  so the ratio was always 0 in microsimulation and the rule never fired;
  reimbursement now reads childcare_attending_days_per_month directly.
- Table B school-age part-day copay schedule (school_age_months,
  school_age_reduction_rate, school_age_minimum, school_age_maximum and
  il_ccap_all_children_school_age_part_day).
- $1 child care worker copay (il_ccap_child_care_worker and
  child_care_worker_amount). Input-only, so no household received it.
- il_ccap_royalty_income, which this repo does not model.

Drop copay/exempt_amount: the exemption is structural, so the select branch
is a bare 0 rather than a parameter that can only hold zero.

Convert the nine table_a bracket files from inline flow-mappings to block
form, matching the 804 bracket files already in the repo (none used inline),
and drop 55 redundant 2026-07-01 entries whose values were unchanged from
2025-07-01 - including all 36 in licensed_center and license_exempt_center,
where Illinois left center rates flat for FY2027.

Point the six rates/duration parameters at IL444-4343 page 1, which states
the hours-to-rate-unit rules. They previously cited IDHS 06.05.01, which
publishes only the price grid and does not support those values.

Verified every Table A bracket and provider rate for both effective dates
against the IDHS 7/1/2025 and IDEC 7/1/2026 charts by evaluating the
parameter tree: 177 and 179 bracket lower bounds, all matching.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The upstream merge added 2024-01-01 and 2025-01-01 blocks to
child_care_subsidy_programs.yaml for NC and DC, copying the program list as
it stood before this branch added Illinois. Git merged both sides without a
conflict, leaving il_child_care_subsidies present only in the 2021-01-01
block, so child_care_subsidies returned 0 for an Illinois family from 2024
onward while il_child_care_subsidies was nonzero.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@hua7450
hua7450 marked this pull request as ready for review August 13, 2026 03:59
hua7450 and others added 8 commits August 13, 2026 00:56
Review-response round 2, covering the copay and provider-payment findings.

Copay:
- il_ccap_copay applied the $1 minimum by comparing income to a calendar-year
  spm_unit_fpg, while Table A's bands are frozen at the preceding July's
  guideline. From January the override fired above the in-force chart's minimum
  band and could only lower the copay, understating it by $17-$53 per month.
  Table A's first bracket already encodes the same 100% FPL rule at the correct
  vintage, so the override is replaced by a floor at the minimum amount, which
  also covers the zero and negative income path.
- Remove copay/fpl_reduced_rate.yaml, whose only reader was that comparison.
- Drop the spm_unit_fpg pin from every copay test, since the formula no longer
  reads it, and add three regression cases at family sizes 2, 5 and 8 that sit
  in the window where the override previously fired.
- State what Table B and the child care worker copayment are in the in-code
  notes, and cite 23 Ill. Adm. Code 2060.310(b) for the latter.

Payment rates:
- Cite IDHS 06.05.01 for the 2025-dated daily rate unit rules, which were
  supported only by the IDEC schedule effective July 1, 2026.
- Pair the transient June 2025 memo with the permanent IDHS rate chart in the
  home rate and county group files.
- Correct the attendance rule note, which covers centers as well as homes, and
  state the 69.5% threshold.
- Widen daily rate coverage from one licensed home cell to five across both
  vintages, all county groups, age groups and duration categories, and assert
  the license-exempt center age-two and Group 2 cells.
- Drop il_ccap_provider_type from three reimbursement cases that never read it,
  and rename the two whose names asserted a distinction they could not test.

Cite each source document once rather than repeating a URL per page.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A non-January month period does not accept scalar inputs, so the three cases
asserting the Table A vintage against a live poverty guideline crashed the
simulation builder. Run them across 2026 with the assertion keyed to March,
which is the window the copayment defect occupied, and restate the incomes
annually.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… care override

il_ccap_copay was defined only for Illinois, so every Illinois SPM unit
reported a positive Table A copayment regardless of whether it had an eligible
child, met the work requirement, or passed the income test. Its only consumer
is gated, so no subsidy was wrong, but the variable is exposed and reads as a
real assessed charge. Gate it on il_ccap_eligible and establish eligibility in
the copayment tests.

il_ccap_protective_care_override carried no explanation of what it was for.
Name the exemption groups it stands in for, none of which has a PolicyEngine
analogue: families transitioning from IDCFS Intact Family Services, families
whose parent is called into active military duty, parenting youth in care, and
families served by the Extended Family Support Program. Record that it defaults
to false, and replace the deprecated documentation field with a comment.

Cite 89 Ill. Adm. Code 50.310 through its JCAR page, and note that Part 50
transferred to 23 Ill. Adm. Code 2060 at 50 Ill. Reg. 9842.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The unmodeled items the entry listed are deliberate scope decisions rather
than gaps, and this repository does not track them, so the note and the
partial status came off.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Halve the Table A copayment through a 0.5 rate parameter from September
through May when every child in care is age 5 to 13, enrolled in school,
and approved for part-day care, per IDHS CCAP Policy 04.02.01.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The is_in_k12_school variable imputes enrollment for ages 5 through 17,
so the non-enrolled case must override it to false.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@hua7450
hua7450 requested a review from DTrim99 August 13, 2026 18:57
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.

Complete Illinois CCAP with family copays and provider payment rates

1 participant