From bcd8c283c11c990db352093b9a0460dec37788bd Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sat, 7 Nov 2026 18:22:36 -0500 Subject: [PATCH 1/6] Pay Colorado's child care assistance only for eligible children 8 CCR 1403-1 3.132(D) and (E) pay for the care of children under 13, and of children under 19 who can't care for themselves or who are under court supervision. co_ccap_subsidy summed every SPM unit member's child care and after-school charges, a teenager's among them; it now sums the charges of members who pass co_ccap_child_eligible, as co_ccap_parent_fee already does. Adds YAML cases at the age boundaries, two Hypothesis properties and a towncrier fragment. Co-Authored-By: Claude Opus 5.5 --- .../co-ccap-eligible-children.fixed.md | 1 + .../gov/states/co/ccap/co_ccap_subsidy.yaml | 225 +++++++++++++++++- ...st_co_ccap_eligible_children_properties.py | 174 ++++++++++++++ .../gov/states/co/ccap/co_ccap_subsidy.py | 19 +- 4 files changed, 406 insertions(+), 13 deletions(-) create mode 100644 changelog.d/co-ccap-eligible-children.fixed.md create mode 100644 policyengine_us/tests/test_co_ccap_eligible_children_properties.py diff --git a/changelog.d/co-ccap-eligible-children.fixed.md b/changelog.d/co-ccap-eligible-children.fixed.md new file mode 100644 index 00000000000..2b63661d787 --- /dev/null +++ b/changelog.d/co-ccap-eligible-children.fixed.md @@ -0,0 +1 @@ +Pay Colorado's Child Care Assistance Program only for eligible children: those under 13, and those under 19 who can't care for themselves or who are under court supervision. It had paid every SPM unit member's child care and after-school charges, a teenager's among them. diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml index ff9daf2d40f..a3531bc5989 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml @@ -1,21 +1,224 @@ -- name: In 2023, the total expenses is 2_400, and parent fee is 800, the subsidy would be 1_400. +- name: Case 1, in 2023, a child's $2,200 of charges less an $800 parent fee leaves $1,400. period: 2023 input: - pre_subsidy_childcare_expenses: 1_000 - after_school_expenses: 1_200 - co_ccap_parent_fee: 800 - co_ccap_eligible: true + people: + parent: + age: 30 + child: + age: 4 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 1_000 + after_school_expenses: 1_200 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: 800 + co_ccap_eligible: true + households: + household: + members: [parent, child] + state_code: CO output: co_ccap_subsidy: 1_400 -- name: In 2022, the total annual expenses is 28_800, and parent fee for December is 800, the subsidy for December would be 1_400. +- name: Case 2, in December 2022, a child's $2,200 of monthly charges less an $800 parent fee leaves $1,400. period: 2022 input: - pre_subsidy_childcare_expenses: 12 * 1_000 - after_school_expenses: 12 * 1_200 - co_ccap_parent_fee: - 2022-12: 800 - co_ccap_eligible: true + people: + parent: + age: 30 + child: + age: 4 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12 * 1_000 + after_school_expenses: 12 * 1_200 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: + 2022-12: 800 + co_ccap_eligible: true + households: + household: + members: [parent, child] + state_code: CO output: co_ccap_subsidy: 2022-12: 1_400 + +- name: Case 3, a teenager without additional care needs adds nothing to the payment. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 3 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + teen: + age: 15 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, young_child, teen] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, teen] + state_code: CO + output: + co_ccap_child_eligible: [false, true, false] + # 8 CCR 1403-1 3.132(D) pays for children under 13: the 3-year-old's + # $1,000 a month less the $200 fee, and nothing toward the 15-year-old's + # $1,000. + co_ccap_subsidy: 800 + +- name: Case 4, a teenager who can't care for themselves is an eligible child. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 3 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + teen: + age: 15 + is_tax_unit_dependent: true + is_disabled: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, young_child, teen] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, teen] + state_code: CO + output: + co_ccap_child_eligible: [false, true, true] + # 3.132(E) covers a child under 19 who can't care for themselves: + # $1,000 + $1,000 - $200. + co_ccap_subsidy: 1_800 + +- name: Case 5, a teenager under court supervision is an eligible child. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 3 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + teen: + age: 15 + is_tax_unit_dependent: true + is_under_court_supervision: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, young_child, teen] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, teen] + state_code: CO + output: + co_ccap_child_eligible: [false, true, true] + co_ccap_subsidy: 1_800 + +- name: Case 6, a 13-year-old's after-school care adds nothing to the payment. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 4 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + older_child: + age: 13 + is_tax_unit_dependent: true + after_school_expenses: 6_000 + spm_units: + spm_unit: + members: [parent, young_child, older_child] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, older_child] + state_code: CO + output: + co_ccap_child_eligible: [false, true, false] + # $1,000 - $200; the 13-year-old's $500 a month doesn't count. + co_ccap_subsidy: 800 + +- name: Case 7, a 12-year-old's after-school care counts. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 4 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + older_child: + age: 12 + is_tax_unit_dependent: true + after_school_expenses: 6_000 + spm_units: + spm_unit: + members: [parent, young_child, older_child] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, older_child] + state_code: CO + output: + co_ccap_child_eligible: [false, true, true] + # $1,000 + $500 - $200. + co_ccap_subsidy: 1_300 + +- name: Case 8, a teenager's charge doesn't absorb a fee above the eligible child's charge. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + young_child: + age: 3 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 1_200 + teen: + age: 15 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, young_child, teen] + co_ccap_parent_fee: 200 + co_ccap_eligible: true + households: + household: + members: [parent, young_child, teen] + state_code: CO + output: + # The 3-year-old's $100 a month falls short of the $200 fee. + co_ccap_subsidy: 0 diff --git a/policyengine_us/tests/test_co_ccap_eligible_children_properties.py b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py new file mode 100644 index 00000000000..52257546ef5 --- /dev/null +++ b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py @@ -0,0 +1,174 @@ +"""Colorado's Child Care Assistance Program pays only for eligible children. + +8 CCR 1403-1 3.132(D) and (E) pay for the care of children under 13, and of +children under 19 who can't care for themselves or who are under court +supervision (3.103(UU) and 3.111(F) define the eligible child the same way). + +1. A member outside those limits, such as a 15-year-old without additional + care needs or a 19-year-old, adds nothing to the payment, whatever that + member's charges, the eligible child's charges or the parent fee. +2. The payment equals the eligible children's child care and after-school + charges less the parent fee, and never falls below zero. The model has no + county reimbursement rate yet (3.125 and 3.130), so nothing caps a charge; + once a rate caps it, this becomes an upper bound. + +The tests set eligibility and the parent fee as inputs, so they exercise the +payment formula alone. +""" + +import pytest +from hypothesis import example, given, settings +from hypothesis import strategies as st + +from policyengine_us import Simulation + +YEAR = 2026 +MONTH = f"{YEAR}-01" +TOLERANCE = 0.01 +AGE_LIMIT = 13 +ADDITIONAL_NEEDS_AGE_LIMIT = 19 + + +def colorado(children, monthly_fee): + """January payment for an SPM unit of one parent and these children.""" + members = ["parent", *children] + people = {"parent": {"age": {YEAR: 30}}} + for name, child in children.items(): + people[name] = { + "age": {YEAR: child["age"]}, + "is_tax_unit_dependent": {YEAR: True}, + "is_disabled": {YEAR: child["disabled"]}, + "is_under_court_supervision": {YEAR: child["court"]}, + "pre_subsidy_childcare_expenses": {YEAR: child["care"] * 12}, + "after_school_expenses": {YEAR: child["after_school"] * 12}, + } + situation = { + "people": people, + "tax_units": {"tax_unit": {"members": members}}, + "spm_units": { + "spm_unit": { + "members": members, + "co_ccap_eligible": {MONTH: True}, + "co_ccap_parent_fee": {MONTH: monthly_fee}, + } + }, + "families": {"family": {"members": members}}, + "marital_units": {"marital_unit": {"members": ["parent"]}}, + "households": {"household": {"members": members, "state_name": {YEAR: "CO"}}}, + } + simulation = Simulation(situation=situation) + return float(simulation.calculate("co_ccap_subsidy", MONTH)[0]) + + +def eligible(child): + """3.132(D) and (E): under 13, or under 19 with additional care needs.""" + return child["age"] < AGE_LIMIT or ( + (child["disabled"] or child["court"]) + and child["age"] < ADDITIONAL_NEEDS_AGE_LIMIT + ) + + +charges = dict( + care=st.integers(min_value=0, max_value=2_000), + after_school=st.integers(min_value=0, max_value=800), +) +needs = st.sampled_from([(True, False), (False, True), (True, True)]) +young_children = st.fixed_dictionaries( + dict( + age=st.integers(min_value=0, max_value=AGE_LIMIT - 1), + disabled=st.booleans(), + court=st.booleans(), + **charges, + ) +) +children_with_needs = st.builds( + lambda age, need, care, after_school: dict( + age=age, + disabled=need[0], + court=need[1], + care=care, + after_school=after_school, + ), + age=st.integers(min_value=AGE_LIMIT, max_value=ADDITIONAL_NEEDS_AGE_LIMIT - 1), + need=needs, + **charges, +) +eligible_children = st.one_of(young_children, children_with_needs) +teenagers = st.fixed_dictionaries( + dict( + age=st.integers(min_value=AGE_LIMIT, max_value=ADDITIONAL_NEEDS_AGE_LIMIT - 1), + disabled=st.just(False), + court=st.just(False), + **charges, + ) +) +older_members = st.fixed_dictionaries( + dict( + age=st.integers( + min_value=ADDITIONAL_NEEDS_AGE_LIMIT, + max_value=ADDITIONAL_NEEDS_AGE_LIMIT + 3, + ), + disabled=st.booleans(), + court=st.booleans(), + **charges, + ) +) +ineligible_members = st.one_of(teenagers, older_members) + + +@settings(max_examples=15, deadline=None) +# A 3-year-old and a 15-year-old with $1,000 each and a $200 fee. +@example( + child=dict(age=3, disabled=False, court=False, care=1_000, after_school=0), + other=dict(age=15, disabled=False, court=False, care=1_000, after_school=0), + fee=200, +) +# The age boundaries: 12 and 13, and 18 and 19 with a disability. +@example( + child=dict(age=12, disabled=False, court=False, care=0, after_school=500), + other=dict(age=13, disabled=False, court=False, care=0, after_school=500), + fee=0, +) +@example( + child=dict(age=18, disabled=True, court=False, care=900, after_school=0), + other=dict(age=19, disabled=True, court=True, care=900, after_school=300), + fee=50, +) +@given(child=eligible_children, other=ineligible_members, fee=st.integers(0, 500)) +def test_a_member_outside_the_age_limits_adds_nothing(child, other, fee): + alone = colorado({"child": child}, fee) + with_other = colorado({"child": child, "other": other}, fee) + assert with_other == pytest.approx(alone, abs=TOLERANCE) + + +@settings(max_examples=20, deadline=None) +@example( + children=[ + dict(age=3, disabled=False, court=False, care=1_000, after_school=0), + dict(age=15, disabled=True, court=False, care=1_000, after_school=0), + dict(age=15, disabled=False, court=False, care=1_000, after_school=0), + ], + fee=0, +) +# A fee above the eligible child's charges leaves nothing to pay. +@example( + children=[ + dict(age=3, disabled=False, court=False, care=100, after_school=0), + dict(age=15, disabled=False, court=False, care=1_000, after_school=0), + ], + fee=200, +) +@given( + children=st.lists( + st.one_of(eligible_children, ineligible_members), min_size=1, max_size=3 + ), + fee=st.integers(min_value=0, max_value=500), +) +def test_the_payment_equals_the_eligible_childrens_charges_less_the_fee(children, fee): + named = {f"child_{i}": child for i, child in enumerate(children)} + paid = colorado(named, fee) + eligible_charges = sum( + child["care"] + child["after_school"] for child in children if eligible(child) + ) + assert paid >= -TOLERANCE + assert paid == pytest.approx(max(eligible_charges - fee, 0), abs=TOLERANCE) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py index e1936345ec1..9e766b1e68b 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py @@ -8,12 +8,27 @@ class co_ccap_subsidy(Variable): unit = USD definition_period = MONTH defined_for = "co_ccap_eligible" + reference = ( + # 8 CCR 1403-1 3.103(UU), PDF page 9 + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=9", + # 3.111(F), PDF page 35 + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=35", + # 3.132(D) and (E), PDF page 126 + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=126", + ) def formula(spm_unit, period, parameters): - expenses = add( - spm_unit, + person = spm_unit.members + # 8 CCR 1403-1 3.132(D) and (E) pay for the care of eligible children: + # children under 13, and children under 19 who can't care for + # themselves or who are under court supervision (3.103(UU), 3.111(F)). + # A member outside those limits, such as a teenager, adds nothing. + eligible_child = person("co_ccap_child_eligible", period) + charge = add( + person, period, ["pre_subsidy_childcare_expenses", "after_school_expenses"], ) + expenses = spm_unit.sum(charge * eligible_child) parent_fee = spm_unit("co_ccap_parent_fee", period) return max_(expenses - parent_fee, 0) From db0e90d0f00f15bd1bf306c2d8572db31d1a3b02 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sun, 8 Nov 2026 15:05:04 -0500 Subject: [PATCH 2/6] Cap Colorado's child care payment at the county reimbursement rate 8 CCR 1403-1 3.125(FFF) has the county pay the lesser of the provider's private pay rate and the county reimbursement rate, and 3.130 sets those rates: CDEC's state-established daily rates for licensed centers and homes by county, age band and quality tier, and each county's rates for qualified exempt providers, paid by care unit (part time at 55% of full time). co_ccap_subsidy paid the eligible children's charges in full. Adds the rate tables effective October 1, 2024 and October 1, 2025, each county's qualified exempt rates from its rate plans, the care units, and co_ccap_reimbursement, which caps each eligible child's charges at the county rate for the child's hours and days. 3.124(L) caps the parent fee at the reimbursement (co_ccap_capped_parent_fee); the fee's own formula is unchanged. Without a schedule the cap reads full-time care five days a week. Co-Authored-By: Claude Opus 5.5 --- changelog.d/co-ccap-county-rates.fixed.md | 1 + .../center_months_18_to_36_minimum.yaml | 12 + .../center_months_36_to_years_6_minimum.yaml | 12 + .../home_months_24_to_years_6_minimum.yaml | 12 + ...alified_exempt_age_5_and_over_minimum.yaml | 12 + .../rates/age_band/school_age_minimum.yaml | 12 + .../gov/states/co/ccap/rates/care_unit.yaml | 31 + .../states/co/ccap/rates/licensed_center.yaml | 2650 +++++++++++++++++ .../states/co/ccap/rates/licensed_home.yaml | 2010 +++++++++++++ .../co/ccap/rates/qualified_exempt.yaml | 372 +++ .../co/ccap/co_ccap_capped_parent_fee.py | 22 + .../states/co/ccap/co_ccap_reimbursement.py | 31 + .../gov/states/co/ccap/co_ccap_subsidy.py | 28 +- .../ccap/rates/co_ccap_care_days_per_month.py | 31 + .../states/co/ccap/rates/co_ccap_care_unit.py | 28 + .../co/ccap/rates/co_ccap_center_age_band.py | 40 + .../co/ccap/rates/co_ccap_daily_rate.py | 27 + .../rates/co_ccap_full_time_daily_rate.py | 48 + .../co/ccap/rates/co_ccap_home_age_band.py | 37 + .../rates/co_ccap_maximum_monthly_payment.py | 21 + .../co/ccap/rates/co_ccap_provider_type.py | 42 + .../co_ccap_qualified_exempt_age_band.py | 31 + .../co/ccap/rates/co_ccap_quality_tier.py | 32 + 23 files changed, 5528 insertions(+), 14 deletions(-) create mode 100644 changelog.d/co-ccap-county-rates.fixed.md create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_18_to_36_minimum.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_36_to_years_6_minimum.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/age_band/home_months_24_to_years_6_minimum.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/age_band/qualified_exempt_age_5_and_over_minimum.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/age_band/school_age_minimum.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml create mode 100644 policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml create mode 100644 policyengine_us/variables/gov/states/co/ccap/co_ccap_capped_parent_fee.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_center_age_band.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_home_age_band.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_qualified_exempt_age_band.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_quality_tier.py diff --git a/changelog.d/co-ccap-county-rates.fixed.md b/changelog.d/co-ccap-county-rates.fixed.md new file mode 100644 index 00000000000..ae508d7b628 --- /dev/null +++ b/changelog.d/co-ccap-county-rates.fixed.md @@ -0,0 +1 @@ +Cap Colorado's Child Care Assistance Program payment for each eligible child at the county's reimbursement rate for that child's care, from CDEC's state-established licensed rates (October 2024 and October 2025) and each county's qualified exempt rates, and cap the parent fee at the reimbursement. The program had paid any charge in full. diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_18_to_36_minimum.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_18_to_36_minimum.yaml new file mode 100644 index 00000000000..faa79f7ca2e --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_18_to_36_minimum.yaml @@ -0,0 +1,12 @@ +description: Colorado pays licensed child care centers the 18-36 months rate under the Child Care Assistance Program from this age, in months. +values: + 2024-10-01: 18 +metadata: + unit: month + period: year + label: Colorado CCCAP licensed center 18-36 months band minimum age + reference: + - title: 8 CCR 1403-1 3.130(A), payment rates follow the Department's age bands + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 (center bands 0-18 months, 18-36 months, 36 months to 6 years, School Age) + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_36_to_years_6_minimum.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_36_to_years_6_minimum.yaml new file mode 100644 index 00000000000..4b84ece0399 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/center_months_36_to_years_6_minimum.yaml @@ -0,0 +1,12 @@ +description: Colorado pays licensed child care centers the 36 months to 6 years rate under the Child Care Assistance Program from this age, in months. +values: + 2024-10-01: 36 +metadata: + unit: month + period: year + label: Colorado CCCAP licensed center 36 months to 6 years band minimum age + reference: + - title: 8 CCR 1403-1 3.130(A), payment rates follow the Department's age bands + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 (center bands 0-18 months, 18-36 months, 36 months to 6 years, School Age) + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/home_months_24_to_years_6_minimum.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/home_months_24_to_years_6_minimum.yaml new file mode 100644 index 00000000000..2e043f48702 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/home_months_24_to_years_6_minimum.yaml @@ -0,0 +1,12 @@ +description: Colorado pays licensed family child care homes the 24 months to 6 years rate under the Child Care Assistance Program from this age, in months. +values: + 2024-10-01: 24 +metadata: + unit: month + period: year + label: Colorado CCCAP licensed home 24 months to 6 years band minimum age + reference: + - title: 8 CCR 1403-1 3.130(A), payment rates follow the Department's age bands + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 (home bands 0-24 months, 24 months to 6 years, School Age) + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/qualified_exempt_age_5_and_over_minimum.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/qualified_exempt_age_5_and_over_minimum.yaml new file mode 100644 index 00000000000..a12e8d58aed --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/qualified_exempt_age_5_and_over_minimum.yaml @@ -0,0 +1,12 @@ +description: Colorado pays qualified exempt child care providers the rate for children five and older under the Child Care Assistance Program from this age, in months. +values: + 2024-10-01: 60 +metadata: + unit: month + period: year + label: Colorado CCCAP qualified exempt provider age 5 and over band minimum age + reference: + - title: 8 CCR 1403-1 3.130(A), payment rates follow the Department's age bands + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, County CCCAP Policies and Rate Plans (Provider Type Exempt, Regular <5 Years and >5 Years) + href: https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_ diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/school_age_minimum.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/school_age_minimum.yaml new file mode 100644 index 00000000000..c86fac5cbb4 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/age_band/school_age_minimum.yaml @@ -0,0 +1,12 @@ +description: Colorado pays licensed child care centers and family child care homes the school-age rate under the Child Care Assistance Program from this age, in months. +values: + 2024-10-01: 72 +metadata: + unit: month + period: year + label: Colorado CCCAP licensed provider school-age band minimum age + reference: + - title: 8 CCR 1403-1 3.130(A), payment rates follow the Department's age bands + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 (the band before School Age runs to 6 years) + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml new file mode 100644 index 00000000000..f9846c9184c --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml @@ -0,0 +1,31 @@ +description: Colorado pays this share of the full-time daily rate under the Child Care Assistance Program, by hours of care a day. +metadata: + type: single_amount + threshold_unit: hour + amount_unit: /1 + label: Colorado CCCAP share of the full-time daily rate by hours of care + reference: + - title: 8 CCR 1403-1 3.130(C), part-time, full-time, full-time/part-time and full-time/full-time daily rates + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: CDEC, County CCCAP Policies and Rate Plans (County Ceiling Rates list each rate as FT, PT at 55%, FTPT at 155% and FTFT at 200%) + href: https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_ +# Each threshold opens a care unit above that many hours: part time through +# 5 hours, full time through 12, full time plus part time through 17, and two +# full-time units through 24. +brackets: + - threshold: + 2024-10-01: 0 + amount: + 2024-10-01: 0.55 + - threshold: + 2024-10-01: 5 + amount: + 2024-10-01: 1 + - threshold: + 2024-10-01: 12 + amount: + 2024-10-01: 1.55 + - threshold: + 2024-10-01: 17 + amount: + 2024-10-01: 2 diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml new file mode 100644 index 00000000000..6303bf40fec --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml @@ -0,0 +1,2650 @@ +description: Colorado pays licensed child care centers up to these full-time daily rates under the Child Care Assistance Program, by county, age band and quality tier. +metadata: + propagate_metadata_to_children: true + unit: currency-USD + period: day + label: Colorado CCCAP licensed center full-time daily rates + breakdown: + - county + - co_ccap_center_age_band + - co_ccap_quality_tier + breakdown_labels: + - County + - Age band + - Colorado Shines quality tier + reference: + - title: 8 CCR 1403-1 3.130, state-established licensed provider base rates and tiered rates by quality level + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118 + - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2024 + href: https://drive.google.com/file/d/1j9wqebwdFbZqNIpwuLcYEXgKqKvXagUf/view + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view + - title: CDEC Operational Memo OM-CCCAP-2024-0002, State-Established Regular Rates + href: https://drive.google.com/file/d/1uTkDYcRXuCX3dIbnzfyC5vtomzCNkWbR/view + +ADAMS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 73.9 + 2025-10-01: 76.71 + TIER_3: + 2024-10-01: 84.49 + 2025-10-01: 87.82 + TIER_4_5: + 2024-10-01: 93.37 + 2025-10-01: 102.02 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 57.86 + 2025-10-01: 62.26 + TIER_3: + 2024-10-01: 69.03 + 2025-10-01: 71.93 + TIER_4_5: + 2024-10-01: 79.86 + 2025-10-01: 84.2 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 42.77 + 2025-10-01: 44.24 + TIER_3: + 2024-10-01: 54.2 + 2025-10-01: 54.2 + TIER_4_5: + 2024-10-01: 64.09 + 2025-10-01: 64.09 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 34.84 + 2025-10-01: 37.33 + TIER_3: + 2024-10-01: 42.13 + 2025-10-01: 43.03 + TIER_4_5: + 2024-10-01: 50.01 + 2025-10-01: 50.48 +ALAMOSA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +ARAPAHOE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 67.97 + 2025-10-01: 73.74 + TIER_3: + 2024-10-01: 81.62 + 2025-10-01: 86.38 + TIER_4_5: + 2024-10-01: 95.01 + 2025-10-01: 102.82 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 57.85 + 2025-10-01: 62.24 + TIER_3: + 2024-10-01: 66.46 + 2025-10-01: 70.64 + TIER_4_5: + 2024-10-01: 78.87 + 2025-10-01: 83.7 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 44.94 + 2025-10-01: 45.31 + TIER_3: + 2024-10-01: 56.01 + 2025-10-01: 56.01 + TIER_4_5: + 2024-10-01: 63.5 + 2025-10-01: 63.5 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 33.8 + 2025-10-01: 36.8 + TIER_3: + 2024-10-01: 43.19 + 2025-10-01: 43.55 + TIER_4_5: + 2024-10-01: 51.13 + 2025-10-01: 51.13 +ARCHULETA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 58.6 + 2025-10-01: 60.83 + TIER_3: + 2024-10-01: 65.92 + 2025-10-01: 68.95 + TIER_4_5: + 2024-10-01: 81.67 + 2025-10-01: 84.33 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 51 + 2025-10-01: 52.14 + TIER_3: + 2024-10-01: 56.49 + 2025-10-01: 58.05 + TIER_4_5: + 2024-10-01: 69.54 + 2025-10-01: 69.89 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 42.35 + 2025-10-01: 42.35 + TIER_3: + 2024-10-01: 47.73 + 2025-10-01: 47.73 + TIER_4_5: + 2024-10-01: 51.7 + 2025-10-01: 51.7 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.18 + 2025-10-01: 31.58 + TIER_3: + 2024-10-01: 35.1 + 2025-10-01: 35.66 + TIER_4_5: + 2024-10-01: 38.9 + 2025-10-01: 40.35 +BACA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 45.59 + 2025-10-01: 52.55 + TIER_3: + 2024-10-01: 49.93 + 2025-10-01: 58.96 + TIER_4_5: + 2024-10-01: 55.67 + 2025-10-01: 68.98 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 36.32 + 2025-10-01: 43.25 + TIER_3: + 2024-10-01: 41.25 + 2025-10-01: 48.71 + TIER_4_5: + 2024-10-01: 49.12 + 2025-10-01: 57.69 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.32 + 2025-10-01: 32.17 + TIER_3: + 2024-10-01: 33.85 + 2025-10-01: 36.26 + TIER_4_5: + 2024-10-01: 38.13 + 2025-10-01: 41.53 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.23 + 2025-10-01: 28.98 + TIER_3: + 2024-10-01: 29.09 + 2025-10-01: 31.45 + TIER_4_5: + 2024-10-01: 32.07 + 2025-10-01: 35.56 +BENT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 50.48 + 2025-10-01: 54.98 + TIER_3: + 2024-10-01: 56.1 + 2025-10-01: 62.03 + TIER_4_5: + 2024-10-01: 63.64 + 2025-10-01: 72.95 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 42.68 + 2025-10-01: 46.42 + TIER_3: + 2024-10-01: 46.47 + 2025-10-01: 51.31 + TIER_4_5: + 2024-10-01: 51.62 + 2025-10-01: 58.94 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.75 + 2025-10-01: 34.38 + TIER_3: + 2024-10-01: 38.51 + 2025-10-01: 38.58 + TIER_4_5: + 2024-10-01: 42.79 + 2025-10-01: 43.85 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.36 + 2025-10-01: 29.05 + TIER_3: + 2024-10-01: 30.52 + 2025-10-01: 32.16 + TIER_4_5: + 2024-10-01: 35.13 + 2025-10-01: 37.08 +BOULDER_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 78.76 + 2025-10-01: 83.71 + TIER_3: + 2024-10-01: 89.02 + 2025-10-01: 95.39 + TIER_4_5: + 2024-10-01: 101.38 + 2025-10-01: 112.57 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 66.84 + 2025-10-01: 70.48 + TIER_3: + 2024-10-01: 75.99 + 2025-10-01: 79.67 + TIER_4_5: + 2024-10-01: 86.61 + 2025-10-01: 92.71 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 56.91 + 2025-10-01: 56.91 + TIER_3: + 2024-10-01: 65.88 + 2025-10-01: 65.88 + TIER_4_5: + 2024-10-01: 78.76 + 2025-10-01: 78.76 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 40.3 + 2025-10-01: 42.08 + TIER_3: + 2024-10-01: 49.27 + 2025-10-01: 49.27 + TIER_4_5: + 2024-10-01: 62.12 + 2025-10-01: 62.12 +BROOMFIELD_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 72.49 + 2025-10-01: 76.03 + TIER_3: + 2024-10-01: 79.8 + 2025-10-01: 85.5 + TIER_4_5: + 2024-10-01: 92.77 + 2025-10-01: 101.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 58.07 + 2025-10-01: 62.38 + TIER_3: + 2024-10-01: 66.09 + 2025-10-01: 70.48 + TIER_4_5: + 2024-10-01: 80.27 + 2025-10-01: 84.43 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 45.34 + 2025-10-01: 45.54 + TIER_3: + 2024-10-01: 61.39 + 2025-10-01: 61.39 + TIER_4_5: + 2024-10-01: 67.09 + 2025-10-01: 67.09 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.9 + 2025-10-01: 35.38 + TIER_3: + 2024-10-01: 45.26 + 2025-10-01: 45.26 + TIER_4_5: + 2024-10-01: 51.13 + 2025-10-01: 51.13 +CHAFFEE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 57.89 + 2025-10-01: 60.56 + TIER_3: + 2024-10-01: 61.35 + 2025-10-01: 66.76 + TIER_4_5: + 2024-10-01: 80.96 + 2025-10-01: 84.06 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 50.37 + 2025-10-01: 51.92 + TIER_3: + 2024-10-01: 57.71 + 2025-10-01: 58.75 + TIER_4_5: + 2024-10-01: 69.37 + 2025-10-01: 69.89 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.06 + 2025-10-01: 36.34 + TIER_3: + 2024-10-01: 48.06 + 2025-10-01: 48.06 + TIER_4_5: + 2024-10-01: 62.65 + 2025-10-01: 62.65 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.06 + 2025-10-01: 31.11 + TIER_3: + 2024-10-01: 32.1 + 2025-10-01: 34.26 + TIER_4_5: + 2024-10-01: 34.66 + 2025-10-01: 38.32 +CHEYENNE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 44.33 + 2025-10-01: 51.96 + TIER_3: + 2024-10-01: 51.24 + 2025-10-01: 59.65 + TIER_4_5: + 2024-10-01: 60.06 + 2025-10-01: 71.2 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 34.75 + 2025-10-01: 42.51 + TIER_3: + 2024-10-01: 42.19 + 2025-10-01: 49.22 + TIER_4_5: + 2024-10-01: 50.06 + 2025-10-01: 58.2 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 30.25 + 2025-10-01: 32.67 + TIER_3: + 2024-10-01: 34.55 + 2025-10-01: 36.64 + TIER_4_5: + 2024-10-01: 41.49 + 2025-10-01: 43.24 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.92 + 2025-10-01: 28.87 + TIER_3: + 2024-10-01: 28.76 + 2025-10-01: 31.32 + TIER_4_5: + 2024-10-01: 34.43 + 2025-10-01: 36.78 +CLEAR_CREEK_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 76.51 + 2025-10-01: 77.94 + TIER_3: + 2024-10-01: 86.07 + 2025-10-01: 88.53 + TIER_4_5: + 2024-10-01: 98.44 + 2025-10-01: 104.47 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 65.69 + 2025-10-01: 66.08 + TIER_3: + 2024-10-01: 73.12 + 2025-10-01: 73.89 + TIER_4_5: + 2024-10-01: 84.15 + 2025-10-01: 86.26 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 40.92 + 2025-10-01: 43.24 + TIER_3: + 2024-10-01: 54.51 + 2025-10-01: 54.51 + TIER_4_5: + 2024-10-01: 73.67 + 2025-10-01: 73.67 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 50.07 + 2025-10-01: 50.07 + TIER_3: + 2024-10-01: 54.35 + 2025-10-01: 54.35 + TIER_4_5: + 2024-10-01: 61.32 + 2025-10-01: 61.32 +CONEJOS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +COSTILLA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +CROWLEY_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 45.2 + 2025-10-01: 52.53 + TIER_3: + 2024-10-01: 50.05 + 2025-10-01: 59.19 + TIER_4_5: + 2024-10-01: 56.04 + 2025-10-01: 69.34 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 35.75 + 2025-10-01: 43.14 + TIER_3: + 2024-10-01: 40.46 + 2025-10-01: 48.49 + TIER_4_5: + 2024-10-01: 45.61 + 2025-10-01: 56.12 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.65 + 2025-10-01: 32.51 + TIER_3: + 2024-10-01: 32.42 + 2025-10-01: 35.72 + TIER_4_5: + 2024-10-01: 37.14 + 2025-10-01: 41.2 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 24.79 + 2025-10-01: 27.95 + TIER_3: + 2024-10-01: 27.05 + 2025-10-01: 30.61 + TIER_4_5: + 2024-10-01: 29.32 + 2025-10-01: 34.37 +CUSTER_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 54.32 + 2025-10-01: 57.27 + TIER_3: + 2024-10-01: 58.66 + 2025-10-01: 63.68 + TIER_4_5: + 2024-10-01: 78.54 + 2025-10-01: 80.75 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 45.2 + 2025-10-01: 48.05 + TIER_3: + 2024-10-01: 50.59 + 2025-10-01: 53.74 + TIER_4_5: + 2024-10-01: 61.41 + 2025-10-01: 64.19 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.2 + 2025-10-01: 34.97 + TIER_3: + 2024-10-01: 46.4 + 2025-10-01: 46.4 + TIER_4_5: + 2024-10-01: 52.37 + 2025-10-01: 52.37 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.47 + 2025-10-01: 29.47 + TIER_3: + 2024-10-01: 31.49 + 2025-10-01: 33.01 + TIER_4_5: + 2024-10-01: 35.37 + 2025-10-01: 37.58 +DELTA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 55.73 + 2025-10-01: 59.33 + TIER_3: + 2024-10-01: 61.76 + 2025-10-01: 66.82 + TIER_4_5: + 2024-10-01: 73.4 + 2025-10-01: 80.14 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 48.45 + 2025-10-01: 50.81 + TIER_3: + 2024-10-01: 52.36 + 2025-10-01: 55.93 + TIER_4_5: + 2024-10-01: 61.54 + 2025-10-01: 65.84 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.97 + 2025-10-01: 35.64 + TIER_3: + 2024-10-01: 41.12 + 2025-10-01: 41.15 + TIER_4_5: + 2024-10-01: 45.08 + 2025-10-01: 46.44 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.97 + 2025-10-01: 31.41 + TIER_3: + 2024-10-01: 32 + 2025-10-01: 34.05 + TIER_4_5: + 2024-10-01: 35.99 + 2025-10-01: 38.83 +DENVER_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 71.97 + 2025-10-01: 75.92 + TIER_3: + 2024-10-01: 82.96 + 2025-10-01: 87.22 + TIER_4_5: + 2024-10-01: 100.85 + 2025-10-01: 105.91 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 61.52 + 2025-10-01: 64.25 + TIER_3: + 2024-10-01: 74.47 + 2025-10-01: 74.8 + TIER_4_5: + 2024-10-01: 86.68 + 2025-10-01: 87.77 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 50.61 + 2025-10-01: 50.61 + TIER_3: + 2024-10-01: 52.41 + 2025-10-01: 52.41 + TIER_4_5: + 2024-10-01: 64.69 + 2025-10-01: 64.69 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 37.16 + 2025-10-01: 38.65 + TIER_3: + 2024-10-01: 49.27 + 2025-10-01: 49.27 + TIER_4_5: + 2024-10-01: 58.91 + 2025-10-01: 58.91 +DOLORES_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.7 + 2025-10-01: 55.24 + TIER_3: + 2024-10-01: 57.85 + 2025-10-01: 64.78 + TIER_4_5: + 2024-10-01: 64.6 + 2025-10-01: 75.67 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 43.17 + 2025-10-01: 48.09 + TIER_3: + 2024-10-01: 49.11 + 2025-10-01: 54.22 + TIER_4_5: + 2024-10-01: 54.9 + 2025-10-01: 62.44 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.57 + 2025-10-01: 36.36 + TIER_3: + 2024-10-01: 39.29 + 2025-10-01: 40.15 + TIER_4_5: + 2024-10-01: 42.36 + 2025-10-01: 45 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.09 + 2025-10-01: 31.38 + TIER_3: + 2024-10-01: 31.41 + 2025-10-01: 33.68 + TIER_4_5: + 2024-10-01: 34.5 + 2025-10-01: 38 +DOUGLAS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 79.25 + 2025-10-01: 79.42 + TIER_3: + 2024-10-01: 86.97 + 2025-10-01: 89.09 + TIER_4_5: + 2024-10-01: 95.85 + 2025-10-01: 103.29 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 65.18 + 2025-10-01: 65.94 + TIER_3: + 2024-10-01: 72.8 + 2025-10-01: 73.85 + TIER_4_5: + 2024-10-01: 82.06 + 2025-10-01: 85.34 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 54.05 + 2025-10-01: 54.05 + TIER_3: + 2024-10-01: 64.69 + 2025-10-01: 64.69 + TIER_4_5: + 2024-10-01: 69.18 + 2025-10-01: 69.18 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 39.9 + 2025-10-01: 39.9 + TIER_3: + 2024-10-01: 51.13 + 2025-10-01: 51.13 + TIER_4_5: + 2024-10-01: 54.09 + 2025-10-01: 54.09 +EAGLE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 81.72 + 2025-10-01: 81.72 + TIER_3: + 2024-10-01: 90.53 + 2025-10-01: 90.53 + TIER_4_5: + 2024-10-01: 95.56 + 2025-10-01: 96.84 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 76.26 + 2025-10-01: 76.26 + TIER_3: + 2024-10-01: 79.23 + 2025-10-01: 79.23 + TIER_4_5: + 2024-10-01: 86.98 + 2025-10-01: 86.98 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 73.38 + 2025-10-01: 73.38 + TIER_3: + 2024-10-01: 75.44 + 2025-10-01: 75.44 + TIER_4_5: + 2024-10-01: 86.05 + 2025-10-01: 86.05 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 66.94 + 2025-10-01: 66.94 + TIER_3: + 2024-10-01: 70.69 + 2025-10-01: 70.69 + TIER_4_5: + 2024-10-01: 74.97 + 2025-10-01: 74.97 +ELBERT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 69.97 + 2025-10-01: 74.69 + TIER_3: + 2024-10-01: 82.81 + 2025-10-01: 86.91 + TIER_4_5: + 2024-10-01: 91.7 + 2025-10-01: 101.12 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 47.17 + 2025-10-01: 56.86 + TIER_3: + 2024-10-01: 53.82 + 2025-10-01: 64.28 + TIER_4_5: + 2024-10-01: 62.28 + 2025-10-01: 75.37 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 39.11 + 2025-10-01: 42.35 + TIER_3: + 2024-10-01: 48.78 + 2025-10-01: 49.65 + TIER_4_5: + 2024-10-01: 63.5 + 2025-10-01: 63.5 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 36.77 + 2025-10-01: 38.22 + TIER_3: + 2024-10-01: 40.47 + 2025-10-01: 42.14 + TIER_4_5: + 2024-10-01: 45.47 + 2025-10-01: 48.15 +EL_PASO_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 61.14 + 2025-10-01: 63.45 + TIER_3: + 2024-10-01: 70.22 + 2025-10-01: 72.66 + TIER_4_5: + 2024-10-01: 80.12 + 2025-10-01: 85.46 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 52.72 + 2025-10-01: 54.13 + TIER_3: + 2024-10-01: 61.54 + 2025-10-01: 61.84 + TIER_4_5: + 2024-10-01: 68.22 + 2025-10-01: 70.73 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 39.28 + 2025-10-01: 39.28 + TIER_3: + 2024-10-01: 53.81 + 2025-10-01: 53.81 + TIER_4_5: + 2024-10-01: 62.97 + 2025-10-01: 62.97 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.46 + 2025-10-01: 32.85 + TIER_3: + 2024-10-01: 42.84 + 2025-10-01: 42.84 + TIER_4_5: + 2024-10-01: 51.41 + 2025-10-01: 51.41 +FREMONT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 50.49 + 2025-10-01: 56.74 + TIER_3: + 2024-10-01: 58.38 + 2025-10-01: 65.15 + TIER_4_5: + 2024-10-01: 65.31 + 2025-10-01: 76.13 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 43.2 + 2025-10-01: 48.21 + TIER_3: + 2024-10-01: 51.7 + 2025-10-01: 55.62 + TIER_4_5: + 2024-10-01: 55.44 + 2025-10-01: 62.81 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.64 + 2025-10-01: 35.5 + TIER_3: + 2024-10-01: 38.47 + 2025-10-01: 39.85 + TIER_4_5: + 2024-10-01: 44.65 + 2025-10-01: 46.24 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.07 + 2025-10-01: 30.48 + TIER_3: + 2024-10-01: 29.86 + 2025-10-01: 33 + TIER_4_5: + 2024-10-01: 33.32 + 2025-10-01: 37.52 +GARFIELD_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 78.58 + 2025-10-01: 78.58 + TIER_3: + 2024-10-01: 80.86 + 2025-10-01: 80.93 + TIER_4_5: + 2024-10-01: 87.1 + 2025-10-01: 92.58 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 63.15 + 2025-10-01: 63.15 + TIER_3: + 2024-10-01: 65.96 + 2025-10-01: 66.39 + TIER_4_5: + 2024-10-01: 72.31 + 2025-10-01: 75.56 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 52.46 + 2025-10-01: 52.46 + TIER_3: + 2024-10-01: 61.29 + 2025-10-01: 61.29 + TIER_4_5: + 2024-10-01: 63.65 + 2025-10-01: 63.65 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 47.12 + 2025-10-01: 47.12 + TIER_3: + 2024-10-01: 53.55 + 2025-10-01: 53.55 + TIER_4_5: + 2024-10-01: 55.69 + 2025-10-01: 55.69 +GILPIN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 76.46 + 2025-10-01: 77.82 + TIER_3: + 2024-10-01: 86.22 + 2025-10-01: 88.52 + TIER_4_5: + 2024-10-01: 93.68 + 2025-10-01: 102.01 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 65.64 + 2025-10-01: 65.97 + TIER_3: + 2024-10-01: 73.26 + 2025-10-01: 73.88 + TIER_4_5: + 2024-10-01: 80.35 + 2025-10-01: 84.28 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 41.11 + 2025-10-01: 43.25 + TIER_3: + 2024-10-01: 54.51 + 2025-10-01: 54.51 + TIER_4_5: + 2024-10-01: 60.5 + 2025-10-01: 60.5 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 45.9 + 2025-10-01: 45.9 + TIER_3: + 2024-10-01: 51.13 + 2025-10-01: 51.13 + TIER_4_5: + 2024-10-01: 53.55 + 2025-10-01: 53.55 +GRAND_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 67.52 + 2025-10-01: 69.11 + TIER_3: + 2024-10-01: 78.01 + 2025-10-01: 79.41 + TIER_4_5: + 2024-10-01: 92.01 + 2025-10-01: 94.92 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 59.05 + 2025-10-01: 59.27 + TIER_3: + 2024-10-01: 66.52 + 2025-10-01: 66.56 + TIER_4_5: + 2024-10-01: 77.18 + 2025-10-01: 77.89 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 46.12 + 2025-10-01: 46.12 + TIER_3: + 2024-10-01: 58.1 + 2025-10-01: 58.1 + TIER_4_5: + 2024-10-01: 68.58 + 2025-10-01: 68.58 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 45.9 + 2025-10-01: 45.9 + TIER_3: + 2024-10-01: 51.41 + 2025-10-01: 51.41 + TIER_4_5: + 2024-10-01: 54.35 + 2025-10-01: 54.35 +GUNNISON_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 62.07 + 2025-10-01: 62.74 + TIER_3: + 2024-10-01: 70.16 + 2025-10-01: 71.25 + TIER_4_5: + 2024-10-01: 78.19 + 2025-10-01: 82.78 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 54.27 + 2025-10-01: 54.27 + TIER_3: + 2024-10-01: 57.07 + 2025-10-01: 58.53 + TIER_4_5: + 2024-10-01: 67.39 + 2025-10-01: 69.01 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 50.38 + 2025-10-01: 50.38 + TIER_3: + 2024-10-01: 51.7 + 2025-10-01: 51.7 + TIER_4_5: + 2024-10-01: 61.32 + 2025-10-01: 61.32 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 33.25 + 2025-10-01: 33.29 + TIER_3: + 2024-10-01: 41.77 + 2025-10-01: 41.77 + TIER_4_5: + 2024-10-01: 42.84 + 2025-10-01: 42.84 +HINSDALE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 61.94 + 2025-10-01: 62.49 + TIER_3: + 2024-10-01: 70.03 + 2025-10-01: 71 + TIER_4_5: + 2024-10-01: 78.07 + 2025-10-01: 82.53 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 54.27 + 2025-10-01: 54.27 + TIER_3: + 2024-10-01: 56.94 + 2025-10-01: 58.28 + TIER_4_5: + 2024-10-01: 67.27 + 2025-10-01: 68.76 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 49.71 + 2025-10-01: 49.71 + TIER_3: + 2024-10-01: 51.7 + 2025-10-01: 51.7 + TIER_4_5: + 2024-10-01: 61.32 + 2025-10-01: 61.32 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 38.03 + 2025-10-01: 38.03 + TIER_3: + 2024-10-01: 41.77 + 2025-10-01: 41.77 + TIER_4_5: + 2024-10-01: 42.84 + 2025-10-01: 42.84 +HUERFANO_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.55 + 2025-10-01: 53.77 + TIER_3: + 2024-10-01: 58.06 + 2025-10-01: 63.25 + TIER_4_5: + 2024-10-01: 64.83 + 2025-10-01: 73.78 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.25 + 2025-10-01: 45.95 + TIER_3: + 2024-10-01: 47.77 + 2025-10-01: 52.2 + TIER_4_5: + 2024-10-01: 53.83 + 2025-10-01: 60.28 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.03 + 2025-10-01: 34.26 + TIER_3: + 2024-10-01: 39.77 + 2025-10-01: 39.77 + TIER_4_5: + 2024-10-01: 44.07 + 2025-10-01: 44.73 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.75 + 2025-10-01: 29.99 + TIER_3: + 2024-10-01: 32.84 + 2025-10-01: 33.56 + TIER_4_5: + 2024-10-01: 36.54 + 2025-10-01: 38.03 +JACKSON_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 56.53 + 2025-10-01: 63.3 + TIER_3: + 2024-10-01: 63.47 + 2025-10-01: 71.82 + TIER_4_5: + 2024-10-01: 84 + 2025-10-01: 90.59 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 49.41 + 2025-10-01: 54.13 + TIER_3: + 2024-10-01: 54.93 + 2025-10-01: 60.45 + TIER_4_5: + 2024-10-01: 69.35 + 2025-10-01: 73.64 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.92 + 2025-10-01: 38.77 + TIER_3: + 2024-10-01: 42.8 + 2025-10-01: 43.86 + TIER_4_5: + 2024-10-01: 50.12 + 2025-10-01: 51.2 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.19 + 2025-10-01: 33.34 + TIER_3: + 2024-10-01: 33.35 + 2025-10-01: 36.21 + TIER_4_5: + 2024-10-01: 39.14 + 2025-10-01: 42.2 +JEFFERSON_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 75.34 + 2025-10-01: 77.44 + TIER_3: + 2024-10-01: 83.67 + 2025-10-01: 87.41 + TIER_4_5: + 2024-10-01: 95.02 + 2025-10-01: 102.84 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 62.79 + 2025-10-01: 64.72 + TIER_3: + 2024-10-01: 71.99 + 2025-10-01: 73.41 + TIER_4_5: + 2024-10-01: 81.25 + 2025-10-01: 84.9 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 57.5 + 2025-10-01: 57.5 + TIER_3: + 2024-10-01: 71.28 + 2025-10-01: 71.28 + TIER_4_5: + 2024-10-01: 79.06 + 2025-10-01: 79.06 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 40.8 + 2025-10-01: 40.8 + TIER_3: + 2024-10-01: 48.99 + 2025-10-01: 48.99 + TIER_4_5: + 2024-10-01: 53.55 + 2025-10-01: 53.55 +KIOWA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 43.58 + 2025-10-01: 51.62 + TIER_3: + 2024-10-01: 49.47 + 2025-10-01: 58.8 + TIER_4_5: + 2024-10-01: 55.72 + 2025-10-01: 69.08 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 35.46 + 2025-10-01: 42.9 + TIER_3: + 2024-10-01: 40.39 + 2025-10-01: 48.36 + TIER_4_5: + 2024-10-01: 49.18 + 2025-10-01: 57.8 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 24.04 + 2025-10-01: 29.61 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 34.7 + TIER_4_5: + 2024-10-01: 37.07 + 2025-10-01: 41.07 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 25.23 + 2025-10-01: 28.06 + TIER_3: + 2024-10-01: 29.14 + 2025-10-01: 31.54 + TIER_4_5: + 2024-10-01: 35.54 + 2025-10-01: 37.37 +KIT_CARSON_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 51.62 + 2025-10-01: 55.71 + TIER_3: + 2024-10-01: 58.01 + 2025-10-01: 63.15 + TIER_4_5: + 2024-10-01: 71.98 + 2025-10-01: 77.27 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 44.15 + 2025-10-01: 47.32 + TIER_3: + 2024-10-01: 49.08 + 2025-10-01: 52.78 + TIER_4_5: + 2024-10-01: 60.37 + 2025-10-01: 63.46 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 33.27 + TIER_3: + 2024-10-01: 37.73 + 2025-10-01: 38.36 + TIER_4_5: + 2024-10-01: 43.35 + 2025-10-01: 44.29 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.87 + 2025-10-01: 30.97 + TIER_3: + 2024-10-01: 33.5 + 2025-10-01: 33.81 + TIER_4_5: + 2024-10-01: 37.75 + 2025-10-01: 38.56 +LAKE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 84.44 + 2025-10-01: 84.44 + TIER_3: + 2024-10-01: 89.81 + 2025-10-01: 89.81 + TIER_4_5: + 2024-10-01: 113.61 + 2025-10-01: 113.61 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 71.57 + 2025-10-01: 71.57 + TIER_3: + 2024-10-01: 76.33 + 2025-10-01: 76.33 + TIER_4_5: + 2024-10-01: 81.41 + 2025-10-01: 81.41 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 42.76 + 2025-10-01: 42.76 + TIER_3: + 2024-10-01: 60.32 + 2025-10-01: 60.32 + TIER_4_5: + 2024-10-01: 66.95 + 2025-10-01: 66.95 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 45.9 + 2025-10-01: 45.9 + TIER_3: + 2024-10-01: 50.61 + 2025-10-01: 50.61 + TIER_4_5: + 2024-10-01: 53.55 + 2025-10-01: 53.55 +LARIMER_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 70.17 + 2025-10-01: 73.53 + TIER_3: + 2024-10-01: 79.6 + 2025-10-01: 83.87 + TIER_4_5: + 2024-10-01: 90.74 + 2025-10-01: 98.88 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 61.26 + 2025-10-01: 62.83 + TIER_3: + 2024-10-01: 70.97 + 2025-10-01: 71.64 + TIER_4_5: + 2024-10-01: 81.06 + 2025-10-01: 83.32 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 58.7 + 2025-10-01: 58.7 + TIER_3: + 2024-10-01: 71.57 + 2025-10-01: 71.57 + TIER_4_5: + 2024-10-01: 80.26 + 2025-10-01: 80.26 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 39.28 + 2025-10-01: 39.28 + TIER_3: + 2024-10-01: 52.2 + 2025-10-01: 52.2 + TIER_4_5: + 2024-10-01: 54.09 + 2025-10-01: 54.09 +LAS_ANIMAS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 46.71 + 2025-10-01: 53.23 + TIER_3: + 2024-10-01: 58.5 + 2025-10-01: 63.36 + TIER_4_5: + 2024-10-01: 65.27 + 2025-10-01: 73.89 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 39.36 + 2025-10-01: 44.9 + TIER_3: + 2024-10-01: 47.7 + 2025-10-01: 52.05 + TIER_4_5: + 2024-10-01: 53.75 + 2025-10-01: 60.13 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.85 + 2025-10-01: 32.56 + TIER_3: + 2024-10-01: 39.77 + 2025-10-01: 39.77 + TIER_4_5: + 2024-10-01: 44.21 + 2025-10-01: 44.68 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 24.94 + 2025-10-01: 27.97 + TIER_3: + 2024-10-01: 32.76 + 2025-10-01: 33.4 + TIER_4_5: + 2024-10-01: 36.65 + 2025-10-01: 37.97 +LA_PLATA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 59.16 + 2025-10-01: 61.15 + TIER_3: + 2024-10-01: 62.74 + 2025-10-01: 67.41 + TIER_4_5: + 2024-10-01: 70.85 + 2025-10-01: 78.98 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 50.14 + 2025-10-01: 51.76 + TIER_3: + 2024-10-01: 54.62 + 2025-10-01: 57.17 + TIER_4_5: + 2024-10-01: 61.92 + 2025-10-01: 66.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 39.28 + 2025-10-01: 39.28 + TIER_3: + 2024-10-01: 44.21 + 2025-10-01: 44.21 + TIER_4_5: + 2024-10-01: 48.33 + 2025-10-01: 48.33 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.95 + 2025-10-01: 33 + TIER_3: + 2024-10-01: 37.49 + 2025-10-01: 37.49 + TIER_4_5: + 2024-10-01: 43.64 + 2025-10-01: 43.64 +LINCOLN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 62.94 + 2025-10-01: 62.94 + TIER_3: + 2024-10-01: 71 + 2025-10-01: 71 + TIER_4_5: + 2024-10-01: 77.92 + 2025-10-01: 80.27 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.91 + 2025-10-01: 46.25 + TIER_3: + 2024-10-01: 45.7 + 2025-10-01: 51.14 + TIER_4_5: + 2024-10-01: 56.53 + 2025-10-01: 61.6 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.79 + 2025-10-01: 35.79 + TIER_3: + 2024-10-01: 40.43 + 2025-10-01: 40.43 + TIER_4_5: + 2024-10-01: 42.49 + 2025-10-01: 43.9 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.65 + 2025-10-01: 30.4 + TIER_3: + 2024-10-01: 34.27 + 2025-10-01: 34.27 + TIER_4_5: + 2024-10-01: 37.78 + 2025-10-01: 38.62 +LOGAN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.49 + 2025-10-01: 53.7 + TIER_3: + 2024-10-01: 55.23 + 2025-10-01: 61.81 + TIER_4_5: + 2024-10-01: 67.87 + 2025-10-01: 75.26 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 42.11 + 2025-10-01: 46.34 + TIER_3: + 2024-10-01: 47.74 + 2025-10-01: 52.15 + TIER_4_5: + 2024-10-01: 58.4 + 2025-10-01: 62.53 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.67 + 2025-10-01: 33.55 + TIER_3: + 2024-10-01: 42.1 + 2025-10-01: 42.1 + TIER_4_5: + 2024-10-01: 51.38 + 2025-10-01: 51.38 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.65 + 2025-10-01: 30.4 + TIER_3: + 2024-10-01: 34.27 + 2025-10-01: 34.27 + TIER_4_5: + 2024-10-01: 42.84 + 2025-10-01: 42.84 +MESA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 58.89 + 2025-10-01: 65.32 + TIER_3: + 2024-10-01: 63.05 + 2025-10-01: 72.64 + TIER_4_5: + 2024-10-01: 70.52 + 2025-10-01: 85.19 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 49.18 + 2025-10-01: 54.63 + TIER_3: + 2024-10-01: 53.76 + 2025-10-01: 60.59 + TIER_4_5: + 2024-10-01: 59.14 + 2025-10-01: 69.48 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.94 + 2025-10-01: 39.02 + TIER_3: + 2024-10-01: 41.87 + 2025-10-01: 43.69 + TIER_4_5: + 2024-10-01: 47.4 + 2025-10-01: 50.24 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.09 + 2025-10-01: 32.92 + TIER_3: + 2024-10-01: 33.46 + 2025-10-01: 36.45 + TIER_4_5: + 2024-10-01: 37.7 + 2025-10-01: 41.72 +MINERAL_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +MOFFAT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 83.15 + 2025-10-01: 83.15 + TIER_3: + 2024-10-01: 96.08 + 2025-10-01: 96.08 + TIER_4_5: + 2024-10-01: 99.04 + 2025-10-01: 99.04 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 73.15 + 2025-10-01: 73.15 + TIER_3: + 2024-10-01: 84.09 + 2025-10-01: 84.09 + TIER_4_5: + 2024-10-01: 88.87 + 2025-10-01: 88.87 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 61.32 + 2025-10-01: 61.32 + TIER_3: + 2024-10-01: 82.2 + 2025-10-01: 82.2 + TIER_4_5: + 2024-10-01: 84.85 + 2025-10-01: 84.85 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 44.19 + 2025-10-01: 44.19 + TIER_3: + 2024-10-01: 55.42 + 2025-10-01: 55.42 + TIER_4_5: + 2024-10-01: 62.39 + 2025-10-01: 62.39 +MONTEZUMA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 56.22 + 2025-10-01: 59.53 + TIER_3: + 2024-10-01: 60.97 + 2025-10-01: 66.38 + TIER_4_5: + 2024-10-01: 72.35 + 2025-10-01: 79.58 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 46.15 + 2025-10-01: 49.62 + TIER_3: + 2024-10-01: 49.15 + 2025-10-01: 54.29 + TIER_4_5: + 2024-10-01: 54.93 + 2025-10-01: 62.5 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.78 + 2025-10-01: 38.78 + TIER_3: + 2024-10-01: 40.21 + 2025-10-01: 40.66 + TIER_4_5: + 2024-10-01: 45.95 + 2025-10-01: 46.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.8 + 2025-10-01: 32.28 + TIER_3: + 2024-10-01: 33.41 + 2025-10-01: 34.72 + TIER_4_5: + 2024-10-01: 38.12 + 2025-10-01: 39.85 +MONTROSE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 54.45 + 2025-10-01: 58.73 + TIER_3: + 2024-10-01: 60.37 + 2025-10-01: 66.16 + TIER_4_5: + 2024-10-01: 69.29 + 2025-10-01: 78.13 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 48.71 + 2025-10-01: 50.98 + TIER_3: + 2024-10-01: 52.63 + 2025-10-01: 56.1 + TIER_4_5: + 2024-10-01: 57.05 + 2025-10-01: 63.63 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 39.44 + 2025-10-01: 39.44 + TIER_3: + 2024-10-01: 43.75 + 2025-10-01: 43.75 + TIER_4_5: + 2024-10-01: 46.88 + 2025-10-01: 47.37 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.99 + 2025-10-01: 31.45 + TIER_3: + 2024-10-01: 32.03 + 2025-10-01: 34.1 + TIER_4_5: + 2024-10-01: 34.94 + 2025-10-01: 38.34 +MORGAN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 50.53 + 2025-10-01: 55.32 + TIER_3: + 2024-10-01: 56.79 + 2025-10-01: 62.69 + TIER_4_5: + 2024-10-01: 70.41 + 2025-10-01: 76.63 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 43.09 + 2025-10-01: 46.93 + TIER_3: + 2024-10-01: 47.81 + 2025-10-01: 52.29 + TIER_4_5: + 2024-10-01: 60.76 + 2025-10-01: 63.8 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 37.12 + 2025-10-01: 37.12 + TIER_3: + 2024-10-01: 39.77 + 2025-10-01: 39.77 + TIER_4_5: + 2024-10-01: 44.56 + 2025-10-01: 45.03 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.43 + 2025-10-01: 30.89 + TIER_3: + 2024-10-01: 32.16 + 2025-10-01: 33.28 + TIER_4_5: + 2024-10-01: 35.33 + 2025-10-01: 37.49 +OTERO_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 52.53 + 2025-10-01: 56.01 + TIER_3: + 2024-10-01: 56.1 + 2025-10-01: 62.04 + TIER_4_5: + 2024-10-01: 61.32 + 2025-10-01: 71.8 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 42.91 + 2025-10-01: 46.54 + TIER_3: + 2024-10-01: 48.3 + 2025-10-01: 52.22 + TIER_4_5: + 2024-10-01: 52.08 + 2025-10-01: 59.17 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 37.12 + 2025-10-01: 37.12 + TIER_3: + 2024-10-01: 40.43 + 2025-10-01: 40.43 + TIER_4_5: + 2024-10-01: 42.79 + 2025-10-01: 43.85 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.23 + 2025-10-01: 30.48 + TIER_3: + 2024-10-01: 33.04 + 2025-10-01: 33.41 + TIER_4_5: + 2024-10-01: 35.49 + 2025-10-01: 37.27 +OURAY_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 74.46 + 2025-10-01: 74.46 + TIER_3: + 2024-10-01: 82.9 + 2025-10-01: 82.9 + TIER_4_5: + 2024-10-01: 89.81 + 2025-10-01: 89.81 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 62.08 + 2025-10-01: 62.08 + TIER_3: + 2024-10-01: 67.5 + 2025-10-01: 67.5 + TIER_4_5: + 2024-10-01: 74.97 + 2025-10-01: 74.97 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 42.1 + 2025-10-01: 42.1 + TIER_3: + 2024-10-01: 56.68 + 2025-10-01: 56.68 + TIER_4_5: + 2024-10-01: 63.31 + 2025-10-01: 63.31 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 42.04 + 2025-10-01: 42.04 + TIER_3: + 2024-10-01: 45.26 + 2025-10-01: 45.26 + TIER_4_5: + 2024-10-01: 51.13 + 2025-10-01: 51.13 +PARK_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 71.06 + 2025-10-01: 75.33 + TIER_3: + 2024-10-01: 77.56 + 2025-10-01: 84.4 + TIER_4_5: + 2024-10-01: 92.78 + 2025-10-01: 101.76 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 58.08 + 2025-10-01: 62.4 + TIER_3: + 2024-10-01: 65.71 + 2025-10-01: 70.31 + TIER_4_5: + 2024-10-01: 75.36 + 2025-10-01: 81.99 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 43.29 + 2025-10-01: 44.54 + TIER_3: + 2024-10-01: 54.51 + 2025-10-01: 54.51 + TIER_4_5: + 2024-10-01: 60.5 + 2025-10-01: 60.5 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 37.76 + 2025-10-01: 38.81 + TIER_3: + 2024-10-01: 47.92 + 2025-10-01: 47.92 + TIER_4_5: + 2024-10-01: 54.09 + 2025-10-01: 54.09 +PHILLIPS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 46.44 + 2025-10-01: 53.08 + TIER_3: + 2024-10-01: 51.29 + 2025-10-01: 59.75 + TIER_4_5: + 2024-10-01: 58.05 + 2025-10-01: 70.27 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 39.35 + 2025-10-01: 44.87 + TIER_3: + 2024-10-01: 44.05 + 2025-10-01: 50.22 + TIER_4_5: + 2024-10-01: 49.2 + 2025-10-01: 57.84 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.61 + 2025-10-01: 33.42 + TIER_3: + 2024-10-01: 35.03 + 2025-10-01: 36.95 + TIER_4_5: + 2024-10-01: 39.76 + 2025-10-01: 42.45 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.3 + 2025-10-01: 29.13 + TIER_3: + 2024-10-01: 31.31 + 2025-10-01: 32.67 + TIER_4_5: + 2024-10-01: 35.38 + 2025-10-01: 37.33 +PITKIN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 81.72 + 2025-10-01: 81.72 + TIER_3: + 2024-10-01: 95.55 + 2025-10-01: 95.55 + TIER_4_5: + 2024-10-01: 98.38 + 2025-10-01: 98.69 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 79.53 + 2025-10-01: 79.53 + TIER_3: + 2024-10-01: 90.56 + 2025-10-01: 90.56 + TIER_4_5: + 2024-10-01: 92.93 + 2025-10-01: 92.93 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 76.62 + 2025-10-01: 76.62 + TIER_3: + 2024-10-01: 89.59 + 2025-10-01: 89.59 + TIER_4_5: + 2024-10-01: 91.94 + 2025-10-01: 91.94 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 66.94 + 2025-10-01: 66.94 + TIER_3: + 2024-10-01: 74.17 + 2025-10-01: 74.17 + TIER_4_5: + 2024-10-01: 77.11 + 2025-10-01: 77.11 +PROWERS_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 51.03 + 2025-10-01: 55.32 + TIER_3: + 2024-10-01: 60 + 2025-10-01: 64.04 + TIER_4_5: + 2024-10-01: 70.88 + 2025-10-01: 76.62 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 42.72 + 2025-10-01: 46.5 + TIER_3: + 2024-10-01: 51.74 + 2025-10-01: 54 + TIER_4_5: + 2024-10-01: 60.53 + 2025-10-01: 63.44 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.36 + 2025-10-01: 34.24 + TIER_3: + 2024-10-01: 40.43 + 2025-10-01: 40.43 + TIER_4_5: + 2024-10-01: 47.73 + 2025-10-01: 47.73 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.84 + 2025-10-01: 29.85 + TIER_3: + 2024-10-01: 33.44 + 2025-10-01: 33.67 + TIER_4_5: + 2024-10-01: 38.76 + 2025-10-01: 38.96 +PUEBLO_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 58.43 + 2025-10-01: 65.5 + TIER_3: + 2024-10-01: 64.05 + 2025-10-01: 73.57 + TIER_4_5: + 2024-10-01: 74.16 + 2025-10-01: 87.46 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 46.89 + 2025-10-01: 53.94 + TIER_3: + 2024-10-01: 51.93 + 2025-10-01: 60.18 + TIER_4_5: + 2024-10-01: 61.01 + 2025-10-01: 70.95 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.92 + 2025-10-01: 38.54 + TIER_3: + 2024-10-01: 40.96 + 2025-10-01: 43.83 + TIER_4_5: + 2024-10-01: 51.51 + 2025-10-01: 52.95 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.95 + 2025-10-01: 32.41 + TIER_3: + 2024-10-01: 32.07 + 2025-10-01: 36.37 + TIER_4_5: + 2024-10-01: 40.12 + 2025-10-01: 43.62 +RIO_BLANCO_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 62.13 + 2025-10-01: 65.99 + TIER_3: + 2024-10-01: 69.57 + 2025-10-01: 74.77 + TIER_4_5: + 2024-10-01: 76.22 + 2025-10-01: 86.62 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 55.48 + 2025-10-01: 57.06 + TIER_3: + 2024-10-01: 58.06 + 2025-10-01: 61.91 + TIER_4_5: + 2024-10-01: 63.37 + 2025-10-01: 70.57 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 48.06 + 2025-10-01: 48.06 + TIER_3: + 2024-10-01: 53.03 + 2025-10-01: 53.03 + TIER_4_5: + 2024-10-01: 55.02 + 2025-10-01: 55.02 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 37.49 + 2025-10-01: 37.49 + TIER_3: + 2024-10-01: 42.84 + 2025-10-01: 42.84 + TIER_4_5: + 2024-10-01: 44.65 + 2025-10-01: 44.85 +RIO_GRANDE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +ROUTT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 75.44 + 2025-10-01: 75.44 + TIER_3: + 2024-10-01: 81.72 + 2025-10-01: 81.72 + TIER_4_5: + 2024-10-01: 94.7 + 2025-10-01: 96.39 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 73.87 + 2025-10-01: 73.87 + TIER_3: + 2024-10-01: 77.45 + 2025-10-01: 77.45 + TIER_4_5: + 2024-10-01: 77.91 + 2025-10-01: 78.38 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 55.45 + 2025-10-01: 55.45 + TIER_3: + 2024-10-01: 73.08 + 2025-10-01: 73.08 + TIER_4_5: + 2024-10-01: 76.33 + 2025-10-01: 76.33 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 51 + 2025-10-01: 51 + TIER_3: + 2024-10-01: 66.4 + 2025-10-01: 66.4 + TIER_4_5: + 2024-10-01: 66.94 + 2025-10-01: 66.94 +SAGUACHE_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 47.52 + 2025-10-01: 53.67 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 61.61 + TIER_4_5: + 2024-10-01: 60.91 + 2025-10-01: 71.74 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 41.22 + 2025-10-01: 45.85 + TIER_3: + 2024-10-01: 46.41 + 2025-10-01: 51.44 + TIER_4_5: + 2024-10-01: 51.72 + 2025-10-01: 59.14 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.43 + 2025-10-01: 34.37 + TIER_3: + 2024-10-01: 36.69 + 2025-10-01: 37.83 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.84 + 2025-10-01: 29.44 + TIER_3: + 2024-10-01: 30.65 + 2025-10-01: 32.38 + TIER_4_5: + 2024-10-01: 34.54 + 2025-10-01: 36.95 +SAN_JUAN_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 61.98 + 2025-10-01: 62.57 + TIER_3: + 2024-10-01: 70.59 + 2025-10-01: 71.34 + TIER_4_5: + 2024-10-01: 76.31 + 2025-10-01: 81.72 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 49.44 + 2025-10-01: 51.43 + TIER_3: + 2024-10-01: 53.35 + 2025-10-01: 56.54 + TIER_4_5: + 2024-10-01: 60.94 + 2025-10-01: 65.66 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.15 + 2025-10-01: 36.85 + TIER_3: + 2024-10-01: 40.99 + 2025-10-01: 41.21 + TIER_4_5: + 2024-10-01: 45.83 + 2025-10-01: 46.94 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.37 + 2025-10-01: 32.23 + TIER_3: + 2024-10-01: 35.14 + 2025-10-01: 35.74 + TIER_4_5: + 2024-10-01: 38.94 + 2025-10-01: 40.43 +SAN_MIGUEL_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 69.78 + 2025-10-01: 69.78 + TIER_3: + 2024-10-01: 76.69 + 2025-10-01: 76.69 + TIER_4_5: + 2024-10-01: 83.18 + 2025-10-01: 85.3 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 64.64 + 2025-10-01: 64.64 + TIER_3: + 2024-10-01: 72.08 + 2025-10-01: 72.08 + TIER_4_5: + 2024-10-01: 75.65 + 2025-10-01: 75.65 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 62.48 + 2025-10-01: 62.48 + TIER_3: + 2024-10-01: 74.85 + 2025-10-01: 74.85 + TIER_4_5: + 2024-10-01: 76.62 + 2025-10-01: 76.62 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 41.49 + 2025-10-01: 41.49 + TIER_3: + 2024-10-01: 51.95 + 2025-10-01: 51.95 + TIER_4_5: + 2024-10-01: 60.52 + 2025-10-01: 60.52 +SEDGWICK_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 46.43 + 2025-10-01: 53.06 + TIER_3: + 2024-10-01: 51.28 + 2025-10-01: 59.73 + TIER_4_5: + 2024-10-01: 58.04 + 2025-10-01: 70.25 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 37.52 + 2025-10-01: 43.94 + TIER_3: + 2024-10-01: 40.4 + 2025-10-01: 48.38 + TIER_4_5: + 2024-10-01: 45.09 + 2025-10-01: 55.78 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.38 + 2025-10-01: 32.29 + TIER_3: + 2024-10-01: 34.14 + 2025-10-01: 36.5 + TIER_4_5: + 2024-10-01: 37.08 + 2025-10-01: 41.1 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.29 + 2025-10-01: 29.11 + TIER_3: + 2024-10-01: 31.3 + 2025-10-01: 32.64 + TIER_4_5: + 2024-10-01: 33.04 + 2025-10-01: 36.14 +SUMMIT_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 73.55 + 2025-10-01: 73.55 + TIER_3: + 2024-10-01: 91.78 + 2025-10-01: 91.78 + TIER_4_5: + 2024-10-01: 94.79 + 2025-10-01: 96.56 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 70.3 + 2025-10-01: 70.3 + TIER_3: + 2024-10-01: 77.45 + 2025-10-01: 77.45 + TIER_4_5: + 2024-10-01: 86.09 + 2025-10-01: 86.09 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 63.36 + 2025-10-01: 63.36 + TIER_3: + 2024-10-01: 80.15 + 2025-10-01: 80.15 + TIER_4_5: + 2024-10-01: 82.51 + 2025-10-01: 82.51 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 54.62 + 2025-10-01: 54.62 + TIER_3: + 2024-10-01: 55.16 + 2025-10-01: 55.16 + TIER_4_5: + 2024-10-01: 55.69 + 2025-10-01: 55.69 +TELLER_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 54.78 + 2025-10-01: 60.38 + TIER_3: + 2024-10-01: 64.08 + 2025-10-01: 69.7 + TIER_4_5: + 2024-10-01: 75.47 + 2025-10-01: 83.25 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 55.2 + 2025-10-01: 55.47 + TIER_3: + 2024-10-01: 64.84 + 2025-10-01: 64.84 + TIER_4_5: + 2024-10-01: 70.7 + 2025-10-01: 72.08 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 42.8 + 2025-10-01: 42.8 + TIER_3: + 2024-10-01: 49.83 + 2025-10-01: 49.83 + TIER_4_5: + 2024-10-01: 58.69 + 2025-10-01: 58.69 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 37.49 + 2025-10-01: 37.49 + TIER_3: + 2024-10-01: 40.7 + 2025-10-01: 40.7 + TIER_4_5: + 2024-10-01: 46.05 + 2025-10-01: 46.05 +WASHINGTON_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 48.54 + 2025-10-01: 54.21 + TIER_3: + 2024-10-01: 53.4 + 2025-10-01: 60.87 + TIER_4_5: + 2024-10-01: 59.14 + 2025-10-01: 70.89 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 40.53 + 2025-10-01: 45.54 + TIER_3: + 2024-10-01: 45.92 + 2025-10-01: 51.22 + TIER_4_5: + 2024-10-01: 50.16 + 2025-10-01: 58.4 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.99 + 2025-10-01: 35.18 + TIER_3: + 2024-10-01: 39.77 + 2025-10-01: 39.77 + TIER_4_5: + 2024-10-01: 42.47 + 2025-10-01: 43.88 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 30.35 + 2025-10-01: 30.73 + TIER_3: + 2024-10-01: 32.8 + 2025-10-01: 33.48 + TIER_4_5: + 2024-10-01: 35.25 + 2025-10-01: 37.33 +WELD_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 60.51 + 2025-10-01: 63.48 + TIER_3: + 2024-10-01: 67.06 + 2025-10-01: 71.49 + TIER_4_5: + 2024-10-01: 79.82 + 2025-10-01: 85.84 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 52.06 + 2025-10-01: 54.03 + TIER_3: + 2024-10-01: 60.1 + 2025-10-01: 61.38 + TIER_4_5: + 2024-10-01: 69.44 + 2025-10-01: 71.68 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 41.79 + 2025-10-01: 41.79 + TIER_3: + 2024-10-01: 47.69 + 2025-10-01: 47.69 + TIER_4_5: + 2024-10-01: 55.95 + 2025-10-01: 55.95 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.46 + 2025-10-01: 33.34 + TIER_3: + 2024-10-01: 37.17 + 2025-10-01: 37.39 + TIER_4_5: + 2024-10-01: 45.78 + 2025-10-01: 45.78 +YUMA_COUNTY_CO: + MONTHS_0_TO_18: + TIER_1_2: + 2024-10-01: 48.52 + 2025-10-01: 54.16 + TIER_3: + 2024-10-01: 53.37 + 2025-10-01: 60.83 + TIER_4_5: + 2024-10-01: 59.12 + 2025-10-01: 70.85 + MONTHS_18_TO_36: + TIER_1_2: + 2024-10-01: 42.1 + 2025-10-01: 46.29 + TIER_3: + 2024-10-01: 45.9 + 2025-10-01: 51.18 + TIER_4_5: + 2024-10-01: 50.14 + 2025-10-01: 58.35 + MONTHS_36_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.74 + 2025-10-01: 35.03 + TIER_3: + 2024-10-01: 39.77 + 2025-10-01: 39.77 + TIER_4_5: + 2024-10-01: 42.45 + 2025-10-01: 43.83 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.38 + 2025-10-01: 30.21 + TIER_3: + 2024-10-01: 32.78 + 2025-10-01: 33.44 + TIER_4_5: + 2024-10-01: 35.23 + 2025-10-01: 37.29 diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml new file mode 100644 index 00000000000..7c5e956c662 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml @@ -0,0 +1,2010 @@ +description: Colorado pays licensed family child care homes up to these full-time daily rates under the Child Care Assistance Program, by county, age band and quality tier. +metadata: + propagate_metadata_to_children: true + unit: currency-USD + period: day + label: Colorado CCCAP licensed family child care home full-time daily rates + breakdown: + - county + - co_ccap_home_age_band + - co_ccap_quality_tier + breakdown_labels: + - County + - Age band + - Colorado Shines quality tier + reference: + - title: 8 CCR 1403-1 3.130, state-established licensed provider base rates and tiered rates by quality level + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118 + - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2024 + href: https://drive.google.com/file/d/1j9wqebwdFbZqNIpwuLcYEXgKqKvXagUf/view + - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2025 + href: https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view + - title: CDEC Operational Memo OM-CCCAP-2024-0002, State-Established Regular Rates + href: https://drive.google.com/file/d/1uTkDYcRXuCX3dIbnzfyC5vtomzCNkWbR/view + +ADAMS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 50.95 + 2025-10-01: 60.9 + TIER_3: + 2024-10-01: 59.25 + 2025-10-01: 71.66 + TIER_4_5: + 2024-10-01: 70.19 + 2025-10-01: 87.76 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.23 + 2025-10-01: 36.91 + TIER_3: + 2024-10-01: 43.92 + 2025-10-01: 44.26 + TIER_4_5: + 2024-10-01: 52.65 + 2025-10-01: 54.26 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 31.2 + TIER_3: + 2024-10-01: 38.22 + 2025-10-01: 38.22 + TIER_4_5: + 2024-10-01: 43.68 + 2025-10-01: 43.68 +ALAMOSA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +ARAPAHOE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 52.31 + 2025-10-01: 61.55 + TIER_3: + 2024-10-01: 59.43 + 2025-10-01: 71.72 + TIER_4_5: + 2024-10-01: 74.11 + 2025-10-01: 89.68 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 40.01 + 2025-10-01: 40.01 + TIER_3: + 2024-10-01: 47.78 + 2025-10-01: 47.78 + TIER_4_5: + 2024-10-01: 57.93 + 2025-10-01: 57.93 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.61 + 2025-10-01: 28.61 + TIER_3: + 2024-10-01: 40.68 + 2025-10-01: 40.68 + TIER_4_5: + 2024-10-01: 43.96 + 2025-10-01: 43.96 +ARCHULETA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 43.97 + 2025-10-01: 50.64 + TIER_3: + 2024-10-01: 48.54 + 2025-10-01: 58.19 + TIER_4_5: + 2024-10-01: 56.25 + 2025-10-01: 70.44 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.35 + 2025-10-01: 36.35 + TIER_3: + 2024-10-01: 39.66 + 2025-10-01: 39.66 + TIER_4_5: + 2024-10-01: 43.6 + 2025-10-01: 44.24 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 31.2 + TIER_3: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_4_5: + 2024-10-01: 35.5 + 2025-10-01: 35.5 +BACA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.48 + 2025-10-01: 46.53 + TIER_3: + 2024-10-01: 44.26 + 2025-10-01: 53.87 + TIER_4_5: + 2024-10-01: 50.79 + 2025-10-01: 65.05 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 27.09 + 2025-10-01: 27.76 + TIER_3: + 2024-10-01: 31.48 + 2025-10-01: 32.58 + TIER_4_5: + 2024-10-01: 35.13 + 2025-10-01: 38.61 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 23.92 + 2025-10-01: 23.92 + TIER_3: + 2024-10-01: 24.02 + 2025-10-01: 24.02 + TIER_4_5: + 2024-10-01: 27.24 + 2025-10-01: 28.3 +BENT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 43.83 + 2025-10-01: 48.69 + TIER_3: + 2024-10-01: 49.71 + 2025-10-01: 56.58 + TIER_4_5: + 2024-10-01: 58.41 + 2025-10-01: 68.84 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.37 + 2025-10-01: 33.37 + TIER_3: + 2024-10-01: 41.97 + 2025-10-01: 41.97 + TIER_4_5: + 2024-10-01: 48.91 + 2025-10-01: 48.91 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.2 + 2025-10-01: 26.2 + TIER_3: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_4_5: + 2024-10-01: 33.85 + 2025-10-01: 33.85 +BOULDER_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 60.72 + 2025-10-01: 69.24 + TIER_3: + 2024-10-01: 69.47 + 2025-10-01: 80.92 + TIER_4_5: + 2024-10-01: 84.13 + 2025-10-01: 100.03 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 44.44 + 2025-10-01: 44.44 + TIER_3: + 2024-10-01: 54.94 + 2025-10-01: 54.94 + TIER_4_5: + 2024-10-01: 61.1 + 2025-10-01: 61.3 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 37.13 + 2025-10-01: 37.13 + TIER_3: + 2024-10-01: 43.68 + 2025-10-01: 43.68 + TIER_4_5: + 2024-10-01: 54.59 + 2025-10-01: 54.59 +BROOMFIELD_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 56.5 + 2025-10-01: 63.72 + TIER_3: + 2024-10-01: 63.62 + 2025-10-01: 73.9 + TIER_4_5: + 2024-10-01: 76.14 + 2025-10-01: 90.8 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 44.44 + 2025-10-01: 44.44 + TIER_3: + 2024-10-01: 50.16 + 2025-10-01: 50.16 + TIER_4_5: + 2024-10-01: 59.72 + 2025-10-01: 59.72 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 40.56 + 2025-10-01: 40.56 + TIER_3: + 2024-10-01: 40.12 + 2025-10-01: 40.12 + TIER_4_5: + 2024-10-01: 47.24 + 2025-10-01: 47.24 +CHAFFEE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 49.57 + 2025-10-01: 53.65 + TIER_3: + 2024-10-01: 57.43 + 2025-10-01: 62.88 + TIER_4_5: + 2024-10-01: 64.52 + 2025-10-01: 74.86 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.89 + 2025-10-01: 38.89 + TIER_3: + 2024-10-01: 46.27 + 2025-10-01: 46.27 + TIER_4_5: + 2024-10-01: 54.53 + 2025-10-01: 54.53 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_3: + 2024-10-01: 38.22 + 2025-10-01: 38.22 + TIER_4_5: + 2024-10-01: 43.14 + 2025-10-01: 43.14 +CHEYENNE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 38.66 + 2025-10-01: 46.22 + TIER_3: + 2024-10-01: 43.68 + 2025-10-01: 53.69 + TIER_4_5: + 2024-10-01: 51.77 + 2025-10-01: 65.66 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 27.79 + 2025-10-01: 28.16 + TIER_3: + 2024-10-01: 32.4 + 2025-10-01: 33.1 + TIER_4_5: + 2024-10-01: 36.07 + 2025-10-01: 39.14 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 20.8 + 2025-10-01: 20.8 + TIER_3: + 2024-10-01: 26.2 + 2025-10-01: 26.2 + TIER_4_5: + 2024-10-01: 28 + 2025-10-01: 28.72 +CLEAR_CREEK_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 54.76 + 2025-10-01: 62.6 + TIER_3: + 2024-10-01: 61.66 + 2025-10-01: 72.64 + TIER_4_5: + 2024-10-01: 73.95 + 2025-10-01: 89.37 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 46.28 + 2025-10-01: 46.28 + TIER_3: + 2024-10-01: 48.07 + 2025-10-01: 48.07 + TIER_4_5: + 2024-10-01: 55.15 + 2025-10-01: 55.36 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 41.6 + 2025-10-01: 41.6 + TIER_3: + 2024-10-01: 43.39 + 2025-10-01: 43.39 + TIER_4_5: + 2024-10-01: 49.95 + 2025-10-01: 49.95 +CONEJOS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +COSTILLA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +CROWLEY_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 42.39 + 2025-10-01: 48.43 + TIER_3: + 2024-10-01: 46.56 + 2025-10-01: 55.53 + TIER_4_5: + 2024-10-01: 52.7 + 2025-10-01: 66.6 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.41 + 2025-10-01: 29.41 + TIER_3: + 2024-10-01: 38.33 + 2025-10-01: 38.33 + TIER_4_5: + 2024-10-01: 40.66 + 2025-10-01: 41.68 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 23.48 + 2025-10-01: 23.48 + TIER_3: + 2024-10-01: 25.93 + 2025-10-01: 25.93 + TIER_4_5: + 2024-10-01: 28.85 + 2025-10-01: 29.32 +CUSTER_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.02 + 2025-10-01: 49.74 + TIER_3: + 2024-10-01: 52.82 + 2025-10-01: 59.22 + TIER_4_5: + 2024-10-01: 60.77 + 2025-10-01: 71.28 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.69 + 2025-10-01: 35.69 + TIER_3: + 2024-10-01: 37.02 + 2025-10-01: 37.02 + TIER_4_5: + 2024-10-01: 46.27 + 2025-10-01: 46.27 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.08 + 2025-10-01: 28.08 + TIER_3: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_4_5: + 2024-10-01: 31.66 + 2025-10-01: 31.66 +DELTA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 43.64 + 2025-10-01: 50.31 + TIER_3: + 2024-10-01: 51.03 + 2025-10-01: 59.24 + TIER_4_5: + 2024-10-01: 61.78 + 2025-10-01: 72.98 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.36 + 2025-10-01: 34.36 + TIER_3: + 2024-10-01: 39.98 + 2025-10-01: 39.98 + TIER_4_5: + 2024-10-01: 45.93 + 2025-10-01: 45.93 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.02 + 2025-10-01: 27.02 + TIER_3: + 2024-10-01: 31.12 + 2025-10-01: 31.12 + TIER_4_5: + 2024-10-01: 38.49 + 2025-10-01: 38.49 +DENVER_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 51.82 + 2025-10-01: 61.76 + TIER_3: + 2024-10-01: 62.72 + 2025-10-01: 73.88 + TIER_4_5: + 2024-10-01: 76.08 + 2025-10-01: 91.27 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.56 + 2025-10-01: 37.3 + TIER_3: + 2024-10-01: 45.39 + 2025-10-01: 45.39 + TIER_4_5: + 2024-10-01: 59.72 + 2025-10-01: 59.72 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 31.2 + TIER_3: + 2024-10-01: 37.68 + 2025-10-01: 37.68 + TIER_4_5: + 2024-10-01: 49.13 + 2025-10-01: 49.13 +DOLORES_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 40.63 + 2025-10-01: 48.59 + TIER_3: + 2024-10-01: 47.03 + 2025-10-01: 57 + TIER_4_5: + 2024-10-01: 55.68 + 2025-10-01: 69.65 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.33 + 2025-10-01: 33.33 + TIER_3: + 2024-10-01: 35.88 + 2025-10-01: 35.88 + TIER_4_5: + 2024-10-01: 40.6 + 2025-10-01: 42.48 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 31.2 + TIER_3: + 2024-10-01: 29.2 + 2025-10-01: 29.2 + TIER_4_5: + 2024-10-01: 32.21 + 2025-10-01: 32.21 +DOUGLAS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 55.74 + 2025-10-01: 63.39 + TIER_3: + 2024-10-01: 64.15 + 2025-10-01: 74.22 + TIER_4_5: + 2024-10-01: 75.2 + 2025-10-01: 90.39 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 40.83 + 2025-10-01: 40.83 + TIER_3: + 2024-10-01: 50.8 + 2025-10-01: 50.8 + TIER_4_5: + 2024-10-01: 61.21 + 2025-10-01: 61.21 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.77 + 2025-10-01: 32.77 + TIER_3: + 2024-10-01: 43.68 + 2025-10-01: 43.68 + TIER_4_5: + 2024-10-01: 49.13 + 2025-10-01: 49.13 +EAGLE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 56.08 + 2025-10-01: 60.54 + TIER_3: + 2024-10-01: 63.89 + 2025-10-01: 70.44 + TIER_4_5: + 2024-10-01: 81.74 + 2025-10-01: 88.92 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 52.5 + 2025-10-01: 52.5 + TIER_3: + 2024-10-01: 58.33 + 2025-10-01: 58.33 + TIER_4_5: + 2024-10-01: 74.38 + 2025-10-01: 74.38 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 49.13 + 2025-10-01: 49.13 + TIER_3: + 2024-10-01: 61.7 + 2025-10-01: 61.7 + TIER_4_5: + 2024-10-01: 64.97 + 2025-10-01: 64.97 +ELBERT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 53.94 + 2025-10-01: 62.23 + TIER_3: + 2024-10-01: 61.52 + 2025-10-01: 72.6 + TIER_4_5: + 2024-10-01: 73.35 + 2025-10-01: 89.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 36.95 + 2025-10-01: 37.18 + TIER_3: + 2024-10-01: 43.35 + 2025-10-01: 43.87 + TIER_4_5: + 2024-10-01: 51.16 + 2025-10-01: 53.4 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_3: + 2024-10-01: 37.13 + 2025-10-01: 37.13 + TIER_4_5: + 2024-10-01: 43.68 + 2025-10-01: 43.68 +EL_PASO_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.04 + 2025-10-01: 51.82 + TIER_3: + 2024-10-01: 52.45 + 2025-10-01: 61.52 + TIER_4_5: + 2024-10-01: 62.39 + 2025-10-01: 75.24 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.6 + 2025-10-01: 31.61 + TIER_3: + 2024-10-01: 39.8 + 2025-10-01: 39.8 + TIER_4_5: + 2024-10-01: 48.01 + 2025-10-01: 48.01 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 25.49 + 2025-10-01: 25.49 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 37.93 + 2025-10-01: 37.93 +FREMONT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.37 + 2025-10-01: 48.22 + TIER_3: + 2024-10-01: 43.25 + 2025-10-01: 55.42 + TIER_4_5: + 2024-10-01: 51.29 + 2025-10-01: 67.81 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 30.22 + 2025-10-01: 30.25 + TIER_3: + 2024-10-01: 33.12 + 2025-10-01: 34.49 + TIER_4_5: + 2024-10-01: 38.61 + 2025-10-01: 41.67 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26 + 2025-10-01: 26 + TIER_3: + 2024-10-01: 27.3 + 2025-10-01: 27.3 + TIER_4_5: + 2024-10-01: 30.78 + 2025-10-01: 30.99 +GARFIELD_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 56.01 + 2025-10-01: 60.4 + TIER_3: + 2024-10-01: 61.5 + 2025-10-01: 69.12 + TIER_4_5: + 2024-10-01: 70.1 + 2025-10-01: 82.97 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 48.42 + 2025-10-01: 48.42 + TIER_3: + 2024-10-01: 54.84 + 2025-10-01: 54.84 + TIER_4_5: + 2024-10-01: 58.33 + 2025-10-01: 58.33 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 45.32 + 2025-10-01: 45.32 + TIER_3: + 2024-10-01: 51.32 + 2025-10-01: 51.32 + TIER_4_5: + 2024-10-01: 52.41 + 2025-10-01: 52.41 +GILPIN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 61.86 + 2025-10-01: 65.93 + TIER_3: + 2024-10-01: 73.25 + 2025-10-01: 78.17 + TIER_4_5: + 2024-10-01: 85.86 + 2025-10-01: 95.02 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 50.18 + 2025-10-01: 50.18 + TIER_3: + 2024-10-01: 60.6 + 2025-10-01: 60.6 + TIER_4_5: + 2024-10-01: 67.64 + 2025-10-01: 67.64 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 36.39 + 2025-10-01: 36.39 + TIER_3: + 2024-10-01: 46.14 + 2025-10-01: 46.14 + TIER_4_5: + 2024-10-01: 52.13 + 2025-10-01: 52.13 +GRAND_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 57.54 + 2025-10-01: 60.89 + TIER_3: + 2024-10-01: 65.5 + 2025-10-01: 70.8 + TIER_4_5: + 2024-10-01: 79.83 + 2025-10-01: 87.46 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 50 + 2025-10-01: 50 + TIER_3: + 2024-10-01: 57.84 + 2025-10-01: 57.84 + TIER_4_5: + 2024-10-01: 61.21 + 2025-10-01: 61.21 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 48.88 + 2025-10-01: 48.88 + TIER_3: + 2024-10-01: 46.95 + 2025-10-01: 46.95 + TIER_4_5: + 2024-10-01: 50.78 + 2025-10-01: 50.78 +GUNNISON_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.58 + 2025-10-01: 51.42 + TIER_3: + 2024-10-01: 51.48 + 2025-10-01: 60.2 + TIER_4_5: + 2024-10-01: 57.92 + 2025-10-01: 71.91 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.44 + 2025-10-01: 38.44 + TIER_3: + 2024-10-01: 39.73 + 2025-10-01: 39.73 + TIER_4_5: + 2024-10-01: 42.51 + 2025-10-01: 44.04 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_3: + 2024-10-01: 33.85 + 2025-10-01: 33.85 + TIER_4_5: + 2024-10-01: 34.95 + 2025-10-01: 34.95 +HINSDALE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.26 + 2025-10-01: 50.78 + TIER_3: + 2024-10-01: 48.58 + 2025-10-01: 58.21 + TIER_4_5: + 2024-10-01: 56.65 + 2025-10-01: 70.64 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.44 + 2025-10-01: 38.44 + TIER_3: + 2024-10-01: 39.73 + 2025-10-01: 39.73 + TIER_4_5: + 2024-10-01: 42.28 + 2025-10-01: 43.58 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_3: + 2024-10-01: 33.85 + 2025-10-01: 33.85 + TIER_4_5: + 2024-10-01: 34.95 + 2025-10-01: 34.95 +HUERFANO_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 41.75 + 2025-10-01: 48.27 + TIER_3: + 2024-10-01: 46.12 + 2025-10-01: 55.5 + TIER_4_5: + 2024-10-01: 52.05 + 2025-10-01: 66.5 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.24 + 2025-10-01: 35.24 + TIER_3: + 2024-10-01: 38.44 + 2025-10-01: 38.44 + TIER_4_5: + 2024-10-01: 46.13 + 2025-10-01: 46.13 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 25.21 + 2025-10-01: 25.21 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 32.75 + 2025-10-01: 32.75 +JACKSON_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 48.53 + 2025-10-01: 55.53 + TIER_3: + 2024-10-01: 58.7 + 2025-10-01: 66.43 + TIER_4_5: + 2024-10-01: 69.3 + 2025-10-01: 81.06 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 41 + 2025-10-01: 41 + TIER_3: + 2024-10-01: 46.45 + 2025-10-01: 46.45 + TIER_4_5: + 2024-10-01: 52.21 + 2025-10-01: 52.21 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 36.14 + 2025-10-01: 36.14 + TIER_3: + 2024-10-01: 37.93 + 2025-10-01: 37.93 + TIER_4_5: + 2024-10-01: 42.04 + 2025-10-01: 42.04 +JEFFERSON_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 55.68 + 2025-10-01: 63.27 + TIER_3: + 2024-10-01: 63.27 + 2025-10-01: 73.68 + TIER_4_5: + 2024-10-01: 75.12 + 2025-10-01: 90.23 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 41.12 + 2025-10-01: 41.12 + TIER_3: + 2024-10-01: 48.96 + 2025-10-01: 48.96 + TIER_4_5: + 2024-10-01: 55.34 + 2025-10-01: 55.61 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.2 + 2025-10-01: 31.2 + TIER_3: + 2024-10-01: 41.49 + 2025-10-01: 41.49 + TIER_4_5: + 2024-10-01: 44.77 + 2025-10-01: 44.77 +KIOWA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 37.88 + 2025-10-01: 45.92 + TIER_3: + 2024-10-01: 42.21 + 2025-10-01: 53.07 + TIER_4_5: + 2024-10-01: 48.51 + 2025-10-01: 64.17 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 26.57 + 2025-10-01: 27.6 + TIER_3: + 2024-10-01: 30.94 + 2025-10-01: 32.42 + TIER_4_5: + 2024-10-01: 34.57 + 2025-10-01: 38.46 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 23.92 + 2025-10-01: 23.92 + TIER_3: + 2024-10-01: 25.11 + 2025-10-01: 25.11 + TIER_4_5: + 2024-10-01: 27.12 + 2025-10-01: 28.33 +KIT_CARSON_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 38.23 + 2025-10-01: 46.33 + TIER_3: + 2024-10-01: 43.23 + 2025-10-01: 53.83 + TIER_4_5: + 2024-10-01: 51.24 + 2025-10-01: 65.83 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_3: + 2024-10-01: 32.74 + 2025-10-01: 33.46 + TIER_4_5: + 2024-10-01: 36.39 + 2025-10-01: 39.53 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 25.11 + 2025-10-01: 25.11 + TIER_3: + 2024-10-01: 27.3 + 2025-10-01: 27.3 + TIER_4_5: + 2024-10-01: 28.84 + 2025-10-01: 29.3 +LAKE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 59.09 + 2025-10-01: 61.42 + TIER_3: + 2024-10-01: 65.95 + 2025-10-01: 70.76 + TIER_4_5: + 2024-10-01: 78.72 + 2025-10-01: 86.59 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 57.66 + 2025-10-01: 57.66 + TIER_3: + 2024-10-01: 62.79 + 2025-10-01: 62.79 + TIER_4_5: + 2024-10-01: 72.08 + 2025-10-01: 72.08 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 49.13 + 2025-10-01: 49.13 + TIER_3: + 2024-10-01: 53.5 + 2025-10-01: 53.5 + TIER_4_5: + 2024-10-01: 61.42 + 2025-10-01: 61.42 +LARIMER_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 50.87 + 2025-10-01: 59.71 + TIER_3: + 2024-10-01: 59.13 + 2025-10-01: 70.23 + TIER_4_5: + 2024-10-01: 69.34 + 2025-10-01: 85.62 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.89 + 2025-10-01: 38.89 + TIER_3: + 2024-10-01: 46.51 + 2025-10-01: 46.51 + TIER_4_5: + 2024-10-01: 51.66 + 2025-10-01: 52.86 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 34.84 + 2025-10-01: 34.84 + TIER_3: + 2024-10-01: 40.4 + 2025-10-01: 40.4 + TIER_4_5: + 2024-10-01: 43.68 + 2025-10-01: 43.68 +LAS_ANIMAS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 41.56 + 2025-10-01: 47.89 + TIER_3: + 2024-10-01: 45.91 + 2025-10-01: 55.07 + TIER_4_5: + 2024-10-01: 51.8 + 2025-10-01: 65.98 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.24 + 2025-10-01: 35.24 + TIER_3: + 2024-10-01: 38.44 + 2025-10-01: 38.44 + TIER_4_5: + 2024-10-01: 46.13 + 2025-10-01: 46.13 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 25.21 + 2025-10-01: 25.21 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 32.75 + 2025-10-01: 32.75 +LA_PLATA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.95 + 2025-10-01: 51.24 + TIER_3: + 2024-10-01: 49.4 + 2025-10-01: 58.75 + TIER_4_5: + 2024-10-01: 55.71 + 2025-10-01: 70.33 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.89 + 2025-10-01: 38.89 + TIER_3: + 2024-10-01: 40.55 + 2025-10-01: 40.55 + TIER_4_5: + 2024-10-01: 43.4 + 2025-10-01: 44.22 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 34.31 + 2025-10-01: 34.31 + TIER_3: + 2024-10-01: 35.75 + 2025-10-01: 35.75 + TIER_4_5: + 2024-10-01: 38.22 + 2025-10-01: 38.22 +LINCOLN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 40.85 + 2025-10-01: 47.74 + TIER_3: + 2024-10-01: 46.7 + 2025-10-01: 55.69 + TIER_4_5: + 2024-10-01: 54.51 + 2025-10-01: 67.6 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 32.04 + 2025-10-01: 32.04 + TIER_3: + 2024-10-01: 38.44 + 2025-10-01: 38.44 + TIER_4_5: + 2024-10-01: 41.6 + 2025-10-01: 42.2 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26 + 2025-10-01: 26 + TIER_3: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_4_5: + 2024-10-01: 32.75 + 2025-10-01: 32.75 +LOGAN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 41.5 + 2025-10-01: 48.06 + TIER_3: + 2024-10-01: 49 + 2025-10-01: 56.84 + TIER_4_5: + 2024-10-01: 60.99 + 2025-10-01: 70.83 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 34.64 + 2025-10-01: 34.64 + TIER_3: + 2024-10-01: 40.99 + 2025-10-01: 40.99 + TIER_4_5: + 2024-10-01: 50.85 + 2025-10-01: 50.85 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_3: + 2024-10-01: 34.95 + 2025-10-01: 34.95 + TIER_4_5: + 2024-10-01: 43.68 + 2025-10-01: 43.68 +MESA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 48.25 + 2025-10-01: 56.22 + TIER_3: + 2024-10-01: 54.63 + 2025-10-01: 65.39 + TIER_4_5: + 2024-10-01: 64.01 + 2025-10-01: 79.71 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 41.06 + 2025-10-01: 41.06 + TIER_3: + 2024-10-01: 44.74 + 2025-10-01: 44.74 + TIER_4_5: + 2024-10-01: 49.75 + 2025-10-01: 50.18 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.75 + 2025-10-01: 26.75 + TIER_3: + 2024-10-01: 31.66 + 2025-10-01: 31.66 + TIER_4_5: + 2024-10-01: 37.4 + 2025-10-01: 37.4 +MINERAL_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +MOFFAT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 50.33 + 2025-10-01: 56.96 + TIER_3: + 2024-10-01: 55.89 + 2025-10-01: 65.64 + TIER_4_5: + 2024-10-01: 71.34 + 2025-10-01: 82.78 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 44.49 + 2025-10-01: 44.49 + TIER_3: + 2024-10-01: 47.03 + 2025-10-01: 47.03 + TIER_4_5: + 2024-10-01: 55.94 + 2025-10-01: 55.94 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 38.22 + 2025-10-01: 38.22 + TIER_3: + 2024-10-01: 40.4 + 2025-10-01: 40.4 + TIER_4_5: + 2024-10-01: 48.04 + 2025-10-01: 48.04 +MONTEZUMA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 48.53 + 2025-10-01: 52.64 + TIER_3: + 2024-10-01: 52.61 + 2025-10-01: 59.92 + TIER_4_5: + 2024-10-01: 61.49 + 2025-10-01: 72.7 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.76 + 2025-10-01: 38.76 + TIER_3: + 2024-10-01: 41 + 2025-10-01: 41 + TIER_4_5: + 2024-10-01: 51.26 + 2025-10-01: 51.26 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 31.95 + 2025-10-01: 31.95 + TIER_3: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_4_5: + 2024-10-01: 36.04 + 2025-10-01: 36.04 +MONTROSE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 45.48 + 2025-10-01: 51.31 + TIER_3: + 2024-10-01: 51.04 + 2025-10-01: 59.35 + TIER_4_5: + 2024-10-01: 59.92 + 2025-10-01: 72.17 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.37 + 2025-10-01: 33.37 + TIER_3: + 2024-10-01: 38.45 + 2025-10-01: 38.45 + TIER_4_5: + 2024-10-01: 44.37 + 2025-10-01: 44.58 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 24.02 + 2025-10-01: 24.02 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 32.75 + 2025-10-01: 32.75 +MORGAN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 43.35 + 2025-10-01: 49.24 + TIER_3: + 2024-10-01: 49.41 + 2025-10-01: 57.33 + TIER_4_5: + 2024-10-01: 58.91 + 2025-10-01: 70.14 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 35.27 + 2025-10-01: 35.27 + TIER_3: + 2024-10-01: 38.45 + 2025-10-01: 38.45 + TIER_4_5: + 2024-10-01: 44.18 + 2025-10-01: 44.18 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.11 + 2025-10-01: 28.11 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 31.66 + 2025-10-01: 31.66 +OTERO_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.65 + 2025-10-01: 46.62 + TIER_3: + 2024-10-01: 45.45 + 2025-10-01: 54.47 + TIER_4_5: + 2024-10-01: 54.05 + 2025-10-01: 66.67 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.31 + 2025-10-01: 33.31 + TIER_3: + 2024-10-01: 37.16 + 2025-10-01: 37.16 + TIER_4_5: + 2024-10-01: 42.29 + 2025-10-01: 42.29 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.39 + 2025-10-01: 28.39 + TIER_3: + 2024-10-01: 31.66 + 2025-10-01: 31.66 + TIER_4_5: + 2024-10-01: 36.04 + 2025-10-01: 36.04 +OURAY_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 47.34 + 2025-10-01: 52.82 + TIER_3: + 2024-10-01: 53.18 + 2025-10-01: 61.08 + TIER_4_5: + 2024-10-01: 63.65 + 2025-10-01: 74.8 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 37.49 + 2025-10-01: 37.49 + TIER_3: + 2024-10-01: 44.53 + 2025-10-01: 44.53 + TIER_4_5: + 2024-10-01: 52.86 + 2025-10-01: 52.86 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 21.39 + 2025-10-01: 21.48 + TIER_3: + 2024-10-01: 32.48 + 2025-10-01: 32.48 + TIER_4_5: + 2024-10-01: 37.93 + 2025-10-01: 37.93 +PARK_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 51.69 + 2025-10-01: 61.36 + TIER_3: + 2024-10-01: 60.1 + 2025-10-01: 72.19 + TIER_4_5: + 2024-10-01: 73.57 + 2025-10-01: 89.56 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 39.17 + 2025-10-01: 39.17 + TIER_3: + 2024-10-01: 54.47 + 2025-10-01: 54.47 + TIER_4_5: + 2024-10-01: 55.38 + 2025-10-01: 55.68 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 36.39 + 2025-10-01: 36.39 + TIER_3: + 2024-10-01: 40.4 + 2025-10-01: 40.4 + TIER_4_5: + 2024-10-01: 41.49 + 2025-10-01: 41.49 +PHILLIPS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 38.99 + 2025-10-01: 46.57 + TIER_3: + 2024-10-01: 43.97 + 2025-10-01: 54.05 + TIER_4_5: + 2024-10-01: 50.06 + 2025-10-01: 65.06 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 28.37 + 2025-10-01: 28.54 + TIER_3: + 2024-10-01: 34.6 + 2025-10-01: 34.6 + TIER_4_5: + 2024-10-01: 37.83 + 2025-10-01: 40.15 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26 + 2025-10-01: 26 + TIER_3: + 2024-10-01: 29.48 + 2025-10-01: 29.48 + TIER_4_5: + 2024-10-01: 30.29 + 2025-10-01: 30.29 +PITKIN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 80.44 + 2025-10-01: 80.44 + TIER_3: + 2024-10-01: 81.58 + 2025-10-01: 81.58 + TIER_4_5: + 2024-10-01: 88.12 + 2025-10-01: 93.6 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 81.67 + 2025-10-01: 81.67 + TIER_3: + 2024-10-01: 82.83 + 2025-10-01: 82.83 + TIER_4_5: + 2024-10-01: 84.01 + 2025-10-01: 84.01 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 66.33 + 2025-10-01: 66.33 + TIER_3: + 2024-10-01: 77.53 + 2025-10-01: 77.53 + TIER_4_5: + 2024-10-01: 78.62 + 2025-10-01: 78.62 +PROWERS_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.33 + 2025-10-01: 46.61 + TIER_3: + 2024-10-01: 46.84 + 2025-10-01: 55.34 + TIER_4_5: + 2024-10-01: 55.46 + 2025-10-01: 67.58 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 30.11 + 2025-10-01: 30.11 + TIER_3: + 2024-10-01: 35.88 + 2025-10-01: 35.88 + TIER_4_5: + 2024-10-01: 42.07 + 2025-10-01: 42.17 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.2 + 2025-10-01: 26.2 + TIER_3: + 2024-10-01: 31.39 + 2025-10-01: 31.39 + TIER_4_5: + 2024-10-01: 36.31 + 2025-10-01: 36.31 +PUEBLO_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 44.68 + 2025-10-01: 54.53 + TIER_3: + 2024-10-01: 53.28 + 2025-10-01: 64.82 + TIER_4_5: + 2024-10-01: 62.24 + 2025-10-01: 78.92 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.03 + 2025-10-01: 33.59 + TIER_3: + 2024-10-01: 38.41 + 2025-10-01: 39.46 + TIER_4_5: + 2024-10-01: 44.44 + 2025-10-01: 47.58 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 24.02 + 2025-10-01: 24.02 + TIER_3: + 2024-10-01: 27.61 + 2025-10-01: 27.94 + TIER_4_5: + 2024-10-01: 32.15 + 2025-10-01: 33.77 +RIO_BLANCO_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 45.83 + 2025-10-01: 53.95 + TIER_3: + 2024-10-01: 52.82 + 2025-10-01: 63.22 + TIER_4_5: + 2024-10-01: 62.74 + 2025-10-01: 77.47 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 33.33 + 2025-10-01: 33.33 + TIER_3: + 2024-10-01: 43.56 + 2025-10-01: 43.56 + TIER_4_5: + 2024-10-01: 57.66 + 2025-10-01: 57.66 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.3 + 2025-10-01: 27.3 + TIER_3: + 2024-10-01: 28.39 + 2025-10-01: 28.39 + TIER_4_5: + 2024-10-01: 33.2 + 2025-10-01: 33.66 +RIO_GRANDE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +ROUTT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 59.9 + 2025-10-01: 62.39 + TIER_3: + 2024-10-01: 75.39 + 2025-10-01: 76.1 + TIER_4_5: + 2024-10-01: 85.34 + 2025-10-01: 90.64 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 54.54 + 2025-10-01: 54.54 + TIER_3: + 2024-10-01: 73.5 + 2025-10-01: 73.5 + TIER_4_5: + 2024-10-01: 80.79 + 2025-10-01: 80.79 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 49.13 + 2025-10-01: 49.13 + TIER_3: + 2024-10-01: 52.96 + 2025-10-01: 52.96 + TIER_4_5: + 2024-10-01: 67.7 + 2025-10-01: 67.7 +SAGUACHE_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.73 + 2025-10-01: 47.05 + TIER_3: + 2024-10-01: 44.76 + 2025-10-01: 54.57 + TIER_4_5: + 2024-10-01: 51.86 + 2025-10-01: 66.11 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 31.7 + 2025-10-01: 31.7 + TIER_3: + 2024-10-01: 39.57 + 2025-10-01: 39.57 + TIER_4_5: + 2024-10-01: 43.81 + 2025-10-01: 43.81 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.02 + 2025-10-01: 28.02 + TIER_3: + 2024-10-01: 31.21 + 2025-10-01: 32.13 + TIER_4_5: + 2024-10-01: 35.45 + 2025-10-01: 36.96 +SAN_JUAN_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 48.59 + 2025-10-01: 53.09 + TIER_3: + 2024-10-01: 56.3 + 2025-10-01: 62.23 + TIER_4_5: + 2024-10-01: 63.97 + 2025-10-01: 74.49 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 38.89 + 2025-10-01: 38.89 + TIER_3: + 2024-10-01: 44.85 + 2025-10-01: 44.85 + TIER_4_5: + 2024-10-01: 48.38 + 2025-10-01: 48.38 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.75 + 2025-10-01: 26.75 + TIER_3: + 2024-10-01: 34.4 + 2025-10-01: 34.4 + TIER_4_5: + 2024-10-01: 34.95 + 2025-10-01: 34.95 +SAN_MIGUEL_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 50.43 + 2025-10-01: 54.4 + TIER_3: + 2024-10-01: 57.42 + 2025-10-01: 63.24 + TIER_4_5: + 2024-10-01: 66.49 + 2025-10-01: 76.27 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 45.21 + 2025-10-01: 45.21 + TIER_3: + 2024-10-01: 49.3 + 2025-10-01: 49.3 + TIER_4_5: + 2024-10-01: 51.04 + 2025-10-01: 51.04 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.75 + 2025-10-01: 26.75 + TIER_3: + 2024-10-01: 34.66 + 2025-10-01: 34.66 + TIER_4_5: + 2024-10-01: 48.33 + 2025-10-01: 48.33 +SEDGWICK_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 40.66 + 2025-10-01: 47.36 + TIER_3: + 2024-10-01: 47.33 + 2025-10-01: 55.68 + TIER_4_5: + 2024-10-01: 55.74 + 2025-10-01: 67.84 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 30 + 2025-10-01: 30 + TIER_3: + 2024-10-01: 37.49 + 2025-10-01: 37.49 + TIER_4_5: + 2024-10-01: 41.03 + 2025-10-01: 41.72 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 28.08 + 2025-10-01: 28.08 + TIER_3: + 2024-10-01: 30.57 + 2025-10-01: 30.57 + TIER_4_5: + 2024-10-01: 33.57 + 2025-10-01: 33.57 +SUMMIT_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 57.42 + 2025-10-01: 61.48 + TIER_3: + 2024-10-01: 64.09 + 2025-10-01: 70.85 + TIER_4_5: + 2024-10-01: 74.66 + 2025-10-01: 85.75 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 51.34 + 2025-10-01: 51.34 + TIER_3: + 2024-10-01: 57.17 + 2025-10-01: 57.17 + TIER_4_5: + 2024-10-01: 62.71 + 2025-10-01: 62.71 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 46.95 + 2025-10-01: 46.95 + TIER_3: + 2024-10-01: 52.96 + 2025-10-01: 52.96 + TIER_4_5: + 2024-10-01: 57.33 + 2025-10-01: 57.33 +TELLER_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 49.01 + 2025-10-01: 54.56 + TIER_3: + 2024-10-01: 57.65 + 2025-10-01: 64.41 + TIER_4_5: + 2024-10-01: 67.62 + 2025-10-01: 78.2 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 44.22 + 2025-10-01: 44.22 + TIER_3: + 2024-10-01: 48.96 + 2025-10-01: 48.96 + TIER_4_5: + 2024-10-01: 55.27 + 2025-10-01: 55.27 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 33.31 + 2025-10-01: 33.31 + TIER_3: + 2024-10-01: 41.49 + 2025-10-01: 41.49 + TIER_4_5: + 2024-10-01: 45.32 + 2025-10-01: 45.32 +WASHINGTON_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.12 + 2025-10-01: 46.82 + TIER_3: + 2024-10-01: 43.27 + 2025-10-01: 53.92 + TIER_4_5: + 2024-10-01: 51.93 + 2025-10-01: 66.25 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 32.04 + 2025-10-01: 32.04 + TIER_3: + 2024-10-01: 33.62 + 2025-10-01: 33.93 + TIER_4_5: + 2024-10-01: 39.86 + 2025-10-01: 41.3 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 27.3 + 2025-10-01: 27.3 + TIER_3: + 2024-10-01: 28.39 + 2025-10-01: 28.39 + TIER_4_5: + 2024-10-01: 32.75 + 2025-10-01: 32.75 +WELD_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 56.2 + 2025-10-01: 58.32 + TIER_3: + 2024-10-01: 64.05 + 2025-10-01: 67.82 + TIER_4_5: + 2024-10-01: 74.5 + 2025-10-01: 81.95 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 37.27 + 2025-10-01: 37.27 + TIER_3: + 2024-10-01: 42.95 + 2025-10-01: 42.95 + TIER_4_5: + 2024-10-01: 50.53 + 2025-10-01: 50.53 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 29.2 + 2025-10-01: 29.2 + TIER_3: + 2024-10-01: 32.75 + 2025-10-01: 32.75 + TIER_4_5: + 2024-10-01: 39.03 + 2025-10-01: 39.03 +YUMA_COUNTY_CO: + MONTHS_0_TO_24: + TIER_1_2: + 2024-10-01: 39.06 + 2025-10-01: 46.72 + TIER_3: + 2024-10-01: 42.79 + 2025-10-01: 53.59 + TIER_4_5: + 2024-10-01: 48.9 + 2025-10-01: 64.63 + MONTHS_24_TO_YEARS_6: + TIER_1_2: + 2024-10-01: 30.75 + 2025-10-01: 30.75 + TIER_3: + 2024-10-01: 32.73 + 2025-10-01: 33.44 + TIER_4_5: + 2024-10-01: 36.38 + 2025-10-01: 39.51 + SCHOOL_AGE: + TIER_1_2: + 2024-10-01: 26.2 + 2025-10-01: 26.2 + TIER_3: + 2024-10-01: 27.3 + 2025-10-01: 27.3 + TIER_4_5: + 2024-10-01: 28.83 + 2025-10-01: 29.28 diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml new file mode 100644 index 00000000000..958f3ac73e5 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml @@ -0,0 +1,372 @@ +description: Colorado pays qualified exempt child care providers up to these full-time daily rates under the Child Care Assistance Program, by county and age band. +metadata: + propagate_metadata_to_children: true + unit: currency-USD + period: day + label: Colorado CCCAP qualified exempt provider full-time daily rates + breakdown: + - county + - co_ccap_qualified_exempt_age_band + breakdown_labels: + - County + - Age band + reference: + - title: 8 CCR 1403-1 3.130(B) and (D), rate types by provider type and qualified exempt rates set by counties + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 + - title: CDEC, County CCCAP Policies and Rate Plans (County Ceiling Rates, Provider Type Exempt, Regular rate type) + href: https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_ + +ADAMS_COUNTY_CO: + UNDER_5: + 2024-10-01: 21.16 + AGE_5_AND_OVER: + 2024-10-01: 21.16 +ALAMOSA_COUNTY_CO: + UNDER_5: + 2024-10-01: 14.52 + AGE_5_AND_OVER: + 2024-10-01: 14.52 +ARAPAHOE_COUNTY_CO: + UNDER_5: + 2024-10-01: 15.75 + AGE_5_AND_OVER: + 2024-10-01: 15.75 +ARCHULETA_COUNTY_CO: + UNDER_5: + 2024-10-01: 24 + AGE_5_AND_OVER: + 2024-10-01: 24 +BACA_COUNTY_CO: + UNDER_5: + 2024-10-01: 20 + AGE_5_AND_OVER: + 2024-10-01: 20 +BENT_COUNTY_CO: + UNDER_5: + 2024-10-01: 20 + AGE_5_AND_OVER: + 2024-10-01: 15 +BOULDER_COUNTY_CO: + UNDER_5: + 2024-10-01: 11.55 + AGE_5_AND_OVER: + 2024-10-01: 11.55 +BROOMFIELD_COUNTY_CO: + UNDER_5: + 2024-10-01: 19.37 + AGE_5_AND_OVER: + 2024-10-01: 12.13 +CHAFFEE_COUNTY_CO: + UNDER_5: + 2024-10-01: 30 + 2025-10-01: 40.24 + AGE_5_AND_OVER: + 2024-10-01: 25 +CHEYENNE_COUNTY_CO: + UNDER_5: + 2024-10-01: 20 + AGE_5_AND_OVER: + 2024-10-01: 15.5 +CLEAR_CREEK_COUNTY_CO: + UNDER_5: + 2024-10-01: 39.42 + 2025-10-01: 37.56 + AGE_5_AND_OVER: + 2024-10-01: 25.04 + 2025-10-01: 20.8 +CONEJOS_COUNTY_CO: + UNDER_5: + 2024-10-01: 21.85 + 2025-10-01: 25.88 + AGE_5_AND_OVER: + 2024-10-01: 17.44 +COSTILLA_COUNTY_CO: + UNDER_5: + 2024-10-01: 23 + AGE_5_AND_OVER: + 2024-10-01: 21 +CROWLEY_COUNTY_CO: + UNDER_5: + 2024-10-01: 21.2 + 2025-10-01: 24.22 + AGE_5_AND_OVER: + 2024-10-01: 11.74 +CUSTER_COUNTY_CO: + UNDER_5: + 2024-10-01: 14.75 + AGE_5_AND_OVER: + 2024-10-01: 12.25 +DELTA_COUNTY_CO: + UNDER_5: + 2024-10-01: 14.79 + AGE_5_AND_OVER: + 2024-10-01: 14.79 +DENVER_COUNTY_CO: + UNDER_5: + 2024-10-01: 24.66 + AGE_5_AND_OVER: + 2024-10-01: 19.67 +DOLORES_COUNTY_CO: + UNDER_5: + 2024-10-01: 14.3 + 2025-10-01: 12.15 + AGE_5_AND_OVER: + 2024-10-01: 13 + 2025-10-01: 8.33 +DOUGLAS_COUNTY_CO: + UNDER_5: + 2024-10-01: 24.15 + AGE_5_AND_OVER: + 2024-10-01: 16.39 +EAGLE_COUNTY_CO: + UNDER_5: + 2024-10-01: 42 + 2025-10-01: 45 + AGE_5_AND_OVER: + 2024-10-01: 36 +ELBERT_COUNTY_CO: + UNDER_5: + 2024-10-01: 10 + AGE_5_AND_OVER: + 2024-10-01: 10 +EL_PASO_COUNTY_CO: + UNDER_5: + 2024-10-01: 13.91 + AGE_5_AND_OVER: + 2024-10-01: 11.19 +FREMONT_COUNTY_CO: + UNDER_5: + 2024-10-01: 19.7 + 2025-10-01: 24.11 + AGE_5_AND_OVER: + 2024-10-01: 13 +GARFIELD_COUNTY_CO: + UNDER_5: + 2024-10-01: 40 + AGE_5_AND_OVER: + 2024-10-01: 32 +GILPIN_COUNTY_CO: + UNDER_5: + 2024-10-01: 25 + AGE_5_AND_OVER: + 2024-10-01: 25 +GRAND_COUNTY_CO: + UNDER_5: + 2024-10-01: 30 + 2025-10-01: 40 + AGE_5_AND_OVER: + 2024-10-01: 25 + 2025-10-01: 40 +GUNNISON_COUNTY_CO: + UNDER_5: + 2024-10-01: 31.21 + 2025-10-01: 35.99 + AGE_5_AND_OVER: + 2024-10-01: 22.93 +HINSDALE_COUNTY_CO: + UNDER_5: + 2024-10-01: 30.98 + 2025-10-01: 35.55 + AGE_5_AND_OVER: + 2024-10-01: 22.93 +HUERFANO_COUNTY_CO: + UNDER_5: + 2024-10-01: 22 + 2025-10-01: 25.58 + AGE_5_AND_OVER: + 2024-10-01: 18.91 +JACKSON_COUNTY_CO: + UNDER_5: + 2024-10-01: 25 + AGE_5_AND_OVER: + 2024-10-01: 25 +JEFFERSON_COUNTY_CO: + UNDER_5: + 2024-10-01: 21 + AGE_5_AND_OVER: + 2024-10-01: 21 +KIOWA_COUNTY_CO: + UNDER_5: + 2024-10-01: 28.41 + 2025-10-01: 34.44 + AGE_5_AND_OVER: + 2024-10-01: 17.94 +KIT_CARSON_COUNTY_CO: + UNDER_5: + 2024-10-01: 20 + AGE_5_AND_OVER: + 2024-10-01: 18 +LAKE_COUNTY_CO: + UNDER_5: + 2024-10-01: 20 + AGE_5_AND_OVER: + 2024-10-01: 20 +LARIMER_COUNTY_CO: + UNDER_5: + 2024-10-01: 38.15 + 2025-10-01: 44.78 + AGE_5_AND_OVER: + 2024-10-01: 26.13 +LAS_ANIMAS_COUNTY_CO: + UNDER_5: + 2024-10-01: 31.17 + 2025-10-01: 25.58 + AGE_5_AND_OVER: + 2024-10-01: 18.91 +LA_PLATA_COUNTY_CO: + UNDER_5: + 2024-10-01: 33.71 + 2025-10-01: 38.43 + AGE_5_AND_OVER: + 2024-10-01: 25.73 +LINCOLN_COUNTY_CO: + UNDER_5: + 2024-10-01: 12.5 + AGE_5_AND_OVER: + 2024-10-01: 11 +LOGAN_COUNTY_CO: + UNDER_5: + 2024-10-01: 24 + 2026-06-01: 30 + AGE_5_AND_OVER: + 2024-10-01: 24 +MESA_COUNTY_CO: + UNDER_5: + 2024-10-01: 18 + AGE_5_AND_OVER: + 2024-10-01: 14 +MINERAL_COUNTY_CO: + UNDER_5: + 2024-10-01: 17.05 + AGE_5_AND_OVER: + 2024-10-01: 15.05 +MOFFAT_COUNTY_CO: + UNDER_5: + 2024-10-01: 25.16 + 2025-10-01: 28.48 + AGE_5_AND_OVER: + 2024-10-01: 19.11 +MONTEZUMA_COUNTY_CO: + UNDER_5: + 2024-10-01: 35 + AGE_5_AND_OVER: + 2024-10-01: 23.75 +MONTROSE_COUNTY_CO: + UNDER_5: + 2024-10-01: 18 + AGE_5_AND_OVER: + 2024-10-01: 18 +MORGAN_COUNTY_CO: + UNDER_5: + 2024-10-01: 21.08 + AGE_5_AND_OVER: + 2024-10-01: 21.08 +OTERO_COUNTY_CO: + UNDER_5: + 2024-10-01: 25 + AGE_5_AND_OVER: + 2024-10-01: 23 +OURAY_COUNTY_CO: + UNDER_5: + 2024-10-01: 30 + AGE_5_AND_OVER: + 2024-10-01: 22 +PARK_COUNTY_CO: + UNDER_5: + 2024-10-01: 38.77 + 2025-10-01: 46.02 + AGE_5_AND_OVER: + 2024-10-01: 27.52 + 2025-10-01: 27.29 +PHILLIPS_COUNTY_CO: + UNDER_5: + 2024-10-01: 27.29 + AGE_5_AND_OVER: + 2024-10-01: 18.2 +PITKIN_COUNTY_CO: + UNDER_5: + 2024-10-01: 44 + AGE_5_AND_OVER: + 2024-10-01: 39 +PROWERS_COUNTY_CO: + UNDER_5: + 2024-10-01: 29.49 + 2025-11-01: 29.37 + AGE_5_AND_OVER: + 2024-10-01: 19.65 + 2025-11-01: 16.51 +PUEBLO_COUNTY_CO: + UNDER_5: + 2024-10-01: 18.7 + AGE_5_AND_OVER: + 2024-10-01: 16.5 +RIO_BLANCO_COUNTY_CO: + UNDER_5: + 2024-10-01: 22.5 + AGE_5_AND_OVER: + 2024-10-01: 20 +RIO_GRANDE_COUNTY_CO: + UNDER_5: + 2024-10-01: 17.05 + AGE_5_AND_OVER: + 2024-10-01: 15.05 +ROUTT_COUNTY_CO: + UNDER_5: + 2024-10-01: 35.94 + AGE_5_AND_OVER: + 2024-10-01: 29.48 +SAGUACHE_COUNTY_CO: + UNDER_5: + 2024-10-01: 15.4 + AGE_5_AND_OVER: + 2024-10-01: 15.4 +SAN_JUAN_COUNTY_CO: + UNDER_5: + 2024-10-01: 36.44 + 2025-10-01: 39.82 + AGE_5_AND_OVER: + 2024-10-01: 20.06 +SAN_MIGUEL_COUNTY_CO: + UNDER_5: + 2024-10-01: 37 + AGE_5_AND_OVER: + 2024-10-01: 26 +SEDGWICK_COUNTY_CO: + UNDER_5: + 2024-10-01: 16.5 + AGE_5_AND_OVER: + 2024-10-01: 15 +SUMMIT_COUNTY_CO: + UNDER_5: + 2024-10-01: 40.75 + 2025-10-01: 46.25 + AGE_5_AND_OVER: + 2024-10-01: 37.75 + 2025-10-01: 35.5 +TELLER_COUNTY_CO: + UNDER_5: + 2024-10-01: 24.51 + 2025-10-01: 27.28 + AGE_5_AND_OVER: + 2024-10-01: 16.66 +WASHINGTON_COUNTY_CO: + UNDER_5: + 2024-10-01: 16 + AGE_5_AND_OVER: + 2024-10-01: 16 +WELD_COUNTY_CO: + UNDER_5: + 2024-10-01: 42.15 + 2025-02-01: 28.1 + 2025-10-01: 29.16 + AGE_5_AND_OVER: + 2024-10-01: 21.9 + 2025-02-01: 14.6 +YUMA_COUNTY_CO: + UNDER_5: + 2024-10-01: 29.3 + 2025-10-01: 35.04 + AGE_5_AND_OVER: + 2024-10-01: 19.65 diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_capped_parent_fee.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_capped_parent_fee.py new file mode 100644 index 00000000000..a8b5f1eef7c --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_capped_parent_fee.py @@ -0,0 +1,22 @@ +from policyengine_us.model_api import * + + +class co_ccap_capped_parent_fee(Variable): + value_type = float + entity = SPMUnit + unit = USD + definition_period = MONTH + label = ( + "Colorado Child Care Assistance Program parent fee, capped at the reimbursement" + ) + defined_for = "co_ccap_eligible" + reference = ( + # 8 CCR 1403-1 3.124(K) and (L), PDF page 82: the fee pays the first + # dollars of care and never exceeds the CCCAP reimbursement. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=82", + ) + + def formula(spm_unit, period, parameters): + fee = spm_unit("co_ccap_parent_fee", period) + reimbursement = spm_unit("co_ccap_reimbursement", period) + return min_(fee, reimbursement) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py new file mode 100644 index 00000000000..e668f218b97 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py @@ -0,0 +1,31 @@ +from policyengine_us.model_api import * + + +class co_ccap_reimbursement(Variable): + value_type = float + entity = SPMUnit + unit = USD + definition_period = MONTH + label = "Colorado Child Care Assistance Program reimbursement for the eligible children's care" + defined_for = "co_ccap_eligible" + reference = ( + # 8 CCR 1403-1 3.125(FFF), PDF page 101: the lesser of the provider's + # private pay rate and the county reimbursement rate. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", + # 3.130, PDF pages 118 and 119: the county reimbursement rates. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118", + # 3.132(D) and (E), PDF page 126: the children whose care CCCAP pays. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=126", + ) + + def formula(spm_unit, period, parameters): + person = spm_unit.members + eligible_child = person("co_ccap_child_eligible", period) + charge = add( + person, + period, + ["pre_subsidy_childcare_expenses", "after_school_expenses"], + ) + county_rate = person("co_ccap_maximum_monthly_payment", period) + reimbursable = min_(max_(charge, 0), county_rate) + return spm_unit.sum(reimbursable * eligible_child) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py index 9e766b1e68b..57f363bab1e 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py @@ -13,22 +13,22 @@ class co_ccap_subsidy(Variable): "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=9", # 3.111(F), PDF page 35 "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=35", + # 3.124(K) and (L), PDF page 82 + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=82", + # 3.125(FFF), PDF page 101 + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", # 3.132(D) and (E), PDF page 126 "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=126", ) def formula(spm_unit, period, parameters): - person = spm_unit.members - # 8 CCR 1403-1 3.132(D) and (E) pay for the care of eligible children: - # children under 13, and children under 19 who can't care for - # themselves or who are under court supervision (3.103(UU), 3.111(F)). - # A member outside those limits, such as a teenager, adds nothing. - eligible_child = person("co_ccap_child_eligible", period) - charge = add( - person, - period, - ["pre_subsidy_childcare_expenses", "after_school_expenses"], - ) - expenses = spm_unit.sum(charge * eligible_child) - parent_fee = spm_unit("co_ccap_parent_fee", period) - return max_(expenses - parent_fee, 0) + # The county pays the lesser of each eligible child's charges and the + # county rate for that child's care (3.125(FFF), 3.130), less the + # parent fee, which pays the first dollars (3.124(K)) and never + # exceeds the reimbursement (3.124(L)). Eligible children are those + # 3.132(D) and (E) cover: children under 13, and children under 19 + # who can't care for themselves or who are under court supervision + # (3.103(UU), 3.111(F)). A member outside those limits adds nothing. + reimbursement = spm_unit("co_ccap_reimbursement", period) + parent_fee = spm_unit("co_ccap_capped_parent_fee", period) + return max_(reimbursement - parent_fee, 0) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py new file mode 100644 index 00000000000..4ce11a52bb4 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py @@ -0,0 +1,31 @@ +from policyengine_us.model_api import * + +# Without a schedule, read a five-day week of care. +DEFAULT_DAYS_PER_WEEK = 5 + + +class co_ccap_care_days_per_month(Variable): + value_type = float + entity = Person + unit = "day" + definition_period = MONTH + label = "Colorado Child Care Assistance Program days of care a month" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(C), PDF page 119: daily rates. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + # 3.130(E) and (F), PDF pages 119 and 120: paid absences and drop-in + # days. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=120", + ) + + def formula(person, period, parameters): + days_per_week = person("childcare_days_per_week", period.this_year) + attending_days = person("childcare_attending_days_per_month", period.this_year) + # The scheduled days count the absences that counties pay within an + # authorized schedule (3.130(E)); attending days above the schedule + # count the drop-in days a county may pay (3.130(F)). + scheduled_days = days_per_week * WEEKS_IN_YEAR / MONTHS_IN_YEAR + days = max_(scheduled_days, attending_days) + default_days = DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR + return where(days > 0, days, default_days) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py new file mode 100644 index 00000000000..af8638f8634 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py @@ -0,0 +1,28 @@ +from policyengine_us.model_api import * + +# The full-time unit pays the full-time daily rate itself. +FULL_TIME_UNIT = 1 + + +class co_ccap_care_unit(Variable): + value_type = float + entity = Person + unit = "/1" + definition_period = MONTH + label = "Colorado Child Care Assistance Program share of the full-time daily rate for the child's hours" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(C), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.co.ccap.rates + hours = person("childcare_hours_per_day", period.this_year) + # Without hours of care, read the full-time unit: the schedule that + # the daily rate prices. A user who knows the hours enters them. + return where( + hours > 0, + p.care_unit.calc(hours, right=True), + FULL_TIME_UNIT, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_center_age_band.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_center_age_band.py new file mode 100644 index 00000000000..c67aa0ec0e3 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_center_age_band.py @@ -0,0 +1,40 @@ +from policyengine_us.model_api import * + + +class COCCAPCenterAgeBand(Enum): + MONTHS_0_TO_18 = "0 to 18 months" + MONTHS_18_TO_36 = "18 to 36 months" + MONTHS_36_TO_YEARS_6 = "36 months to 6 years" + SCHOOL_AGE = "School age" + + +class co_ccap_center_age_band(Variable): + value_type = Enum + entity = Person + possible_values = COCCAPCenterAgeBand + default_value = COCCAPCenterAgeBand.MONTHS_0_TO_18 + definition_period = MONTH + label = "Colorado Child Care Assistance Program licensed center rate age band" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(A), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + "https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.co.ccap.rates.age_band + age_in_months = person("monthly_age", period) * MONTHS_IN_YEAR + return select( + [ + age_in_months < p.center_months_18_to_36_minimum, + age_in_months < p.center_months_36_to_years_6_minimum, + age_in_months < p.school_age_minimum, + ], + [ + COCCAPCenterAgeBand.MONTHS_0_TO_18, + COCCAPCenterAgeBand.MONTHS_18_TO_36, + COCCAPCenterAgeBand.MONTHS_36_TO_YEARS_6, + ], + default=COCCAPCenterAgeBand.SCHOOL_AGE, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py new file mode 100644 index 00000000000..370a0a9a939 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py @@ -0,0 +1,27 @@ +from policyengine_us.model_api import * + + +class co_ccap_daily_rate(Variable): + value_type = float + entity = Person + unit = USD + definition_period = MONTH + label = ( + "Colorado Child Care Assistance Program daily rate for the child's care unit" + ) + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(C), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + # Each county rate plan lists the PT, FTPT and FTFT rates CHATS pays. + "https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_", + ) + + def formula(person, period, parameters): + full_time_rate = person("co_ccap_full_time_daily_rate", period) + unit = person("co_ccap_care_unit", period) + # The county rate plans round each unit's rate half up to the cent: a + # $60.90 full-time rate pays $33.50 part time (60.90 x 0.55 = 33.495). + # Working in whole cents keeps the halves exact. + cents = np.round(full_time_rate * 100) * np.round(unit * 100) / 100 + return np.floor(cents + 0.5) / 100 diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py new file mode 100644 index 00000000000..fea3e1cd413 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py @@ -0,0 +1,48 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.gov.states.co.ccap.rates.co_ccap_provider_type import ( + COCCAPProviderType, +) + + +class co_ccap_full_time_daily_rate(Variable): + value_type = float + entity = Person + unit = USD + definition_period = MONTH + label = "Colorado Child Care Assistance Program full-time daily rate for the child's provider" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130, PDF pages 118 and 119: state-established + # licensed rates by age band, provider type and quality level, and + # county rates for qualified exempt providers. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118", + "https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view", + "https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.co.ccap.rates + county = person.household("county_str", period.this_year) + # A county outside Colorado's list, such as one the household doesn't + # report, reads Denver's rates, as co_ccap_fpg_eligible does. + colorado_counties = np.array(list(p.qualified_exempt._children)) + county = np.where( + np.isin(county, colorado_counties), county, "DENVER_COUNTY_CO" + ) + tier = person("co_ccap_quality_tier", period) + center = p.licensed_center[county][person("co_ccap_center_age_band", period)][ + tier + ] + home = p.licensed_home[county][person("co_ccap_home_age_band", period)][tier] + qualified_exempt = p.qualified_exempt[county][ + person("co_ccap_qualified_exempt_age_band", period) + ] + provider_type = person("co_ccap_provider_type", period) + return select( + [ + provider_type == COCCAPProviderType.LICENSED_CENTER, + provider_type == COCCAPProviderType.LICENSED_HOME, + ], + [center, home], + default=qualified_exempt, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_home_age_band.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_home_age_band.py new file mode 100644 index 00000000000..bd1b19f12f0 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_home_age_band.py @@ -0,0 +1,37 @@ +from policyengine_us.model_api import * + + +class COCCAPHomeAgeBand(Enum): + MONTHS_0_TO_24 = "0 to 24 months" + MONTHS_24_TO_YEARS_6 = "24 months to 6 years" + SCHOOL_AGE = "School age" + + +class co_ccap_home_age_band(Variable): + value_type = Enum + entity = Person + possible_values = COCCAPHomeAgeBand + default_value = COCCAPHomeAgeBand.MONTHS_0_TO_24 + definition_period = MONTH + label = "Colorado Child Care Assistance Program licensed home rate age band" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(A), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + "https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.co.ccap.rates.age_band + age_in_months = person("monthly_age", period) * MONTHS_IN_YEAR + return select( + [ + age_in_months < p.home_months_24_to_years_6_minimum, + age_in_months < p.school_age_minimum, + ], + [ + COCCAPHomeAgeBand.MONTHS_0_TO_24, + COCCAPHomeAgeBand.MONTHS_24_TO_YEARS_6, + ], + default=COCCAPHomeAgeBand.SCHOOL_AGE, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py new file mode 100644 index 00000000000..e5aec28be14 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py @@ -0,0 +1,21 @@ +from policyengine_us.model_api import * + + +class co_ccap_maximum_monthly_payment(Variable): + value_type = float + entity = Person + unit = USD + definition_period = MONTH + label = "Colorado Child Care Assistance Program county rate for the child's care in a month" + defined_for = "co_ccap_child_eligible" + reference = ( + # 8 CCR 1403-1 3.125(FFF), PDF page 101. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", + # 3.130(C), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + ) + + def formula(person, period, parameters): + daily_rate = person("co_ccap_daily_rate", period) + days = person("co_ccap_care_days_per_month", period) + return daily_rate * days diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py new file mode 100644 index 00000000000..3042e99b77a --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py @@ -0,0 +1,42 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.household.expense.childcare.childcare_provider_type_group import ( + ChildcareProviderTypeGroup, +) + + +class COCCAPProviderType(Enum): + LICENSED_CENTER = "Licensed child care center" + LICENSED_HOME = "Licensed family child care home" + QUALIFIED_EXEMPT = "Qualified exempt child care provider" + + +class co_ccap_provider_type(Variable): + value_type = Enum + entity = Person + possible_values = COCCAPProviderType + default_value = COCCAPProviderType.LICENSED_CENTER + definition_period = MONTH + label = "Colorado Child Care Assistance Program provider type" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(B), PDF page 119: rate types by provider type. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + # 3.103(MMMM), PDF page 17: qualified exempt child care provider. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=17", + ) + + def formula(person, period, parameters): + provider_type = person("childcare_provider_type_group", period.this_year) + # Colorado pays license-exempt care only through qualified exempt + # providers, so every license-exempt group takes the Exempt rates. + return select( + [ + provider_type == ChildcareProviderTypeGroup.DCC_SACC, + provider_type == ChildcareProviderTypeGroup.FDC_GFDC, + ], + [ + COCCAPProviderType.LICENSED_CENTER, + COCCAPProviderType.LICENSED_HOME, + ], + default=COCCAPProviderType.QUALIFIED_EXEMPT, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_qualified_exempt_age_band.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_qualified_exempt_age_band.py new file mode 100644 index 00000000000..1cec4b003ae --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_qualified_exempt_age_band.py @@ -0,0 +1,31 @@ +from policyengine_us.model_api import * + + +class COCCAPQualifiedExemptAgeBand(Enum): + UNDER_5 = "Under 5 years" + AGE_5_AND_OVER = "5 years and over" + + +class co_ccap_qualified_exempt_age_band(Variable): + value_type = Enum + entity = Person + possible_values = COCCAPQualifiedExemptAgeBand + default_value = COCCAPQualifiedExemptAgeBand.UNDER_5 + definition_period = MONTH + label = "Colorado Child Care Assistance Program qualified exempt rate age band" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130(A), PDF page 119. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", + # County rate plans, Provider Type (Exempt): Regular <5 Years, >5 Years. + "https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.co.ccap.rates.age_band + age_in_months = person("monthly_age", period) * MONTHS_IN_YEAR + return where( + age_in_months < p.qualified_exempt_age_5_and_over_minimum, + COCCAPQualifiedExemptAgeBand.UNDER_5, + COCCAPQualifiedExemptAgeBand.AGE_5_AND_OVER, + ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_quality_tier.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_quality_tier.py new file mode 100644 index 00000000000..9ea07148733 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_quality_tier.py @@ -0,0 +1,32 @@ +from policyengine_us.model_api import * + + +class COCCAPQualityTier(Enum): + TIER_1_2 = "Colorado Shines level 1 or 2" + TIER_3 = "Colorado Shines level 3" + TIER_4_5 = "Colorado Shines level 4 or 5" + + +class co_ccap_quality_tier(Variable): + value_type = Enum + entity = Person + possible_values = COCCAPQualityTier + default_value = COCCAPQualityTier.TIER_1_2 + definition_period = MONTH + label = "Colorado Child Care Assistance Program rate tier of the child's provider" + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.130, PDF page 118: tiered rates by quality level. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118", + "https://drive.google.com/file/d/1wK5dCjkW_uqj06tTd0af9-fC6gAfGu5v/view", + ) + + def formula(person, period, parameters): + # Every licensed provider holds at least level 1, so an unrated + # provider (rating 0) takes the Tier 1 & Tier 2 rates. + rating = person("co_quality_rating_of_child_care_facility", period.this_year) + return select( + [rating >= 4, rating == 3], + [COCCAPQualityTier.TIER_4_5, COCCAPQualityTier.TIER_3], + default=COCCAPQualityTier.TIER_1_2, + ) From 806a5756a13c3a9b2828334d5b1a119edacfe355 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sun, 8 Nov 2026 15:49:32 -0500 Subject: [PATCH 3/6] Test Colorado's county rate cap against CDEC's tables Add YAML cases, recomputed by hand from CDEC's rate tables and the county rate plans, for the full-time rate, care units, days of care, age bands, quality tiers, provider types, the monthly cap and the reimbursement. Add Hypothesis tests for four invariants: 1. Every cell of every table, on every effective date, matches the full-time rate the model reads. 2. Each care unit pays its share of the full-time rate, rounded half up to the cent: 55% for part time, twice the rate for two full-time units. 3. The payment equals the eligible children's charges, each capped at the county rate, less the fee. So it never exceeds the county rates or the charges less the fee, and the capped fee never exceeds the reimbursement. 4. More charges never lower the payment, and a higher fee never raises it. Read Denver's rates for a household with no Colorado county. The tables' county breakdown fills them with every county in the country at zero, so such a household read $0; co_ccap_fpg_eligible already falls back to Denver. Update #10699's subsidy cases and court supervision case 5 for the cap. Co-Authored-By: Claude Opus 5.5 --- .../states/co/ccap/co_ccap_reimbursement.yaml | 152 ++++++ .../gov/states/co/ccap/co_ccap_subsidy.yaml | 34 +- .../gov/states/co/ccap/court_supervision.yaml | 7 +- .../co/ccap/rates/co_ccap_age_bands.yaml | 65 +++ .../rates/co_ccap_care_days_per_month.yaml | 32 ++ .../co/ccap/rates/co_ccap_care_unit.yaml | 43 ++ .../co/ccap/rates/co_ccap_daily_rate.yaml | 36 ++ .../rates/co_ccap_full_time_daily_rate.yaml | 201 +++++++ .../co_ccap_maximum_monthly_payment.yaml | 116 ++++ .../co/ccap/rates/co_ccap_provider_type.yaml | 27 + .../co/ccap/rates/co_ccap_quality_tier.yaml | 23 + .../test_co_ccap_county_rates_properties.py | 494 ++++++++++++++++++ ...st_co_ccap_eligible_children_properties.py | 30 +- .../ccap/rates/co_ccap_care_days_per_month.py | 9 +- .../rates/co_ccap_full_time_daily_rate.py | 13 +- 15 files changed, 1254 insertions(+), 28 deletions(-) create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_reimbursement.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_age_bands.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_daily_rate.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_provider_type.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_quality_tier.yaml create mode 100644 policyengine_us/tests/test_co_ccap_county_rates_properties.py diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_reimbursement.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_reimbursement.yaml new file mode 100644 index 00000000000..ab0da3abc6b --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_reimbursement.yaml @@ -0,0 +1,152 @@ +# 8 CCR 1403-1 3.125(FFF): the county pays the lesser of the provider's charge +# and the county rate for the care. Without a county, a household reads Adams +# County, the first county on Colorado's list; without a provider type or a +# rating, a center at Tier 1 & Tier 2. + +- name: Case 1, the county rate caps an infant's $2,000 charge in an Adams County center. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: 100 + co_ccap_eligible: true + households: + household: + members: [parent, child] + state_code: CO + output: + # $76.71 a day x 260 / 12 = $1,662.05, less the $100 fee. + co_ccap_reimbursement: 1_662.05 + co_ccap_capped_parent_fee: 100 + co_ccap_subsidy: 1_562.05 + +- name: Case 2, a charge below the county rate passes through. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: 100 + co_ccap_eligible: true + households: + household: + members: [parent, child] + state_code: CO + output: + co_ccap_reimbursement: 1_000 + co_ccap_subsidy: 900 + +- name: Case 3, the parent fee stops at the reimbursement. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: 2_000 + co_ccap_eligible: true + households: + household: + members: [parent, child] + state_code: CO + output: + # 3.124(L): the fee never exceeds the CCCAP reimbursement. + co_ccap_reimbursement: 1_662.05 + co_ccap_capped_parent_fee: 1_662.05 + co_ccap_subsidy: 0 + +- name: Case 4, each child's charge meets that child's own county rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + infant: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + preschooler: + age: 4 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 6_000 + spm_units: + spm_unit: + members: [parent, infant, preschooler] + co_ccap_parent_fee: 300 + co_ccap_eligible: true + households: + household: + members: [parent, infant, preschooler] + state_code: CO + output: + # The infant's $2,000 meets the $1,662.05 cap; the 4-year-old's $500 + # falls below the $958.53 cap ($44.24 x 260 / 12). The infant's unused + # rate doesn't carry over to the other child. + co_ccap_maximum_monthly_payment: [0, 1_662.05, 958.53] + co_ccap_reimbursement: 2_162.05 + co_ccap_subsidy: 1_862.05 + +- name: Case 5, a Boulder County school-age child in part-time care three days a week in January 2025. + period: 2025-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: + 2025: 30 + child: + age: + 2025: 8 + is_tax_unit_dependent: + 2025: true + after_school_expenses: + 2025: 4_800 + childcare_hours_per_day: + 2025: 4 + childcare_days_per_week: + 2025: 3 + spm_units: + spm_unit: + members: [parent, child] + co_ccap_parent_fee: + 2025-01: 0 + co_ccap_eligible: + 2025-01: true + households: + household: + members: [parent, child] + state_code: + 2025: CO + county: + 2025: BOULDER_COUNTY_CO + output: + # Boulder, CENTER, School Age, Tier 1 & Tier 2 from October 2024: $40.30 + # x 0.55 = $22.165, so $22.17 a day; 3 x 52 / 12 = 13 days; $288.21 + # against the $400 charge. + co_ccap_reimbursement: 288.21 + co_ccap_subsidy: 288.21 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml index a3531bc5989..3d69124224e 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml @@ -1,3 +1,10 @@ +# Without a county, provider type, rating or schedule, the county rate reads +# an Adams County center at Tier 1 & Tier 2, full time, five days a week +# (5 x 52 / 12 = 21.67 days a month). From October 2025 Adams pays $44.24 a +# day for a child from 36 months to 6 years ($958.53 a month) and $37.33 for a +# school-age child ($808.82); from October 2024, and in earlier months, $42.77 +# for a child from 36 months to 6 years ($926.68). + - name: Case 1, in 2023, a child's $2,200 of charges less an $800 parent fee leaves $1,400. period: 2023 input: @@ -19,10 +26,12 @@ members: [parent, child] state_code: CO output: + # $183.33 of charges a month falls below the $926.68 county rate. co_ccap_subsidy: 1_400 -- name: Case 2, in December 2022, a child's $2,200 of monthly charges less an $800 parent fee leaves $1,400. +- name: Case 2, in December 2022, the county rate caps a child's $2,200 of monthly charges before the $800 parent fee. period: 2022 + absolute_error_margin: 0.01 input: people: parent: @@ -43,8 +52,9 @@ members: [parent, child] state_code: CO output: + # $926.68 - $800. co_ccap_subsidy: - 2022-12: 1_400 + 2022-12: 126.68 - name: Case 3, a teenager without additional care needs adds nothing to the payment. period: 2026-01 @@ -73,9 +83,9 @@ output: co_ccap_child_eligible: [false, true, false] # 8 CCR 1403-1 3.132(D) pays for children under 13: the 3-year-old's - # $1,000 a month less the $200 fee, and nothing toward the 15-year-old's - # $1,000. - co_ccap_subsidy: 800 + # $1,000 a month, capped at the $958.53 county rate, less the $200 fee, + # and nothing toward the 15-year-old's $1,000. + co_ccap_subsidy: 758.53 - name: Case 4, a teenager who can't care for themselves is an eligible child. period: 2026-01 @@ -105,8 +115,8 @@ output: co_ccap_child_eligible: [false, true, true] # 3.132(E) covers a child under 19 who can't care for themselves: - # $1,000 + $1,000 - $200. - co_ccap_subsidy: 1_800 + # $958.53 + $808.82 - $200. + co_ccap_subsidy: 1_567.35 - name: Case 5, a teenager under court supervision is an eligible child. period: 2026-01 @@ -135,7 +145,7 @@ state_code: CO output: co_ccap_child_eligible: [false, true, true] - co_ccap_subsidy: 1_800 + co_ccap_subsidy: 1_567.35 - name: Case 6, a 13-year-old's after-school care adds nothing to the payment. period: 2026-01 @@ -163,8 +173,8 @@ state_code: CO output: co_ccap_child_eligible: [false, true, false] - # $1,000 - $200; the 13-year-old's $500 a month doesn't count. - co_ccap_subsidy: 800 + # $958.53 - $200; the 13-year-old's $500 a month doesn't count. + co_ccap_subsidy: 758.53 - name: Case 7, a 12-year-old's after-school care counts. period: 2026-01 @@ -192,8 +202,8 @@ state_code: CO output: co_ccap_child_eligible: [false, true, true] - # $1,000 + $500 - $200. - co_ccap_subsidy: 1_300 + # $958.53 + $500 (below the $808.82 school-age rate) - $200. + co_ccap_subsidy: 1_258.53 - name: Case 8, a teenager's charge doesn't absorb a fee above the eligible child's charge. period: 2026-01 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/court_supervision.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/court_supervision.yaml index 1ce3460e0af..668ca337f3c 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/court_supervision.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/court_supervision.yaml @@ -101,8 +101,11 @@ # 8 hours a day is full-time care, and a facility rating of 0 gives no # discount. co_ccap_parent_fee: 128 - # Expenses 12,000 / 12 = 1,000 - 128 = 872 - co_ccap_subsidy: 872 + # Denver, licensed center, School Age, Tier 1 & Tier 2 from October 2025: + # $38.65 a day x 5 x 52 / 12 = $837.42, below the $1,000 charge. + co_ccap_reimbursement: 837.42 + # 837.42 - 128 = 709.42 + co_ccap_subsidy: 709.42 - name: Case 6, without court supervision the same teenager receives nothing. period: 2026-01 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_age_bands.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_age_bands.yaml new file mode 100644 index 00000000000..8c101392c1a --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_age_bands.yaml @@ -0,0 +1,65 @@ +- name: Licensed center bands change at 18 months, 36 months and 6 years. + period: 2026-01 + input: + people: + one: + age: 1 + eighteen_months: + age: 1.5 + almost_three: + age: 2.9 + three: + age: 3 + almost_six: + age: 5.9 + six: + age: 6 + households: + household: + members: [one, eighteen_months, almost_three, three, almost_six, six] + state_code: CO + output: + co_ccap_center_age_band: + [ + MONTHS_0_TO_18, + MONTHS_18_TO_36, + MONTHS_18_TO_36, + MONTHS_36_TO_YEARS_6, + MONTHS_36_TO_YEARS_6, + SCHOOL_AGE, + ] + +- name: Licensed home bands change at 24 months and 6 years. + period: 2026-01 + input: + people: + almost_two: + age: 1.9 + two: + age: 2 + almost_six: + age: 5.9 + six: + age: 6 + households: + household: + members: [almost_two, two, almost_six, six] + state_code: CO + output: + co_ccap_home_age_band: + [MONTHS_0_TO_24, MONTHS_24_TO_YEARS_6, MONTHS_24_TO_YEARS_6, SCHOOL_AGE] + +- name: Qualified exempt bands change at 5 years. + period: 2026-01 + input: + people: + almost_five: + age: 4.9 + five: + age: 5 + households: + household: + members: [almost_five, five] + state_code: CO + output: + co_ccap_qualified_exempt_age_band: [UNDER_5, AGE_5_AND_OVER] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml new file mode 100644 index 00000000000..72c3212e20a --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml @@ -0,0 +1,32 @@ +- name: Days of care come from the larger of the weekly schedule and the attending days, or a five-day week without either. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + no_schedule: + childcare_days_per_week: 0 + childcare_attending_days_per_month: 0 + three_days_a_week: + childcare_days_per_week: 3 + ten_attending_days: + childcare_attending_days_per_month: 10 + absences_within_schedule: + childcare_days_per_week: 5 + childcare_attending_days_per_month: 18 + drop_in_days: + childcare_days_per_week: 2 + childcare_attending_days_per_month: 12 + households: + household: + members: + [ + no_schedule, + three_days_a_week, + ten_attending_days, + absences_within_schedule, + drop_in_days, + ] + state_code: CO + output: + # 5 x 52 / 12 = 21.67; 3 x 52 / 12 = 13; 2 x 52 / 12 = 8.67 < 12. + co_ccap_care_days_per_month: [21.67, 13, 10, 21.67, 12] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml new file mode 100644 index 00000000000..8c4728e2b61 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml @@ -0,0 +1,43 @@ +# 8 CCR 1403-1 3.130(C): part time through 5 hours a day at 55% of the +# full-time rate, full time through 12, full time plus part time through 17, +# and two full-time units through 24. + +- name: Each hour boundary opens the next care unit, and no hours read as full time. + period: 2026-01 + input: + people: + no_hours: + childcare_hours_per_day: 0 + three: + childcare_hours_per_day: 3 + five: + childcare_hours_per_day: 5 + five_and_a_half: + childcare_hours_per_day: 5.5 + twelve: + childcare_hours_per_day: 12 + twelve_and_a_half: + childcare_hours_per_day: 12.5 + seventeen: + childcare_hours_per_day: 17 + seventeen_and_a_half: + childcare_hours_per_day: 17.5 + twenty_four: + childcare_hours_per_day: 24 + households: + household: + members: + [ + no_hours, + three, + five, + five_and_a_half, + twelve, + twelve_and_a_half, + seventeen, + seventeen_and_a_half, + twenty_four, + ] + state_code: CO + output: + co_ccap_care_unit: [1, 0.55, 0.55, 1, 1, 1.55, 1.55, 2, 2] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_daily_rate.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_daily_rate.yaml new file mode 100644 index 00000000000..03971bc916a --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_daily_rate.yaml @@ -0,0 +1,36 @@ +- name: An Adams County center's infant rate by care unit in January 2025, rounded half up to the cent. + period: 2025-01 + input: + people: + part_time: + age: + 2025: 0 + childcare_hours_per_day: + 2025: 4 + full_time: + age: + 2025: 0 + childcare_hours_per_day: + 2025: 8 + full_and_part_time: + age: + 2025: 0 + childcare_hours_per_day: + 2025: 14 + two_full_time: + age: + 2025: 0 + childcare_hours_per_day: + 2025: 20 + households: + household: + members: [part_time, full_time, full_and_part_time, two_full_time] + state_code: + 2025: CO + county: + 2025: ADAMS_COUNTY_CO + output: + # Adams County Rate Plan 10.1.2024, Regular 0-6 Months, Tier 1: FT 73.90, + # PT 40.65 (73.90 x 0.55 = 40.645), FTPT 114.55 (73.90 x 1.55 = 114.545) + # and FTFT 147.80. + co_ccap_daily_rate: [40.65, 73.9, 114.55, 147.8] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.yaml new file mode 100644 index 00000000000..e278409d7bc --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.yaml @@ -0,0 +1,201 @@ +# Licensed rates come from CDEC's State-Established Daily Licensed Provider +# Reimbursement Rates effective October 1, 2024 and October 1, 2025. +# Qualified exempt rates come from each county's rate plan (Provider Type +# Exempt, Regular rate type). + +- name: Case 1, an Adams County center pays $76.71 a day for an infant from October 2025. + period: 2026-01 + input: + people: + child: + age: 0 + households: + household: + members: [child] + state_code: CO + county: ADAMS_COUNTY_CO + output: + # Adams, CENTER, 0-18 months, Tier 1 & Tier 2 (an unrated provider). + co_ccap_full_time_daily_rate: 76.71 + +- name: Case 2, the same infant drew $73.90 a day from October 2024. + period: 2025-01 + input: + people: + child: + age: + 2025: 0 + households: + household: + members: [child] + state_code: + 2025: CO + county: + 2025: ADAMS_COUNTY_CO + output: + co_ccap_full_time_daily_rate: 73.9 + +- name: Case 3, a month before October 2024 reads the October 2024 table. + period: 2023-06 + input: + people: + child: + age: + 2023: 0 + households: + household: + members: [child] + state_code: + 2023: CO + county: + 2023: ADAMS_COUNTY_CO + output: + co_ccap_full_time_daily_rate: 73.9 + +- name: Case 4, a Denver family child care home at Colorado Shines level 3 pays $73.88 for a 1-year-old. + period: 2026-01 + input: + people: + child: + age: 1 + childcare_provider_type_group: FDC_GFDC + co_quality_rating_of_child_care_facility: 3 + households: + household: + members: [child] + state_code: CO + county: DENVER_COUNTY_CO + output: + co_ccap_provider_type: LICENSED_HOME + co_ccap_quality_tier: TIER_3 + # Denver, HOME, 0-24 months, Tier 3. + co_ccap_full_time_daily_rate: 73.88 + +- name: Case 5, an El Paso County center at level 5 pays the school-age rate for a 7-year-old. + period: 2026-01 + input: + people: + child: + age: 7 + co_quality_rating_of_child_care_facility: 5 + households: + household: + members: [child] + state_code: CO + county: EL_PASO_COUNTY_CO + output: + co_ccap_center_age_band: SCHOOL_AGE + # El Paso, CENTER, School Age, Tier 4 & Tier 5. + co_ccap_full_time_daily_rate: 51.41 + +- name: Case 6, a household whose county falls outside Colorado's list reads Denver's rates. + period: 2026-01 + input: + people: + child: + age: 0 + households: + household: + members: [child] + state_code: CO + county: UNKNOWN + output: + # Denver, CENTER, 0-18 months, Tier 1 & Tier 2. + co_ccap_full_time_daily_rate: 75.92 + +- name: Case 7, Weld County paid qualified exempt providers $42.15 a day for a child under 5 in January 2025. + period: 2025-01 + input: + people: + child: + age: + 2025: 4 + childcare_provider_type_group: + 2025: LE_STD + households: + household: + members: [child] + state_code: + 2025: CO + county: + 2025: WELD_COUNTY_CO + output: + co_ccap_provider_type: QUALIFIED_EXEMPT + # Weld County Rate Plan 10.1.2024: Regular <5 Years, FT 42.15. + co_ccap_full_time_daily_rate: 42.15 + +- name: Case 8, Weld's February 2025 plan cut that rate to $28.10. + period: 2025-03 + input: + people: + child: + age: + 2025: 4 + childcare_provider_type_group: + 2025: LE_STD + households: + household: + members: [child] + state_code: + 2025: CO + county: + 2025: WELD_COUNTY_CO + output: + # Weld County Rate Plan 2.1.2025: Regular <5 Years, FT 28.10. + co_ccap_full_time_daily_rate: 28.1 + +- name: Case 9, Weld's October 2025 plan pays $14.60 for a child of 5. + period: 2026-01 + input: + people: + child: + age: 5 + childcare_provider_type_group: LE_ENH + households: + household: + members: [child] + state_code: CO + county: WELD_COUNTY_CO + output: + co_ccap_qualified_exempt_age_band: AGE_5_AND_OVER + # Weld County Rate Plan 10.1.2025: Regular >5 Years, FT 14.60. + co_ccap_full_time_daily_rate: 14.6 + +- name: Case 10, Logan County raised its rate for a qualified exempt child under 5 to $30 in June 2026. + period: 2026-06 + input: + people: + child: + age: + 2026: 2 + childcare_provider_type_group: + 2026: LE_GC + households: + household: + members: [child] + state_code: + 2026: CO + county: + 2026: LOGAN_COUNTY_CO + output: + # Logan County Rate Plan 6.1.2026: Regular <5 Years, FT 30.00 (24.00 before). + co_ccap_full_time_daily_rate: 30 + +- name: Case 11, Logan's rate in May 2026. + period: 2026-05 + input: + people: + child: + age: + 2026: 2 + childcare_provider_type_group: + 2026: LE_GC + households: + household: + members: [child] + state_code: + 2026: CO + county: + 2026: LOGAN_COUNTY_CO + output: + co_ccap_full_time_daily_rate: 24 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.yaml new file mode 100644 index 00000000000..aac55fe16af --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.yaml @@ -0,0 +1,116 @@ +- name: Case 1, without a schedule an Adams County center infant's care reads a full-time weekday month. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 0 + is_tax_unit_dependent: true + households: + household: + members: [parent, child] + state_code: CO + county: ADAMS_COUNTY_CO + output: + # $76.71 a day x 5 days x 52 weeks / 12 months = $1,662.05. + co_ccap_maximum_monthly_payment: [0, 1_662.05] + +- name: Case 2, a Denver family child care home at level 3 pays part time for four hours a day. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 1 + is_tax_unit_dependent: true + childcare_provider_type_group: FDC_GFDC + co_quality_rating_of_child_care_facility: 3 + childcare_hours_per_day: 4 + households: + household: + members: [parent, child] + state_code: CO + county: DENVER_COUNTY_CO + output: + # $73.88 x 0.55 = $40.634, so $40.63 a day; x 260 / 12 = $880.32. + people: + child: + co_ccap_daily_rate: 40.63 + co_ccap_maximum_monthly_payment: 880.32 + +- name: Case 3, a Weld County qualified exempt provider's 13-hour days three days a week in January 2025. + period: 2025-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: + 2025: 30 + child: + age: + 2025: 4 + is_tax_unit_dependent: + 2025: true + childcare_provider_type_group: + 2025: LE_STD + childcare_hours_per_day: + 2025: 13 + childcare_days_per_week: + 2025: 3 + households: + household: + members: [parent, child] + state_code: + 2025: CO + county: + 2025: WELD_COUNTY_CO + output: + # $42.15 x 1.55 = $65.3325, so $65.33 a day (full time plus part time); + # 3 days x 52 / 12 = 13 days; 13 x $65.33 = $849.29. + people: + child: + co_ccap_daily_rate: 65.33 + co_ccap_care_days_per_month: 13 + co_ccap_maximum_monthly_payment: 849.29 + +- name: Case 4, an El Paso County center at level 5 pays two full-time units for an 18-hour day. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 7 + is_tax_unit_dependent: true + co_quality_rating_of_child_care_facility: 5 + childcare_hours_per_day: 18 + childcare_attending_days_per_month: 10 + households: + household: + members: [parent, child] + state_code: CO + county: EL_PASO_COUNTY_CO + output: + # School Age, Tier 4 & Tier 5: $51.41 x 2 = $102.82 a day for 10 days. + co_ccap_maximum_monthly_payment: [0, 1_028.2] + +- name: Case 5, a child whose care CCCAP doesn't pay has no county rate. + period: 2026-01 + input: + people: + parent: + age: 30 + teen: + age: 15 + is_tax_unit_dependent: true + households: + household: + members: [parent, teen] + state_code: CO + output: + co_ccap_maximum_monthly_payment: [0, 0] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_provider_type.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_provider_type.yaml new file mode 100644 index 00000000000..8a68a5d3bb9 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_provider_type.yaml @@ -0,0 +1,27 @@ +- name: Centers and family child care homes take the licensed rates, and license-exempt care takes the qualified exempt rates. + period: 2026-01 + input: + people: + center: + childcare_provider_type_group: DCC_SACC + home: + childcare_provider_type_group: FDC_GFDC + exempt_group: + childcare_provider_type_group: LE_GC + informal: + childcare_provider_type_group: LE_STD + informal_enhanced: + childcare_provider_type_group: LE_ENH + households: + household: + members: [center, home, exempt_group, informal, informal_enhanced] + state_code: CO + output: + co_ccap_provider_type: + [ + LICENSED_CENTER, + LICENSED_HOME, + QUALIFIED_EXEMPT, + QUALIFIED_EXEMPT, + QUALIFIED_EXEMPT, + ] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_quality_tier.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_quality_tier.yaml new file mode 100644 index 00000000000..cc475755816 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_quality_tier.yaml @@ -0,0 +1,23 @@ +- name: Colorado Shines levels map to the rate tables' three tiers, and an unrated provider takes the first. + period: 2026-01 + input: + people: + unrated: + co_quality_rating_of_child_care_facility: 0 + level_1: + co_quality_rating_of_child_care_facility: 1 + level_2: + co_quality_rating_of_child_care_facility: 2 + level_3: + co_quality_rating_of_child_care_facility: 3 + level_4: + co_quality_rating_of_child_care_facility: 4 + level_5: + co_quality_rating_of_child_care_facility: 5 + households: + household: + members: [unrated, level_1, level_2, level_3, level_4, level_5] + state_code: CO + output: + co_ccap_quality_tier: + [TIER_1_2, TIER_1_2, TIER_1_2, TIER_3, TIER_4_5, TIER_4_5] diff --git a/policyengine_us/tests/test_co_ccap_county_rates_properties.py b/policyengine_us/tests/test_co_ccap_county_rates_properties.py new file mode 100644 index 00000000000..15d03720112 --- /dev/null +++ b/policyengine_us/tests/test_co_ccap_county_rates_properties.py @@ -0,0 +1,494 @@ +"""Colorado's Child Care Assistance Program pays no more than the county rate. + +8 CCR 1403-1 3.125(FFF) pays the lesser of the provider's charge and the +county reimbursement rate. 3.130 sets that rate: a full-time daily rate by +county, provider type, age band and, for licensed providers, quality level, +paid in care units: part time through 5 hours a day at 55% of the full-time +rate, full time through 12 hours, full time plus part time through 17, and two +full-time units through 24. 3.124(K) and (L) take the parent fee from the +first dollars and never let it exceed the reimbursement. + +These tests read the rate tables straight from the parameter files and +recompute each rate by the rule, apart from the model's formulas: + +1. The model's full-time daily rate equals the table's cell for the child's + county (Denver's for a county outside Colorado's list), provider type, age + band and quality tier, on the date in force. One test checks every cell on + every date a table or county plan changed a rate. +2. Each care unit pays the full-time rate times the unit, rounded half up to + the cent, as the county rate plans print it: a part-time day pays 55% of a + full-time day, and two full-time units pay twice a full-time day. +3. Each eligible child's reimbursement is the lesser of the child's charges + and the daily rate times the days of care, and the payment is the sum less + the parent fee, never below zero. So the payment never exceeds the county + rate for the care, nor the charges less the fee; the capped fee never + exceeds the fee or the reimbursement; and the payment plus the capped fee + equals the reimbursement. +4. More charges never lower the payment, and a higher fee never raises it. + +Without hours of care a child takes the full-time unit, and without a weekly +schedule or attending days, a five-day week (5 x 52 / 12 days a month). +""" + +from datetime import date +from decimal import ROUND_HALF_UP, Decimal +from pathlib import Path + +import pytest +import yaml +from hypothesis import example, given, settings +from hypothesis import strategies as st + +import policyengine_us +from policyengine_us import Simulation + +RATES = Path(policyengine_us.__file__).parent / ("parameters/gov/states/co/ccap/rates") +TOLERANCE = 0.01 +CENT = Decimal("0.01") +WEEKS_IN_YEAR = 52 +MONTHS_IN_YEAR = 12 +DEFAULT_DAYS_PER_WEEK = 5 +PARENT_AGE = 30 +# A county outside Colorado's list reads Denver's rates. +FALLBACK_COUNTY = "DENVER_COUNTY_CO" +# The bands as CDEC's tables head them, in months of age. +CENTER_BANDS = ( + (18, "MONTHS_0_TO_18"), + (36, "MONTHS_18_TO_36"), + (72, "MONTHS_36_TO_YEARS_6"), +) +HOME_BANDS = ((24, "MONTHS_0_TO_24"), (72, "MONTHS_24_TO_YEARS_6")) +EXEMPT_BANDS = ((60, "UNDER_5"),) +SCHOOL_AGE = "SCHOOL_AGE" +EXEMPT_OLDER = "AGE_5_AND_OVER" +CENTER = "DCC_SACC" +HOME = "FDC_GFDC" +PROVIDER_GROUPS = [CENTER, HOME, "LE_GC", "LE_STD", "LE_ENH"] +# One age and one rating that land in each band and tier. +CENTER_AGES = { + "MONTHS_0_TO_18": 12, + "MONTHS_18_TO_36": 24, + "MONTHS_36_TO_YEARS_6": 48, + SCHOOL_AGE: 96, +} +HOME_AGES = {"MONTHS_0_TO_24": 12, "MONTHS_24_TO_YEARS_6": 48, SCHOOL_AGE: 96} +EXEMPT_AGES = {"UNDER_5": 12, EXEMPT_OLDER: 96} +TIER_RATINGS = {"TIER_1_2": 0, "TIER_3": 3, "TIER_4_5": 5} + + +def table(name): + tree = yaml.safe_load((RATES / f"{name}.yaml").read_text()) + return {key: value for key, value in tree.items() if key.endswith("_CO")} + + +CENTER_RATES = table("licensed_center") +HOME_RATES = table("licensed_home") +EXEMPT_RATES = table("qualified_exempt") +COUNTIES = sorted(EXEMPT_RATES) + + +def effective_dates(node): + if isinstance(node, dict): + dates = set() + for key, value in node.items(): + dates |= {key} if isinstance(key, date) else effective_dates(value) + return dates + return set() + + +EFFECTIVE_DATES = sorted( + effective_dates(CENTER_RATES) + | effective_dates(HOME_RATES) + | effective_dates(EXEMPT_RATES) +) + + +def in_force(values, instant): + """The value on `instant`. Before the first date, the first value, which + CountryTaxBenefitSystem backdates.""" + starts = sorted(values) + value = values[starts[0]] + for start in starts: + if start <= instant: + value = values[start] + return Decimal(str(value)) + + +def band(age_months, bands, oldest): + for limit, name in bands: + if age_months < limit: + return name + return oldest + + +def tier(rating): + if rating >= 4: + return "TIER_4_5" + if rating == 3: + return "TIER_3" + return "TIER_1_2" + + +def full_time_rate(county, provider, age_months, rating, instant): + """3.130: the table cell for the child's care.""" + county = county if county in EXEMPT_RATES else FALLBACK_COUNTY + if provider == CENTER: + cell = CENTER_RATES[county][band(age_months, CENTER_BANDS, SCHOOL_AGE)] + return in_force(cell[tier(rating)], instant) + if provider == HOME: + cell = HOME_RATES[county][band(age_months, HOME_BANDS, SCHOOL_AGE)] + return in_force(cell[tier(rating)], instant) + # Colorado pays license-exempt care through qualified exempt providers. + cell = EXEMPT_RATES[county][band(age_months, EXEMPT_BANDS, EXEMPT_OLDER)] + return in_force(cell, instant) + + +def care_unit(hours): + """3.130(C); without hours, the full-time unit.""" + if hours <= 0: + return Decimal("1") + if hours <= 5: + return Decimal("0.55") + if hours <= 12: + return Decimal("1") + if hours <= 17: + return Decimal("1.55") + return Decimal("2") + + +def daily_rate(full_time, unit): + return (full_time * unit).quantize(CENT, rounding=ROUND_HALF_UP) + + +def days_of_care(days_per_week, attending_days): + days = max(days_per_week * WEEKS_IN_YEAR / MONTHS_IN_YEAR, attending_days) + if days > 0: + return days + return DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR + + +def county_rate(child, county, instant): + """The most the county pays for the child's care in the month.""" + full_time = full_time_rate( + county, child["provider"], child["age_months"], child["rating"], instant + ) + daily = daily_rate(full_time, care_unit(child["hours"])) + return float(daily) * days_of_care(child["days_per_week"], child["attending_days"]) + + +def simulate(month, units, variables): + """`variables` for `month`, with each unit one Colorado household, SPM + unit and tax unit of a parent and the unit's children. + + Returns each variable's values by person, or by SPM unit for SPM unit + variables, in the order of `units` and their children.""" + year = int(month[:4]) + people, households, spm_units, tax_units, families, marital_units = ( + {}, + {}, + {}, + {}, + {}, + {}, + ) + for u, unit in enumerate(units): + parent = f"parent_{u}" + people[parent] = {"age": {year: PARENT_AGE}} + marital_units[f"marital_unit_{parent}"] = {"members": [parent]} + members = [parent] + for c, child in enumerate(unit["children"]): + name = f"child_{u}_{c}" + members.append(name) + marital_units[f"marital_unit_{name}"] = {"members": [name]} + people[name] = { + "age": {year: child["age_months"] / MONTHS_IN_YEAR}, + "is_tax_unit_dependent": {year: True}, + "childcare_provider_type_group": {year: child["provider"]}, + "co_quality_rating_of_child_care_facility": {year: child["rating"]}, + "childcare_hours_per_day": {year: child["hours"]}, + "childcare_days_per_week": {year: child["days_per_week"]}, + "childcare_attending_days_per_month": {year: child["attending_days"]}, + "pre_subsidy_childcare_expenses": { + year: child["charge"] * MONTHS_IN_YEAR + }, + } + households[f"household_{u}"] = { + "members": members, + "state_code": {year: "CO"}, + "county": {year: unit["county"]}, + } + spm_units[f"spm_unit_{u}"] = { + "members": members, + "co_ccap_eligible": {month: True}, + "co_ccap_parent_fee": {month: unit["fee"]}, + } + tax_units[f"tax_unit_{u}"] = {"members": members} + families[f"family_{u}"] = {"members": members} + simulation = Simulation( + situation={ + "people": people, + "households": households, + "spm_units": spm_units, + "tax_units": tax_units, + "families": families, + "marital_units": marital_units, + } + ) + results = {} + for variable in variables: + values = simulation.calculate(variable, month) + if simulation.tax_benefit_system.variables[variable].entity.key == "person": + # Drop the parents, leaving the children in order. + children = [i for i, name in enumerate(people) if name.startswith("child_")] + values = values[children] + results[variable] = [float(value) for value in values] + return results + + +def instant_of(month): + year, month_number = month.split("-") + return date(int(year), int(month_number), 1) + + +months = st.builds( + lambda year, month: f"{year}-{month:02d}", + st.integers(min_value=2023, max_value=2027), + st.integers(min_value=1, max_value=12), +) +hours = st.one_of( + st.integers(min_value=0, max_value=24), + st.sampled_from([5, 5.5, 12, 12.5, 17, 17.5]), +) +children = st.fixed_dictionaries( + dict( + # Children under 13, whose care 3.132(D) covers. + age_months=st.integers(min_value=0, max_value=155), + provider=st.sampled_from(PROVIDER_GROUPS), + rating=st.integers(min_value=0, max_value=5), + hours=hours, + days_per_week=st.integers(min_value=0, max_value=7), + attending_days=st.integers(min_value=0, max_value=31), + charge=st.integers(min_value=0, max_value=4_000), + ) +) +units = st.fixed_dictionaries( + dict( + county=st.sampled_from([*COUNTIES, "UNKNOWN"]), + fee=st.integers(min_value=0, max_value=2_000), + children=st.lists(children, min_size=1, max_size=3), + ) +) + + +def child(**overrides): + base = dict( + age_months=0, + provider=CENTER, + rating=0, + hours=0, + days_per_week=0, + attending_days=0, + charge=0, + ) + return {**base, **overrides} + + +@pytest.mark.parametrize("effective", EFFECTIVE_DATES, ids=str) +def test_every_cell_matches_its_table(effective): + month = f"{effective.year}-{effective.month:02d}" + county_cells = [ + *[ + (CENTER, age, rating) + for age in CENTER_AGES.values() + for rating in TIER_RATINGS.values() + ], + *[ + (HOME, age, rating) + for age in HOME_AGES.values() + for rating in TIER_RATINGS.values() + ], + *[("LE_STD", age, 0) for age in EXEMPT_AGES.values()], + ] + cells = [(county, *cell) for county in COUNTIES for cell in county_cells] + units = [ + dict( + county=county, + fee=0, + children=[ + child(age_months=age, provider=provider, rating=rating) + for provider, age, rating in county_cells + ], + ) + for county in COUNTIES + ] + rates = simulate(month, units, ["co_ccap_full_time_daily_rate"]) + model = rates["co_ccap_full_time_daily_rate"] + expected = [ + float(full_time_rate(county, provider, age, rating, effective)) + for county, provider, age, rating in cells + ] + assert len(model) == len(expected) + mismatches = [ + (cell, got, want) + for cell, got, want in zip(cells, model, expected) + if abs(got - want) > TOLERANCE / 10 + ] + assert not mismatches, mismatches[:5] + + +@settings(max_examples=15, deadline=None) +# Adams County's infant rate in January 2025: $73.90 a day, $40.65 part time. +@example( + month="2025-01", unit=dict(county="ADAMS_COUNTY_CO", fee=0, children=[child()]) +) +# Weld County's qualified exempt plan of February 1, 2025. +@example( + month="2025-02", + unit=dict( + county="WELD_COUNTY_CO", + fee=0, + children=[child(age_months=48, provider="LE_GC")], + ), +) +# A county outside Colorado's list, at the age band boundaries. +@example( + month="2026-06", + unit=dict( + county="UNKNOWN", + fee=0, + children=[ + child(age_months=18, provider=CENTER, rating=3), + child(age_months=24, provider=HOME, rating=4), + child(age_months=60, provider="LE_ENH"), + ], + ), +) +@given(month=months, unit=units) +def test_each_care_unit_pays_its_share_of_the_full_time_rate(month, unit): + instant = instant_of(month) + # Price each child's care at each unit: 4, 8, 14 and 20 hours a day. + unit_hours = [4, 8, 14, 20] + copies = dict( + county=unit["county"], + fee=0, + children=[ + {**kid, "hours": hours_a_day} + for kid in unit["children"] + for hours_a_day in unit_hours + ], + ) + rates = simulate( + month, [copies], ["co_ccap_full_time_daily_rate", "co_ccap_daily_rate"] + ) + full_time = rates["co_ccap_full_time_daily_rate"] + daily = rates["co_ccap_daily_rate"] + for k, kid in enumerate(unit["children"]): + expected = full_time_rate( + unit["county"], kid["provider"], kid["age_months"], kid["rating"], instant + ) + part, full, full_and_part, two_full = daily[4 * k : 4 * k + 4] + assert full_time[4 * k] == pytest.approx(float(expected), abs=TOLERANCE / 10) + assert full == pytest.approx(float(expected), abs=TOLERANCE / 10) + assert part == pytest.approx( + float(daily_rate(expected, Decimal("0.55"))), abs=TOLERANCE / 10 + ) + assert full_and_part == pytest.approx( + float(daily_rate(expected, Decimal("1.55"))), abs=TOLERANCE / 10 + ) + assert two_full == pytest.approx(float(2 * expected), abs=TOLERANCE / 10) + + +@settings(max_examples=20, deadline=None) +# An infant's $2,000 in an Adams County center against $1,662.05, less $100. +@example( + month="2026-01", + many=[dict(county="ADAMS_COUNTY_CO", fee=100, children=[child(charge=2_000)])], +) +# A fee above the reimbursement. +@example( + month="2026-01", + many=[dict(county="ADAMS_COUNTY_CO", fee=2_000, children=[child(charge=2_000)])], +) +# Two children, one capped and one below the cap, with schedules. +@example( + month="2025-03", + many=[ + dict( + county="BOULDER_COUNTY_CO", + fee=50, + children=[ + child(age_months=96, hours=4, days_per_week=3, charge=400), + child( + age_months=30, + provider=HOME, + rating=5, + hours=13, + attending_days=25, + days_per_week=5, + charge=4_000, + ), + ], + ) + ], +) +@given(month=months, many=st.lists(units, min_size=1, max_size=4)) +def test_the_payment_is_the_capped_charges_less_the_fee(month, many): + instant = instant_of(month) + results = simulate( + month, + many, + [ + "co_ccap_maximum_monthly_payment", + "co_ccap_reimbursement", + "co_ccap_capped_parent_fee", + "co_ccap_subsidy", + ], + ) + caps = iter(results["co_ccap_maximum_monthly_payment"]) + for u, unit in enumerate(many): + rates = [county_rate(kid, unit["county"], instant) for kid in unit["children"]] + for rate in rates: + assert next(caps) == pytest.approx(rate, abs=TOLERANCE) + charges = [kid["charge"] for kid in unit["children"]] + reimbursement = sum(min(c, r) for c, r in zip(charges, rates)) + fee = unit["fee"] + model_reimbursement = results["co_ccap_reimbursement"][u] + capped_fee = results["co_ccap_capped_parent_fee"][u] + paid = results["co_ccap_subsidy"][u] + assert model_reimbursement == pytest.approx(reimbursement, abs=TOLERANCE) + assert capped_fee == pytest.approx(min(fee, reimbursement), abs=TOLERANCE) + assert paid == pytest.approx(max(reimbursement - fee, 0), abs=TOLERANCE) + # The bounds and the identity the rule implies. + assert -TOLERANCE <= paid <= sum(rates) + TOLERANCE + assert paid <= max(sum(charges) - fee, 0) + TOLERANCE + assert capped_fee <= min(fee, model_reimbursement) + TOLERANCE + assert paid + capped_fee == pytest.approx(model_reimbursement, abs=TOLERANCE) + + +@settings(max_examples=15, deadline=None) +@example( + month="2026-01", + unit=dict(county="ADAMS_COUNTY_CO", fee=100, children=[child(charge=1_600)]), + more_charge=200, + more_fee=50, +) +@given( + month=months, + unit=units, + more_charge=st.integers(min_value=1, max_value=2_000), + more_fee=st.integers(min_value=1, max_value=1_000), +) +def test_more_charges_never_lower_the_payment_and_a_higher_fee_never_raises_it( + month, unit, more_charge, more_fee +): + first, *others = unit["children"] + costlier = dict( + unit, children=[{**first, "charge": first["charge"] + more_charge}, *others] + ) + pricier_fee = dict(unit, fee=unit["fee"] + more_fee) + paid = simulate(month, [unit, costlier, pricier_fee], ["co_ccap_subsidy"])[ + "co_ccap_subsidy" + ] + base, with_more_charge, with_more_fee = paid + assert with_more_charge >= base - TOLERANCE + assert with_more_fee <= base + TOLERANCE diff --git a/policyengine_us/tests/test_co_ccap_eligible_children_properties.py b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py index 52257546ef5..cdd2a886286 100644 --- a/policyengine_us/tests/test_co_ccap_eligible_children_properties.py +++ b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py @@ -8,9 +8,8 @@ care needs or a 19-year-old, adds nothing to the payment, whatever that member's charges, the eligible child's charges or the parent fee. 2. The payment equals the eligible children's child care and after-school - charges less the parent fee, and never falls below zero. The model has no - county reimbursement rate yet (3.125 and 3.130), so nothing caps a charge; - once a rate caps it, this becomes an upper bound. + charges, each child's capped at the county rate for that child's care + (3.125(FFF) and 3.130), less the parent fee, and never falls below zero. The tests set eligibility and the parent fee as inputs, so they exercise the payment formula alone. @@ -27,6 +26,14 @@ TOLERANCE = 0.01 AGE_LIMIT = 13 ADDITIONAL_NEEDS_AGE_LIMIT = 19 +MONTHS_IN_YEAR = 12 +# These households report no county, provider, rating or schedule, so the +# county rate reads an Adams County center at Tier 1 & Tier 2, full time, five +# days a week. CDEC's table effective October 1, 2025 sets Adams County's +# daily rates by age band, in months. +ADAMS_CENTER_DAILY_RATES = ((18, 76.71), (36, 62.26), (72, 44.24)) +ADAMS_CENTER_SCHOOL_AGE_DAILY_RATE = 37.33 +DAYS_PER_MONTH = 5 * 52 / 12 def colorado(children, monthly_fee): @@ -68,6 +75,15 @@ def eligible(child): ) +def county_rate(child): + """3.130: the most Adams County pays for the child's care in a month.""" + age_months = child["age"] * MONTHS_IN_YEAR + for limit, daily in ADAMS_CENTER_DAILY_RATES: + if age_months < limit: + return daily * DAYS_PER_MONTH + return ADAMS_CENTER_SCHOOL_AGE_DAILY_RATE * DAYS_PER_MONTH + + charges = dict( care=st.integers(min_value=0, max_value=2_000), after_school=st.integers(min_value=0, max_value=800), @@ -164,11 +180,15 @@ def test_a_member_outside_the_age_limits_adds_nothing(child, other, fee): ), fee=st.integers(min_value=0, max_value=500), ) -def test_the_payment_equals_the_eligible_childrens_charges_less_the_fee(children, fee): +def test_the_payment_equals_the_eligible_childrens_capped_charges_less_the_fee( + children, fee +): named = {f"child_{i}": child for i, child in enumerate(children)} paid = colorado(named, fee) eligible_charges = sum( - child["care"] + child["after_school"] for child in children if eligible(child) + min(child["care"] + child["after_school"], county_rate(child)) + for child in children + if eligible(child) ) assert paid >= -TOLERANCE assert paid == pytest.approx(max(eligible_charges - fee, 0), abs=TOLERANCE) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py index 4ce11a52bb4..22b0c5f0c5a 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py @@ -22,9 +22,12 @@ class co_ccap_care_days_per_month(Variable): def formula(person, period, parameters): days_per_week = person("childcare_days_per_week", period.this_year) attending_days = person("childcare_attending_days_per_month", period.this_year) - # The scheduled days count the absences that counties pay within an - # authorized schedule (3.130(E)); attending days above the schedule - # count the drop-in days a county may pay (3.130(F)). + # Counties pay licensed providers at least three or four absences a + # month within an authorized schedule, and through a county rate plan + # may pay more, along with holidays and hold slots (3.130(E)). The + # model carries no county's absence policy, so the scheduled days set + # the most a county may pay. Attending days above the schedule count + # the drop-in days a county may pay (3.130(F)). scheduled_days = days_per_week * WEEKS_IN_YEAR / MONTHS_IN_YEAR days = max_(scheduled_days, attending_days) default_days = DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py index fea3e1cd413..c8ea20dca4e 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py @@ -23,12 +23,13 @@ class co_ccap_full_time_daily_rate(Variable): def formula(person, period, parameters): p = parameters(period).gov.states.co.ccap.rates county = person.household("county_str", period.this_year) - # A county outside Colorado's list, such as one the household doesn't - # report, reads Denver's rates, as co_ccap_fpg_eligible does. - colorado_counties = np.array(list(p.qualified_exempt._children)) - county = np.where( - np.isin(county, colorado_counties), county, "DENVER_COUNTY_CO" - ) + # A county outside Colorado, such as UNKNOWN for a household that + # doesn't report one, reads Denver's rates, as co_ccap_fpg_eligible + # does. The tables' county breakdown fills them with every county in + # the country at zero, so their keys can't tell Colorado's counties + # apart; the state suffix in each county's name does. + in_colorado = np.char.endswith(county.astype(str), "_CO") + county = np.where(in_colorado, county, "DENVER_COUNTY_CO") tier = person("co_ccap_quality_tier", period) center = p.licensed_center[county][person("co_ccap_center_age_band", period)][ tier From 7c783ecee8a045ddd6e50d28036b75f40735d9c8 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Sun, 8 Nov 2026 16:09:22 -0500 Subject: [PATCH 4/6] Cite each source once in Colorado's rate references Each parameter and variable now names the rule PDF once, with every section and page it relies on in the title or the comment above the link, as the repo's reference rule asks. Co-Authored-By: Claude Opus 5.5 --- .../gov/states/co/ccap/rates/licensed_center.yaml | 4 +--- .../gov/states/co/ccap/rates/licensed_home.yaml | 4 +--- .../gov/states/co/ccap/rates/qualified_exempt.yaml | 4 +--- .../gov/states/co/ccap/co_ccap_reimbursement.py | 10 ++++------ .../variables/gov/states/co/ccap/co_ccap_subsidy.py | 11 ++--------- .../co/ccap/rates/co_ccap_care_days_per_month.py | 6 ++---- .../co/ccap/rates/co_ccap_maximum_monthly_payment.py | 4 +--- .../gov/states/co/ccap/rates/co_ccap_provider_type.py | 5 ++--- 8 files changed, 14 insertions(+), 34 deletions(-) diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml index 6303bf40fec..5ba72fcd3a2 100644 --- a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_center.yaml @@ -13,9 +13,7 @@ metadata: - Age band - Colorado Shines quality tier reference: - - title: 8 CCR 1403-1 3.130, state-established licensed provider base rates and tiered rates by quality level - href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118 - - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + - title: "8 CCR 1403-1 3.125(FFF) and 3.130, the county pays the lesser of the private pay rate and the county reimbursement rate, and the state-established licensed provider base and tiered rates #page 101,118" href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2024 href: https://drive.google.com/file/d/1j9wqebwdFbZqNIpwuLcYEXgKqKvXagUf/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml index 7c5e956c662..0f087603d89 100644 --- a/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/licensed_home.yaml @@ -13,9 +13,7 @@ metadata: - Age band - Colorado Shines quality tier reference: - - title: 8 CCR 1403-1 3.130, state-established licensed provider base rates and tiered rates by quality level - href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118 - - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + - title: "8 CCR 1403-1 3.125(FFF) and 3.130, the county pays the lesser of the private pay rate and the county reimbursement rate, and the state-established licensed provider base and tiered rates #page 101,118" href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 - title: CDEC, State-Established Daily Licensed Provider Reimbursement Rates effective October 1, 2024 href: https://drive.google.com/file/d/1j9wqebwdFbZqNIpwuLcYEXgKqKvXagUf/view diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml index 958f3ac73e5..928e056737f 100644 --- a/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/qualified_exempt.yaml @@ -11,9 +11,7 @@ metadata: - County - Age band reference: - - title: 8 CCR 1403-1 3.130(B) and (D), rate types by provider type and qualified exempt rates set by counties - href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 - - title: 8 CCR 1403-1 3.125(FFF), the county pays the lesser of the private pay rate and the county reimbursement rate + - title: "8 CCR 1403-1 3.125(FFF) and 3.130(B) and (D), the county pays the lesser of the private pay rate and the county reimbursement rate, rate types by provider type, and qualified exempt rates set by counties #page 101,119" href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101 - title: CDEC, County CCCAP Policies and Rate Plans (County Ceiling Rates, Provider Type Exempt, Regular rate type) href: https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_ diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py index e668f218b97..c0786049ad8 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py @@ -9,13 +9,11 @@ class co_ccap_reimbursement(Variable): label = "Colorado Child Care Assistance Program reimbursement for the eligible children's care" defined_for = "co_ccap_eligible" reference = ( - # 8 CCR 1403-1 3.125(FFF), PDF page 101: the lesser of the provider's - # private pay rate and the county reimbursement rate. + # 8 CCR 1403-1 3.125(FFF), 3.130 and 3.132(D) and (E), PDF pages 101, + # 118-119, 126: the lesser of the provider's private pay rate and the + # county reimbursement rate, the county rates, and the children whose + # care CCCAP pays. "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", - # 3.130, PDF pages 118 and 119: the county reimbursement rates. - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=118", - # 3.132(D) and (E), PDF page 126: the children whose care CCCAP pays. - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=126", ) def formula(spm_unit, period, parameters): diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py index 57f363bab1e..75fe3499b26 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_subsidy.py @@ -9,16 +9,9 @@ class co_ccap_subsidy(Variable): definition_period = MONTH defined_for = "co_ccap_eligible" reference = ( - # 8 CCR 1403-1 3.103(UU), PDF page 9 + # 8 CCR 1403-1 3.103(UU), 3.111(F), 3.124(K) and (L), 3.125(FFF) and + # 3.132(D) and (E), PDF pages 9, 35, 82, 101, 126 "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=9", - # 3.111(F), PDF page 35 - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=35", - # 3.124(K) and (L), PDF page 82 - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=82", - # 3.125(FFF), PDF page 101 - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", - # 3.132(D) and (E), PDF page 126 - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=126", ) def formula(spm_unit, period, parameters): diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py index 22b0c5f0c5a..46e4ebd0d8d 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py @@ -12,11 +12,9 @@ class co_ccap_care_days_per_month(Variable): label = "Colorado Child Care Assistance Program days of care a month" defined_for = StateCode.CO reference = ( - # 8 CCR 1403-1 3.130(C), PDF page 119: daily rates. + # 8 CCR 1403-1 3.130(C), (E) and (F), PDF pages 119-120: daily rates, + # paid absences and drop-in days. "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", - # 3.130(E) and (F), PDF pages 119 and 120: paid absences and drop-in - # days. - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=120", ) def formula(person, period, parameters): diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py index e5aec28be14..c4e6eb3c250 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_maximum_monthly_payment.py @@ -9,10 +9,8 @@ class co_ccap_maximum_monthly_payment(Variable): label = "Colorado Child Care Assistance Program county rate for the child's care in a month" defined_for = "co_ccap_child_eligible" reference = ( - # 8 CCR 1403-1 3.125(FFF), PDF page 101. + # 8 CCR 1403-1 3.125(FFF) and 3.130(C), PDF pages 101, 119 "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=101", - # 3.130(C), PDF page 119. - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", ) def formula(person, period, parameters): diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py index 3042e99b77a..8261755fb60 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_provider_type.py @@ -19,9 +19,8 @@ class co_ccap_provider_type(Variable): label = "Colorado Child Care Assistance Program provider type" defined_for = StateCode.CO reference = ( - # 8 CCR 1403-1 3.130(B), PDF page 119: rate types by provider type. - "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119", - # 3.103(MMMM), PDF page 17: qualified exempt child care provider. + # 8 CCR 1403-1 3.103(MMMM) and 3.130(B), PDF pages 17, 119: qualified + # exempt child care provider, and rate types by provider type. "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=17", ) From d83b2238640aaaf6606302ddb97cd40732e145c4 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 9 Nov 2026 08:17:13 -0500 Subject: [PATCH 5/6] Read Colorado's care unit and hours once, for the fee and the rate cap co_ccap_care_unit now reads co_ccap_care_hours_per_day, so weekly hours stand in for missing daily hours on the rate as they do on the fee. co_ccap_full_time_equivalent_units multiplies the care unit by the days of care, and co_ccap_child_in_part_time_care tests the care unit. That leaves rates/care_unit.yaml as the one table, so the parent fee's copy goes. Co-Authored-By: Claude Opus 5.5 --- changelog.d/co-ccap-county-rates.removed.md | 1 + .../part_time/full_time_equivalent_units.yaml | 30 ----------- .../gov/states/co/ccap/rates/care_unit.yaml | 2 + .../co/ccap/rates/co_ccap_care_unit.yaml | 51 +++++++++++++++++++ .../test_co_ccap_county_rates_properties.py | 48 +++++++++++++++-- .../co/ccap/co_ccap_care_hours_per_day.py | 2 +- .../ccap/co_ccap_child_in_part_time_care.py | 4 +- .../co_ccap_full_time_equivalent_units.py | 25 ++------- .../states/co/ccap/rates/co_ccap_care_unit.py | 2 +- 9 files changed, 106 insertions(+), 59 deletions(-) create mode 100644 changelog.d/co-ccap-county-rates.removed.md delete mode 100644 policyengine_us/parameters/gov/states/co/ccap/parent_fee/part_time/full_time_equivalent_units.yaml diff --git a/changelog.d/co-ccap-county-rates.removed.md b/changelog.d/co-ccap-county-rates.removed.md new file mode 100644 index 00000000000..8026ef88863 --- /dev/null +++ b/changelog.d/co-ccap-county-rates.removed.md @@ -0,0 +1 @@ +Removed the Colorado Child Care Assistance Program parameter `parent_fee/part_time/full_time_equivalent_units`. The parent fee and the county rate now read one table, `rates/care_unit`. diff --git a/policyengine_us/parameters/gov/states/co/ccap/parent_fee/part_time/full_time_equivalent_units.yaml b/policyengine_us/parameters/gov/states/co/ccap/parent_fee/part_time/full_time_equivalent_units.yaml deleted file mode 100644 index bef5a3b081a..00000000000 --- a/policyengine_us/parameters/gov/states/co/ccap/parent_fee/part_time/full_time_equivalent_units.yaml +++ /dev/null @@ -1,30 +0,0 @@ -description: Colorado counts a day of care as this many full-time equivalent units, by the hours of care that day, under the Child Care Assistance Program. -metadata: - type: single_amount - threshold_unit: hour - amount_unit: /1 - label: Colorado Child Care Assistance Program full-time equivalent units per day of care - reference: - - title: "8 CCR 1403-1 Sections 3.103(ZZ) and 3.130(C) (effective 2026-08-14) #page 10,119" - href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=10 -# Each band covers days of more than its threshold, up to the next threshold: -# a part-time unit (up to 5 hours) counts 0.55 of a full-time unit, a -# full-time/part-time day (more than 12 hours, up to 17) counts 1.55, and a -# full-time/full-time day counts 2. -brackets: - - threshold: - 2022-10-01: 0 - amount: - 2022-10-01: 0.55 - - threshold: - 2022-10-01: 5 - amount: - 2022-10-01: 1 - - threshold: - 2022-10-01: 12 - amount: - 2022-10-01: 1.55 - - threshold: - 2022-10-01: 17 - amount: - 2022-10-01: 2 diff --git a/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml b/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml index f9846c9184c..2b3243588a3 100644 --- a/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml +++ b/policyengine_us/parameters/gov/states/co/ccap/rates/care_unit.yaml @@ -7,6 +7,8 @@ metadata: reference: - title: 8 CCR 1403-1 3.130(C), part-time, full-time, full-time/part-time and full-time/full-time daily rates href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=119 + - title: 8 CCR 1403-1 3.103(ZZ), equivalent full-time units + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=10 - title: CDEC, County CCCAP Policies and Rate Plans (County Ceiling Rates list each rate as FT, PT at 55%, FTPT at 155% and FTFT at 200%) href: https://drive.google.com/drive/folders/1YSLL5Sn32NyKbp8Z0063ldFbAhQwfHW_ # Each threshold opens a care unit above that many hours: part time through diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml index 8c4728e2b61..41dd559afcd 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml @@ -41,3 +41,54 @@ state_code: CO output: co_ccap_care_unit: [1, 0.55, 0.55, 1, 1, 1.55, 1.55, 2, 2] + +- name: Without daily hours, weekly hours over the days of care pick the unit. + period: 2026-01 + input: + people: + twenty_a_week: + childcare_hours_per_week: 20 + twenty_five_a_week: + childcare_hours_per_week: 25 + thirty_a_week: + childcare_hours_per_week: 30 + sixty_a_week: + childcare_hours_per_week: 60 + sixty_five_a_week: + childcare_hours_per_week: 65 + eighty_five_a_week: + childcare_hours_per_week: 85 + ninety_a_week: + childcare_hours_per_week: 90 + twenty_over_two_days: + childcare_hours_per_week: 20 + childcare_days_per_week: 2 + twenty_over_more_attending_days: + childcare_hours_per_week: 20 + childcare_days_per_week: 2 + childcare_attending_days_per_month: 20 + daily_hours_win: + childcare_hours_per_day: 4 + childcare_hours_per_week: 40 + households: + household: + members: + [ + twenty_a_week, + twenty_five_a_week, + thirty_a_week, + sixty_a_week, + sixty_five_a_week, + eighty_five_a_week, + ninety_a_week, + twenty_over_two_days, + twenty_over_more_attending_days, + daily_hours_win, + ] + state_code: CO + output: + # Over five weekdays: 4, 5, 6, 12, 13, 17 and 18 hours a day. Over two + # days: 10 hours. With 20 attending days, 20 x 12 / 52 = 4.62 days a week + # exceed the two scheduled days: 20 / 4.62 = 4.33 hours. Daily hours win + # over weekly hours: 4 hours. + co_ccap_care_unit: [0.55, 0.55, 1, 1, 1.55, 1.55, 2, 1, 0.55, 0.55] diff --git a/policyengine_us/tests/test_co_ccap_county_rates_properties.py b/policyengine_us/tests/test_co_ccap_county_rates_properties.py index 15d03720112..aebdd6b5413 100644 --- a/policyengine_us/tests/test_co_ccap_county_rates_properties.py +++ b/policyengine_us/tests/test_co_ccap_county_rates_properties.py @@ -26,8 +26,11 @@ equals the reimbursement. 4. More charges never lower the payment, and a higher fee never raises it. -Without hours of care a child takes the full-time unit, and without a weekly -schedule or attending days, a five-day week (5 x 52 / 12 days a month). +Without daily hours, the model spreads a child's weekly hours over the days +of care in a week: the larger of days a week and attending days a month x +12 / 52, else five weekdays. Without hours of care a child takes the full-time +unit, and without a weekly schedule or attending days, a five-day week +(5 x 52 / 12 days a month). """ from datetime import date @@ -143,6 +146,18 @@ def full_time_rate(county, provider, age_months, rating, instant): return in_force(cell, instant) +def care_hours(child): + """The child's daily hours, else weekly hours over the days of care.""" + if child["hours"] > 0: + return child["hours"] + reported_days = max( + child["days_per_week"], + child["attending_days"] * MONTHS_IN_YEAR / WEEKS_IN_YEAR, + ) + days_in_a_week = reported_days if reported_days > 0 else DEFAULT_DAYS_PER_WEEK + return child["weekly_hours"] / days_in_a_week + + def care_unit(hours): """3.130(C); without hours, the full-time unit.""" if hours <= 0: @@ -172,7 +187,7 @@ def county_rate(child, county, instant): full_time = full_time_rate( county, child["provider"], child["age_months"], child["rating"], instant ) - daily = daily_rate(full_time, care_unit(child["hours"])) + daily = daily_rate(full_time, care_unit(care_hours(child))) return float(daily) * days_of_care(child["days_per_week"], child["attending_days"]) @@ -206,6 +221,7 @@ def simulate(month, units, variables): "childcare_provider_type_group": {year: child["provider"]}, "co_quality_rating_of_child_care_facility": {year: child["rating"]}, "childcare_hours_per_day": {year: child["hours"]}, + "childcare_hours_per_week": {year: child["weekly_hours"]}, "childcare_days_per_week": {year: child["days_per_week"]}, "childcare_attending_days_per_month": {year: child["attending_days"]}, "pre_subsidy_childcare_expenses": { @@ -259,6 +275,12 @@ def instant_of(month): st.integers(min_value=0, max_value=24), st.sampled_from([5, 5.5, 12, 12.5, 17, 17.5]), ) +# Whole hours a week, with the amounts that land on 5, 12 and 17 hours a day +# over five weekdays. +weekly_hours = st.one_of( + st.integers(min_value=0, max_value=120), + st.sampled_from([25, 26, 60, 61, 85, 86]), +) children = st.fixed_dictionaries( dict( # Children under 13, whose care 3.132(D) covers. @@ -266,6 +288,7 @@ def instant_of(month): provider=st.sampled_from(PROVIDER_GROUPS), rating=st.integers(min_value=0, max_value=5), hours=hours, + weekly_hours=weekly_hours, days_per_week=st.integers(min_value=0, max_value=7), attending_days=st.integers(min_value=0, max_value=31), charge=st.integers(min_value=0, max_value=4_000), @@ -286,6 +309,7 @@ def child(**overrides): provider=CENTER, rating=0, hours=0, + weekly_hours=0, days_per_week=0, attending_days=0, charge=0, @@ -409,6 +433,24 @@ def test_each_care_unit_pays_its_share_of_the_full_time_rate(month, unit): month="2026-01", many=[dict(county="ADAMS_COUNTY_CO", fee=2_000, children=[child(charge=2_000)])], ) +# Weekly hours alone, at each edge of a care unit over five weekdays. +@example( + month="2026-01", + many=[ + dict( + county="ADAMS_COUNTY_CO", + fee=0, + children=[ + child(weekly_hours=25, charge=4_000), + child(weekly_hours=26, charge=4_000), + child(weekly_hours=60, charge=4_000), + child(weekly_hours=61, charge=4_000), + child(weekly_hours=85, charge=4_000), + child(weekly_hours=86, charge=4_000), + ], + ) + ], +) # Two children, one capped and one below the cap, with schedules. @example( month="2025-03", diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_care_hours_per_day.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_care_hours_per_day.py index 52d6558007e..55870199c12 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_care_hours_per_day.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_care_hours_per_day.py @@ -28,7 +28,7 @@ def formula(person, period, parameters): weekly_hours = person("childcare_hours_per_week", year) days_per_week = person("childcare_days_per_week", year) attending_days = person("childcare_attending_days_per_month", year) - # co_ccap_full_time_equivalent_units takes the same larger day count. + # co_ccap_care_days_per_month takes the same larger day count. reported_days = max_( days_per_week, attending_days * MONTHS_IN_YEAR / WEEKS_IN_YEAR ) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py index 29f9493b6ee..cc2feb9254c 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py @@ -32,9 +32,7 @@ def formula(person, period, parameters): part_time_units = units < p.unit_threshold year = period.this_year daily_hours = person("co_ccap_care_hours_per_day", period) - part_time_days = (daily_hours > 0) & ( - p.full_time_equivalent_units.calc(daily_hours, right=True) < 1 - ) + part_time_days = person("co_ccap_care_unit", period) < 1 in_grade_one_or_above = person("is_in_k12_school", year) & ( person("age", year) >= FIRST_GRADE_AGE ) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_full_time_equivalent_units.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_full_time_equivalent_units.py index 4262b3e4fa0..977e8e8cfd8 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_full_time_equivalent_units.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_full_time_equivalent_units.py @@ -1,7 +1,4 @@ from policyengine_us.model_api import * -from policyengine_us.variables.gov.states.co.ccap.co_ccap_care_hours_per_day import ( - WEEKDAYS_PER_WEEK, -) class co_ccap_full_time_equivalent_units(Variable): @@ -25,21 +22,7 @@ class co_ccap_full_time_equivalent_units(Variable): defined_for = "co_ccap_child_in_care" def formula(person, period, parameters): - p = parameters(period).gov.states.co.ccap.parent_fee.part_time - year = period.this_year - daily_hours = person("co_ccap_care_hours_per_day", period) - # Zero is also the input default for unknown hours. - daily_units = where( - daily_hours > 0, - p.full_time_equivalent_units.calc(daily_hours, right=True), - 1, - ) - weeks_per_month = WEEKS_IN_YEAR / MONTHS_IN_YEAR - # Counties assess the fee on the authorized care schedule (3.124(V)), - # and attending days above it count the drop-in days a county may pay - # (3.130(F)). - weekly_days = person("childcare_days_per_week", year) - attending_days = person("childcare_attending_days_per_month", year) - days = max_(weekly_days * weeks_per_month, attending_days) - default_days = WEEKDAYS_PER_WEEK * weeks_per_month - return daily_units * where(days > 0, days, default_days) + # Counties assess the fee on the authorized care schedule (3.124(V)). + unit = person("co_ccap_care_unit", period) + days = person("co_ccap_care_days_per_month", period) + return unit * days diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py index af8638f8634..07cb7052417 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py @@ -18,7 +18,7 @@ class co_ccap_care_unit(Variable): def formula(person, period, parameters): p = parameters(period).gov.states.co.ccap.rates - hours = person("childcare_hours_per_day", period.this_year) + hours = person("co_ccap_care_hours_per_day", period) # Without hours of care, read the full-time unit: the schedule that # the daily rate prices. A user who knows the hours enters them. return where( From d7e59b9c9428bc904e41171eb0e8a3f4f62f5c47 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 11 Nov 2026 15:06:53 -0500 Subject: [PATCH 6/6] Have providers absorb Colorado CCCAP charges above the county rate 8 CCR 1403-1 3.128(T) bars a provider from charging a CCCAP family more than the daily reimbursement rate in its fiscal agreement. The model reads every reported charge as authorized care, so each eligible child's charges above the county rate now fall to the provider: - co_ccap_child_charges adds a child's pre-subsidy and after-school charges; co_ccap_reimbursement caps them at the county rate, and co_ccap_charges_above_rate sums the rest. - child_care_charges_providers_absorb carries those charges, and childcare_expenses subtracts them along with child_care_subsidies, so the family's cost for an eligible child's care stays the capped parent fee. The rate also follows the parent fee for a child in grade 1 or above whose only reported care comes after school: co_ccap_after_school_care_only gives that child the part-time unit (3.124(W)). Days of care stop at the days in the month, full-time-equivalent units round to four decimals before the 13-unit test, and the county comment says when a household without a county reads Adams County and when Denver. Co-Authored-By: Claude Opus 5.5 --- changelog.d/co-ccap-county-rates.fixed.md | 2 +- .../co/ccap/co_ccap_charges_above_rate.yaml | 97 ++++++++++++ .../ccap/co_ccap_child_in_part_time_care.yaml | 23 +++ .../gov/states/co/ccap/co_ccap_subsidy.yaml | 7 +- .../rates/co_ccap_care_days_per_month.yaml | 25 +++ .../co/ccap/rates/co_ccap_care_unit.yaml | 40 +++++ .../test_co_ccap_county_rates_properties.py | 144 +++++++++++++++--- ...st_co_ccap_eligible_children_properties.py | 38 ++++- .../child_care_charges_providers_absorb.py | 15 ++ .../co/ccap/co_ccap_after_school_care_only.py | 37 +++++ .../co/ccap/co_ccap_charges_above_rate.py | 32 ++++ .../states/co/ccap/co_ccap_child_charges.py | 19 +++ .../ccap/co_ccap_child_in_part_time_care.py | 23 +-- .../states/co/ccap/co_ccap_reimbursement.py | 8 +- .../ccap/rates/co_ccap_care_days_per_month.py | 16 +- .../states/co/ccap/rates/co_ccap_care_unit.py | 12 +- .../co/ccap/rates/co_ccap_daily_rate.py | 3 +- .../rates/co_ccap_full_time_daily_rate.py | 14 +- .../expense/childcare/childcare_expenses.py | 5 +- 19 files changed, 494 insertions(+), 66 deletions(-) create mode 100644 policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_charges_above_rate.yaml create mode 100644 policyengine_us/variables/gov/hhs/ccdf/child_care_charges_providers_absorb.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/co_ccap_after_school_care_only.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/co_ccap_charges_above_rate.py create mode 100644 policyengine_us/variables/gov/states/co/ccap/co_ccap_child_charges.py diff --git a/changelog.d/co-ccap-county-rates.fixed.md b/changelog.d/co-ccap-county-rates.fixed.md index ae508d7b628..c2969710ef6 100644 --- a/changelog.d/co-ccap-county-rates.fixed.md +++ b/changelog.d/co-ccap-county-rates.fixed.md @@ -1 +1 @@ -Cap Colorado's Child Care Assistance Program payment for each eligible child at the county's reimbursement rate for that child's care, from CDEC's state-established licensed rates (October 2024 and October 2025) and each county's qualified exempt rates, and cap the parent fee at the reimbursement. The program had paid any charge in full. +Cap Colorado's Child Care Assistance Program payment for each eligible child at the county's reimbursement rate for that child's care, from CDEC's state-established licensed rates (October 2024 and October 2025) and each county's qualified exempt rates, and cap the parent fee at the reimbursement. The provider absorbs charges above the rate, so `childcare_expenses` leaves the family the capped fee for an eligible child's care. The model had paid any charge in full. diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_charges_above_rate.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_charges_above_rate.yaml new file mode 100644 index 00000000000..55b2bbce184 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_charges_above_rate.yaml @@ -0,0 +1,97 @@ +# 8 CCR 1403-1 3.128(T): a provider may not charge a CCCAP family more than the +# daily reimbursement rate, so the provider absorbs each eligible child's +# charges above the county rate. Without a county, a household reads Adams +# County; without a provider type, rating or schedule, a center at Tier 1 & +# Tier 2, full time, five days a week. An infant there gets $76.71 a day x +# 260 / 12 = $1,662.05 a month from October 2025, through 2026. + +- name: Case 1, the provider absorbs the charges above the county rate for an eligible child, not a teenager's. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + infant: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + teenager: + age: 15 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, infant, teenager] + co_ccap_parent_fee: 100 + co_ccap_eligible: true + households: + household: + members: [parent, infant, teenager] + state_code: CO + output: + # $2,000 - $1,662.05; the 15-year-old falls outside 3.132(D). + co_ccap_charges_above_rate: 337.95 + co_ccap_reimbursement: 1_662.05 + co_ccap_subsidy: 1_562.05 + +- name: Case 2, over a year the family pays the parent fee and the teenager's charges. + period: 2026 + absolute_error_margin: 0.1 + input: + people: + parent: + age: 30 + infant: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + teenager: + age: 15 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 12_000 + spm_units: + spm_unit: + members: [parent, infant, teenager] + co_ccap_parent_fee: 1_200 + co_ccap_eligible: true + households: + household: + members: [parent, infant, teenager] + state_code: CO + output: + # 12 x $1,562.05 = $18,744.60 paid and 12 x $337.95 = $4,055.40 absorbed. + co_ccap_subsidy: 18_744.60 + child_care_charges_providers_absorb: 4_055.40 + # $36,000 - $18,744.60 - $4,055.40 = $13,200: the $1,200 fee and the + # teenager's $12,000. + childcare_expenses: 13_200 + +- name: Case 3, a parent fee above the reimbursement leaves the family the reimbursement. + period: 2026 + absolute_error_margin: 0.1 + input: + people: + parent: + age: 30 + infant: + age: 0 + is_tax_unit_dependent: true + pre_subsidy_childcare_expenses: 24_000 + spm_units: + spm_unit: + members: [parent, infant] + co_ccap_parent_fee: 24_000 + co_ccap_eligible: true + households: + household: + members: [parent, infant] + state_code: CO + output: + # The fee stops at the $1,662.05 reimbursement (3.124(L)), so the county + # pays nothing, and the provider absorbs the $337.95 above the rate. + co_ccap_subsidy: 0 + co_ccap_capped_parent_fee: 19_944.60 + child_care_charges_providers_absorb: 4_055.40 + # $24,000 - $4,055.40 = 12 x $1,662.05. + childcare_expenses: 19_944.60 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_child_in_part_time_care.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_child_in_part_time_care.yaml index 2cee829404d..71a0f36c329 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_child_in_part_time_care.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_child_in_part_time_care.yaml @@ -148,3 +148,26 @@ # full-time unit a day gives 21.67 units. # twenty_attending_days: reported days too, 20 units. co_ccap_child_in_part_time_care: [false, false, false] + +- name: Case 3, exactly 13 units a month is full time, though single precision stores the days a hair short. + period: 2026-01 + input: + people: + parent: + age: 35 + thirteen_units: + age: 3 + is_tax_unit_dependent: true + childcare_hours_per_day: 4 + # 60 / 11 days a week, as single precision stores it. + childcare_days_per_week: 5.4545455 + spm_units: + spm_unit: + members: [parent, thirteen_units] + households: + household: + members: [parent, thirteen_units] + state_code: CO + output: + # 0.55 x 60 / 11 x 52 / 12 = 13 units, not fewer than 13. + co_ccap_child_in_part_time_care: [false, false] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml index 3d69124224e..b00e49fe75a 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_subsidy.yaml @@ -202,8 +202,11 @@ state_code: CO output: co_ccap_child_eligible: [false, true, true] - # $958.53 + $500 (below the $808.82 school-age rate) - $200. - co_ccap_subsidy: 1_258.53 + # Care after school alone reads the part-time unit, so the 12-year-old's + # Adams school-age rate is 37.33 x 0.55 = 20.53 a day, or 20.53 x 260 / + # 12 = $444.82 a month, below the $500 charge. + # $958.53 + $444.82 - $200 = $1,203.35. + co_ccap_subsidy: 1_203.35 - name: Case 8, a teenager's charge doesn't absorb a fee above the eligible child's charge. period: 2026-01 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml index 72c3212e20a..884268809d8 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_days_per_month.yaml @@ -30,3 +30,28 @@ output: # 5 x 52 / 12 = 21.67; 3 x 52 / 12 = 13; 2 x 52 / 12 = 8.67 < 12. co_ccap_care_days_per_month: [21.67, 13, 10, 21.67, 12] + +- name: A county pays for at most every day of the month. + period: 2026-02 + absolute_error_margin: 0.01 + input: + # A yearly input in a month other than January needs its year. + people: + seven_days_a_week: + childcare_days_per_week: + 2026: 7 + thirty_attending_days: + childcare_attending_days_per_month: + 2026: 30 + four_days_a_week: + childcare_days_per_week: + 2026: 4 + households: + household: + members: [seven_days_a_week, thirty_attending_days, four_days_a_week] + state_code: + 2026: CO + output: + # February 2026 has 28 days, so 7 x 52 / 12 = 30.33 days and 30 attending + # days stop at 28, while 4 x 52 / 12 = 17.33 passes. + co_ccap_care_days_per_month: [28, 28, 17.33] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml index 41dd559afcd..22164ecb9d8 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/rates/co_ccap_care_unit.yaml @@ -92,3 +92,43 @@ # exceed the two scheduled days: 20 / 4.62 = 4.33 hours. Daily hours win # over weekly hours: 4 hours. co_ccap_care_unit: [0.55, 0.55, 1, 1, 1.55, 1.55, 2, 1, 0.55, 0.55] + +- name: A child in grade 1 or above whose only care comes after school reads the part-time unit. + period: 2026-01 + input: + people: + after_school_only: + age: 8 + is_in_k12_school: true + after_school_expenses: 3_000 + kindergarten_after_school: + age: 5 + is_in_k12_school: true + after_school_expenses: 3_000 + after_school_and_other_care: + age: 8 + is_in_k12_school: true + after_school_expenses: 3_000 + pre_subsidy_childcare_expenses: 3_000 + after_school_with_days: + age: 8 + is_in_k12_school: true + after_school_expenses: 3_000 + childcare_days_per_week: 5 + households: + household: + members: + [ + after_school_only, + kindergarten_after_school, + after_school_and_other_care, + after_school_with_days, + ] + state_code: CO + output: + # after_school_only: no hours or days and only an after-school charge, + # so 55%, as the parent fee reads it. + # kindergarten_after_school: below grade 1, so full time. + # after_school_and_other_care: other care leaves the hours unknown. + # after_school_with_days: reported days, so not after-school care alone. + co_ccap_care_unit: [0.55, 1, 1, 1] diff --git a/policyengine_us/tests/test_co_ccap_county_rates_properties.py b/policyengine_us/tests/test_co_ccap_county_rates_properties.py index aebdd6b5413..9c39ae80365 100644 --- a/policyengine_us/tests/test_co_ccap_county_rates_properties.py +++ b/policyengine_us/tests/test_co_ccap_county_rates_properties.py @@ -25,14 +25,22 @@ exceeds the fee or the reimbursement; and the payment plus the capped fee equals the reimbursement. 4. More charges never lower the payment, and a higher fee never raises it. +5. 3.128(T) bars a provider from charging a CCCAP family more than the daily + reimbursement rate, so the provider absorbs each eligible child's charges + above the county rate, and the family's child care expenses for the year + come to the capped fees, less any after-school charges, which + `childcare_expenses` leaves out of the charges. Without daily hours, the model spreads a child's weekly hours over the days of care in a week: the larger of days a week and attending days a month x 12 / 52, else five weekdays. Without hours of care a child takes the full-time -unit, and without a weekly schedule or attending days, a five-day week -(5 x 52 / 12 days a month). +unit, except that a child in grade 1 or above whose only care comes after +school takes the part-time unit, as the parent fee does. Without a weekly +schedule or attending days, a child takes a five-day week (5 x 52 / 12 days a +month), and no child takes more days than the month has. """ +from calendar import monthrange from datetime import date from decimal import ROUND_HALF_UP, Decimal from pathlib import Path @@ -52,6 +60,9 @@ MONTHS_IN_YEAR = 12 DEFAULT_DAYS_PER_WEEK = 5 PARENT_AGE = 30 +# PolicyEngine puts children aged 5 to 17 in school, and the model takes a +# child in school aged 6 or older to be in grade 1 or above. +FIRST_GRADE_MONTHS = 72 # A county outside Colorado's list reads Denver's rates. FALLBACK_COUNTY = "DENVER_COUNTY_CO" # The bands as CDEC's tables head them, in months of age. @@ -158,10 +169,24 @@ def care_hours(child): return child["weekly_hours"] / days_in_a_week -def care_unit(hours): - """3.130(C); without hours, the full-time unit.""" +def after_school_only(child): + """A child in grade 1 or above with no hours or days of care whose only + charge comes after school.""" + return ( + child["age_months"] >= FIRST_GRADE_MONTHS + and care_hours(child) == 0 + and child["days_per_week"] == 0 + and child["attending_days"] == 0 + and child["after_school"] > 0 + and child["charge"] == 0 + ) + + +def care_unit(hours, after_school_care_only=False): + """3.130(C); without hours, the full-time unit, or the part-time unit for + after-school care alone.""" if hours <= 0: - return Decimal("1") + return Decimal("0.55") if after_school_care_only else Decimal("1") if hours <= 5: return Decimal("0.55") if hours <= 12: @@ -175,11 +200,11 @@ def daily_rate(full_time, unit): return (full_time * unit).quantize(CENT, rounding=ROUND_HALF_UP) -def days_of_care(days_per_week, attending_days): +def days_of_care(days_per_week, attending_days, instant): days = max(days_per_week * WEEKS_IN_YEAR / MONTHS_IN_YEAR, attending_days) - if days > 0: - return days - return DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR + if days <= 0: + days = DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR + return min(days, monthrange(instant.year, instant.month)[1]) def county_rate(child, county, instant): @@ -187,17 +212,25 @@ def county_rate(child, county, instant): full_time = full_time_rate( county, child["provider"], child["age_months"], child["rating"], instant ) - daily = daily_rate(full_time, care_unit(care_hours(child))) - return float(daily) * days_of_care(child["days_per_week"], child["attending_days"]) + unit = care_unit(care_hours(child), after_school_only(child)) + daily = daily_rate(full_time, unit) + days = days_of_care(child["days_per_week"], child["attending_days"], instant) + return float(daily) * days -def simulate(month, units, variables): - """`variables` for `month`, with each unit one Colorado household, SPM - unit and tax unit of a parent and the unit's children. +def child_charges(child): + return child["charge"] + child["after_school"] + + +def simulate(period, units, variables, months=None): + """`variables` for `period`, with each unit one Colorado household, SPM + unit and tax unit of a parent and the unit's children, eligible and owing + its fee in each of `months` (by default, the month `period` names). Returns each variable's values by person, or by SPM unit for SPM unit variables, in the order of `units` and their children.""" - year = int(month[:4]) + year = int(period[:4]) + months = months or [period] people, households, spm_units, tax_units, families, marital_units = ( {}, {}, @@ -227,6 +260,7 @@ def simulate(month, units, variables): "pre_subsidy_childcare_expenses": { year: child["charge"] * MONTHS_IN_YEAR }, + "after_school_expenses": {year: child["after_school"] * MONTHS_IN_YEAR}, } households[f"household_{u}"] = { "members": members, @@ -235,8 +269,8 @@ def simulate(month, units, variables): } spm_units[f"spm_unit_{u}"] = { "members": members, - "co_ccap_eligible": {month: True}, - "co_ccap_parent_fee": {month: unit["fee"]}, + "co_ccap_eligible": {month: True for month in months}, + "co_ccap_parent_fee": {month: unit["fee"] for month in months}, } tax_units[f"tax_unit_{u}"] = {"members": members} families[f"family_{u}"] = {"members": members} @@ -252,7 +286,7 @@ def simulate(month, units, variables): ) results = {} for variable in variables: - values = simulation.calculate(variable, month) + values = simulation.calculate(variable, period) if simulation.tax_benefit_system.variables[variable].entity.key == "person": # Drop the parents, leaving the children in order. children = [i for i, name in enumerate(people) if name.startswith("child_")] @@ -291,7 +325,8 @@ def instant_of(month): weekly_hours=weekly_hours, days_per_week=st.integers(min_value=0, max_value=7), attending_days=st.integers(min_value=0, max_value=31), - charge=st.integers(min_value=0, max_value=4_000), + charge=st.one_of(st.just(0), st.integers(min_value=0, max_value=4_000)), + after_school=st.one_of(st.just(0), st.integers(min_value=0, max_value=1_000)), ) ) units = st.fixed_dictionaries( @@ -313,6 +348,7 @@ def child(**overrides): days_per_week=0, attending_days=0, charge=0, + after_school=0, ) return {**base, **overrides} @@ -473,6 +509,23 @@ def test_each_care_unit_pays_its_share_of_the_full_time_rate(month, unit): ) ], ) +# A school child whose only care comes after school, at the part-time unit, +# beside a kindergartner and a child with a schedule, who take full time. +@example( + month="2026-02", + many=[ + dict( + county="DENVER_COUNTY_CO", + fee=0, + children=[ + child(age_months=96, after_school=1_000), + child(age_months=66, after_school=1_000), + child(age_months=96, days_per_week=5, after_school=1_000), + child(age_months=96, days_per_week=7, charge=4_000), + ], + ) + ], +) @given(month=months, many=st.lists(units, min_size=1, max_size=4)) def test_the_payment_is_the_capped_charges_less_the_fee(month, many): instant = instant_of(month) @@ -484,6 +537,7 @@ def test_the_payment_is_the_capped_charges_less_the_fee(month, many): "co_ccap_reimbursement", "co_ccap_capped_parent_fee", "co_ccap_subsidy", + "co_ccap_charges_above_rate", ], ) caps = iter(results["co_ccap_maximum_monthly_payment"]) @@ -491,8 +545,9 @@ def test_the_payment_is_the_capped_charges_less_the_fee(month, many): rates = [county_rate(kid, unit["county"], instant) for kid in unit["children"]] for rate in rates: assert next(caps) == pytest.approx(rate, abs=TOLERANCE) - charges = [kid["charge"] for kid in unit["children"]] + charges = [child_charges(kid) for kid in unit["children"]] reimbursement = sum(min(c, r) for c, r in zip(charges, rates)) + above_rate = sum(max(c - r, 0) for c, r in zip(charges, rates)) fee = unit["fee"] model_reimbursement = results["co_ccap_reimbursement"][u] capped_fee = results["co_ccap_capped_parent_fee"][u] @@ -505,6 +560,12 @@ def test_the_payment_is_the_capped_charges_less_the_fee(month, many): assert paid <= max(sum(charges) - fee, 0) + TOLERANCE assert capped_fee <= min(fee, model_reimbursement) + TOLERANCE assert paid + capped_fee == pytest.approx(model_reimbursement, abs=TOLERANCE) + # 3.128(T): the provider absorbs the charges above the county rate. + model_above_rate = results["co_ccap_charges_above_rate"][u] + assert model_above_rate == pytest.approx(above_rate, abs=TOLERANCE) + assert model_reimbursement + model_above_rate == pytest.approx( + sum(charges), abs=TOLERANCE + ) @settings(max_examples=15, deadline=None) @@ -534,3 +595,46 @@ def test_more_charges_never_lower_the_payment_and_a_higher_fee_never_raises_it( base, with_more_charge, with_more_fee = paid assert with_more_charge >= base - TOLERANCE assert with_more_fee <= base + TOLERANCE + + +@settings(max_examples=6, deadline=None) +# An infant's $2,000 a month in an Adams County center against $1,662.05: the +# family pays its $100 fee, and the provider absorbs $337.95. +@example( + year=2026, + unit=dict(county="ADAMS_COUNTY_CO", fee=100, children=[child(charge=2_000)]), +) +# A fee above the reimbursement: the family pays the reimbursement. +@example( + year=2026, + unit=dict(county="ADAMS_COUNTY_CO", fee=2_000, children=[child(charge=2_000)]), +) +@given(year=st.integers(min_value=2024, max_value=2026), unit=units) +def test_the_family_pays_only_the_capped_fee(year, unit): + months_of_year = [f"{year}-{m:02d}" for m in range(1, MONTHS_IN_YEAR + 1)] + results = simulate( + str(year), + [unit], + ["childcare_expenses", "child_care_charges_providers_absorb"], + months=months_of_year, + ) + capped_fees = 0 + above_rate = 0 + for month in months_of_year: + instant = instant_of(month) + rates = [county_rate(kid, unit["county"], instant) for kid in unit["children"]] + charges = [child_charges(kid) for kid in unit["children"]] + capped_fees += min(unit["fee"], sum(min(c, r) for c, r in zip(charges, rates))) + above_rate += sum(max(c - r, 0) for c, r in zip(charges, rates)) + after_school = sum(kid["after_school"] for kid in unit["children"]) + # A month's rounding in each of 12 months. + tolerance = MONTHS_IN_YEAR * TOLERANCE + assert results["child_care_charges_providers_absorb"][0] == pytest.approx( + above_rate, abs=tolerance + ) + # childcare_expenses counts the child care charges, less the payment and + # the charges the provider absorbs: the capped fees, less the after-school + # charges it leaves out, floored at zero. + assert results["childcare_expenses"][0] == pytest.approx( + max(capped_fees - after_school * MONTHS_IN_YEAR, 0), abs=tolerance + ) diff --git a/policyengine_us/tests/test_co_ccap_eligible_children_properties.py b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py index cdd2a886286..5242d209d9c 100644 --- a/policyengine_us/tests/test_co_ccap_eligible_children_properties.py +++ b/policyengine_us/tests/test_co_ccap_eligible_children_properties.py @@ -15,6 +15,8 @@ payment formula alone. """ +from decimal import ROUND_HALF_UP, Decimal + import pytest from hypothesis import example, given, settings from hypothesis import strategies as st @@ -34,6 +36,12 @@ ADAMS_CENTER_DAILY_RATES = ((18, 76.71), (36, 62.26), (72, 44.24)) ADAMS_CENTER_SCHOOL_AGE_DAILY_RATE = 37.33 DAYS_PER_MONTH = 5 * 52 / 12 +# A child in school (PolicyEngine puts ages 5 to 17 there) aged 6 or older +# whose only charge comes after school takes the part-time unit, 55% of the +# daily rate rounded half up to the cent (3.130(C)). +FIRST_GRADE_AGE = 6 +LAST_SCHOOL_AGE = 17 +PART_TIME_UNIT = Decimal("0.55") def colorado(children, monthly_fee): @@ -75,13 +83,26 @@ def eligible(child): ) -def county_rate(child): - """3.130: the most Adams County pays for the child's care in a month.""" +def full_time_daily_rate(child): age_months = child["age"] * MONTHS_IN_YEAR for limit, daily in ADAMS_CENTER_DAILY_RATES: if age_months < limit: - return daily * DAYS_PER_MONTH - return ADAMS_CENTER_SCHOOL_AGE_DAILY_RATE * DAYS_PER_MONTH + return daily + return ADAMS_CENTER_SCHOOL_AGE_DAILY_RATE + + +def county_rate(child): + """3.130: the most Adams County pays for the child's care in a month.""" + daily = full_time_daily_rate(child) + after_school_only = ( + FIRST_GRADE_AGE <= child["age"] <= LAST_SCHOOL_AGE + and child["care"] == 0 + and child["after_school"] > 0 + ) + if after_school_only: + part_time = Decimal(str(daily)) * PART_TIME_UNIT + daily = float(part_time.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)) + return daily * DAYS_PER_MONTH charges = dict( @@ -174,6 +195,15 @@ def test_a_member_outside_the_age_limits_adds_nothing(child, other, fee): ], fee=200, ) +# A 12-year-old whose only care comes after school takes the part-time unit +# ($20.53 a day), and a sibling with child care charges takes full time. +@example( + children=[ + dict(age=12, disabled=False, court=False, care=0, after_school=800), + dict(age=12, disabled=False, court=False, care=100, after_school=800), + ], + fee=0, +) @given( children=st.lists( st.one_of(eligible_children, ineligible_members), min_size=1, max_size=3 diff --git a/policyengine_us/variables/gov/hhs/ccdf/child_care_charges_providers_absorb.py b/policyengine_us/variables/gov/hhs/ccdf/child_care_charges_providers_absorb.py new file mode 100644 index 00000000000..b722e55c283 --- /dev/null +++ b/policyengine_us/variables/gov/hhs/ccdf/child_care_charges_providers_absorb.py @@ -0,0 +1,15 @@ +from policyengine_us.model_api import * + + +class child_care_charges_providers_absorb(Variable): + value_type = float + entity = SPMUnit + definition_period = YEAR + label = "Child care charges providers absorb under subsidy rules" + documentation = ( + "Charges above a child care subsidy program's rate that the program's " + "rules bar the provider from collecting from the family." + ) + unit = USD + + adds = ["co_ccap_charges_above_rate"] diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_after_school_care_only.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_after_school_care_only.py new file mode 100644 index 00000000000..81f684d3156 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_after_school_care_only.py @@ -0,0 +1,37 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.gov.states.co.ccap.co_ccap_child_in_part_time_care import ( + FIRST_GRADE_AGE, +) + + +class co_ccap_after_school_care_only(Variable): + value_type = bool + entity = Person + definition_period = MONTH + label = "Colorado Child Care Assistance Program child in grade 1 or above whose only reported care comes after school" + documentation = ( + "A child in grade 1 or above with no hours or days of care whose only " + "care expense is after school. After-school care fills part of a school " + "day, and the child has it in most months (section 3.124(V)), so the " + "parent fee and the county rate both read it as part-time care." + ) + defined_for = StateCode.CO + reference = ( + # 8 CCR 1403-1 3.124(V) and (W), PDF page 85. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=85", + ) + + def formula(person, period, parameters): + year = period.this_year + in_grade_one_or_above = person("is_in_k12_school", year) & ( + person("age", year) >= FIRST_GRADE_AGE + ) + no_schedule = ( + (person("co_ccap_care_hours_per_day", period) == 0) + & (person("childcare_days_per_week", year) == 0) + & (person("childcare_attending_days_per_month", year) == 0) + ) + after_school_only = (person("after_school_expenses", year) > 0) & ( + person("pre_subsidy_childcare_expenses", year) == 0 + ) + return in_grade_one_or_above & no_schedule & after_school_only diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_charges_above_rate.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_charges_above_rate.py new file mode 100644 index 00000000000..6bc13c8dc59 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_charges_above_rate.py @@ -0,0 +1,32 @@ +from policyengine_us.model_api import * + + +class co_ccap_charges_above_rate(Variable): + value_type = float + entity = SPMUnit + unit = USD + definition_period = MONTH + label = "Colorado Child Care Assistance Program charges above the county rate" + documentation = ( + "The eligible children's charges above the county reimbursement rate, " + "which the provider may not collect from the family." + ) + defined_for = "co_ccap_eligible" + reference = ( + # 8 CCR 1403-1 3.128(T), PDF page 116: a provider may not charge a + # CCCAP family more than the daily reimbursement rate in its fiscal + # agreement. + "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=12658&fileName=8%20CCR%201403-1#page=116", + ) + + def formula(spm_unit, period, parameters): + # The county pays each eligible child's charges up to the county rate + # (co_ccap_reimbursement), and the provider absorbs the rest. CDEC + # lets a provider charge the family for care the county hasn't + # authorized, but no input separates that care, so the model reads + # every reported charge as authorized care. + person = spm_unit.members + eligible_child = person("co_ccap_child_eligible", period) + charges = person("co_ccap_child_charges", period) + county_rate = person("co_ccap_maximum_monthly_payment", period) + return spm_unit.sum(max_(charges - county_rate, 0) * eligible_child) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_charges.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_charges.py new file mode 100644 index 00000000000..d49cfc2cfe2 --- /dev/null +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_charges.py @@ -0,0 +1,19 @@ +from policyengine_us.model_api import * + + +class co_ccap_child_charges(Variable): + value_type = float + entity = Person + unit = USD + definition_period = MONTH + label = "Colorado Child Care Assistance Program charges for the child's care" + documentation = "The child's child care and after-school charges, floored at zero." + defined_for = StateCode.CO + + def formula(person, period, parameters): + charges = add( + person, + period, + ["pre_subsidy_childcare_expenses", "after_school_expenses"], + ) + return max_(charges, 0) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py index cc2feb9254c..8fc09acac02 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_child_in_part_time_care.py @@ -29,25 +29,14 @@ class co_ccap_child_in_part_time_care(Variable): def formula(person, period, parameters): p = parameters(period).gov.states.co.ccap.parent_fee.part_time units = person("co_ccap_full_time_equivalent_units", period) - part_time_units = units < p.unit_threshold + # The units come from values stored in single precision, which can put + # an exact 13 units a hair below the threshold; four decimals clear it. + part_time_units = np.round(units, 4) < p.unit_threshold year = period.this_year - daily_hours = person("co_ccap_care_hours_per_day", period) + # co_ccap_care_unit reads the part-time unit for a child whose only + # care comes after school (co_ccap_after_school_care_only). part_time_days = person("co_ccap_care_unit", period) < 1 in_grade_one_or_above = person("is_in_k12_school", year) & ( person("age", year) >= FIRST_GRADE_AGE ) - # After-school care fills part of a school day, and a child with no - # other schedule or care expense has that care in most months (3.124(V)). - no_schedule = ( - (daily_hours == 0) - & (person("childcare_days_per_week", year) == 0) - & (person("childcare_attending_days_per_month", year) == 0) - ) - after_school_only = ( - no_schedule - & (person("after_school_expenses", year) > 0) - & (person("pre_subsidy_childcare_expenses", year) == 0) - ) - return part_time_units | ( - in_grade_one_or_above & (part_time_days | after_school_only) - ) + return part_time_units | (in_grade_one_or_above & part_time_days) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py index c0786049ad8..673620549b1 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_reimbursement.py @@ -19,11 +19,7 @@ class co_ccap_reimbursement(Variable): def formula(spm_unit, period, parameters): person = spm_unit.members eligible_child = person("co_ccap_child_eligible", period) - charge = add( - person, - period, - ["pre_subsidy_childcare_expenses", "after_school_expenses"], - ) + charges = person("co_ccap_child_charges", period) county_rate = person("co_ccap_maximum_monthly_payment", period) - reimbursable = min_(max_(charge, 0), county_rate) + reimbursable = min_(charges, county_rate) return spm_unit.sum(reimbursable * eligible_child) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py index 46e4ebd0d8d..bf5c53557e2 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_days_per_month.py @@ -1,7 +1,7 @@ from policyengine_us.model_api import * - -# Without a schedule, read a five-day week of care. -DEFAULT_DAYS_PER_WEEK = 5 +from policyengine_us.variables.gov.states.co.ccap.co_ccap_care_hours_per_day import ( + WEEKDAYS_PER_WEEK, +) class co_ccap_care_days_per_month(Variable): @@ -26,7 +26,9 @@ def formula(person, period, parameters): # model carries no county's absence policy, so the scheduled days set # the most a county may pay. Attending days above the schedule count # the drop-in days a county may pay (3.130(F)). - scheduled_days = days_per_week * WEEKS_IN_YEAR / MONTHS_IN_YEAR - days = max_(scheduled_days, attending_days) - default_days = DEFAULT_DAYS_PER_WEEK * WEEKS_IN_YEAR / MONTHS_IN_YEAR - return where(days > 0, days, default_days) + weeks_per_month = WEEKS_IN_YEAR / MONTHS_IN_YEAR + days = max_(days_per_week * weeks_per_month, attending_days) + # Without a schedule, read a five-day week of care. + default_days = WEEKDAYS_PER_WEEK * weeks_per_month + # A county pays for at most every day of the month. + return min_(where(days > 0, days, default_days), period.size_in_days) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py index 07cb7052417..4cdd75467d9 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_care_unit.py @@ -20,9 +20,17 @@ def formula(person, period, parameters): p = parameters(period).gov.states.co.ccap.rates hours = person("co_ccap_care_hours_per_day", period) # Without hours of care, read the full-time unit: the schedule that - # the daily rate prices. A user who knows the hours enters them. + # the daily rate prices. A user who knows the hours enters them. A + # child in grade 1 or above whose only care comes after school reads + # the part-time unit instead, as the parent fee does. + part_time_unit = p.care_unit.amounts[0] + unit_without_hours = where( + person("co_ccap_after_school_care_only", period), + part_time_unit, + FULL_TIME_UNIT, + ) return where( hours > 0, p.care_unit.calc(hours, right=True), - FULL_TIME_UNIT, + unit_without_hours, ) diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py index 370a0a9a939..ea01facae7b 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_daily_rate.py @@ -21,7 +21,8 @@ def formula(person, period, parameters): full_time_rate = person("co_ccap_full_time_daily_rate", period) unit = person("co_ccap_care_unit", period) # The county rate plans round each unit's rate half up to the cent: a - # $60.90 full-time rate pays $33.50 part time (60.90 x 0.55 = 33.495). + # $63.50 full-time rate pays $34.93 part time (63.50 x 0.55 = 34.925), + # where rounding half to even would pay $34.92. # Working in whole cents keeps the halves exact. cents = np.round(full_time_rate * 100) * np.round(unit * 100) / 100 return np.floor(cents + 0.5) / 100 diff --git a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py index c8ea20dca4e..17cb1556345 100644 --- a/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py +++ b/policyengine_us/variables/gov/states/co/ccap/rates/co_ccap_full_time_daily_rate.py @@ -23,11 +23,15 @@ class co_ccap_full_time_daily_rate(Variable): def formula(person, period, parameters): p = parameters(period).gov.states.co.ccap.rates county = person.household("county_str", period.this_year) - # A county outside Colorado, such as UNKNOWN for a household that - # doesn't report one, reads Denver's rates, as co_ccap_fpg_eligible - # does. The tables' county breakdown fills them with every county in - # the country at zero, so their keys can't tell Colorado's counties - # apart; the state suffix in each county's name does. + # A county outside Colorado, or UNKNOWN, reads Denver's rates, as + # co_ccap_fpg_eligible does. A household that reports neither a + # county nor a county FIPS code gets Adams County, which county's + # formula assigns as Colorado's first county, unless other + # households in the simulation report a county; then it gets + # UNKNOWN, and so Denver's rates. The tables' county + # breakdown fills them with every county in the country at zero, so + # their keys can't tell Colorado's counties apart; the state suffix + # in each county's name does. in_colorado = np.char.endswith(county.astype(str), "_CO") county = np.where(in_colorado, county, "DENVER_COUNTY_CO") tier = person("co_ccap_quality_tier", period) diff --git a/policyengine_us/variables/household/expense/childcare/childcare_expenses.py b/policyengine_us/variables/household/expense/childcare/childcare_expenses.py index e668a95657f..27bbc6543b2 100644 --- a/policyengine_us/variables/household/expense/childcare/childcare_expenses.py +++ b/policyengine_us/variables/household/expense/childcare/childcare_expenses.py @@ -13,4 +13,7 @@ def formula(spm_unit, period, parameters): spm_unit, period, ["pre_subsidy_childcare_expenses"] ) subsidies = spm_unit("child_care_subsidies", period) - return max_(pre_subsidy_childcare_expenses - subsidies, 0) + # Charges a subsidy program bars the provider from collecting never + # reach the family. + absorbed = spm_unit("child_care_charges_providers_absorb", period) + return max_(pre_subsidy_childcare_expenses - subsidies - absorbed, 0)