From b6619afbd4d1a1aacafd06dcbdffa3a1d8d1ebe8 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 15 Jun 2026 13:14:35 -0400 Subject: [PATCH 1/8] Start Minnesota CCAP implementation (#8636) Co-Authored-By: Claude Opus 4.8 (1M context) From b0912be08a4c4f06bf4dac695bd5d33deb95f4ab Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 15 Jun 2026 14:58:28 -0400 Subject: [PATCH 2/8] Implement Minnesota CCAP (ref #8636) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../hhs/ccdf/child_care_subsidy_programs.yaml | 1 + .../mn/dcyf/ccap/age_group/center_months.yaml | 34 + .../mn/dcyf/ccap/age_group/family_months.yaml | 34 + .../mn/dcyf/ccap/age_threshold/child.yaml | 11 + .../ccap/age_threshold/disabled_child.yaml | 11 + .../mn/dcyf/ccap/copay/biweekly/size_10.yaml | 128 ++ .../mn/dcyf/ccap/copay/biweekly/size_11.yaml | 120 ++ .../mn/dcyf/ccap/copay/biweekly/size_12.yaml | 116 ++ .../mn/dcyf/ccap/copay/biweekly/size_13.yaml | 108 ++ .../mn/dcyf/ccap/copay/biweekly/size_2.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_3.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_4.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_5.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_6.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_7.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_8.yaml | 140 ++ .../mn/dcyf/ccap/copay/biweekly/size_9.yaml | 132 ++ .../ccap/income/countable_income/earned.yaml | 27 + .../income/countable_income/unearned.yaml | 48 + .../dcyf/ccap/income/deductions/sources.yaml | 25 + .../ccap/income/smi_rate/entrance_mfip.yaml | 13 + .../ccap/income/smi_rate/entrance_other.yaml | 13 + .../income/smi_rate/exit_during_period.yaml | 13 + .../mn/dcyf/ccap/quality_differential.yaml | 18 + .../ccap/rate_unit/daily_hours_threshold.yaml | 11 + .../rate_unit/weekly_hours_threshold.yaml | 11 + .../states/mn/dcyf/ccap/rates/full_day.yaml | 1414 +++++++++++++++++ .../gov/states/mn/dcyf/ccap/rates/hourly.yaml | 1414 +++++++++++++++++ .../states/mn/dcyf/ccap/rates/lnl_hourly.yaml | 711 +++++++++ .../gov/states/mn/dcyf/ccap/rates/weekly.yaml | 1414 +++++++++++++++++ .../mn_ccap_activity_eligible.yaml | 136 ++ .../ccap/eligibility/mn_ccap_eligible.yaml | 91 ++ .../eligibility/mn_ccap_eligible_child.yaml | 178 +++ .../eligibility/mn_ccap_income_eligible.yaml | 320 ++++ .../gov/states/mn/dcyf/ccap/integration.yaml | 436 +++++ .../mn/dcyf/ccap/mn_ccap_age_group.yaml | 170 ++ .../states/mn/dcyf/ccap/mn_ccap_copay.yaml | 207 +++ .../dcyf/ccap/mn_ccap_countable_income.yaml | 116 ++ .../mn/dcyf/ccap/mn_ccap_provider_rate.yaml | 141 ++ .../ccap/mn_ccap_quality_differential.yaml | 77 + .../mn/dcyf/ccap/mn_ccap_rate_unit.yaml | 128 ++ .../mn/dcyf/ccap/mn_child_care_subsidies.yaml | 55 + .../mn/dcyf/ccap/copay/mn_ccap_copay.py | 53 + .../eligibility/mn_ccap_activity_eligible.py | 37 + .../dcyf/ccap/eligibility/mn_ccap_eligible.py | 20 + .../eligibility/mn_ccap_eligible_child.py | 25 + .../eligibility/mn_ccap_income_eligible.py | 33 + .../gov/states/mn/dcyf/ccap/mn_ccap.py | 32 + .../states/mn/dcyf/ccap/mn_ccap_age_group.py | 44 + .../mn/dcyf/ccap/mn_ccap_countable_income.py | 24 + .../states/mn/dcyf/ccap/mn_ccap_enrolled.py | 9 + .../dcyf/ccap/mn_ccap_gross_earned_income.py | 16 + .../ccap/mn_ccap_gross_unearned_income.py | 15 + .../mn/dcyf/ccap/mn_ccap_income_deductions.py | 12 + .../states/mn/dcyf/ccap/mn_ccap_max_rate.py | 28 + .../mn/dcyf/ccap/mn_ccap_provider_rate.py | 86 + .../mn/dcyf/ccap/mn_ccap_provider_type.py | 22 + .../mn/dcyf/ccap/mn_ccap_quality_rating.py | 22 + .../states/mn/dcyf/ccap/mn_ccap_rate_unit.py | 51 + .../mn/dcyf/ccap/mn_ccap_registration_fee.py | 19 + .../mn/dcyf/ccap/mn_child_care_subsidies.py | 11 + 61 files changed, 9421 insertions(+) create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/unearned.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/deductions/sources.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/quality_differential.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/full_day.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/hourly.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_hourly.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/weekly.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_age_group.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.yaml create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_age_group.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_enrolled.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_unearned_income.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_income_deductions.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_type.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_quality_rating.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_registration_fee.py create mode 100644 policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.py diff --git a/policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml b/policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml index 748e5f5bffc..2f86501e52a 100644 --- a/policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml +++ b/policyengine_us/parameters/gov/hhs/ccdf/child_care_subsidy_programs.yaml @@ -17,6 +17,7 @@ values: - ky_child_care_subsidies # Kentucky Child Care Assistance Program - ma_child_care_subsidies # Massachusetts Child Care Financial Assistance - me_child_care_subsidies # Maine Child Care Affordability Program + - mn_child_care_subsidies # Minnesota Child Care Assistance Program - ne_child_care_subsidies # Nebraska Child Care Subsidy - vt_child_care_subsidies # Vermont Child Care Financial Assistance Program - nh_child_care_subsidies # New Hampshire Child Care Scholarship Program diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml new file mode 100644 index 00000000000..7b9579db2ce --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml @@ -0,0 +1,34 @@ +description: Minnesota assigns children in child care centers to age groups by age in months under the Child Care Assistance Program. +# Amount is the index into the MNCCAPAgeGroup enum (0 Infant, 1 Toddler, 2 PreSchool, 3 SchoolAge). +# School age starts at kindergarten eligibility, modeled as 60 months (age 5). +metadata: + type: single_amount + threshold_unit: month + amount_unit: /1 + period: year + label: Minnesota CCAP child care center age group by months + reference: + - title: Minnesota CCAP Policy Manual, glossary (Infant, Toddler, Preschool, School Age — Licensed Center Child Care) + href: https://www.revisor.mn.gov/rules/9503.0005/ + +brackets: + # Infant: up to 16 months + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 0 + # Toddler: 16 up to 33 months + - threshold: + 2025-01-01: 16 + amount: + 2025-01-01: 1 + # PreSchool: 33 months up to kindergarten eligibility + - threshold: + 2025-01-01: 33 + amount: + 2025-01-01: 2 + # School Age: kindergarten eligibility (60 months) onward + - threshold: + 2025-01-01: 60 + amount: + 2025-01-01: 3 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml new file mode 100644 index 00000000000..c45e6c42c3c --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml @@ -0,0 +1,34 @@ +description: Minnesota assigns children in family child care to age groups by age in months under the Child Care Assistance Program. +# Amount is the index into the MNCCAPAgeGroup enum (0 Infant, 1 Toddler, 2 PreSchool, 3 SchoolAge). +# School age starts at kindergarten eligibility, modeled as 60 months (age 5). +metadata: + type: single_amount + threshold_unit: month + amount_unit: /1 + period: year + label: Minnesota CCAP family child care age group by months + reference: + - title: Minnesota CCAP Policy Manual, glossary (Infant, Toddler, Preschool, School Age — Licensed Family Child Care) + href: https://www.revisor.mn.gov/rules/9503.0005/ + +brackets: + # Infant: up to 12 months + - threshold: + 2025-01-01: 0 + amount: + 2025-01-01: 0 + # Toddler: 12 up to 24 months + - threshold: + 2025-01-01: 12 + amount: + 2025-01-01: 1 + # PreSchool: 24 months up to kindergarten eligibility + - threshold: + 2025-01-01: 24 + amount: + 2025-01-01: 2 + # School Age: kindergarten eligibility (60 months) onward + - threshold: + 2025-01-01: 60 + amount: + 2025-01-01: 3 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml new file mode 100644 index 00000000000..e8a32efdece --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml @@ -0,0 +1,11 @@ +description: Minnesota limits the Child Care Assistance Program to children younger than this age. +values: + 2025-01-01: 13 + +metadata: + unit: year + period: year + label: Minnesota CCAP child age limit + reference: + - title: Minn. Stat. 142E.01, subd. 7 (eligible child; formerly 119B.011, subd. 8) + href: https://www.revisor.mn.gov/statutes/cite/142E.01 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml new file mode 100644 index 00000000000..20bb3ce60cd --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml @@ -0,0 +1,11 @@ +description: Minnesota limits the Child Care Assistance Program to children with disabilities younger than this age. +values: + 2025-01-01: 15 + +metadata: + unit: year + period: year + label: Minnesota CCAP disabled child age limit + reference: + - title: Minn. Stat. 142E.01, subd. 7 (eligible child; formerly 119B.011, subd. 8) + href: https://www.revisor.mn.gov/statutes/cite/142E.01 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml new file mode 100644 index 00000000000..76c86cebac1 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml @@ -0,0 +1,128 @@ +description: Minnesota charges this biweekly copayment for a ten-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for ten-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.10 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=10 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 48_863 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 65_150 + amount: + 2025-10-01: 66 + - threshold: + 2025-10-01: 65_711 + amount: + 2025-10-01: 77 + - threshold: + 2025-10-01: 68_449 + amount: + 2025-10-01: 80 + - threshold: + 2025-10-01: 71_186 + amount: + 2025-10-01: 83 + - threshold: + 2025-10-01: 73_944 + amount: + 2025-10-01: 86 + - threshold: + 2025-10-01: 76_660 + amount: + 2025-10-01: 98 + - threshold: + 2025-10-01: 79_418 + amount: + 2025-10-01: 102 + - threshold: + 2025-10-01: 82_155 + amount: + 2025-10-01: 105 + - threshold: + 2025-10-01: 84_892 + amount: + 2025-10-01: 129 + - threshold: + 2025-10-01: 87_629 + amount: + 2025-10-01: 133 + - threshold: + 2025-10-01: 90_366 + amount: + 2025-10-01: 160 + - threshold: + 2025-10-01: 93_103 + amount: + 2025-10-01: 175 + - threshold: + 2025-10-01: 95_840 + amount: + 2025-10-01: 192 + - threshold: + 2025-10-01: 98_578 + amount: + 2025-10-01: 220 + - threshold: + 2025-10-01: 101_315 + amount: + 2025-10-01: 238 + - threshold: + 2025-10-01: 104_052 + amount: + 2025-10-01: 256 + - threshold: + 2025-10-01: 106_789 + amount: + 2025-10-01: 288 + - threshold: + 2025-10-01: 109_526 + amount: + 2025-10-01: 327 + - threshold: + 2025-10-01: 112_263 + amount: + 2025-10-01: 368 + - threshold: + 2025-10-01: 115_000 + amount: + 2025-10-01: 417 + - threshold: + 2025-10-01: 117_737 + amount: + 2025-10-01: 467 + - threshold: + 2025-10-01: 120_474 + amount: + 2025-10-01: 518 + - threshold: + 2025-10-01: 123_212 + amount: + 2025-10-01: 559 + - threshold: + 2025-10-01: 125_949 + amount: + 2025-10-01: 602 + - threshold: + 2025-10-01: 128_706 + amount: + 2025-10-01: 646 + - threshold: + 2025-10-01: 131_444 + amount: + 2025-10-01: 690 + - threshold: + 2025-10-01: 134_181 + amount: + 2025-10-01: 748 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml new file mode 100644 index 00000000000..1e3d8751764 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml @@ -0,0 +1,120 @@ +description: Minnesota charges this biweekly copayment for a eleven-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for eleven-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.10 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=10 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 52_988 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 70_650 + amount: + 2025-10-01: 81 + - threshold: + 2025-10-01: 72_669 + amount: + 2025-10-01: 84 + - threshold: + 2025-10-01: 75_484 + amount: + 2025-10-01: 88 + - threshold: + 2025-10-01: 78_257 + amount: + 2025-10-01: 100 + - threshold: + 2025-10-01: 81_072 + amount: + 2025-10-01: 103 + - threshold: + 2025-10-01: 83_866 + amount: + 2025-10-01: 107 + - threshold: + 2025-10-01: 86_661 + amount: + 2025-10-01: 132 + - threshold: + 2025-10-01: 89_455 + amount: + 2025-10-01: 136 + - threshold: + 2025-10-01: 92_249 + amount: + 2025-10-01: 163 + - threshold: + 2025-10-01: 95_043 + amount: + 2025-10-01: 179 + - threshold: + 2025-10-01: 97_837 + amount: + 2025-10-01: 195 + - threshold: + 2025-10-01: 100_631 + amount: + 2025-10-01: 225 + - threshold: + 2025-10-01: 103_425 + amount: + 2025-10-01: 243 + - threshold: + 2025-10-01: 106_220 + amount: + 2025-10-01: 262 + - threshold: + 2025-10-01: 109_014 + amount: + 2025-10-01: 294 + - threshold: + 2025-10-01: 111_808 + amount: + 2025-10-01: 334 + - threshold: + 2025-10-01: 114_602 + amount: + 2025-10-01: 376 + - threshold: + 2025-10-01: 117_396 + amount: + 2025-10-01: 425 + - threshold: + 2025-10-01: 120_190 + amount: + 2025-10-01: 476 + - threshold: + 2025-10-01: 122_984 + amount: + 2025-10-01: 529 + - threshold: + 2025-10-01: 125_778 + amount: + 2025-10-01: 571 + - threshold: + 2025-10-01: 128_573 + amount: + 2025-10-01: 614 + - threshold: + 2025-10-01: 131_388 + amount: + 2025-10-01: 659 + - threshold: + 2025-10-01: 134_182 + amount: + 2025-10-01: 705 + - threshold: + 2025-10-01: 136_976 + amount: + 2025-10-01: 764 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml new file mode 100644 index 00000000000..d201431f899 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml @@ -0,0 +1,116 @@ +description: Minnesota charges this biweekly copayment for a twelve-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for twelve-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.11 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=11 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 57_113 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 76_150 + amount: + 2025-10-01: 86 + - threshold: + 2025-10-01: 77_025 + amount: + 2025-10-01: 90 + - threshold: + 2025-10-01: 79_854 + amount: + 2025-10-01: 102 + - threshold: + 2025-10-01: 82_727 + amount: + 2025-10-01: 106 + - threshold: + 2025-10-01: 85_578 + amount: + 2025-10-01: 109 + - threshold: + 2025-10-01: 88_429 + amount: + 2025-10-01: 135 + - threshold: + 2025-10-01: 91_280 + amount: + 2025-10-01: 139 + - threshold: + 2025-10-01: 94_131 + amount: + 2025-10-01: 166 + - threshold: + 2025-10-01: 96_983 + amount: + 2025-10-01: 183 + - threshold: + 2025-10-01: 99_834 + amount: + 2025-10-01: 199 + - threshold: + 2025-10-01: 102_685 + amount: + 2025-10-01: 229 + - threshold: + 2025-10-01: 105_536 + amount: + 2025-10-01: 248 + - threshold: + 2025-10-01: 108_387 + amount: + 2025-10-01: 267 + - threshold: + 2025-10-01: 111_238 + amount: + 2025-10-01: 300 + - threshold: + 2025-10-01: 114_090 + amount: + 2025-10-01: 341 + - threshold: + 2025-10-01: 116_941 + amount: + 2025-10-01: 384 + - threshold: + 2025-10-01: 119_792 + amount: + 2025-10-01: 434 + - threshold: + 2025-10-01: 122_643 + amount: + 2025-10-01: 486 + - threshold: + 2025-10-01: 125_494 + amount: + 2025-10-01: 540 + - threshold: + 2025-10-01: 128_345 + amount: + 2025-10-01: 583 + - threshold: + 2025-10-01: 131_197 + amount: + 2025-10-01: 627 + - threshold: + 2025-10-01: 134_069 + amount: + 2025-10-01: 672 + - threshold: + 2025-10-01: 136_920 + amount: + 2025-10-01: 719 + - threshold: + 2025-10-01: 139_772 + amount: + 2025-10-01: 779 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml new file mode 100644 index 00000000000..94de5804e5a --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml @@ -0,0 +1,108 @@ +description: Minnesota charges this biweekly copayment for a thirteen-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for thirteen-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.11 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=11 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 61_238 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 81_650 + amount: + 2025-10-01: 104 + - threshold: + 2025-10-01: 84_381 + amount: + 2025-10-01: 108 + - threshold: + 2025-10-01: 87_290 + amount: + 2025-10-01: 111 + - threshold: + 2025-10-01: 90_198 + amount: + 2025-10-01: 138 + - threshold: + 2025-10-01: 93_106 + amount: + 2025-10-01: 142 + - threshold: + 2025-10-01: 96_014 + amount: + 2025-10-01: 170 + - threshold: + 2025-10-01: 98_922 + amount: + 2025-10-01: 186 + - threshold: + 2025-10-01: 101_831 + amount: + 2025-10-01: 204 + - threshold: + 2025-10-01: 104_739 + amount: + 2025-10-01: 234 + - threshold: + 2025-10-01: 107_647 + amount: + 2025-10-01: 253 + - threshold: + 2025-10-01: 110_555 + amount: + 2025-10-01: 272 + - threshold: + 2025-10-01: 113_643 + amount: + 2025-10-01: 306 + - threshold: + 2025-10-01: 116_371 + amount: + 2025-10-01: 348 + - threshold: + 2025-10-01: 119_280 + amount: + 2025-10-01: 391 + - threshold: + 2025-10-01: 122_188 + amount: + 2025-10-01: 443 + - threshold: + 2025-10-01: 125_096 + amount: + 2025-10-01: 496 + - threshold: + 2025-10-01: 128_004 + amount: + 2025-10-01: 551 + - threshold: + 2025-10-01: 130_912 + amount: + 2025-10-01: 594 + - threshold: + 2025-10-01: 133_821 + amount: + 2025-10-01: 640 + - threshold: + 2025-10-01: 136_751 + amount: + 2025-10-01: 686 + - threshold: + 2025-10-01: 139_659 + amount: + 2025-10-01: 734 + - threshold: + 2025-10-01: 142_567 + amount: + 2025-10-01: 795 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml new file mode 100644 index 00000000000..547fb2e3b68 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a two-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for two-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.6 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=6 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 15_863 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 21_150 + amount: + 2025-10-01: 27 + - threshold: + 2025-10-01: 27_153 + amount: + 2025-10-01: 29 + - threshold: + 2025-10-01: 28_445 + amount: + 2025-10-01: 30 + - threshold: + 2025-10-01: 29_738 + amount: + 2025-10-01: 31 + - threshold: + 2025-10-01: 31_031 + amount: + 2025-10-01: 36 + - threshold: + 2025-10-01: 32_323 + amount: + 2025-10-01: 38 + - threshold: + 2025-10-01: 33_616 + amount: + 2025-10-01: 39 + - threshold: + 2025-10-01: 34_918 + amount: + 2025-10-01: 41 + - threshold: + 2025-10-01: 36_201 + amount: + 2025-10-01: 46 + - threshold: + 2025-10-01: 37_503 + amount: + 2025-10-01: 48 + - threshold: + 2025-10-01: 38_796 + amount: + 2025-10-01: 49 + - threshold: + 2025-10-01: 40_088 + amount: + 2025-10-01: 61 + - threshold: + 2025-10-01: 41_381 + amount: + 2025-10-01: 63 + - threshold: + 2025-10-01: 42_673 + amount: + 2025-10-01: 75 + - threshold: + 2025-10-01: 43_966 + amount: + 2025-10-01: 83 + - threshold: + 2025-10-01: 45_258 + amount: + 2025-10-01: 90 + - threshold: + 2025-10-01: 46_551 + amount: + 2025-10-01: 104 + - threshold: + 2025-10-01: 47_843 + amount: + 2025-10-01: 113 + - threshold: + 2025-10-01: 49_136 + amount: + 2025-10-01: 121 + - threshold: + 2025-10-01: 50_428 + amount: + 2025-10-01: 136 + - threshold: + 2025-10-01: 51_721 + amount: + 2025-10-01: 155 + - threshold: + 2025-10-01: 53_013 + amount: + 2025-10-01: 174 + - threshold: + 2025-10-01: 54_306 + amount: + 2025-10-01: 197 + - threshold: + 2025-10-01: 55_598 + amount: + 2025-10-01: 220 + - threshold: + 2025-10-01: 56_891 + amount: + 2025-10-01: 245 + - threshold: + 2025-10-01: 58_183 + amount: + 2025-10-01: 264 + - threshold: + 2025-10-01: 59_476 + amount: + 2025-10-01: 284 + - threshold: + 2025-10-01: 60_778 + amount: + 2025-10-01: 305 + - threshold: + 2025-10-01: 62_071 + amount: + 2025-10-01: 326 + - threshold: + 2025-10-01: 63_363 + amount: + 2025-10-01: 353 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml new file mode 100644 index 00000000000..514774bf9dd --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a three-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for three-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.6 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=6 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 19_988 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 26_650 + amount: + 2025-10-01: 34 + - threshold: + 2025-10-01: 33_542 + amount: + 2025-10-01: 35 + - threshold: + 2025-10-01: 35_138 + amount: + 2025-10-01: 37 + - threshold: + 2025-10-01: 36_735 + amount: + 2025-10-01: 38 + - threshold: + 2025-10-01: 38_332 + amount: + 2025-10-01: 45 + - threshold: + 2025-10-01: 39_928 + amount: + 2025-10-01: 47 + - threshold: + 2025-10-01: 41_525 + amount: + 2025-10-01: 48 + - threshold: + 2025-10-01: 43_134 + amount: + 2025-10-01: 50 + - threshold: + 2025-10-01: 44_718 + amount: + 2025-10-01: 57 + - threshold: + 2025-10-01: 46_327 + amount: + 2025-10-01: 59 + - threshold: + 2025-10-01: 47_924 + amount: + 2025-10-01: 61 + - threshold: + 2025-10-01: 49_520 + amount: + 2025-10-01: 76 + - threshold: + 2025-10-01: 51_117 + amount: + 2025-10-01: 78 + - threshold: + 2025-10-01: 52_713 + amount: + 2025-10-01: 93 + - threshold: + 2025-10-01: 54_310 + amount: + 2025-10-01: 102 + - threshold: + 2025-10-01: 55_907 + amount: + 2025-10-01: 112 + - threshold: + 2025-10-01: 57_503 + amount: + 2025-10-01: 128 + - threshold: + 2025-10-01: 59_100 + amount: + 2025-10-01: 139 + - threshold: + 2025-10-01: 60_697 + amount: + 2025-10-01: 150 + - threshold: + 2025-10-01: 62_293 + amount: + 2025-10-01: 168 + - threshold: + 2025-10-01: 63_890 + amount: + 2025-10-01: 191 + - threshold: + 2025-10-01: 65_487 + amount: + 2025-10-01: 215 + - threshold: + 2025-10-01: 67_083 + amount: + 2025-10-01: 243 + - threshold: + 2025-10-01: 68_680 + amount: + 2025-10-01: 272 + - threshold: + 2025-10-01: 70_277 + amount: + 2025-10-01: 302 + - threshold: + 2025-10-01: 71_873 + amount: + 2025-10-01: 326 + - threshold: + 2025-10-01: 73_470 + amount: + 2025-10-01: 351 + - threshold: + 2025-10-01: 75_079 + amount: + 2025-10-01: 377 + - threshold: + 2025-10-01: 76_675 + amount: + 2025-10-01: 403 + - threshold: + 2025-10-01: 78_272 + amount: + 2025-10-01: 436 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml new file mode 100644 index 00000000000..64080ec7768 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a four-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for four-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.7 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=7 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 24_113 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 32_150 + amount: + 2025-10-01: 40 + - threshold: + 2025-10-01: 39_931 + amount: + 2025-10-01: 42 + - threshold: + 2025-10-01: 41_831 + amount: + 2025-10-01: 44 + - threshold: + 2025-10-01: 43_732 + amount: + 2025-10-01: 46 + - threshold: + 2025-10-01: 45_633 + amount: + 2025-10-01: 53 + - threshold: + 2025-10-01: 47_534 + amount: + 2025-10-01: 55 + - threshold: + 2025-10-01: 49_435 + amount: + 2025-10-01: 58 + - threshold: + 2025-10-01: 51_350 + amount: + 2025-10-01: 60 + - threshold: + 2025-10-01: 53_236 + amount: + 2025-10-01: 68 + - threshold: + 2025-10-01: 55_151 + amount: + 2025-10-01: 71 + - threshold: + 2025-10-01: 57_052 + amount: + 2025-10-01: 73 + - threshold: + 2025-10-01: 58_953 + amount: + 2025-10-01: 90 + - threshold: + 2025-10-01: 60_854 + amount: + 2025-10-01: 93 + - threshold: + 2025-10-01: 62_754 + amount: + 2025-10-01: 111 + - threshold: + 2025-10-01: 64_655 + amount: + 2025-10-01: 122 + - threshold: + 2025-10-01: 66_556 + amount: + 2025-10-01: 133 + - threshold: + 2025-10-01: 68_457 + amount: + 2025-10-01: 153 + - threshold: + 2025-10-01: 70_357 + amount: + 2025-10-01: 165 + - threshold: + 2025-10-01: 72_258 + amount: + 2025-10-01: 178 + - threshold: + 2025-10-01: 74_159 + amount: + 2025-10-01: 200 + - threshold: + 2025-10-01: 76_060 + amount: + 2025-10-01: 227 + - threshold: + 2025-10-01: 77_961 + amount: + 2025-10-01: 256 + - threshold: + 2025-10-01: 79_861 + amount: + 2025-10-01: 289 + - threshold: + 2025-10-01: 81_762 + amount: + 2025-10-01: 324 + - threshold: + 2025-10-01: 83_663 + amount: + 2025-10-01: 360 + - threshold: + 2025-10-01: 85_564 + amount: + 2025-10-01: 389 + - threshold: + 2025-10-01: 87_464 + amount: + 2025-10-01: 418 + - threshold: + 2025-10-01: 89_380 + amount: + 2025-10-01: 448 + - threshold: + 2025-10-01: 91_280 + amount: + 2025-10-01: 480 + - threshold: + 2025-10-01: 93_181 + amount: + 2025-10-01: 520 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml new file mode 100644 index 00000000000..6ed82473817 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a five-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for five-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.7 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=7 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 28_238 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 37_650 + amount: + 2025-10-01: 47 + - threshold: + 2025-10-01: 46_320 + amount: + 2025-10-01: 49 + - threshold: + 2025-10-01: 48_525 + amount: + 2025-10-01: 51 + - threshold: + 2025-10-01: 50_729 + amount: + 2025-10-01: 53 + - threshold: + 2025-10-01: 52_934 + amount: + 2025-10-01: 62 + - threshold: + 2025-10-01: 55_139 + amount: + 2025-10-01: 64 + - threshold: + 2025-10-01: 57_344 + amount: + 2025-10-01: 66 + - threshold: + 2025-10-01: 59_566 + amount: + 2025-10-01: 69 + - threshold: + 2025-10-01: 61_754 + amount: + 2025-10-01: 79 + - threshold: + 2025-10-01: 63_976 + amount: + 2025-10-01: 82 + - threshold: + 2025-10-01: 66_180 + amount: + 2025-10-01: 84 + - threshold: + 2025-10-01: 68_385 + amount: + 2025-10-01: 104 + - threshold: + 2025-10-01: 70_590 + amount: + 2025-10-01: 108 + - threshold: + 2025-10-01: 72_795 + amount: + 2025-10-01: 129 + - threshold: + 2025-10-01: 75_000 + amount: + 2025-10-01: 141 + - threshold: + 2025-10-01: 77_205 + amount: + 2025-10-01: 154 + - threshold: + 2025-10-01: 79_410 + amount: + 2025-10-01: 177 + - threshold: + 2025-10-01: 81_615 + amount: + 2025-10-01: 192 + - threshold: + 2025-10-01: 83_820 + amount: + 2025-10-01: 206 + - threshold: + 2025-10-01: 86_025 + amount: + 2025-10-01: 232 + - threshold: + 2025-10-01: 88_229 + amount: + 2025-10-01: 264 + - threshold: + 2025-10-01: 90_434 + amount: + 2025-10-01: 297 + - threshold: + 2025-10-01: 92_639 + amount: + 2025-10-01: 336 + - threshold: + 2025-10-01: 94_844 + amount: + 2025-10-01: 376 + - threshold: + 2025-10-01: 97_049 + amount: + 2025-10-01: 418 + - threshold: + 2025-10-01: 99_254 + amount: + 2025-10-01: 451 + - threshold: + 2025-10-01: 101_459 + amount: + 2025-10-01: 485 + - threshold: + 2025-10-01: 103_680 + amount: + 2025-10-01: 520 + - threshold: + 2025-10-01: 105_885 + amount: + 2025-10-01: 556 + - threshold: + 2025-10-01: 108_090 + amount: + 2025-10-01: 603 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml new file mode 100644 index 00000000000..abdfd9cc07b --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a six-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for six-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.8 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=8 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 32_363 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 43_150 + amount: + 2025-10-01: 53 + - threshold: + 2025-10-01: 52_708 + amount: + 2025-10-01: 55 + - threshold: + 2025-10-01: 55_217 + amount: + 2025-10-01: 58 + - threshold: + 2025-10-01: 57_726 + amount: + 2025-10-01: 60 + - threshold: + 2025-10-01: 60_235 + amount: + 2025-10-01: 70 + - threshold: + 2025-10-01: 62_744 + amount: + 2025-10-01: 73 + - threshold: + 2025-10-01: 65_253 + amount: + 2025-10-01: 76 + - threshold: + 2025-10-01: 67_781 + amount: + 2025-10-01: 78 + - threshold: + 2025-10-01: 70_271 + amount: + 2025-10-01: 90 + - threshold: + 2025-10-01: 72_799 + amount: + 2025-10-01: 93 + - threshold: + 2025-10-01: 75_309 + amount: + 2025-10-01: 96 + - threshold: + 2025-10-01: 77_818 + amount: + 2025-10-01: 119 + - threshold: + 2025-10-01: 80_327 + amount: + 2025-10-01: 122 + - threshold: + 2025-10-01: 82_836 + amount: + 2025-10-01: 146 + - threshold: + 2025-10-01: 85_345 + amount: + 2025-10-01: 161 + - threshold: + 2025-10-01: 87_854 + amount: + 2025-10-01: 175 + - threshold: + 2025-10-01: 90_363 + amount: + 2025-10-01: 202 + - threshold: + 2025-10-01: 92_872 + amount: + 2025-10-01: 218 + - threshold: + 2025-10-01: 95_381 + amount: + 2025-10-01: 235 + - threshold: + 2025-10-01: 97_890 + amount: + 2025-10-01: 264 + - threshold: + 2025-10-01: 100_399 + amount: + 2025-10-01: 300 + - threshold: + 2025-10-01: 102_908 + amount: + 2025-10-01: 338 + - threshold: + 2025-10-01: 105_417 + amount: + 2025-10-01: 382 + - threshold: + 2025-10-01: 107_926 + amount: + 2025-10-01: 428 + - threshold: + 2025-10-01: 110_435 + amount: + 2025-10-01: 475 + - threshold: + 2025-10-01: 112_944 + amount: + 2025-10-01: 513 + - threshold: + 2025-10-01: 115_453 + amount: + 2025-10-01: 552 + - threshold: + 2025-10-01: 117_981 + amount: + 2025-10-01: 592 + - threshold: + 2025-10-01: 120_490 + amount: + 2025-10-01: 633 + - threshold: + 2025-10-01: 122_999 + amount: + 2025-10-01: 686 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml new file mode 100644 index 00000000000..85d6d7b8e7d --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a seven-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for seven-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.8 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=8 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 36_488 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 48_650 + amount: + 2025-10-01: 54 + - threshold: + 2025-10-01: 53_906 + amount: + 2025-10-01: 57 + - threshold: + 2025-10-01: 56_472 + amount: + 2025-10-01: 59 + - threshold: + 2025-10-01: 59_038 + amount: + 2025-10-01: 62 + - threshold: + 2025-10-01: 61_604 + amount: + 2025-10-01: 72 + - threshold: + 2025-10-01: 64_170 + amount: + 2025-10-01: 75 + - threshold: + 2025-10-01: 66_736 + amount: + 2025-10-01: 78 + - threshold: + 2025-10-01: 69_322 + amount: + 2025-10-01: 80 + - threshold: + 2025-10-01: 71_869 + amount: + 2025-10-01: 92 + - threshold: + 2025-10-01: 74_454 + amount: + 2025-10-01: 95 + - threshold: + 2025-10-01: 77_020 + amount: + 2025-10-01: 98 + - threshold: + 2025-10-01: 79_586 + amount: + 2025-10-01: 121 + - threshold: + 2025-10-01: 82_152 + amount: + 2025-10-01: 125 + - threshold: + 2025-10-01: 84_718 + amount: + 2025-10-01: 150 + - threshold: + 2025-10-01: 87_284 + amount: + 2025-10-01: 164 + - threshold: + 2025-10-01: 89_850 + amount: + 2025-10-01: 180 + - threshold: + 2025-10-01: 92_416 + amount: + 2025-10-01: 206 + - threshold: + 2025-10-01: 94_982 + amount: + 2025-10-01: 223 + - threshold: + 2025-10-01: 97_548 + amount: + 2025-10-01: 240 + - threshold: + 2025-10-01: 100_114 + amount: + 2025-10-01: 270 + - threshold: + 2025-10-01: 102_680 + amount: + 2025-10-01: 307 + - threshold: + 2025-10-01: 105_247 + amount: + 2025-10-01: 345 + - threshold: + 2025-10-01: 107_813 + amount: + 2025-10-01: 390 + - threshold: + 2025-10-01: 110_379 + amount: + 2025-10-01: 438 + - threshold: + 2025-10-01: 112_945 + amount: + 2025-10-01: 486 + - threshold: + 2025-10-01: 115_511 + amount: + 2025-10-01: 524 + - threshold: + 2025-10-01: 118_077 + amount: + 2025-10-01: 564 + - threshold: + 2025-10-01: 120_662 + amount: + 2025-10-01: 605 + - threshold: + 2025-10-01: 123_228 + amount: + 2025-10-01: 648 + - threshold: + 2025-10-01: 125_794 + amount: + 2025-10-01: 702 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml new file mode 100644 index 00000000000..e93cb9f0691 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml @@ -0,0 +1,140 @@ +description: Minnesota charges this biweekly copayment for a eight-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for eight-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.9 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=9 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 40_613 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 54_150 + amount: + 2025-10-01: 55 + - threshold: + 2025-10-01: 55_104 + amount: + 2025-10-01: 58 + - threshold: + 2025-10-01: 57_727 + amount: + 2025-10-01: 60 + - threshold: + 2025-10-01: 60_350 + amount: + 2025-10-01: 63 + - threshold: + 2025-10-01: 62_973 + amount: + 2025-10-01: 73 + - threshold: + 2025-10-01: 65_596 + amount: + 2025-10-01: 76 + - threshold: + 2025-10-01: 68_220 + amount: + 2025-10-01: 79 + - threshold: + 2025-10-01: 70_862 + amount: + 2025-10-01: 82 + - threshold: + 2025-10-01: 73_466 + amount: + 2025-10-01: 94 + - threshold: + 2025-10-01: 76_109 + amount: + 2025-10-01: 97 + - threshold: + 2025-10-01: 78_732 + amount: + 2025-10-01: 101 + - threshold: + 2025-10-01: 81_355 + amount: + 2025-10-01: 124 + - threshold: + 2025-10-01: 83_978 + amount: + 2025-10-01: 128 + - threshold: + 2025-10-01: 86_601 + amount: + 2025-10-01: 153 + - threshold: + 2025-10-01: 89_224 + amount: + 2025-10-01: 168 + - threshold: + 2025-10-01: 91_847 + amount: + 2025-10-01: 184 + - threshold: + 2025-10-01: 94_470 + amount: + 2025-10-01: 211 + - threshold: + 2025-10-01: 97_093 + amount: + 2025-10-01: 228 + - threshold: + 2025-10-01: 99_716 + amount: + 2025-10-01: 246 + - threshold: + 2025-10-01: 102_339 + amount: + 2025-10-01: 276 + - threshold: + 2025-10-01: 104_962 + amount: + 2025-10-01: 314 + - threshold: + 2025-10-01: 107_585 + amount: + 2025-10-01: 353 + - threshold: + 2025-10-01: 110_208 + amount: + 2025-10-01: 399 + - threshold: + 2025-10-01: 112_832 + amount: + 2025-10-01: 447 + - threshold: + 2025-10-01: 115_455 + amount: + 2025-10-01: 497 + - threshold: + 2025-10-01: 118_078 + amount: + 2025-10-01: 536 + - threshold: + 2025-10-01: 120_701 + amount: + 2025-10-01: 577 + - threshold: + 2025-10-01: 123_344 + amount: + 2025-10-01: 618 + - threshold: + 2025-10-01: 125_967 + amount: + 2025-10-01: 662 + - threshold: + 2025-10-01: 128_590 + amount: + 2025-10-01: 717 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml new file mode 100644 index 00000000000..9f5c9b07056 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml @@ -0,0 +1,132 @@ +description: Minnesota charges this biweekly copayment for a nine-person family by gross annual income after deductions under the Child Care Assistance Program. +metadata: + type: single_amount + threshold_unit: currency-USD + amount_unit: currency-USD + threshold_period: year + label: Minnesota CCAP biweekly copayment for nine-person family + reference: + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.9 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=9 + +brackets: + - threshold: + 2025-10-01: 0 + amount: + 2025-10-01: 0 + - threshold: + 2025-10-01: 44_738 + amount: + 2025-10-01: 2 + - threshold: + 2025-10-01: 59_650 + amount: + 2025-10-01: 62 + - threshold: + 2025-10-01: 61_662 + amount: + 2025-10-01: 65 + - threshold: + 2025-10-01: 64_342 + amount: + 2025-10-01: 75 + - threshold: + 2025-10-01: 67_023 + amount: + 2025-10-01: 78 + - threshold: + 2025-10-01: 69_703 + amount: + 2025-10-01: 81 + - threshold: + 2025-10-01: 72_403 + amount: + 2025-10-01: 84 + - threshold: + 2025-10-01: 75_063 + amount: + 2025-10-01: 96 + - threshold: + 2025-10-01: 77_763 + amount: + 2025-10-01: 99 + - threshold: + 2025-10-01: 80_443 + amount: + 2025-10-01: 102 + - threshold: + 2025-10-01: 83_123 + amount: + 2025-10-01: 127 + - threshold: + 2025-10-01: 85_803 + amount: + 2025-10-01: 131 + - threshold: + 2025-10-01: 88_484 + amount: + 2025-10-01: 156 + - threshold: + 2025-10-01: 91_164 + amount: + 2025-10-01: 172 + - threshold: + 2025-10-01: 93_844 + amount: + 2025-10-01: 187 + - threshold: + 2025-10-01: 96_524 + amount: + 2025-10-01: 216 + - threshold: + 2025-10-01: 99_204 + amount: + 2025-10-01: 233 + - threshold: + 2025-10-01: 101_884 + amount: + 2025-10-01: 251 + - threshold: + 2025-10-01: 104_564 + amount: + 2025-10-01: 282 + - threshold: + 2025-10-01: 107_244 + amount: + 2025-10-01: 320 + - threshold: + 2025-10-01: 109_924 + amount: + 2025-10-01: 361 + - threshold: + 2025-10-01: 112_604 + amount: + 2025-10-01: 408 + - threshold: + 2025-10-01: 115_284 + amount: + 2025-10-01: 457 + - threshold: + 2025-10-01: 117_964 + amount: + 2025-10-01: 508 + - threshold: + 2025-10-01: 120_645 + amount: + 2025-10-01: 548 + - threshold: + 2025-10-01: 123_325 + amount: + 2025-10-01: 589 + - threshold: + 2025-10-01: 126_025 + amount: + 2025-10-01: 632 + - threshold: + 2025-10-01: 128_705 + amount: + 2025-10-01: 676 + - threshold: + 2025-10-01: 131_385 + amount: + 2025-10-01: 732 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml new file mode 100644 index 00000000000..b07e6c7e532 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml @@ -0,0 +1,27 @@ +description: Minnesota counts these earned income sources under the Child Care Assistance Program. +values: + 2025-01-01: + # Wages and salaries (including overtime and bonuses), paid vacation and + # sick leave, tips, commissions, severance based on accrued leave, and + # taxable allowances are all captured by employment_income. Earned income + # is counted gross, before payroll deductions. + - employment_income + - self_employment_income + - sstb_self_employment_income + # The following earned income types are counted per Minn. Stat. 256P.06 + # and manual section 6.6 but have no matching variable, so we do not track + # them at the moment: + # - royalties + # - honoraria + # - incentive payments from work or training + # - military pay (combat-zone pay is excluded) + +metadata: + unit: list + period: year + label: Minnesota CCAP countable earned income sources + reference: + - title: Minn. Stat. 256P.06, subd. 3 (earned income) + href: https://www.revisor.mn.gov/statutes/cite/256P.06 + - title: Minn. Rules 3400.0170, subp. 4 (gross annual income) + href: https://www.revisor.mn.gov/rules/3400.0170/ diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/unearned.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/unearned.yaml new file mode 100644 index 00000000000..3e39bd0568f --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/unearned.yaml @@ -0,0 +1,48 @@ +description: Minnesota counts these unearned income sources under the Child Care Assistance Program. +values: + 2025-01-01: + # RSDI (gross amount) — Retirement, Survivors, and Disability Insurance. + # Listed as components rather than the social_security umbrella, which also + # adds social_security_dependents. + - social_security_retirement + - social_security_survivors + - social_security_disability + - dividend_income + - interest_income + - pension_income + - veterans_benefits + - military_retirement_pay + - unemployment_compensation + - workers_compensation + # Child or spousal support not assigned to the state. + - alimony_income + - child_support_received + # General Assistance is a counted cash-assistance source under manual + # section 6.6 (the list also names Minnesota Supplemental Aid and Refugee + # Cash Assistance, which have no countable variable here). + - general_assistance + # The following are counted per Minn. Stat. 256P.06 / manual section 6.6 + # but have no matching variable, so we do not track them at the moment: + # - MFIP cash assistance and MFIP Housing Assistance Grant (also avoids the + # CCAP-to-MFIP circular dependency through the dependent-care deduction) + # - Diversionary Work Program (DWP) cash assistance + # - Minnesota Supplemental Aid, Refugee Cash Assistance + # - cost-effective insurance reimbursement from Medical Assistance + # - capital gains from the sale of real property (capital_gains is not + # restricted to real property) + # - contract-for-deed payments above principal and interest + # - trust income (excluding special or supplemental needs trusts) + # - interest from family loans + # - disability insurance (separate from social_security_disability) + # - cash prizes and winnings + # - taxable military entitlements + +metadata: + unit: list + period: year + label: Minnesota CCAP countable unearned income sources + reference: + - title: Minn. Stat. 256P.06, subd. 3 (unearned income) + href: https://www.revisor.mn.gov/statutes/cite/256P.06 + - title: Minn. Rules 3400.0170, subp. 4 (gross annual income) + href: https://www.revisor.mn.gov/rules/3400.0170/ diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/deductions/sources.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/deductions/sources.yaml new file mode 100644 index 00000000000..3c6d18c3c2f --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/deductions/sources.yaml @@ -0,0 +1,25 @@ +description: Minnesota deducts these expenses from gross income under the Child Care Assistance Program. +values: + 2025-01-01: + # Actual child support paid to or on behalf of someone living outside the + # household (full payment deductible). + - child_support_expense + # Spousal support paid to or on behalf of someone living outside the + # household. + - alimony_expense + # The following deductions are allowed per Minn. Rules 3400.0170, subp. 6a + # and manual section 6.18 but have no matching variable, so we do not track + # them at the moment: + # - medical, dental, and vision insurance premiums paid by family members + # - the unreimbursed portion of an insurance premium for families on + # Medical Assistance + # - expenditures necessary to secure payment of unearned income + # (e.g., lawyer's fees for an insurance settlement) + +metadata: + unit: list + period: year + label: Minnesota CCAP allowable income deductions + reference: + - title: Minn. Rules 3400.0170, subp. 6a (allowable deductions) + href: https://www.revisor.mn.gov/rules/3400.0170/ diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml new file mode 100644 index 00000000000..d4a5aadc30d --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml @@ -0,0 +1,13 @@ +description: Minnesota sets the Child Care Assistance Program entrance income limit at this fraction of state median income for families receiving Minnesota Family Investment Program or Diversionary Work Program assistance. +values: + 2025-01-01: 0.67 + +metadata: + unit: /1 + period: year + label: Minnesota CCAP MFIP/DWP entrance income limit (share of SMI) + reference: + - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.06 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml new file mode 100644 index 00000000000..cde1e73d076 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml @@ -0,0 +1,13 @@ +description: Minnesota sets the Child Care Assistance Program entrance income limit at this fraction of state median income for families not receiving Minnesota Family Investment Program or Diversionary Work Program assistance. +values: + 2025-01-01: 0.47 + +metadata: + unit: /1 + period: year + label: Minnesota CCAP non-MFIP entrance income limit (share of SMI) + reference: + - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.06 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml new file mode 100644 index 00000000000..a3181dd17e0 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml @@ -0,0 +1,13 @@ +description: Minnesota ends Child Care Assistance Program eligibility when income exceeds this fraction of state median income during the 12-month eligibility period. +values: + 2025-01-01: 0.85 + +metadata: + unit: /1 + period: year + label: Minnesota CCAP exit income limit during eligibility period (share of SMI) + reference: + - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.06 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/quality_differential.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/quality_differential.yaml new file mode 100644 index 00000000000..3b5cf139bf3 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/quality_differential.yaml @@ -0,0 +1,18 @@ +description: Minnesota raises the maximum child care rate by this fraction for higher-quality providers under the Child Care Assistance Program. +# Applied as max_rate x (1 + differential), capped at the provider's actual charge. +metadata: + unit: /1 + period: year + label: Minnesota CCAP quality differential + breakdown: + - mn_ccap_quality_rating + reference: + - title: Minn. Stat. 142E.17, subd. 4-5 (accreditation and Parent Aware differentials; formerly 119B.13) + href: https://www.revisor.mn.gov/statutes/cite/142E.17 + +STAR_4: + 2025-01-01: 0.20 +ACCREDITED_OR_3STAR: + 2025-01-01: 0.15 +NONE: + 2025-01-01: 0 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml new file mode 100644 index 00000000000..d6edb9b01ce --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml @@ -0,0 +1,11 @@ +description: Minnesota pays the full-day child care rate rather than the hourly rate when daily care exceeds this many hours under the Child Care Assistance Program. +values: + 2025-01-01: 5 + +metadata: + unit: hour + period: day + label: Minnesota CCAP full-day rate hours-per-day threshold + reference: + - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of payment amounts) + href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml new file mode 100644 index 00000000000..9fd04b25387 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml @@ -0,0 +1,11 @@ +description: Minnesota pays the weekly child care rate when authorized care exceeds this many hours per week under the Child Care Assistance Program. +values: + 2025-01-01: 35 + +metadata: + unit: hour + period: week + label: Minnesota CCAP weekly rate hours-per-week threshold + reference: + - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of payment amounts) + href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/full_day.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/full_day.yaml new file mode 100644 index 00000000000..14747f900c3 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/full_day.yaml @@ -0,0 +1,1414 @@ +description: Minnesota sets these maximum full-day child care reimbursement rates by provider type, age group, and county under the Child Care Assistance Program. +metadata: + unit: currency-USD + period: day + label: Minnesota CCAP maximum full-day rate + breakdown: + - mn_ccap_provider_type + - mn_ccap_age_group + reference: + - title: Minnesota CCAP Standard Maximum Rates (DHS-6441F), effective Jan. 6, 2025 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5 + +FAMILY_CHILD_CARE: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 45 + ANOKA_COUNTY_MN: + 2025-01-01: 60 + BECKER_COUNTY_MN: + 2025-01-01: 45 + BELTRAMI_COUNTY_MN: + 2025-01-01: 35 + BENTON_COUNTY_MN: + 2025-01-01: 35 + BIG_STONE_COUNTY_MN: + 2025-01-01: 32 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 35 + BROWN_COUNTY_MN: + 2025-01-01: 35 + CARLTON_COUNTY_MN: + 2025-01-01: 45 + CARVER_COUNTY_MN: + 2025-01-01: 60 + CASS_COUNTY_MN: + 2025-01-01: 45 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 35 + CHISAGO_COUNTY_MN: + 2025-01-01: 45 + CLAY_COUNTY_MN: + 2025-01-01: 45 + CLEARWATER_COUNTY_MN: + 2025-01-01: 30 + COOK_COUNTY_MN: + 2025-01-01: 60 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 35 + CROW_WING_COUNTY_MN: + 2025-01-01: 35 + DAKOTA_COUNTY_MN: + 2025-01-01: 60 + DODGE_COUNTY_MN: + 2025-01-01: 45 + DOUGLAS_COUNTY_MN: + 2025-01-01: 35 + FARIBAULT_COUNTY_MN: + 2025-01-01: 32 + FILLMORE_COUNTY_MN: + 2025-01-01: 35 + FREEBORN_COUNTY_MN: + 2025-01-01: 45 + GOODHUE_COUNTY_MN: + 2025-01-01: 45 + GRANT_COUNTY_MN: + 2025-01-01: 35 + HENNEPIN_COUNTY_MN: + 2025-01-01: 60 + HOUSTON_COUNTY_MN: + 2025-01-01: 45 + HUBBARD_COUNTY_MN: + 2025-01-01: 35 + ISANTI_COUNTY_MN: + 2025-01-01: 45 + ITASCA_COUNTY_MN: + 2025-01-01: 45 + JACKSON_COUNTY_MN: + 2025-01-01: 30 + KANABEC_COUNTY_MN: + 2025-01-01: 45 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 35 + KITTSON_COUNTY_MN: + 2025-01-01: 30 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 35 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 30 + LAKE_COUNTY_MN: + 2025-01-01: 45 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 40 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 45 + LINCOLN_COUNTY_MN: + 2025-01-01: 35 + LYON_COUNTY_MN: + 2025-01-01: 30 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 35 + MARSHALL_COUNTY_MN: + 2025-01-01: 35 + MARTIN_COUNTY_MN: + 2025-01-01: 30 + MCLEOD_COUNTY_MN: + 2025-01-01: 35 + MEEKER_COUNTY_MN: + 2025-01-01: 35 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 35 + MORRISON_COUNTY_MN: + 2025-01-01: 35 + MOWER_COUNTY_MN: + 2025-01-01: 35 + MURRAY_COUNTY_MN: + 2025-01-01: 30 + NICOLLET_COUNTY_MN: + 2025-01-01: 32 + NOBLES_COUNTY_MN: + 2025-01-01: 35 + NORMAN_COUNTY_MN: + 2025-01-01: 30 + OLMSTED_COUNTY_MN: + 2025-01-01: 45 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 35 + PENNINGTON_COUNTY_MN: + 2025-01-01: 35 + PINE_COUNTY_MN: + 2025-01-01: 35 + PIPESTONE_COUNTY_MN: + 2025-01-01: 30 + POLK_COUNTY_MN: + 2025-01-01: 35 + POPE_COUNTY_MN: + 2025-01-01: 35 + RAMSEY_COUNTY_MN: + 2025-01-01: 60 + REDWOOD_COUNTY_MN: + 2025-01-01: 35 + RED_LAKE_COUNTY_MN: + 2025-01-01: 35 + RENVILLE_COUNTY_MN: + 2025-01-01: 30 + RICE_COUNTY_MN: + 2025-01-01: 45 + ROCK_COUNTY_MN: + 2025-01-01: 30 + ROSEAU_COUNTY_MN: + 2025-01-01: 30 + SCOTT_COUNTY_MN: + 2025-01-01: 60 + SHERBURNE_COUNTY_MN: + 2025-01-01: 45 + SIBLEY_COUNTY_MN: + 2025-01-01: 35 + STEARNS_COUNTY_MN: + 2025-01-01: 35 + STEELE_COUNTY_MN: + 2025-01-01: 35 + STEVENS_COUNTY_MN: + 2025-01-01: 35 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 45 + SWIFT_COUNTY_MN: + 2025-01-01: 30 + TODD_COUNTY_MN: + 2025-01-01: 35 + TRAVERSE_COUNTY_MN: + 2025-01-01: 35 + WABASHA_COUNTY_MN: + 2025-01-01: 35 + WADENA_COUNTY_MN: + 2025-01-01: 35 + WASECA_COUNTY_MN: + 2025-01-01: 35 + WASHINGTON_COUNTY_MN: + 2025-01-01: 60 + WATONWAN_COUNTY_MN: + 2025-01-01: 30 + WILKIN_COUNTY_MN: + 2025-01-01: 30 + WINONA_COUNTY_MN: + 2025-01-01: 35 + WRIGHT_COUNTY_MN: + 2025-01-01: 45 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 30 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 40 + ANOKA_COUNTY_MN: + 2025-01-01: 60 + BECKER_COUNTY_MN: + 2025-01-01: 40 + BELTRAMI_COUNTY_MN: + 2025-01-01: 35 + BENTON_COUNTY_MN: + 2025-01-01: 35 + BIG_STONE_COUNTY_MN: + 2025-01-01: 30 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 35 + BROWN_COUNTY_MN: + 2025-01-01: 35 + CARLTON_COUNTY_MN: + 2025-01-01: 40 + CARVER_COUNTY_MN: + 2025-01-01: 60 + CASS_COUNTY_MN: + 2025-01-01: 40 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 35 + CHISAGO_COUNTY_MN: + 2025-01-01: 40 + CLAY_COUNTY_MN: + 2025-01-01: 40 + CLEARWATER_COUNTY_MN: + 2025-01-01: 30 + COOK_COUNTY_MN: + 2025-01-01: 60 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 35 + CROW_WING_COUNTY_MN: + 2025-01-01: 35 + DAKOTA_COUNTY_MN: + 2025-01-01: 60 + DODGE_COUNTY_MN: + 2025-01-01: 40 + DOUGLAS_COUNTY_MN: + 2025-01-01: 35 + FARIBAULT_COUNTY_MN: + 2025-01-01: 30 + FILLMORE_COUNTY_MN: + 2025-01-01: 35 + FREEBORN_COUNTY_MN: + 2025-01-01: 40 + GOODHUE_COUNTY_MN: + 2025-01-01: 40 + GRANT_COUNTY_MN: + 2025-01-01: 35 + HENNEPIN_COUNTY_MN: + 2025-01-01: 60 + HOUSTON_COUNTY_MN: + 2025-01-01: 40 + HUBBARD_COUNTY_MN: + 2025-01-01: 35 + ISANTI_COUNTY_MN: + 2025-01-01: 40 + ITASCA_COUNTY_MN: + 2025-01-01: 40 + JACKSON_COUNTY_MN: + 2025-01-01: 30 + KANABEC_COUNTY_MN: + 2025-01-01: 40 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 35 + KITTSON_COUNTY_MN: + 2025-01-01: 30 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 35 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 30 + LAKE_COUNTY_MN: + 2025-01-01: 40 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 40 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 40 + LINCOLN_COUNTY_MN: + 2025-01-01: 35 + LYON_COUNTY_MN: + 2025-01-01: 30 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 35 + MARSHALL_COUNTY_MN: + 2025-01-01: 35 + MARTIN_COUNTY_MN: + 2025-01-01: 30 + MCLEOD_COUNTY_MN: + 2025-01-01: 35 + MEEKER_COUNTY_MN: + 2025-01-01: 35 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 35 + MORRISON_COUNTY_MN: + 2025-01-01: 35 + MOWER_COUNTY_MN: + 2025-01-01: 35 + MURRAY_COUNTY_MN: + 2025-01-01: 30 + NICOLLET_COUNTY_MN: + 2025-01-01: 30 + NOBLES_COUNTY_MN: + 2025-01-01: 35 + NORMAN_COUNTY_MN: + 2025-01-01: 30 + OLMSTED_COUNTY_MN: + 2025-01-01: 40 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 35 + PENNINGTON_COUNTY_MN: + 2025-01-01: 35 + PINE_COUNTY_MN: + 2025-01-01: 35 + PIPESTONE_COUNTY_MN: + 2025-01-01: 30 + POLK_COUNTY_MN: + 2025-01-01: 35 + POPE_COUNTY_MN: + 2025-01-01: 35 + RAMSEY_COUNTY_MN: + 2025-01-01: 60 + REDWOOD_COUNTY_MN: + 2025-01-01: 35 + RED_LAKE_COUNTY_MN: + 2025-01-01: 35 + RENVILLE_COUNTY_MN: + 2025-01-01: 30 + RICE_COUNTY_MN: + 2025-01-01: 40 + ROCK_COUNTY_MN: + 2025-01-01: 30 + ROSEAU_COUNTY_MN: + 2025-01-01: 30 + SCOTT_COUNTY_MN: + 2025-01-01: 60 + SHERBURNE_COUNTY_MN: + 2025-01-01: 40 + SIBLEY_COUNTY_MN: + 2025-01-01: 35 + STEARNS_COUNTY_MN: + 2025-01-01: 35 + STEELE_COUNTY_MN: + 2025-01-01: 35 + STEVENS_COUNTY_MN: + 2025-01-01: 35 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 40 + SWIFT_COUNTY_MN: + 2025-01-01: 30 + TODD_COUNTY_MN: + 2025-01-01: 35 + TRAVERSE_COUNTY_MN: + 2025-01-01: 35 + WABASHA_COUNTY_MN: + 2025-01-01: 35 + WADENA_COUNTY_MN: + 2025-01-01: 35 + WASECA_COUNTY_MN: + 2025-01-01: 35 + WASHINGTON_COUNTY_MN: + 2025-01-01: 60 + WATONWAN_COUNTY_MN: + 2025-01-01: 30 + WILKIN_COUNTY_MN: + 2025-01-01: 30 + WINONA_COUNTY_MN: + 2025-01-01: 35 + WRIGHT_COUNTY_MN: + 2025-01-01: 40 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 30 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 40 + ANOKA_COUNTY_MN: + 2025-01-01: 55 + BECKER_COUNTY_MN: + 2025-01-01: 40 + BELTRAMI_COUNTY_MN: + 2025-01-01: 35 + BENTON_COUNTY_MN: + 2025-01-01: 35 + BIG_STONE_COUNTY_MN: + 2025-01-01: 30 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 35 + BROWN_COUNTY_MN: + 2025-01-01: 35 + CARLTON_COUNTY_MN: + 2025-01-01: 40 + CARVER_COUNTY_MN: + 2025-01-01: 55 + CASS_COUNTY_MN: + 2025-01-01: 40 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 35 + CHISAGO_COUNTY_MN: + 2025-01-01: 40 + CLAY_COUNTY_MN: + 2025-01-01: 40 + CLEARWATER_COUNTY_MN: + 2025-01-01: 29 + COOK_COUNTY_MN: + 2025-01-01: 55 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 35 + CROW_WING_COUNTY_MN: + 2025-01-01: 35 + DAKOTA_COUNTY_MN: + 2025-01-01: 55 + DODGE_COUNTY_MN: + 2025-01-01: 40 + DOUGLAS_COUNTY_MN: + 2025-01-01: 35 + FARIBAULT_COUNTY_MN: + 2025-01-01: 30 + FILLMORE_COUNTY_MN: + 2025-01-01: 35 + FREEBORN_COUNTY_MN: + 2025-01-01: 40 + GOODHUE_COUNTY_MN: + 2025-01-01: 40 + GRANT_COUNTY_MN: + 2025-01-01: 35 + HENNEPIN_COUNTY_MN: + 2025-01-01: 55 + HOUSTON_COUNTY_MN: + 2025-01-01: 40 + HUBBARD_COUNTY_MN: + 2025-01-01: 35 + ISANTI_COUNTY_MN: + 2025-01-01: 40 + ITASCA_COUNTY_MN: + 2025-01-01: 40 + JACKSON_COUNTY_MN: + 2025-01-01: 29 + KANABEC_COUNTY_MN: + 2025-01-01: 40 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 35 + KITTSON_COUNTY_MN: + 2025-01-01: 29 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 35 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 29 + LAKE_COUNTY_MN: + 2025-01-01: 40 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 35 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 40 + LINCOLN_COUNTY_MN: + 2025-01-01: 35 + LYON_COUNTY_MN: + 2025-01-01: 29 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 35 + MARSHALL_COUNTY_MN: + 2025-01-01: 35 + MARTIN_COUNTY_MN: + 2025-01-01: 29 + MCLEOD_COUNTY_MN: + 2025-01-01: 35 + MEEKER_COUNTY_MN: + 2025-01-01: 35 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 35 + MORRISON_COUNTY_MN: + 2025-01-01: 35 + MOWER_COUNTY_MN: + 2025-01-01: 35 + MURRAY_COUNTY_MN: + 2025-01-01: 29 + NICOLLET_COUNTY_MN: + 2025-01-01: 30 + NOBLES_COUNTY_MN: + 2025-01-01: 35 + NORMAN_COUNTY_MN: + 2025-01-01: 29 + OLMSTED_COUNTY_MN: + 2025-01-01: 40 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 35 + PENNINGTON_COUNTY_MN: + 2025-01-01: 35 + PINE_COUNTY_MN: + 2025-01-01: 35 + PIPESTONE_COUNTY_MN: + 2025-01-01: 29 + POLK_COUNTY_MN: + 2025-01-01: 35 + POPE_COUNTY_MN: + 2025-01-01: 35 + RAMSEY_COUNTY_MN: + 2025-01-01: 55 + REDWOOD_COUNTY_MN: + 2025-01-01: 35 + RED_LAKE_COUNTY_MN: + 2025-01-01: 35 + RENVILLE_COUNTY_MN: + 2025-01-01: 29 + RICE_COUNTY_MN: + 2025-01-01: 40 + ROCK_COUNTY_MN: + 2025-01-01: 29 + ROSEAU_COUNTY_MN: + 2025-01-01: 29 + SCOTT_COUNTY_MN: + 2025-01-01: 55 + SHERBURNE_COUNTY_MN: + 2025-01-01: 40 + SIBLEY_COUNTY_MN: + 2025-01-01: 35 + STEARNS_COUNTY_MN: + 2025-01-01: 35 + STEELE_COUNTY_MN: + 2025-01-01: 35 + STEVENS_COUNTY_MN: + 2025-01-01: 35 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 40 + SWIFT_COUNTY_MN: + 2025-01-01: 29 + TODD_COUNTY_MN: + 2025-01-01: 35 + TRAVERSE_COUNTY_MN: + 2025-01-01: 35 + WABASHA_COUNTY_MN: + 2025-01-01: 35 + WADENA_COUNTY_MN: + 2025-01-01: 35 + WASECA_COUNTY_MN: + 2025-01-01: 35 + WASHINGTON_COUNTY_MN: + 2025-01-01: 55 + WATONWAN_COUNTY_MN: + 2025-01-01: 29 + WILKIN_COUNTY_MN: + 2025-01-01: 29 + WINONA_COUNTY_MN: + 2025-01-01: 35 + WRIGHT_COUNTY_MN: + 2025-01-01: 40 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 29 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 40 + ANOKA_COUNTY_MN: + 2025-01-01: 50 + BECKER_COUNTY_MN: + 2025-01-01: 40 + BELTRAMI_COUNTY_MN: + 2025-01-01: 32 + BENTON_COUNTY_MN: + 2025-01-01: 32 + BIG_STONE_COUNTY_MN: + 2025-01-01: 30 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 32 + BROWN_COUNTY_MN: + 2025-01-01: 32 + CARLTON_COUNTY_MN: + 2025-01-01: 40 + CARVER_COUNTY_MN: + 2025-01-01: 50 + CASS_COUNTY_MN: + 2025-01-01: 40 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 32 + CHISAGO_COUNTY_MN: + 2025-01-01: 40 + CLAY_COUNTY_MN: + 2025-01-01: 40 + CLEARWATER_COUNTY_MN: + 2025-01-01: 29 + COOK_COUNTY_MN: + 2025-01-01: 50 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 32 + CROW_WING_COUNTY_MN: + 2025-01-01: 32 + DAKOTA_COUNTY_MN: + 2025-01-01: 50 + DODGE_COUNTY_MN: + 2025-01-01: 40 + DOUGLAS_COUNTY_MN: + 2025-01-01: 32 + FARIBAULT_COUNTY_MN: + 2025-01-01: 30 + FILLMORE_COUNTY_MN: + 2025-01-01: 32 + FREEBORN_COUNTY_MN: + 2025-01-01: 40 + GOODHUE_COUNTY_MN: + 2025-01-01: 40 + GRANT_COUNTY_MN: + 2025-01-01: 32 + HENNEPIN_COUNTY_MN: + 2025-01-01: 50 + HOUSTON_COUNTY_MN: + 2025-01-01: 40 + HUBBARD_COUNTY_MN: + 2025-01-01: 32 + ISANTI_COUNTY_MN: + 2025-01-01: 40 + ITASCA_COUNTY_MN: + 2025-01-01: 40 + JACKSON_COUNTY_MN: + 2025-01-01: 29 + KANABEC_COUNTY_MN: + 2025-01-01: 40 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 32 + KITTSON_COUNTY_MN: + 2025-01-01: 29 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 32 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 29 + LAKE_COUNTY_MN: + 2025-01-01: 40 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 35 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 40 + LINCOLN_COUNTY_MN: + 2025-01-01: 32 + LYON_COUNTY_MN: + 2025-01-01: 29 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 32 + MARSHALL_COUNTY_MN: + 2025-01-01: 32 + MARTIN_COUNTY_MN: + 2025-01-01: 29 + MCLEOD_COUNTY_MN: + 2025-01-01: 32 + MEEKER_COUNTY_MN: + 2025-01-01: 32 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 32 + MORRISON_COUNTY_MN: + 2025-01-01: 32 + MOWER_COUNTY_MN: + 2025-01-01: 32 + MURRAY_COUNTY_MN: + 2025-01-01: 29 + NICOLLET_COUNTY_MN: + 2025-01-01: 30 + NOBLES_COUNTY_MN: + 2025-01-01: 32 + NORMAN_COUNTY_MN: + 2025-01-01: 29 + OLMSTED_COUNTY_MN: + 2025-01-01: 40 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 32 + PENNINGTON_COUNTY_MN: + 2025-01-01: 32 + PINE_COUNTY_MN: + 2025-01-01: 32 + PIPESTONE_COUNTY_MN: + 2025-01-01: 29 + POLK_COUNTY_MN: + 2025-01-01: 32 + POPE_COUNTY_MN: + 2025-01-01: 32 + RAMSEY_COUNTY_MN: + 2025-01-01: 50 + REDWOOD_COUNTY_MN: + 2025-01-01: 32 + RED_LAKE_COUNTY_MN: + 2025-01-01: 32 + RENVILLE_COUNTY_MN: + 2025-01-01: 29 + RICE_COUNTY_MN: + 2025-01-01: 40 + ROCK_COUNTY_MN: + 2025-01-01: 29 + ROSEAU_COUNTY_MN: + 2025-01-01: 29 + SCOTT_COUNTY_MN: + 2025-01-01: 50 + SHERBURNE_COUNTY_MN: + 2025-01-01: 40 + SIBLEY_COUNTY_MN: + 2025-01-01: 32 + STEARNS_COUNTY_MN: + 2025-01-01: 32 + STEELE_COUNTY_MN: + 2025-01-01: 32 + STEVENS_COUNTY_MN: + 2025-01-01: 32 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 40 + SWIFT_COUNTY_MN: + 2025-01-01: 29 + TODD_COUNTY_MN: + 2025-01-01: 32 + TRAVERSE_COUNTY_MN: + 2025-01-01: 32 + WABASHA_COUNTY_MN: + 2025-01-01: 32 + WADENA_COUNTY_MN: + 2025-01-01: 32 + WASECA_COUNTY_MN: + 2025-01-01: 32 + WASHINGTON_COUNTY_MN: + 2025-01-01: 50 + WATONWAN_COUNTY_MN: + 2025-01-01: 29 + WILKIN_COUNTY_MN: + 2025-01-01: 29 + WINONA_COUNTY_MN: + 2025-01-01: 32 + WRIGHT_COUNTY_MN: + 2025-01-01: 40 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 29 +CHILD_CARE_CENTER: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 52 + ANOKA_COUNTY_MN: + 2025-01-01: 261 + BECKER_COUNTY_MN: + 2025-01-01: 67.5 + BELTRAMI_COUNTY_MN: + 2025-01-01: 80 + BENTON_COUNTY_MN: + 2025-01-01: 212 + BIG_STONE_COUNTY_MN: + 2025-01-01: 52 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 67.5 + BROWN_COUNTY_MN: + 2025-01-01: 52 + CARLTON_COUNTY_MN: + 2025-01-01: 67.5 + CARVER_COUNTY_MN: + 2025-01-01: 221 + CASS_COUNTY_MN: + 2025-01-01: 52 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 52 + CHISAGO_COUNTY_MN: + 2025-01-01: 212 + CLAY_COUNTY_MN: + 2025-01-01: 67.5 + CLEARWATER_COUNTY_MN: + 2025-01-01: 67.5 + COOK_COUNTY_MN: + 2025-01-01: 80 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 52 + CROW_WING_COUNTY_MN: + 2025-01-01: 67.5 + DAKOTA_COUNTY_MN: + 2025-01-01: 261 + DODGE_COUNTY_MN: + 2025-01-01: 67.5 + DOUGLAS_COUNTY_MN: + 2025-01-01: 67.5 + FARIBAULT_COUNTY_MN: + 2025-01-01: 52 + FILLMORE_COUNTY_MN: + 2025-01-01: 52 + FREEBORN_COUNTY_MN: + 2025-01-01: 55 + GOODHUE_COUNTY_MN: + 2025-01-01: 80 + GRANT_COUNTY_MN: + 2025-01-01: 67.5 + HENNEPIN_COUNTY_MN: + 2025-01-01: 261 + HOUSTON_COUNTY_MN: + 2025-01-01: 54 + HUBBARD_COUNTY_MN: + 2025-01-01: 80 + ISANTI_COUNTY_MN: + 2025-01-01: 80 + ITASCA_COUNTY_MN: + 2025-01-01: 67.5 + JACKSON_COUNTY_MN: + 2025-01-01: 52 + KANABEC_COUNTY_MN: + 2025-01-01: 67.5 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 67.5 + KITTSON_COUNTY_MN: + 2025-01-01: 52 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 67.5 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 52 + LAKE_COUNTY_MN: + 2025-01-01: 80 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 80 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 52 + LINCOLN_COUNTY_MN: + 2025-01-01: 54 + LYON_COUNTY_MN: + 2025-01-01: 54 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 212 + MARSHALL_COUNTY_MN: + 2025-01-01: 67.5 + MARTIN_COUNTY_MN: + 2025-01-01: 212 + MCLEOD_COUNTY_MN: + 2025-01-01: 59 + MEEKER_COUNTY_MN: + 2025-01-01: 67.5 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 80 + MORRISON_COUNTY_MN: + 2025-01-01: 52 + MOWER_COUNTY_MN: + 2025-01-01: 67.5 + MURRAY_COUNTY_MN: + 2025-01-01: 54 + NICOLLET_COUNTY_MN: + 2025-01-01: 54 + NOBLES_COUNTY_MN: + 2025-01-01: 54 + NORMAN_COUNTY_MN: + 2025-01-01: 67.5 + OLMSTED_COUNTY_MN: + 2025-01-01: 261 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 67.5 + PENNINGTON_COUNTY_MN: + 2025-01-01: 54 + PINE_COUNTY_MN: + 2025-01-01: 212 + PIPESTONE_COUNTY_MN: + 2025-01-01: 52 + POLK_COUNTY_MN: + 2025-01-01: 54 + POPE_COUNTY_MN: + 2025-01-01: 54 + RAMSEY_COUNTY_MN: + 2025-01-01: 261 + REDWOOD_COUNTY_MN: + 2025-01-01: 52 + RED_LAKE_COUNTY_MN: + 2025-01-01: 52 + RENVILLE_COUNTY_MN: + 2025-01-01: 52 + RICE_COUNTY_MN: + 2025-01-01: 80 + ROCK_COUNTY_MN: + 2025-01-01: 52 + ROSEAU_COUNTY_MN: + 2025-01-01: 67.5 + SCOTT_COUNTY_MN: + 2025-01-01: 261 + SHERBURNE_COUNTY_MN: + 2025-01-01: 212 + SIBLEY_COUNTY_MN: + 2025-01-01: 67.5 + STEARNS_COUNTY_MN: + 2025-01-01: 221 + STEELE_COUNTY_MN: + 2025-01-01: 212 + STEVENS_COUNTY_MN: + 2025-01-01: 52 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 54 + SWIFT_COUNTY_MN: + 2025-01-01: 52 + TODD_COUNTY_MN: + 2025-01-01: 52 + TRAVERSE_COUNTY_MN: + 2025-01-01: 52 + WABASHA_COUNTY_MN: + 2025-01-01: 54 + WADENA_COUNTY_MN: + 2025-01-01: 52 + WASECA_COUNTY_MN: + 2025-01-01: 54 + WASHINGTON_COUNTY_MN: + 2025-01-01: 261 + WATONWAN_COUNTY_MN: + 2025-01-01: 52 + WILKIN_COUNTY_MN: + 2025-01-01: 52 + WINONA_COUNTY_MN: + 2025-01-01: 67.5 + WRIGHT_COUNTY_MN: + 2025-01-01: 212 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 59 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 53 + ANOKA_COUNTY_MN: + 2025-01-01: 230.4 + BECKER_COUNTY_MN: + 2025-01-01: 61 + BELTRAMI_COUNTY_MN: + 2025-01-01: 70 + BENTON_COUNTY_MN: + 2025-01-01: 120 + BIG_STONE_COUNTY_MN: + 2025-01-01: 53 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 61 + BROWN_COUNTY_MN: + 2025-01-01: 53 + CARLTON_COUNTY_MN: + 2025-01-01: 61 + CARVER_COUNTY_MN: + 2025-01-01: 192 + CASS_COUNTY_MN: + 2025-01-01: 53 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 53 + CHISAGO_COUNTY_MN: + 2025-01-01: 120 + CLAY_COUNTY_MN: + 2025-01-01: 61 + CLEARWATER_COUNTY_MN: + 2025-01-01: 61 + COOK_COUNTY_MN: + 2025-01-01: 70 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 53 + CROW_WING_COUNTY_MN: + 2025-01-01: 61 + DAKOTA_COUNTY_MN: + 2025-01-01: 230.4 + DODGE_COUNTY_MN: + 2025-01-01: 61 + DOUGLAS_COUNTY_MN: + 2025-01-01: 61 + FARIBAULT_COUNTY_MN: + 2025-01-01: 53 + FILLMORE_COUNTY_MN: + 2025-01-01: 53 + FREEBORN_COUNTY_MN: + 2025-01-01: 53 + GOODHUE_COUNTY_MN: + 2025-01-01: 70 + GRANT_COUNTY_MN: + 2025-01-01: 61 + HENNEPIN_COUNTY_MN: + 2025-01-01: 230.4 + HOUSTON_COUNTY_MN: + 2025-01-01: 53 + HUBBARD_COUNTY_MN: + 2025-01-01: 70 + ISANTI_COUNTY_MN: + 2025-01-01: 70 + ITASCA_COUNTY_MN: + 2025-01-01: 61 + JACKSON_COUNTY_MN: + 2025-01-01: 53 + KANABEC_COUNTY_MN: + 2025-01-01: 61 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 61 + KITTSON_COUNTY_MN: + 2025-01-01: 53 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 61 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 53 + LAKE_COUNTY_MN: + 2025-01-01: 70 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 70 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 53 + LINCOLN_COUNTY_MN: + 2025-01-01: 53 + LYON_COUNTY_MN: + 2025-01-01: 53 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 120 + MARSHALL_COUNTY_MN: + 2025-01-01: 61 + MARTIN_COUNTY_MN: + 2025-01-01: 120 + MCLEOD_COUNTY_MN: + 2025-01-01: 55 + MEEKER_COUNTY_MN: + 2025-01-01: 61 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 70 + MORRISON_COUNTY_MN: + 2025-01-01: 53 + MOWER_COUNTY_MN: + 2025-01-01: 61 + MURRAY_COUNTY_MN: + 2025-01-01: 53 + NICOLLET_COUNTY_MN: + 2025-01-01: 53 + NOBLES_COUNTY_MN: + 2025-01-01: 53 + NORMAN_COUNTY_MN: + 2025-01-01: 61 + OLMSTED_COUNTY_MN: + 2025-01-01: 230.4 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 61 + PENNINGTON_COUNTY_MN: + 2025-01-01: 53 + PINE_COUNTY_MN: + 2025-01-01: 120 + PIPESTONE_COUNTY_MN: + 2025-01-01: 53 + POLK_COUNTY_MN: + 2025-01-01: 53 + POPE_COUNTY_MN: + 2025-01-01: 53 + RAMSEY_COUNTY_MN: + 2025-01-01: 230.4 + REDWOOD_COUNTY_MN: + 2025-01-01: 53 + RED_LAKE_COUNTY_MN: + 2025-01-01: 53 + RENVILLE_COUNTY_MN: + 2025-01-01: 53 + RICE_COUNTY_MN: + 2025-01-01: 70 + ROCK_COUNTY_MN: + 2025-01-01: 53 + ROSEAU_COUNTY_MN: + 2025-01-01: 61 + SCOTT_COUNTY_MN: + 2025-01-01: 230.4 + SHERBURNE_COUNTY_MN: + 2025-01-01: 120 + SIBLEY_COUNTY_MN: + 2025-01-01: 61 + STEARNS_COUNTY_MN: + 2025-01-01: 192 + STEELE_COUNTY_MN: + 2025-01-01: 120 + STEVENS_COUNTY_MN: + 2025-01-01: 53 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 53 + SWIFT_COUNTY_MN: + 2025-01-01: 53 + TODD_COUNTY_MN: + 2025-01-01: 53 + TRAVERSE_COUNTY_MN: + 2025-01-01: 53 + WABASHA_COUNTY_MN: + 2025-01-01: 53 + WADENA_COUNTY_MN: + 2025-01-01: 53 + WASECA_COUNTY_MN: + 2025-01-01: 53 + WASHINGTON_COUNTY_MN: + 2025-01-01: 230.4 + WATONWAN_COUNTY_MN: + 2025-01-01: 53 + WILKIN_COUNTY_MN: + 2025-01-01: 53 + WINONA_COUNTY_MN: + 2025-01-01: 61 + WRIGHT_COUNTY_MN: + 2025-01-01: 120 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 55 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 45 + ANOKA_COUNTY_MN: + 2025-01-01: 200 + BECKER_COUNTY_MN: + 2025-01-01: 59 + BELTRAMI_COUNTY_MN: + 2025-01-01: 70 + BENTON_COUNTY_MN: + 2025-01-01: 120 + BIG_STONE_COUNTY_MN: + 2025-01-01: 45 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 59 + BROWN_COUNTY_MN: + 2025-01-01: 45 + CARLTON_COUNTY_MN: + 2025-01-01: 59 + CARVER_COUNTY_MN: + 2025-01-01: 163 + CASS_COUNTY_MN: + 2025-01-01: 45 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 45 + CHISAGO_COUNTY_MN: + 2025-01-01: 120 + CLAY_COUNTY_MN: + 2025-01-01: 59 + CLEARWATER_COUNTY_MN: + 2025-01-01: 59 + COOK_COUNTY_MN: + 2025-01-01: 70 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 45 + CROW_WING_COUNTY_MN: + 2025-01-01: 59 + DAKOTA_COUNTY_MN: + 2025-01-01: 200 + DODGE_COUNTY_MN: + 2025-01-01: 59 + DOUGLAS_COUNTY_MN: + 2025-01-01: 59 + FARIBAULT_COUNTY_MN: + 2025-01-01: 45 + FILLMORE_COUNTY_MN: + 2025-01-01: 45 + FREEBORN_COUNTY_MN: + 2025-01-01: 48 + GOODHUE_COUNTY_MN: + 2025-01-01: 70 + GRANT_COUNTY_MN: + 2025-01-01: 59 + HENNEPIN_COUNTY_MN: + 2025-01-01: 200 + HOUSTON_COUNTY_MN: + 2025-01-01: 48 + HUBBARD_COUNTY_MN: + 2025-01-01: 70 + ISANTI_COUNTY_MN: + 2025-01-01: 70 + ITASCA_COUNTY_MN: + 2025-01-01: 59 + JACKSON_COUNTY_MN: + 2025-01-01: 45 + KANABEC_COUNTY_MN: + 2025-01-01: 59 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 59 + KITTSON_COUNTY_MN: + 2025-01-01: 45 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 59 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 45 + LAKE_COUNTY_MN: + 2025-01-01: 70 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 70 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 45 + LINCOLN_COUNTY_MN: + 2025-01-01: 48 + LYON_COUNTY_MN: + 2025-01-01: 48 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 120 + MARSHALL_COUNTY_MN: + 2025-01-01: 59 + MARTIN_COUNTY_MN: + 2025-01-01: 120 + MCLEOD_COUNTY_MN: + 2025-01-01: 48 + MEEKER_COUNTY_MN: + 2025-01-01: 59 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 70 + MORRISON_COUNTY_MN: + 2025-01-01: 45 + MOWER_COUNTY_MN: + 2025-01-01: 59 + MURRAY_COUNTY_MN: + 2025-01-01: 48 + NICOLLET_COUNTY_MN: + 2025-01-01: 48 + NOBLES_COUNTY_MN: + 2025-01-01: 48 + NORMAN_COUNTY_MN: + 2025-01-01: 59 + OLMSTED_COUNTY_MN: + 2025-01-01: 200 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 59 + PENNINGTON_COUNTY_MN: + 2025-01-01: 48 + PINE_COUNTY_MN: + 2025-01-01: 120 + PIPESTONE_COUNTY_MN: + 2025-01-01: 45 + POLK_COUNTY_MN: + 2025-01-01: 48 + POPE_COUNTY_MN: + 2025-01-01: 48 + RAMSEY_COUNTY_MN: + 2025-01-01: 200 + REDWOOD_COUNTY_MN: + 2025-01-01: 45 + RED_LAKE_COUNTY_MN: + 2025-01-01: 45 + RENVILLE_COUNTY_MN: + 2025-01-01: 45 + RICE_COUNTY_MN: + 2025-01-01: 70 + ROCK_COUNTY_MN: + 2025-01-01: 45 + ROSEAU_COUNTY_MN: + 2025-01-01: 59 + SCOTT_COUNTY_MN: + 2025-01-01: 200 + SHERBURNE_COUNTY_MN: + 2025-01-01: 120 + SIBLEY_COUNTY_MN: + 2025-01-01: 59 + STEARNS_COUNTY_MN: + 2025-01-01: 163 + STEELE_COUNTY_MN: + 2025-01-01: 120 + STEVENS_COUNTY_MN: + 2025-01-01: 45 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 48 + SWIFT_COUNTY_MN: + 2025-01-01: 45 + TODD_COUNTY_MN: + 2025-01-01: 45 + TRAVERSE_COUNTY_MN: + 2025-01-01: 45 + WABASHA_COUNTY_MN: + 2025-01-01: 48 + WADENA_COUNTY_MN: + 2025-01-01: 45 + WASECA_COUNTY_MN: + 2025-01-01: 48 + WASHINGTON_COUNTY_MN: + 2025-01-01: 200 + WATONWAN_COUNTY_MN: + 2025-01-01: 45 + WILKIN_COUNTY_MN: + 2025-01-01: 45 + WINONA_COUNTY_MN: + 2025-01-01: 59 + WRIGHT_COUNTY_MN: + 2025-01-01: 120 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 48 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 50 + ANOKA_COUNTY_MN: + 2025-01-01: 132 + BECKER_COUNTY_MN: + 2025-01-01: 50 + BELTRAMI_COUNTY_MN: + 2025-01-01: 50 + BENTON_COUNTY_MN: + 2025-01-01: 105 + BIG_STONE_COUNTY_MN: + 2025-01-01: 50 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 50 + BROWN_COUNTY_MN: + 2025-01-01: 50 + CARLTON_COUNTY_MN: + 2025-01-01: 50 + CARVER_COUNTY_MN: + 2025-01-01: 110 + CASS_COUNTY_MN: + 2025-01-01: 50 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 50 + CHISAGO_COUNTY_MN: + 2025-01-01: 105 + CLAY_COUNTY_MN: + 2025-01-01: 50 + CLEARWATER_COUNTY_MN: + 2025-01-01: 50 + COOK_COUNTY_MN: + 2025-01-01: 50 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 50 + CROW_WING_COUNTY_MN: + 2025-01-01: 50 + DAKOTA_COUNTY_MN: + 2025-01-01: 132 + DODGE_COUNTY_MN: + 2025-01-01: 50 + DOUGLAS_COUNTY_MN: + 2025-01-01: 50 + FARIBAULT_COUNTY_MN: + 2025-01-01: 50 + FILLMORE_COUNTY_MN: + 2025-01-01: 50 + FREEBORN_COUNTY_MN: + 2025-01-01: 50 + GOODHUE_COUNTY_MN: + 2025-01-01: 50 + GRANT_COUNTY_MN: + 2025-01-01: 50 + HENNEPIN_COUNTY_MN: + 2025-01-01: 132 + HOUSTON_COUNTY_MN: + 2025-01-01: 50 + HUBBARD_COUNTY_MN: + 2025-01-01: 50 + ISANTI_COUNTY_MN: + 2025-01-01: 50 + ITASCA_COUNTY_MN: + 2025-01-01: 50 + JACKSON_COUNTY_MN: + 2025-01-01: 50 + KANABEC_COUNTY_MN: + 2025-01-01: 50 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 50 + KITTSON_COUNTY_MN: + 2025-01-01: 50 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 50 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 50 + LAKE_COUNTY_MN: + 2025-01-01: 50 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 50 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 50 + LINCOLN_COUNTY_MN: + 2025-01-01: 50 + LYON_COUNTY_MN: + 2025-01-01: 50 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 105 + MARSHALL_COUNTY_MN: + 2025-01-01: 50 + MARTIN_COUNTY_MN: + 2025-01-01: 105 + MCLEOD_COUNTY_MN: + 2025-01-01: 50 + MEEKER_COUNTY_MN: + 2025-01-01: 50 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 50 + MORRISON_COUNTY_MN: + 2025-01-01: 50 + MOWER_COUNTY_MN: + 2025-01-01: 50 + MURRAY_COUNTY_MN: + 2025-01-01: 50 + NICOLLET_COUNTY_MN: + 2025-01-01: 50 + NOBLES_COUNTY_MN: + 2025-01-01: 50 + NORMAN_COUNTY_MN: + 2025-01-01: 50 + OLMSTED_COUNTY_MN: + 2025-01-01: 132 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 50 + PENNINGTON_COUNTY_MN: + 2025-01-01: 50 + PINE_COUNTY_MN: + 2025-01-01: 105 + PIPESTONE_COUNTY_MN: + 2025-01-01: 50 + POLK_COUNTY_MN: + 2025-01-01: 50 + POPE_COUNTY_MN: + 2025-01-01: 50 + RAMSEY_COUNTY_MN: + 2025-01-01: 132 + REDWOOD_COUNTY_MN: + 2025-01-01: 50 + RED_LAKE_COUNTY_MN: + 2025-01-01: 50 + RENVILLE_COUNTY_MN: + 2025-01-01: 50 + RICE_COUNTY_MN: + 2025-01-01: 50 + ROCK_COUNTY_MN: + 2025-01-01: 50 + ROSEAU_COUNTY_MN: + 2025-01-01: 50 + SCOTT_COUNTY_MN: + 2025-01-01: 132 + SHERBURNE_COUNTY_MN: + 2025-01-01: 105 + SIBLEY_COUNTY_MN: + 2025-01-01: 50 + STEARNS_COUNTY_MN: + 2025-01-01: 110 + STEELE_COUNTY_MN: + 2025-01-01: 105 + STEVENS_COUNTY_MN: + 2025-01-01: 50 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 50 + SWIFT_COUNTY_MN: + 2025-01-01: 50 + TODD_COUNTY_MN: + 2025-01-01: 50 + TRAVERSE_COUNTY_MN: + 2025-01-01: 50 + WABASHA_COUNTY_MN: + 2025-01-01: 50 + WADENA_COUNTY_MN: + 2025-01-01: 50 + WASECA_COUNTY_MN: + 2025-01-01: 50 + WASHINGTON_COUNTY_MN: + 2025-01-01: 132 + WATONWAN_COUNTY_MN: + 2025-01-01: 50 + WILKIN_COUNTY_MN: + 2025-01-01: 50 + WINONA_COUNTY_MN: + 2025-01-01: 50 + WRIGHT_COUNTY_MN: + 2025-01-01: 105 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 50 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/hourly.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/hourly.yaml new file mode 100644 index 00000000000..e71a4018993 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/hourly.yaml @@ -0,0 +1,1414 @@ +description: Minnesota sets these maximum hourly child care reimbursement rates by provider type, age group, and county under the Child Care Assistance Program. +metadata: + unit: currency-USD + period: hour + label: Minnesota CCAP maximum hourly rate + breakdown: + - mn_ccap_provider_type + - mn_ccap_age_group + reference: + - title: Minnesota CCAP Standard Maximum Rates (DHS-6441F), effective Jan. 6, 2025 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5 + +FAMILY_CHILD_CARE: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 5.13 + ANOKA_COUNTY_MN: + 2025-01-01: 12 + BECKER_COUNTY_MN: + 2025-01-01: 4.25 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.5 + BENTON_COUNTY_MN: + 2025-01-01: 3.5 + BIG_STONE_COUNTY_MN: + 2025-01-01: 3.15 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.5 + BROWN_COUNTY_MN: + 2025-01-01: 3.5 + CARLTON_COUNTY_MN: + 2025-01-01: 5.13 + CARVER_COUNTY_MN: + 2025-01-01: 12 + CASS_COUNTY_MN: + 2025-01-01: 4.25 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 5.13 + CLAY_COUNTY_MN: + 2025-01-01: 5.13 + CLEARWATER_COUNTY_MN: + 2025-01-01: 3 + COOK_COUNTY_MN: + 2025-01-01: 12 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.5 + DAKOTA_COUNTY_MN: + 2025-01-01: 12 + DODGE_COUNTY_MN: + 2025-01-01: 4.25 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.5 + FARIBAULT_COUNTY_MN: + 2025-01-01: 3.15 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 4.25 + GOODHUE_COUNTY_MN: + 2025-01-01: 5.13 + GRANT_COUNTY_MN: + 2025-01-01: 3.5 + HENNEPIN_COUNTY_MN: + 2025-01-01: 12 + HOUSTON_COUNTY_MN: + 2025-01-01: 4.25 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.5 + ISANTI_COUNTY_MN: + 2025-01-01: 5.13 + ITASCA_COUNTY_MN: + 2025-01-01: 5.13 + JACKSON_COUNTY_MN: + 2025-01-01: 3 + KANABEC_COUNTY_MN: + 2025-01-01: 4.25 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.5 + KITTSON_COUNTY_MN: + 2025-01-01: 3 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.5 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 3 + LAKE_COUNTY_MN: + 2025-01-01: 4.25 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 5.13 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 4.25 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.5 + LYON_COUNTY_MN: + 2025-01-01: 3 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.5 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.5 + MARTIN_COUNTY_MN: + 2025-01-01: 3 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.5 + MEEKER_COUNTY_MN: + 2025-01-01: 3.5 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.5 + MORRISON_COUNTY_MN: + 2025-01-01: 3.5 + MOWER_COUNTY_MN: + 2025-01-01: 3.5 + MURRAY_COUNTY_MN: + 2025-01-01: 3 + NICOLLET_COUNTY_MN: + 2025-01-01: 3.15 + NOBLES_COUNTY_MN: + 2025-01-01: 3.5 + NORMAN_COUNTY_MN: + 2025-01-01: 3 + OLMSTED_COUNTY_MN: + 2025-01-01: 5.13 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.5 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.5 + PINE_COUNTY_MN: + 2025-01-01: 3.5 + PIPESTONE_COUNTY_MN: + 2025-01-01: 3 + POLK_COUNTY_MN: + 2025-01-01: 3.5 + POPE_COUNTY_MN: + 2025-01-01: 3.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 12 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 3 + RICE_COUNTY_MN: + 2025-01-01: 5.13 + ROCK_COUNTY_MN: + 2025-01-01: 3 + ROSEAU_COUNTY_MN: + 2025-01-01: 3 + SCOTT_COUNTY_MN: + 2025-01-01: 12 + SHERBURNE_COUNTY_MN: + 2025-01-01: 5.13 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.5 + STEARNS_COUNTY_MN: + 2025-01-01: 3.5 + STEELE_COUNTY_MN: + 2025-01-01: 3.5 + STEVENS_COUNTY_MN: + 2025-01-01: 3.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5.13 + SWIFT_COUNTY_MN: + 2025-01-01: 3 + TODD_COUNTY_MN: + 2025-01-01: 3.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.5 + WABASHA_COUNTY_MN: + 2025-01-01: 3.5 + WADENA_COUNTY_MN: + 2025-01-01: 3.5 + WASECA_COUNTY_MN: + 2025-01-01: 3.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 12 + WATONWAN_COUNTY_MN: + 2025-01-01: 3 + WILKIN_COUNTY_MN: + 2025-01-01: 3 + WINONA_COUNTY_MN: + 2025-01-01: 3.5 + WRIGHT_COUNTY_MN: + 2025-01-01: 5.13 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 3 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 5 + ANOKA_COUNTY_MN: + 2025-01-01: 10.8 + BECKER_COUNTY_MN: + 2025-01-01: 4.25 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.5 + BENTON_COUNTY_MN: + 2025-01-01: 3.5 + BIG_STONE_COUNTY_MN: + 2025-01-01: 3 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.5 + BROWN_COUNTY_MN: + 2025-01-01: 3.5 + CARLTON_COUNTY_MN: + 2025-01-01: 5 + CARVER_COUNTY_MN: + 2025-01-01: 10.8 + CASS_COUNTY_MN: + 2025-01-01: 4.25 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 5 + CLAY_COUNTY_MN: + 2025-01-01: 5 + CLEARWATER_COUNTY_MN: + 2025-01-01: 3 + COOK_COUNTY_MN: + 2025-01-01: 10.8 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.5 + DAKOTA_COUNTY_MN: + 2025-01-01: 10.8 + DODGE_COUNTY_MN: + 2025-01-01: 4.25 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.5 + FARIBAULT_COUNTY_MN: + 2025-01-01: 3 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 4.25 + GOODHUE_COUNTY_MN: + 2025-01-01: 5 + GRANT_COUNTY_MN: + 2025-01-01: 3.5 + HENNEPIN_COUNTY_MN: + 2025-01-01: 10.8 + HOUSTON_COUNTY_MN: + 2025-01-01: 4.25 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.5 + ISANTI_COUNTY_MN: + 2025-01-01: 5 + ITASCA_COUNTY_MN: + 2025-01-01: 5 + JACKSON_COUNTY_MN: + 2025-01-01: 3 + KANABEC_COUNTY_MN: + 2025-01-01: 4.25 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.5 + KITTSON_COUNTY_MN: + 2025-01-01: 3 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.5 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 3 + LAKE_COUNTY_MN: + 2025-01-01: 4.25 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 5 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 4.25 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.5 + LYON_COUNTY_MN: + 2025-01-01: 3 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.5 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.5 + MARTIN_COUNTY_MN: + 2025-01-01: 3 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.5 + MEEKER_COUNTY_MN: + 2025-01-01: 3.5 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.5 + MORRISON_COUNTY_MN: + 2025-01-01: 3.5 + MOWER_COUNTY_MN: + 2025-01-01: 3.5 + MURRAY_COUNTY_MN: + 2025-01-01: 3 + NICOLLET_COUNTY_MN: + 2025-01-01: 3 + NOBLES_COUNTY_MN: + 2025-01-01: 3.5 + NORMAN_COUNTY_MN: + 2025-01-01: 3 + OLMSTED_COUNTY_MN: + 2025-01-01: 5 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.5 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.5 + PINE_COUNTY_MN: + 2025-01-01: 3.5 + PIPESTONE_COUNTY_MN: + 2025-01-01: 3 + POLK_COUNTY_MN: + 2025-01-01: 3.5 + POPE_COUNTY_MN: + 2025-01-01: 3.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 10.8 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 3 + RICE_COUNTY_MN: + 2025-01-01: 5 + ROCK_COUNTY_MN: + 2025-01-01: 3 + ROSEAU_COUNTY_MN: + 2025-01-01: 3 + SCOTT_COUNTY_MN: + 2025-01-01: 10.8 + SHERBURNE_COUNTY_MN: + 2025-01-01: 5 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.5 + STEARNS_COUNTY_MN: + 2025-01-01: 3.5 + STEELE_COUNTY_MN: + 2025-01-01: 3.5 + STEVENS_COUNTY_MN: + 2025-01-01: 3.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5 + SWIFT_COUNTY_MN: + 2025-01-01: 3 + TODD_COUNTY_MN: + 2025-01-01: 3.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.5 + WABASHA_COUNTY_MN: + 2025-01-01: 3.5 + WADENA_COUNTY_MN: + 2025-01-01: 3.5 + WASECA_COUNTY_MN: + 2025-01-01: 3.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 10.8 + WATONWAN_COUNTY_MN: + 2025-01-01: 3 + WILKIN_COUNTY_MN: + 2025-01-01: 3 + WINONA_COUNTY_MN: + 2025-01-01: 3.5 + WRIGHT_COUNTY_MN: + 2025-01-01: 5 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 3 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 5 + ANOKA_COUNTY_MN: + 2025-01-01: 10 + BECKER_COUNTY_MN: + 2025-01-01: 4.05 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.5 + BENTON_COUNTY_MN: + 2025-01-01: 3.5 + BIG_STONE_COUNTY_MN: + 2025-01-01: 3 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.5 + BROWN_COUNTY_MN: + 2025-01-01: 3.5 + CARLTON_COUNTY_MN: + 2025-01-01: 5 + CARVER_COUNTY_MN: + 2025-01-01: 10 + CASS_COUNTY_MN: + 2025-01-01: 4.05 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 5 + CLAY_COUNTY_MN: + 2025-01-01: 5 + CLEARWATER_COUNTY_MN: + 2025-01-01: 3 + COOK_COUNTY_MN: + 2025-01-01: 10 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.5 + DAKOTA_COUNTY_MN: + 2025-01-01: 10 + DODGE_COUNTY_MN: + 2025-01-01: 4.05 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.5 + FARIBAULT_COUNTY_MN: + 2025-01-01: 3 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 4.05 + GOODHUE_COUNTY_MN: + 2025-01-01: 5 + GRANT_COUNTY_MN: + 2025-01-01: 3.5 + HENNEPIN_COUNTY_MN: + 2025-01-01: 10 + HOUSTON_COUNTY_MN: + 2025-01-01: 4.05 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.5 + ISANTI_COUNTY_MN: + 2025-01-01: 5 + ITASCA_COUNTY_MN: + 2025-01-01: 5 + JACKSON_COUNTY_MN: + 2025-01-01: 3 + KANABEC_COUNTY_MN: + 2025-01-01: 4.05 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.5 + KITTSON_COUNTY_MN: + 2025-01-01: 3 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.5 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 3 + LAKE_COUNTY_MN: + 2025-01-01: 4.05 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 5 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 4.05 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.5 + LYON_COUNTY_MN: + 2025-01-01: 3 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.5 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.5 + MARTIN_COUNTY_MN: + 2025-01-01: 3 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.5 + MEEKER_COUNTY_MN: + 2025-01-01: 3.5 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.5 + MORRISON_COUNTY_MN: + 2025-01-01: 3.5 + MOWER_COUNTY_MN: + 2025-01-01: 3.5 + MURRAY_COUNTY_MN: + 2025-01-01: 3 + NICOLLET_COUNTY_MN: + 2025-01-01: 3 + NOBLES_COUNTY_MN: + 2025-01-01: 3.5 + NORMAN_COUNTY_MN: + 2025-01-01: 3 + OLMSTED_COUNTY_MN: + 2025-01-01: 5 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.5 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.5 + PINE_COUNTY_MN: + 2025-01-01: 3.5 + PIPESTONE_COUNTY_MN: + 2025-01-01: 3 + POLK_COUNTY_MN: + 2025-01-01: 3.5 + POPE_COUNTY_MN: + 2025-01-01: 3.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 10 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 3 + RICE_COUNTY_MN: + 2025-01-01: 5 + ROCK_COUNTY_MN: + 2025-01-01: 3 + ROSEAU_COUNTY_MN: + 2025-01-01: 3 + SCOTT_COUNTY_MN: + 2025-01-01: 10 + SHERBURNE_COUNTY_MN: + 2025-01-01: 5 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.5 + STEARNS_COUNTY_MN: + 2025-01-01: 3.5 + STEELE_COUNTY_MN: + 2025-01-01: 3.5 + STEVENS_COUNTY_MN: + 2025-01-01: 3.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5 + SWIFT_COUNTY_MN: + 2025-01-01: 3 + TODD_COUNTY_MN: + 2025-01-01: 3.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.5 + WABASHA_COUNTY_MN: + 2025-01-01: 3.5 + WADENA_COUNTY_MN: + 2025-01-01: 3.5 + WASECA_COUNTY_MN: + 2025-01-01: 3.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 10 + WATONWAN_COUNTY_MN: + 2025-01-01: 3 + WILKIN_COUNTY_MN: + 2025-01-01: 3 + WINONA_COUNTY_MN: + 2025-01-01: 3.5 + WRIGHT_COUNTY_MN: + 2025-01-01: 5 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 3 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 5 + ANOKA_COUNTY_MN: + 2025-01-01: 10 + BECKER_COUNTY_MN: + 2025-01-01: 4.5 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.5 + BENTON_COUNTY_MN: + 2025-01-01: 3.5 + BIG_STONE_COUNTY_MN: + 2025-01-01: 3 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.5 + BROWN_COUNTY_MN: + 2025-01-01: 3.5 + CARLTON_COUNTY_MN: + 2025-01-01: 5 + CARVER_COUNTY_MN: + 2025-01-01: 10 + CASS_COUNTY_MN: + 2025-01-01: 4.5 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 5 + CLAY_COUNTY_MN: + 2025-01-01: 5 + CLEARWATER_COUNTY_MN: + 2025-01-01: 3 + COOK_COUNTY_MN: + 2025-01-01: 10 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.5 + DAKOTA_COUNTY_MN: + 2025-01-01: 10 + DODGE_COUNTY_MN: + 2025-01-01: 4.5 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.5 + FARIBAULT_COUNTY_MN: + 2025-01-01: 3 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 4.5 + GOODHUE_COUNTY_MN: + 2025-01-01: 5 + GRANT_COUNTY_MN: + 2025-01-01: 3.5 + HENNEPIN_COUNTY_MN: + 2025-01-01: 10 + HOUSTON_COUNTY_MN: + 2025-01-01: 4.5 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.5 + ISANTI_COUNTY_MN: + 2025-01-01: 5 + ITASCA_COUNTY_MN: + 2025-01-01: 5 + JACKSON_COUNTY_MN: + 2025-01-01: 3 + KANABEC_COUNTY_MN: + 2025-01-01: 4.5 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.5 + KITTSON_COUNTY_MN: + 2025-01-01: 3 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.5 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 3 + LAKE_COUNTY_MN: + 2025-01-01: 4.5 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 5 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 4.5 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.5 + LYON_COUNTY_MN: + 2025-01-01: 3 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.5 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.5 + MARTIN_COUNTY_MN: + 2025-01-01: 3 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.5 + MEEKER_COUNTY_MN: + 2025-01-01: 3.5 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.5 + MORRISON_COUNTY_MN: + 2025-01-01: 3.5 + MOWER_COUNTY_MN: + 2025-01-01: 3.5 + MURRAY_COUNTY_MN: + 2025-01-01: 3 + NICOLLET_COUNTY_MN: + 2025-01-01: 3 + NOBLES_COUNTY_MN: + 2025-01-01: 3.5 + NORMAN_COUNTY_MN: + 2025-01-01: 3 + OLMSTED_COUNTY_MN: + 2025-01-01: 5 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.5 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.5 + PINE_COUNTY_MN: + 2025-01-01: 3.5 + PIPESTONE_COUNTY_MN: + 2025-01-01: 3 + POLK_COUNTY_MN: + 2025-01-01: 3.5 + POPE_COUNTY_MN: + 2025-01-01: 3.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 10 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 3 + RICE_COUNTY_MN: + 2025-01-01: 5 + ROCK_COUNTY_MN: + 2025-01-01: 3 + ROSEAU_COUNTY_MN: + 2025-01-01: 3 + SCOTT_COUNTY_MN: + 2025-01-01: 10 + SHERBURNE_COUNTY_MN: + 2025-01-01: 5 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.5 + STEARNS_COUNTY_MN: + 2025-01-01: 3.5 + STEELE_COUNTY_MN: + 2025-01-01: 3.5 + STEVENS_COUNTY_MN: + 2025-01-01: 3.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5 + SWIFT_COUNTY_MN: + 2025-01-01: 3 + TODD_COUNTY_MN: + 2025-01-01: 3.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.5 + WABASHA_COUNTY_MN: + 2025-01-01: 3.5 + WADENA_COUNTY_MN: + 2025-01-01: 3.5 + WASECA_COUNTY_MN: + 2025-01-01: 3.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 10 + WATONWAN_COUNTY_MN: + 2025-01-01: 3 + WILKIN_COUNTY_MN: + 2025-01-01: 3 + WINONA_COUNTY_MN: + 2025-01-01: 3.5 + WRIGHT_COUNTY_MN: + 2025-01-01: 5 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 3 +CHILD_CARE_CENTER: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 5.85 + ANOKA_COUNTY_MN: + 2025-01-01: 26 + BECKER_COUNTY_MN: + 2025-01-01: 14 + BELTRAMI_COUNTY_MN: + 2025-01-01: 16 + BENTON_COUNTY_MN: + 2025-01-01: 26 + BIG_STONE_COUNTY_MN: + 2025-01-01: 5.85 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 14 + BROWN_COUNTY_MN: + 2025-01-01: 5.85 + CARLTON_COUNTY_MN: + 2025-01-01: 14 + CARVER_COUNTY_MN: + 2025-01-01: 26 + CASS_COUNTY_MN: + 2025-01-01: 5.85 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 5.85 + CHISAGO_COUNTY_MN: + 2025-01-01: 26 + CLAY_COUNTY_MN: + 2025-01-01: 14 + CLEARWATER_COUNTY_MN: + 2025-01-01: 14 + COOK_COUNTY_MN: + 2025-01-01: 16 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 5.85 + CROW_WING_COUNTY_MN: + 2025-01-01: 14 + DAKOTA_COUNTY_MN: + 2025-01-01: 26 + DODGE_COUNTY_MN: + 2025-01-01: 14 + DOUGLAS_COUNTY_MN: + 2025-01-01: 14 + FARIBAULT_COUNTY_MN: + 2025-01-01: 5.85 + FILLMORE_COUNTY_MN: + 2025-01-01: 5.85 + FREEBORN_COUNTY_MN: + 2025-01-01: 9 + GOODHUE_COUNTY_MN: + 2025-01-01: 16 + GRANT_COUNTY_MN: + 2025-01-01: 14 + HENNEPIN_COUNTY_MN: + 2025-01-01: 26 + HOUSTON_COUNTY_MN: + 2025-01-01: 7 + HUBBARD_COUNTY_MN: + 2025-01-01: 16 + ISANTI_COUNTY_MN: + 2025-01-01: 16 + ITASCA_COUNTY_MN: + 2025-01-01: 14 + JACKSON_COUNTY_MN: + 2025-01-01: 5.85 + KANABEC_COUNTY_MN: + 2025-01-01: 14 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 14 + KITTSON_COUNTY_MN: + 2025-01-01: 5.85 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 14 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 5.85 + LAKE_COUNTY_MN: + 2025-01-01: 16 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 16 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 5.85 + LINCOLN_COUNTY_MN: + 2025-01-01: 7 + LYON_COUNTY_MN: + 2025-01-01: 7 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 26 + MARSHALL_COUNTY_MN: + 2025-01-01: 14 + MARTIN_COUNTY_MN: + 2025-01-01: 26 + MCLEOD_COUNTY_MN: + 2025-01-01: 12 + MEEKER_COUNTY_MN: + 2025-01-01: 14 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 16 + MORRISON_COUNTY_MN: + 2025-01-01: 5.85 + MOWER_COUNTY_MN: + 2025-01-01: 14 + MURRAY_COUNTY_MN: + 2025-01-01: 7 + NICOLLET_COUNTY_MN: + 2025-01-01: 7 + NOBLES_COUNTY_MN: + 2025-01-01: 7 + NORMAN_COUNTY_MN: + 2025-01-01: 14 + OLMSTED_COUNTY_MN: + 2025-01-01: 26 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 14 + PENNINGTON_COUNTY_MN: + 2025-01-01: 7 + PINE_COUNTY_MN: + 2025-01-01: 26 + PIPESTONE_COUNTY_MN: + 2025-01-01: 5.85 + POLK_COUNTY_MN: + 2025-01-01: 7 + POPE_COUNTY_MN: + 2025-01-01: 7 + RAMSEY_COUNTY_MN: + 2025-01-01: 26 + REDWOOD_COUNTY_MN: + 2025-01-01: 5.85 + RED_LAKE_COUNTY_MN: + 2025-01-01: 5.85 + RENVILLE_COUNTY_MN: + 2025-01-01: 6.45 + RICE_COUNTY_MN: + 2025-01-01: 16 + ROCK_COUNTY_MN: + 2025-01-01: 5.85 + ROSEAU_COUNTY_MN: + 2025-01-01: 14 + SCOTT_COUNTY_MN: + 2025-01-01: 26 + SHERBURNE_COUNTY_MN: + 2025-01-01: 26 + SIBLEY_COUNTY_MN: + 2025-01-01: 14 + STEARNS_COUNTY_MN: + 2025-01-01: 26 + STEELE_COUNTY_MN: + 2025-01-01: 26 + STEVENS_COUNTY_MN: + 2025-01-01: 5.85 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 7 + SWIFT_COUNTY_MN: + 2025-01-01: 5.85 + TODD_COUNTY_MN: + 2025-01-01: 5.85 + TRAVERSE_COUNTY_MN: + 2025-01-01: 5.85 + WABASHA_COUNTY_MN: + 2025-01-01: 7 + WADENA_COUNTY_MN: + 2025-01-01: 5.85 + WASECA_COUNTY_MN: + 2025-01-01: 7 + WASHINGTON_COUNTY_MN: + 2025-01-01: 26 + WATONWAN_COUNTY_MN: + 2025-01-01: 5.85 + WILKIN_COUNTY_MN: + 2025-01-01: 5.85 + WINONA_COUNTY_MN: + 2025-01-01: 14 + WRIGHT_COUNTY_MN: + 2025-01-01: 26 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 12 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 5.65 + ANOKA_COUNTY_MN: + 2025-01-01: 24 + BECKER_COUNTY_MN: + 2025-01-01: 12 + BELTRAMI_COUNTY_MN: + 2025-01-01: 12 + BENTON_COUNTY_MN: + 2025-01-01: 24 + BIG_STONE_COUNTY_MN: + 2025-01-01: 5.65 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 12 + BROWN_COUNTY_MN: + 2025-01-01: 5.65 + CARLTON_COUNTY_MN: + 2025-01-01: 12 + CARVER_COUNTY_MN: + 2025-01-01: 24 + CASS_COUNTY_MN: + 2025-01-01: 5.65 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 5.65 + CHISAGO_COUNTY_MN: + 2025-01-01: 24 + CLAY_COUNTY_MN: + 2025-01-01: 12 + CLEARWATER_COUNTY_MN: + 2025-01-01: 12 + COOK_COUNTY_MN: + 2025-01-01: 12 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 5.65 + CROW_WING_COUNTY_MN: + 2025-01-01: 12 + DAKOTA_COUNTY_MN: + 2025-01-01: 24 + DODGE_COUNTY_MN: + 2025-01-01: 12 + DOUGLAS_COUNTY_MN: + 2025-01-01: 12 + FARIBAULT_COUNTY_MN: + 2025-01-01: 5.65 + FILLMORE_COUNTY_MN: + 2025-01-01: 5.65 + FREEBORN_COUNTY_MN: + 2025-01-01: 8 + GOODHUE_COUNTY_MN: + 2025-01-01: 12 + GRANT_COUNTY_MN: + 2025-01-01: 12 + HENNEPIN_COUNTY_MN: + 2025-01-01: 24 + HOUSTON_COUNTY_MN: + 2025-01-01: 6 + HUBBARD_COUNTY_MN: + 2025-01-01: 12 + ISANTI_COUNTY_MN: + 2025-01-01: 12 + ITASCA_COUNTY_MN: + 2025-01-01: 12 + JACKSON_COUNTY_MN: + 2025-01-01: 5.65 + KANABEC_COUNTY_MN: + 2025-01-01: 12 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 12 + KITTSON_COUNTY_MN: + 2025-01-01: 5.65 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 12 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 5.65 + LAKE_COUNTY_MN: + 2025-01-01: 12 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 12 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 5.65 + LINCOLN_COUNTY_MN: + 2025-01-01: 6 + LYON_COUNTY_MN: + 2025-01-01: 6 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 24 + MARSHALL_COUNTY_MN: + 2025-01-01: 12 + MARTIN_COUNTY_MN: + 2025-01-01: 24 + MCLEOD_COUNTY_MN: + 2025-01-01: 11.25 + MEEKER_COUNTY_MN: + 2025-01-01: 12 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 12 + MORRISON_COUNTY_MN: + 2025-01-01: 5.65 + MOWER_COUNTY_MN: + 2025-01-01: 12 + MURRAY_COUNTY_MN: + 2025-01-01: 6 + NICOLLET_COUNTY_MN: + 2025-01-01: 6 + NOBLES_COUNTY_MN: + 2025-01-01: 6 + NORMAN_COUNTY_MN: + 2025-01-01: 12 + OLMSTED_COUNTY_MN: + 2025-01-01: 24 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 12 + PENNINGTON_COUNTY_MN: + 2025-01-01: 6 + PINE_COUNTY_MN: + 2025-01-01: 24 + PIPESTONE_COUNTY_MN: + 2025-01-01: 5.65 + POLK_COUNTY_MN: + 2025-01-01: 6 + POPE_COUNTY_MN: + 2025-01-01: 6 + RAMSEY_COUNTY_MN: + 2025-01-01: 24 + REDWOOD_COUNTY_MN: + 2025-01-01: 5.65 + RED_LAKE_COUNTY_MN: + 2025-01-01: 5.65 + RENVILLE_COUNTY_MN: + 2025-01-01: 6 + RICE_COUNTY_MN: + 2025-01-01: 12 + ROCK_COUNTY_MN: + 2025-01-01: 5.65 + ROSEAU_COUNTY_MN: + 2025-01-01: 12 + SCOTT_COUNTY_MN: + 2025-01-01: 24 + SHERBURNE_COUNTY_MN: + 2025-01-01: 24 + SIBLEY_COUNTY_MN: + 2025-01-01: 12 + STEARNS_COUNTY_MN: + 2025-01-01: 24 + STEELE_COUNTY_MN: + 2025-01-01: 24 + STEVENS_COUNTY_MN: + 2025-01-01: 5.65 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 6 + SWIFT_COUNTY_MN: + 2025-01-01: 5.65 + TODD_COUNTY_MN: + 2025-01-01: 5.65 + TRAVERSE_COUNTY_MN: + 2025-01-01: 5.65 + WABASHA_COUNTY_MN: + 2025-01-01: 6 + WADENA_COUNTY_MN: + 2025-01-01: 5.65 + WASECA_COUNTY_MN: + 2025-01-01: 6 + WASHINGTON_COUNTY_MN: + 2025-01-01: 24 + WATONWAN_COUNTY_MN: + 2025-01-01: 5.65 + WILKIN_COUNTY_MN: + 2025-01-01: 5.65 + WINONA_COUNTY_MN: + 2025-01-01: 12 + WRIGHT_COUNTY_MN: + 2025-01-01: 24 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 11.25 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 5.5 + ANOKA_COUNTY_MN: + 2025-01-01: 21 + BECKER_COUNTY_MN: + 2025-01-01: 12 + BELTRAMI_COUNTY_MN: + 2025-01-01: 12 + BENTON_COUNTY_MN: + 2025-01-01: 21 + BIG_STONE_COUNTY_MN: + 2025-01-01: 5.5 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 12 + BROWN_COUNTY_MN: + 2025-01-01: 5.5 + CARLTON_COUNTY_MN: + 2025-01-01: 12 + CARVER_COUNTY_MN: + 2025-01-01: 21 + CASS_COUNTY_MN: + 2025-01-01: 5.5 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 5.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 21 + CLAY_COUNTY_MN: + 2025-01-01: 12 + CLEARWATER_COUNTY_MN: + 2025-01-01: 12 + COOK_COUNTY_MN: + 2025-01-01: 12 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 5.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 12 + DAKOTA_COUNTY_MN: + 2025-01-01: 21 + DODGE_COUNTY_MN: + 2025-01-01: 12 + DOUGLAS_COUNTY_MN: + 2025-01-01: 12 + FARIBAULT_COUNTY_MN: + 2025-01-01: 5.5 + FILLMORE_COUNTY_MN: + 2025-01-01: 5.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 7.13 + GOODHUE_COUNTY_MN: + 2025-01-01: 12 + GRANT_COUNTY_MN: + 2025-01-01: 12 + HENNEPIN_COUNTY_MN: + 2025-01-01: 21 + HOUSTON_COUNTY_MN: + 2025-01-01: 5.5 + HUBBARD_COUNTY_MN: + 2025-01-01: 12 + ISANTI_COUNTY_MN: + 2025-01-01: 12 + ITASCA_COUNTY_MN: + 2025-01-01: 12 + JACKSON_COUNTY_MN: + 2025-01-01: 5.5 + KANABEC_COUNTY_MN: + 2025-01-01: 12 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 12 + KITTSON_COUNTY_MN: + 2025-01-01: 5.5 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 12 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 5.5 + LAKE_COUNTY_MN: + 2025-01-01: 10 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 12 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 5.5 + LINCOLN_COUNTY_MN: + 2025-01-01: 5.5 + LYON_COUNTY_MN: + 2025-01-01: 5.5 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 21 + MARSHALL_COUNTY_MN: + 2025-01-01: 12 + MARTIN_COUNTY_MN: + 2025-01-01: 21 + MCLEOD_COUNTY_MN: + 2025-01-01: 10 + MEEKER_COUNTY_MN: + 2025-01-01: 12 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 12 + MORRISON_COUNTY_MN: + 2025-01-01: 5.5 + MOWER_COUNTY_MN: + 2025-01-01: 12 + MURRAY_COUNTY_MN: + 2025-01-01: 5.5 + NICOLLET_COUNTY_MN: + 2025-01-01: 5.5 + NOBLES_COUNTY_MN: + 2025-01-01: 5.5 + NORMAN_COUNTY_MN: + 2025-01-01: 12 + OLMSTED_COUNTY_MN: + 2025-01-01: 21 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 12 + PENNINGTON_COUNTY_MN: + 2025-01-01: 5.5 + PINE_COUNTY_MN: + 2025-01-01: 21 + PIPESTONE_COUNTY_MN: + 2025-01-01: 5.5 + POLK_COUNTY_MN: + 2025-01-01: 5.5 + POPE_COUNTY_MN: + 2025-01-01: 5.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 21 + REDWOOD_COUNTY_MN: + 2025-01-01: 5.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 5.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 5.5 + RICE_COUNTY_MN: + 2025-01-01: 12 + ROCK_COUNTY_MN: + 2025-01-01: 5.5 + ROSEAU_COUNTY_MN: + 2025-01-01: 12 + SCOTT_COUNTY_MN: + 2025-01-01: 21 + SHERBURNE_COUNTY_MN: + 2025-01-01: 21 + SIBLEY_COUNTY_MN: + 2025-01-01: 12 + STEARNS_COUNTY_MN: + 2025-01-01: 21 + STEELE_COUNTY_MN: + 2025-01-01: 21 + STEVENS_COUNTY_MN: + 2025-01-01: 5.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5.5 + SWIFT_COUNTY_MN: + 2025-01-01: 5.5 + TODD_COUNTY_MN: + 2025-01-01: 5.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 5.5 + WABASHA_COUNTY_MN: + 2025-01-01: 5.5 + WADENA_COUNTY_MN: + 2025-01-01: 5.5 + WASECA_COUNTY_MN: + 2025-01-01: 5.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 21 + WATONWAN_COUNTY_MN: + 2025-01-01: 5.5 + WILKIN_COUNTY_MN: + 2025-01-01: 5.5 + WINONA_COUNTY_MN: + 2025-01-01: 12 + WRIGHT_COUNTY_MN: + 2025-01-01: 21 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 10 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 5.5 + ANOKA_COUNTY_MN: + 2025-01-01: 21 + BECKER_COUNTY_MN: + 2025-01-01: 12 + BELTRAMI_COUNTY_MN: + 2025-01-01: 12 + BENTON_COUNTY_MN: + 2025-01-01: 16.8 + BIG_STONE_COUNTY_MN: + 2025-01-01: 5.5 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 12 + BROWN_COUNTY_MN: + 2025-01-01: 5.5 + CARLTON_COUNTY_MN: + 2025-01-01: 12 + CARVER_COUNTY_MN: + 2025-01-01: 16.8 + CASS_COUNTY_MN: + 2025-01-01: 5.5 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 5.5 + CHISAGO_COUNTY_MN: + 2025-01-01: 16.8 + CLAY_COUNTY_MN: + 2025-01-01: 12 + CLEARWATER_COUNTY_MN: + 2025-01-01: 12 + COOK_COUNTY_MN: + 2025-01-01: 12 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 5.5 + CROW_WING_COUNTY_MN: + 2025-01-01: 12 + DAKOTA_COUNTY_MN: + 2025-01-01: 21 + DODGE_COUNTY_MN: + 2025-01-01: 12 + DOUGLAS_COUNTY_MN: + 2025-01-01: 12 + FARIBAULT_COUNTY_MN: + 2025-01-01: 5.5 + FILLMORE_COUNTY_MN: + 2025-01-01: 5.5 + FREEBORN_COUNTY_MN: + 2025-01-01: 6.38 + GOODHUE_COUNTY_MN: + 2025-01-01: 12 + GRANT_COUNTY_MN: + 2025-01-01: 12 + HENNEPIN_COUNTY_MN: + 2025-01-01: 21 + HOUSTON_COUNTY_MN: + 2025-01-01: 5.5 + HUBBARD_COUNTY_MN: + 2025-01-01: 12 + ISANTI_COUNTY_MN: + 2025-01-01: 12 + ITASCA_COUNTY_MN: + 2025-01-01: 12 + JACKSON_COUNTY_MN: + 2025-01-01: 5.5 + KANABEC_COUNTY_MN: + 2025-01-01: 12 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 12 + KITTSON_COUNTY_MN: + 2025-01-01: 5.5 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 12 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 5.5 + LAKE_COUNTY_MN: + 2025-01-01: 10 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 12 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 5.5 + LINCOLN_COUNTY_MN: + 2025-01-01: 5.5 + LYON_COUNTY_MN: + 2025-01-01: 5.5 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 16.8 + MARSHALL_COUNTY_MN: + 2025-01-01: 12 + MARTIN_COUNTY_MN: + 2025-01-01: 16.8 + MCLEOD_COUNTY_MN: + 2025-01-01: 9 + MEEKER_COUNTY_MN: + 2025-01-01: 12 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 12 + MORRISON_COUNTY_MN: + 2025-01-01: 5.5 + MOWER_COUNTY_MN: + 2025-01-01: 12 + MURRAY_COUNTY_MN: + 2025-01-01: 5.5 + NICOLLET_COUNTY_MN: + 2025-01-01: 5.5 + NOBLES_COUNTY_MN: + 2025-01-01: 5.5 + NORMAN_COUNTY_MN: + 2025-01-01: 12 + OLMSTED_COUNTY_MN: + 2025-01-01: 21 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 12 + PENNINGTON_COUNTY_MN: + 2025-01-01: 5.5 + PINE_COUNTY_MN: + 2025-01-01: 16.8 + PIPESTONE_COUNTY_MN: + 2025-01-01: 5.5 + POLK_COUNTY_MN: + 2025-01-01: 5.5 + POPE_COUNTY_MN: + 2025-01-01: 5.5 + RAMSEY_COUNTY_MN: + 2025-01-01: 21 + REDWOOD_COUNTY_MN: + 2025-01-01: 5.5 + RED_LAKE_COUNTY_MN: + 2025-01-01: 5.5 + RENVILLE_COUNTY_MN: + 2025-01-01: 5.5 + RICE_COUNTY_MN: + 2025-01-01: 12 + ROCK_COUNTY_MN: + 2025-01-01: 5.5 + ROSEAU_COUNTY_MN: + 2025-01-01: 12 + SCOTT_COUNTY_MN: + 2025-01-01: 21 + SHERBURNE_COUNTY_MN: + 2025-01-01: 16.8 + SIBLEY_COUNTY_MN: + 2025-01-01: 12 + STEARNS_COUNTY_MN: + 2025-01-01: 16.8 + STEELE_COUNTY_MN: + 2025-01-01: 16.8 + STEVENS_COUNTY_MN: + 2025-01-01: 5.5 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 5.5 + SWIFT_COUNTY_MN: + 2025-01-01: 5.5 + TODD_COUNTY_MN: + 2025-01-01: 5.5 + TRAVERSE_COUNTY_MN: + 2025-01-01: 5.5 + WABASHA_COUNTY_MN: + 2025-01-01: 5.5 + WADENA_COUNTY_MN: + 2025-01-01: 5.5 + WASECA_COUNTY_MN: + 2025-01-01: 5.5 + WASHINGTON_COUNTY_MN: + 2025-01-01: 21 + WATONWAN_COUNTY_MN: + 2025-01-01: 5.5 + WILKIN_COUNTY_MN: + 2025-01-01: 5.5 + WINONA_COUNTY_MN: + 2025-01-01: 12 + WRIGHT_COUNTY_MN: + 2025-01-01: 16.8 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 9 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_hourly.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_hourly.yaml new file mode 100644 index 00000000000..ba687fd2313 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_hourly.yaml @@ -0,0 +1,711 @@ +description: Minnesota sets these maximum hourly legal nonlicensed child care reimbursement rates by age group and county under the Child Care Assistance Program. +metadata: + unit: currency-USD + period: hour + label: Minnesota CCAP maximum legal nonlicensed hourly rate + breakdown: + - mn_ccap_age_group + reference: + - title: Minnesota CCAP Standard Maximum Rates (DHS-6441F), effective Jan. 6, 2025 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5 + +INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 3.69 + ANOKA_COUNTY_MN: + 2025-01-01: 4.5 + BECKER_COUNTY_MN: + 2025-01-01: 3.69 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.15 + BENTON_COUNTY_MN: + 2025-01-01: 3.15 + BIG_STONE_COUNTY_MN: + 2025-01-01: 2.7 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.15 + BROWN_COUNTY_MN: + 2025-01-01: 3.15 + CARLTON_COUNTY_MN: + 2025-01-01: 3.69 + CARVER_COUNTY_MN: + 2025-01-01: 4.5 + CASS_COUNTY_MN: + 2025-01-01: 3.69 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.15 + CHISAGO_COUNTY_MN: + 2025-01-01: 3.69 + CLAY_COUNTY_MN: + 2025-01-01: 3.69 + CLEARWATER_COUNTY_MN: + 2025-01-01: 2.7 + COOK_COUNTY_MN: + 2025-01-01: 4.5 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.15 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.15 + DAKOTA_COUNTY_MN: + 2025-01-01: 4.5 + DODGE_COUNTY_MN: + 2025-01-01: 3.69 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.15 + FARIBAULT_COUNTY_MN: + 2025-01-01: 2.7 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.15 + FREEBORN_COUNTY_MN: + 2025-01-01: 3.69 + GOODHUE_COUNTY_MN: + 2025-01-01: 3.69 + GRANT_COUNTY_MN: + 2025-01-01: 3.15 + HENNEPIN_COUNTY_MN: + 2025-01-01: 4.5 + HOUSTON_COUNTY_MN: + 2025-01-01: 3.69 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.15 + ISANTI_COUNTY_MN: + 2025-01-01: 3.69 + ITASCA_COUNTY_MN: + 2025-01-01: 3.69 + JACKSON_COUNTY_MN: + 2025-01-01: 2.7 + KANABEC_COUNTY_MN: + 2025-01-01: 3.69 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.15 + KITTSON_COUNTY_MN: + 2025-01-01: 2.7 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.15 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 2.7 + LAKE_COUNTY_MN: + 2025-01-01: 3.69 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 3.33 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 3.69 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.15 + LYON_COUNTY_MN: + 2025-01-01: 2.7 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.15 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.15 + MARTIN_COUNTY_MN: + 2025-01-01: 2.7 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.15 + MEEKER_COUNTY_MN: + 2025-01-01: 3.15 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.15 + MORRISON_COUNTY_MN: + 2025-01-01: 3.15 + MOWER_COUNTY_MN: + 2025-01-01: 3.15 + MURRAY_COUNTY_MN: + 2025-01-01: 2.7 + NICOLLET_COUNTY_MN: + 2025-01-01: 2.7 + NOBLES_COUNTY_MN: + 2025-01-01: 3.15 + NORMAN_COUNTY_MN: + 2025-01-01: 2.7 + OLMSTED_COUNTY_MN: + 2025-01-01: 3.69 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.15 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.15 + PINE_COUNTY_MN: + 2025-01-01: 3.15 + PIPESTONE_COUNTY_MN: + 2025-01-01: 2.7 + POLK_COUNTY_MN: + 2025-01-01: 3.15 + POPE_COUNTY_MN: + 2025-01-01: 3.15 + RAMSEY_COUNTY_MN: + 2025-01-01: 4.5 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.15 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.15 + RENVILLE_COUNTY_MN: + 2025-01-01: 2.7 + RICE_COUNTY_MN: + 2025-01-01: 3.69 + ROCK_COUNTY_MN: + 2025-01-01: 2.7 + ROSEAU_COUNTY_MN: + 2025-01-01: 2.7 + SCOTT_COUNTY_MN: + 2025-01-01: 4.5 + SHERBURNE_COUNTY_MN: + 2025-01-01: 3.69 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.15 + STEARNS_COUNTY_MN: + 2025-01-01: 3.15 + STEELE_COUNTY_MN: + 2025-01-01: 3.15 + STEVENS_COUNTY_MN: + 2025-01-01: 3.15 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 3.69 + SWIFT_COUNTY_MN: + 2025-01-01: 2.7 + TODD_COUNTY_MN: + 2025-01-01: 3.15 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.15 + WABASHA_COUNTY_MN: + 2025-01-01: 3.15 + WADENA_COUNTY_MN: + 2025-01-01: 3.15 + WASECA_COUNTY_MN: + 2025-01-01: 3.15 + WASHINGTON_COUNTY_MN: + 2025-01-01: 4.5 + WATONWAN_COUNTY_MN: + 2025-01-01: 2.7 + WILKIN_COUNTY_MN: + 2025-01-01: 2.7 + WINONA_COUNTY_MN: + 2025-01-01: 3.15 + WRIGHT_COUNTY_MN: + 2025-01-01: 3.69 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 2.7 +TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 3.6 + ANOKA_COUNTY_MN: + 2025-01-01: 4.5 + BECKER_COUNTY_MN: + 2025-01-01: 3.6 + BELTRAMI_COUNTY_MN: + 2025-01-01: 3.06 + BENTON_COUNTY_MN: + 2025-01-01: 3.06 + BIG_STONE_COUNTY_MN: + 2025-01-01: 2.7 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 3.06 + BROWN_COUNTY_MN: + 2025-01-01: 3.06 + CARLTON_COUNTY_MN: + 2025-01-01: 3.6 + CARVER_COUNTY_MN: + 2025-01-01: 4.5 + CASS_COUNTY_MN: + 2025-01-01: 3.6 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 3.06 + CHISAGO_COUNTY_MN: + 2025-01-01: 3.6 + CLAY_COUNTY_MN: + 2025-01-01: 3.6 + CLEARWATER_COUNTY_MN: + 2025-01-01: 2.7 + COOK_COUNTY_MN: + 2025-01-01: 4.5 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 3.06 + CROW_WING_COUNTY_MN: + 2025-01-01: 3.06 + DAKOTA_COUNTY_MN: + 2025-01-01: 4.5 + DODGE_COUNTY_MN: + 2025-01-01: 3.6 + DOUGLAS_COUNTY_MN: + 2025-01-01: 3.06 + FARIBAULT_COUNTY_MN: + 2025-01-01: 2.7 + FILLMORE_COUNTY_MN: + 2025-01-01: 3.06 + FREEBORN_COUNTY_MN: + 2025-01-01: 3.6 + GOODHUE_COUNTY_MN: + 2025-01-01: 3.6 + GRANT_COUNTY_MN: + 2025-01-01: 3.06 + HENNEPIN_COUNTY_MN: + 2025-01-01: 4.5 + HOUSTON_COUNTY_MN: + 2025-01-01: 3.6 + HUBBARD_COUNTY_MN: + 2025-01-01: 3.06 + ISANTI_COUNTY_MN: + 2025-01-01: 3.6 + ITASCA_COUNTY_MN: + 2025-01-01: 3.6 + JACKSON_COUNTY_MN: + 2025-01-01: 2.7 + KANABEC_COUNTY_MN: + 2025-01-01: 3.6 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 3.06 + KITTSON_COUNTY_MN: + 2025-01-01: 2.7 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 3.06 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 2.7 + LAKE_COUNTY_MN: + 2025-01-01: 3.6 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 3.15 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 3.6 + LINCOLN_COUNTY_MN: + 2025-01-01: 3.06 + LYON_COUNTY_MN: + 2025-01-01: 2.7 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 3.06 + MARSHALL_COUNTY_MN: + 2025-01-01: 3.06 + MARTIN_COUNTY_MN: + 2025-01-01: 2.7 + MCLEOD_COUNTY_MN: + 2025-01-01: 3.06 + MEEKER_COUNTY_MN: + 2025-01-01: 3.06 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 3.06 + MORRISON_COUNTY_MN: + 2025-01-01: 3.06 + MOWER_COUNTY_MN: + 2025-01-01: 3.06 + MURRAY_COUNTY_MN: + 2025-01-01: 2.7 + NICOLLET_COUNTY_MN: + 2025-01-01: 2.7 + NOBLES_COUNTY_MN: + 2025-01-01: 3.06 + NORMAN_COUNTY_MN: + 2025-01-01: 2.7 + OLMSTED_COUNTY_MN: + 2025-01-01: 3.6 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 3.06 + PENNINGTON_COUNTY_MN: + 2025-01-01: 3.06 + PINE_COUNTY_MN: + 2025-01-01: 3.06 + PIPESTONE_COUNTY_MN: + 2025-01-01: 2.7 + POLK_COUNTY_MN: + 2025-01-01: 3.06 + POPE_COUNTY_MN: + 2025-01-01: 3.06 + RAMSEY_COUNTY_MN: + 2025-01-01: 4.5 + REDWOOD_COUNTY_MN: + 2025-01-01: 3.06 + RED_LAKE_COUNTY_MN: + 2025-01-01: 3.06 + RENVILLE_COUNTY_MN: + 2025-01-01: 2.7 + RICE_COUNTY_MN: + 2025-01-01: 3.6 + ROCK_COUNTY_MN: + 2025-01-01: 2.7 + ROSEAU_COUNTY_MN: + 2025-01-01: 2.7 + SCOTT_COUNTY_MN: + 2025-01-01: 4.5 + SHERBURNE_COUNTY_MN: + 2025-01-01: 3.6 + SIBLEY_COUNTY_MN: + 2025-01-01: 3.06 + STEARNS_COUNTY_MN: + 2025-01-01: 3.06 + STEELE_COUNTY_MN: + 2025-01-01: 3.06 + STEVENS_COUNTY_MN: + 2025-01-01: 3.06 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 3.6 + SWIFT_COUNTY_MN: + 2025-01-01: 2.7 + TODD_COUNTY_MN: + 2025-01-01: 3.06 + TRAVERSE_COUNTY_MN: + 2025-01-01: 3.06 + WABASHA_COUNTY_MN: + 2025-01-01: 3.06 + WADENA_COUNTY_MN: + 2025-01-01: 3.06 + WASECA_COUNTY_MN: + 2025-01-01: 3.06 + WASHINGTON_COUNTY_MN: + 2025-01-01: 4.5 + WATONWAN_COUNTY_MN: + 2025-01-01: 2.7 + WILKIN_COUNTY_MN: + 2025-01-01: 2.7 + WINONA_COUNTY_MN: + 2025-01-01: 3.06 + WRIGHT_COUNTY_MN: + 2025-01-01: 3.6 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 2.7 +PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 3.42 + ANOKA_COUNTY_MN: + 2025-01-01: 4.14 + BECKER_COUNTY_MN: + 2025-01-01: 3.42 + BELTRAMI_COUNTY_MN: + 2025-01-01: 2.88 + BENTON_COUNTY_MN: + 2025-01-01: 2.88 + BIG_STONE_COUNTY_MN: + 2025-01-01: 2.61 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 2.88 + BROWN_COUNTY_MN: + 2025-01-01: 2.88 + CARLTON_COUNTY_MN: + 2025-01-01: 3.42 + CARVER_COUNTY_MN: + 2025-01-01: 4.14 + CASS_COUNTY_MN: + 2025-01-01: 3.42 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 2.88 + CHISAGO_COUNTY_MN: + 2025-01-01: 3.42 + CLAY_COUNTY_MN: + 2025-01-01: 3.42 + CLEARWATER_COUNTY_MN: + 2025-01-01: 2.52 + COOK_COUNTY_MN: + 2025-01-01: 4.14 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 2.88 + CROW_WING_COUNTY_MN: + 2025-01-01: 2.88 + DAKOTA_COUNTY_MN: + 2025-01-01: 4.14 + DODGE_COUNTY_MN: + 2025-01-01: 3.42 + DOUGLAS_COUNTY_MN: + 2025-01-01: 2.88 + FARIBAULT_COUNTY_MN: + 2025-01-01: 2.61 + FILLMORE_COUNTY_MN: + 2025-01-01: 2.88 + FREEBORN_COUNTY_MN: + 2025-01-01: 3.42 + GOODHUE_COUNTY_MN: + 2025-01-01: 3.42 + GRANT_COUNTY_MN: + 2025-01-01: 2.88 + HENNEPIN_COUNTY_MN: + 2025-01-01: 4.14 + HOUSTON_COUNTY_MN: + 2025-01-01: 3.42 + HUBBARD_COUNTY_MN: + 2025-01-01: 2.88 + ISANTI_COUNTY_MN: + 2025-01-01: 3.42 + ITASCA_COUNTY_MN: + 2025-01-01: 3.42 + JACKSON_COUNTY_MN: + 2025-01-01: 2.52 + KANABEC_COUNTY_MN: + 2025-01-01: 3.42 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 2.88 + KITTSON_COUNTY_MN: + 2025-01-01: 2.52 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 2.88 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 2.52 + LAKE_COUNTY_MN: + 2025-01-01: 3.42 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 3.06 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 3.42 + LINCOLN_COUNTY_MN: + 2025-01-01: 2.88 + LYON_COUNTY_MN: + 2025-01-01: 2.52 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 2.88 + MARSHALL_COUNTY_MN: + 2025-01-01: 2.88 + MARTIN_COUNTY_MN: + 2025-01-01: 2.52 + MCLEOD_COUNTY_MN: + 2025-01-01: 2.88 + MEEKER_COUNTY_MN: + 2025-01-01: 2.88 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 2.88 + MORRISON_COUNTY_MN: + 2025-01-01: 2.88 + MOWER_COUNTY_MN: + 2025-01-01: 2.88 + MURRAY_COUNTY_MN: + 2025-01-01: 2.52 + NICOLLET_COUNTY_MN: + 2025-01-01: 2.61 + NOBLES_COUNTY_MN: + 2025-01-01: 2.88 + NORMAN_COUNTY_MN: + 2025-01-01: 2.52 + OLMSTED_COUNTY_MN: + 2025-01-01: 3.42 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 2.88 + PENNINGTON_COUNTY_MN: + 2025-01-01: 2.88 + PINE_COUNTY_MN: + 2025-01-01: 2.88 + PIPESTONE_COUNTY_MN: + 2025-01-01: 2.52 + POLK_COUNTY_MN: + 2025-01-01: 2.88 + POPE_COUNTY_MN: + 2025-01-01: 2.88 + RAMSEY_COUNTY_MN: + 2025-01-01: 4.14 + REDWOOD_COUNTY_MN: + 2025-01-01: 2.88 + RED_LAKE_COUNTY_MN: + 2025-01-01: 2.88 + RENVILLE_COUNTY_MN: + 2025-01-01: 2.52 + RICE_COUNTY_MN: + 2025-01-01: 3.42 + ROCK_COUNTY_MN: + 2025-01-01: 2.52 + ROSEAU_COUNTY_MN: + 2025-01-01: 2.52 + SCOTT_COUNTY_MN: + 2025-01-01: 4.14 + SHERBURNE_COUNTY_MN: + 2025-01-01: 3.42 + SIBLEY_COUNTY_MN: + 2025-01-01: 2.88 + STEARNS_COUNTY_MN: + 2025-01-01: 2.88 + STEELE_COUNTY_MN: + 2025-01-01: 2.88 + STEVENS_COUNTY_MN: + 2025-01-01: 2.88 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 3.42 + SWIFT_COUNTY_MN: + 2025-01-01: 2.52 + TODD_COUNTY_MN: + 2025-01-01: 2.88 + TRAVERSE_COUNTY_MN: + 2025-01-01: 2.88 + WABASHA_COUNTY_MN: + 2025-01-01: 2.88 + WADENA_COUNTY_MN: + 2025-01-01: 2.88 + WASECA_COUNTY_MN: + 2025-01-01: 2.88 + WASHINGTON_COUNTY_MN: + 2025-01-01: 4.14 + WATONWAN_COUNTY_MN: + 2025-01-01: 2.52 + WILKIN_COUNTY_MN: + 2025-01-01: 2.52 + WINONA_COUNTY_MN: + 2025-01-01: 2.88 + WRIGHT_COUNTY_MN: + 2025-01-01: 3.42 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 2.52 +SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 3.15 + ANOKA_COUNTY_MN: + 2025-01-01: 3.69 + BECKER_COUNTY_MN: + 2025-01-01: 3.15 + BELTRAMI_COUNTY_MN: + 2025-01-01: 2.7 + BENTON_COUNTY_MN: + 2025-01-01: 2.7 + BIG_STONE_COUNTY_MN: + 2025-01-01: 2.52 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 2.7 + BROWN_COUNTY_MN: + 2025-01-01: 2.7 + CARLTON_COUNTY_MN: + 2025-01-01: 3.15 + CARVER_COUNTY_MN: + 2025-01-01: 3.69 + CASS_COUNTY_MN: + 2025-01-01: 3.15 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 2.7 + CHISAGO_COUNTY_MN: + 2025-01-01: 3.15 + CLAY_COUNTY_MN: + 2025-01-01: 3.15 + CLEARWATER_COUNTY_MN: + 2025-01-01: 2.34 + COOK_COUNTY_MN: + 2025-01-01: 3.69 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 2.7 + CROW_WING_COUNTY_MN: + 2025-01-01: 2.7 + DAKOTA_COUNTY_MN: + 2025-01-01: 3.69 + DODGE_COUNTY_MN: + 2025-01-01: 3.15 + DOUGLAS_COUNTY_MN: + 2025-01-01: 2.7 + FARIBAULT_COUNTY_MN: + 2025-01-01: 2.52 + FILLMORE_COUNTY_MN: + 2025-01-01: 2.7 + FREEBORN_COUNTY_MN: + 2025-01-01: 3.15 + GOODHUE_COUNTY_MN: + 2025-01-01: 3.15 + GRANT_COUNTY_MN: + 2025-01-01: 2.7 + HENNEPIN_COUNTY_MN: + 2025-01-01: 3.69 + HOUSTON_COUNTY_MN: + 2025-01-01: 3.15 + HUBBARD_COUNTY_MN: + 2025-01-01: 2.7 + ISANTI_COUNTY_MN: + 2025-01-01: 3.15 + ITASCA_COUNTY_MN: + 2025-01-01: 3.15 + JACKSON_COUNTY_MN: + 2025-01-01: 2.34 + KANABEC_COUNTY_MN: + 2025-01-01: 3.15 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 2.7 + KITTSON_COUNTY_MN: + 2025-01-01: 2.34 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 2.7 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 2.34 + LAKE_COUNTY_MN: + 2025-01-01: 3.15 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 2.7 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 3.15 + LINCOLN_COUNTY_MN: + 2025-01-01: 2.7 + LYON_COUNTY_MN: + 2025-01-01: 2.34 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 2.7 + MARSHALL_COUNTY_MN: + 2025-01-01: 2.7 + MARTIN_COUNTY_MN: + 2025-01-01: 2.34 + MCLEOD_COUNTY_MN: + 2025-01-01: 2.7 + MEEKER_COUNTY_MN: + 2025-01-01: 2.7 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 2.7 + MORRISON_COUNTY_MN: + 2025-01-01: 2.7 + MOWER_COUNTY_MN: + 2025-01-01: 2.7 + MURRAY_COUNTY_MN: + 2025-01-01: 2.34 + NICOLLET_COUNTY_MN: + 2025-01-01: 2.52 + NOBLES_COUNTY_MN: + 2025-01-01: 2.7 + NORMAN_COUNTY_MN: + 2025-01-01: 2.34 + OLMSTED_COUNTY_MN: + 2025-01-01: 3.15 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 2.7 + PENNINGTON_COUNTY_MN: + 2025-01-01: 2.7 + PINE_COUNTY_MN: + 2025-01-01: 2.7 + PIPESTONE_COUNTY_MN: + 2025-01-01: 2.34 + POLK_COUNTY_MN: + 2025-01-01: 2.7 + POPE_COUNTY_MN: + 2025-01-01: 2.7 + RAMSEY_COUNTY_MN: + 2025-01-01: 3.69 + REDWOOD_COUNTY_MN: + 2025-01-01: 2.7 + RED_LAKE_COUNTY_MN: + 2025-01-01: 2.7 + RENVILLE_COUNTY_MN: + 2025-01-01: 2.34 + RICE_COUNTY_MN: + 2025-01-01: 3.15 + ROCK_COUNTY_MN: + 2025-01-01: 2.34 + ROSEAU_COUNTY_MN: + 2025-01-01: 2.34 + SCOTT_COUNTY_MN: + 2025-01-01: 3.69 + SHERBURNE_COUNTY_MN: + 2025-01-01: 3.15 + SIBLEY_COUNTY_MN: + 2025-01-01: 2.7 + STEARNS_COUNTY_MN: + 2025-01-01: 2.7 + STEELE_COUNTY_MN: + 2025-01-01: 2.7 + STEVENS_COUNTY_MN: + 2025-01-01: 2.7 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 3.15 + SWIFT_COUNTY_MN: + 2025-01-01: 2.34 + TODD_COUNTY_MN: + 2025-01-01: 2.7 + TRAVERSE_COUNTY_MN: + 2025-01-01: 2.7 + WABASHA_COUNTY_MN: + 2025-01-01: 2.7 + WADENA_COUNTY_MN: + 2025-01-01: 2.7 + WASECA_COUNTY_MN: + 2025-01-01: 2.7 + WASHINGTON_COUNTY_MN: + 2025-01-01: 3.69 + WATONWAN_COUNTY_MN: + 2025-01-01: 2.34 + WILKIN_COUNTY_MN: + 2025-01-01: 2.34 + WINONA_COUNTY_MN: + 2025-01-01: 2.7 + WRIGHT_COUNTY_MN: + 2025-01-01: 3.15 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 2.34 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/weekly.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/weekly.yaml new file mode 100644 index 00000000000..4df92d11354 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/weekly.yaml @@ -0,0 +1,1414 @@ +description: Minnesota sets these maximum weekly child care reimbursement rates by provider type, age group, and county under the Child Care Assistance Program. +metadata: + unit: currency-USD + period: week + label: Minnesota CCAP maximum weekly rate + breakdown: + - mn_ccap_provider_type + - mn_ccap_age_group + reference: + - title: Minnesota CCAP Standard Maximum Rates (DHS-6441F), effective Jan. 6, 2025 + href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5 + +FAMILY_CHILD_CARE: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 205 + ANOKA_COUNTY_MN: + 2025-01-01: 250 + BECKER_COUNTY_MN: + 2025-01-01: 205 + BELTRAMI_COUNTY_MN: + 2025-01-01: 175 + BENTON_COUNTY_MN: + 2025-01-01: 175 + BIG_STONE_COUNTY_MN: + 2025-01-01: 150 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 175 + BROWN_COUNTY_MN: + 2025-01-01: 175 + CARLTON_COUNTY_MN: + 2025-01-01: 205 + CARVER_COUNTY_MN: + 2025-01-01: 250 + CASS_COUNTY_MN: + 2025-01-01: 205 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 175 + CHISAGO_COUNTY_MN: + 2025-01-01: 205 + CLAY_COUNTY_MN: + 2025-01-01: 205 + CLEARWATER_COUNTY_MN: + 2025-01-01: 150 + COOK_COUNTY_MN: + 2025-01-01: 250 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 175 + CROW_WING_COUNTY_MN: + 2025-01-01: 175 + DAKOTA_COUNTY_MN: + 2025-01-01: 250 + DODGE_COUNTY_MN: + 2025-01-01: 205 + DOUGLAS_COUNTY_MN: + 2025-01-01: 175 + FARIBAULT_COUNTY_MN: + 2025-01-01: 150 + FILLMORE_COUNTY_MN: + 2025-01-01: 175 + FREEBORN_COUNTY_MN: + 2025-01-01: 205 + GOODHUE_COUNTY_MN: + 2025-01-01: 205 + GRANT_COUNTY_MN: + 2025-01-01: 175 + HENNEPIN_COUNTY_MN: + 2025-01-01: 250 + HOUSTON_COUNTY_MN: + 2025-01-01: 205 + HUBBARD_COUNTY_MN: + 2025-01-01: 175 + ISANTI_COUNTY_MN: + 2025-01-01: 205 + ITASCA_COUNTY_MN: + 2025-01-01: 205 + JACKSON_COUNTY_MN: + 2025-01-01: 150 + KANABEC_COUNTY_MN: + 2025-01-01: 205 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 175 + KITTSON_COUNTY_MN: + 2025-01-01: 150 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 175 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 150 + LAKE_COUNTY_MN: + 2025-01-01: 205 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 185 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 205 + LINCOLN_COUNTY_MN: + 2025-01-01: 175 + LYON_COUNTY_MN: + 2025-01-01: 150 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 175 + MARSHALL_COUNTY_MN: + 2025-01-01: 175 + MARTIN_COUNTY_MN: + 2025-01-01: 150 + MCLEOD_COUNTY_MN: + 2025-01-01: 175 + MEEKER_COUNTY_MN: + 2025-01-01: 175 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 175 + MORRISON_COUNTY_MN: + 2025-01-01: 175 + MOWER_COUNTY_MN: + 2025-01-01: 175 + MURRAY_COUNTY_MN: + 2025-01-01: 150 + NICOLLET_COUNTY_MN: + 2025-01-01: 150 + NOBLES_COUNTY_MN: + 2025-01-01: 175 + NORMAN_COUNTY_MN: + 2025-01-01: 150 + OLMSTED_COUNTY_MN: + 2025-01-01: 205 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 175 + PENNINGTON_COUNTY_MN: + 2025-01-01: 175 + PINE_COUNTY_MN: + 2025-01-01: 175 + PIPESTONE_COUNTY_MN: + 2025-01-01: 150 + POLK_COUNTY_MN: + 2025-01-01: 175 + POPE_COUNTY_MN: + 2025-01-01: 175 + RAMSEY_COUNTY_MN: + 2025-01-01: 250 + REDWOOD_COUNTY_MN: + 2025-01-01: 175 + RED_LAKE_COUNTY_MN: + 2025-01-01: 175 + RENVILLE_COUNTY_MN: + 2025-01-01: 150 + RICE_COUNTY_MN: + 2025-01-01: 205 + ROCK_COUNTY_MN: + 2025-01-01: 150 + ROSEAU_COUNTY_MN: + 2025-01-01: 150 + SCOTT_COUNTY_MN: + 2025-01-01: 250 + SHERBURNE_COUNTY_MN: + 2025-01-01: 205 + SIBLEY_COUNTY_MN: + 2025-01-01: 175 + STEARNS_COUNTY_MN: + 2025-01-01: 175 + STEELE_COUNTY_MN: + 2025-01-01: 175 + STEVENS_COUNTY_MN: + 2025-01-01: 175 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 205 + SWIFT_COUNTY_MN: + 2025-01-01: 150 + TODD_COUNTY_MN: + 2025-01-01: 175 + TRAVERSE_COUNTY_MN: + 2025-01-01: 175 + WABASHA_COUNTY_MN: + 2025-01-01: 175 + WADENA_COUNTY_MN: + 2025-01-01: 175 + WASECA_COUNTY_MN: + 2025-01-01: 175 + WASHINGTON_COUNTY_MN: + 2025-01-01: 250 + WATONWAN_COUNTY_MN: + 2025-01-01: 150 + WILKIN_COUNTY_MN: + 2025-01-01: 150 + WINONA_COUNTY_MN: + 2025-01-01: 175 + WRIGHT_COUNTY_MN: + 2025-01-01: 205 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 150 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 200 + ANOKA_COUNTY_MN: + 2025-01-01: 250 + BECKER_COUNTY_MN: + 2025-01-01: 200 + BELTRAMI_COUNTY_MN: + 2025-01-01: 170 + BENTON_COUNTY_MN: + 2025-01-01: 170 + BIG_STONE_COUNTY_MN: + 2025-01-01: 150 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 170 + BROWN_COUNTY_MN: + 2025-01-01: 170 + CARLTON_COUNTY_MN: + 2025-01-01: 200 + CARVER_COUNTY_MN: + 2025-01-01: 250 + CASS_COUNTY_MN: + 2025-01-01: 200 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 170 + CHISAGO_COUNTY_MN: + 2025-01-01: 200 + CLAY_COUNTY_MN: + 2025-01-01: 200 + CLEARWATER_COUNTY_MN: + 2025-01-01: 150 + COOK_COUNTY_MN: + 2025-01-01: 250 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 170 + CROW_WING_COUNTY_MN: + 2025-01-01: 170 + DAKOTA_COUNTY_MN: + 2025-01-01: 250 + DODGE_COUNTY_MN: + 2025-01-01: 200 + DOUGLAS_COUNTY_MN: + 2025-01-01: 170 + FARIBAULT_COUNTY_MN: + 2025-01-01: 150 + FILLMORE_COUNTY_MN: + 2025-01-01: 170 + FREEBORN_COUNTY_MN: + 2025-01-01: 200 + GOODHUE_COUNTY_MN: + 2025-01-01: 200 + GRANT_COUNTY_MN: + 2025-01-01: 170 + HENNEPIN_COUNTY_MN: + 2025-01-01: 250 + HOUSTON_COUNTY_MN: + 2025-01-01: 200 + HUBBARD_COUNTY_MN: + 2025-01-01: 170 + ISANTI_COUNTY_MN: + 2025-01-01: 200 + ITASCA_COUNTY_MN: + 2025-01-01: 200 + JACKSON_COUNTY_MN: + 2025-01-01: 150 + KANABEC_COUNTY_MN: + 2025-01-01: 200 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 170 + KITTSON_COUNTY_MN: + 2025-01-01: 150 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 170 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 150 + LAKE_COUNTY_MN: + 2025-01-01: 200 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 175 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 200 + LINCOLN_COUNTY_MN: + 2025-01-01: 170 + LYON_COUNTY_MN: + 2025-01-01: 150 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 170 + MARSHALL_COUNTY_MN: + 2025-01-01: 170 + MARTIN_COUNTY_MN: + 2025-01-01: 150 + MCLEOD_COUNTY_MN: + 2025-01-01: 170 + MEEKER_COUNTY_MN: + 2025-01-01: 170 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 170 + MORRISON_COUNTY_MN: + 2025-01-01: 170 + MOWER_COUNTY_MN: + 2025-01-01: 170 + MURRAY_COUNTY_MN: + 2025-01-01: 150 + NICOLLET_COUNTY_MN: + 2025-01-01: 150 + NOBLES_COUNTY_MN: + 2025-01-01: 170 + NORMAN_COUNTY_MN: + 2025-01-01: 150 + OLMSTED_COUNTY_MN: + 2025-01-01: 200 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 170 + PENNINGTON_COUNTY_MN: + 2025-01-01: 170 + PINE_COUNTY_MN: + 2025-01-01: 170 + PIPESTONE_COUNTY_MN: + 2025-01-01: 150 + POLK_COUNTY_MN: + 2025-01-01: 170 + POPE_COUNTY_MN: + 2025-01-01: 170 + RAMSEY_COUNTY_MN: + 2025-01-01: 250 + REDWOOD_COUNTY_MN: + 2025-01-01: 170 + RED_LAKE_COUNTY_MN: + 2025-01-01: 170 + RENVILLE_COUNTY_MN: + 2025-01-01: 150 + RICE_COUNTY_MN: + 2025-01-01: 200 + ROCK_COUNTY_MN: + 2025-01-01: 150 + ROSEAU_COUNTY_MN: + 2025-01-01: 150 + SCOTT_COUNTY_MN: + 2025-01-01: 250 + SHERBURNE_COUNTY_MN: + 2025-01-01: 200 + SIBLEY_COUNTY_MN: + 2025-01-01: 170 + STEARNS_COUNTY_MN: + 2025-01-01: 170 + STEELE_COUNTY_MN: + 2025-01-01: 170 + STEVENS_COUNTY_MN: + 2025-01-01: 170 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 200 + SWIFT_COUNTY_MN: + 2025-01-01: 150 + TODD_COUNTY_MN: + 2025-01-01: 170 + TRAVERSE_COUNTY_MN: + 2025-01-01: 170 + WABASHA_COUNTY_MN: + 2025-01-01: 170 + WADENA_COUNTY_MN: + 2025-01-01: 170 + WASECA_COUNTY_MN: + 2025-01-01: 170 + WASHINGTON_COUNTY_MN: + 2025-01-01: 250 + WATONWAN_COUNTY_MN: + 2025-01-01: 150 + WILKIN_COUNTY_MN: + 2025-01-01: 150 + WINONA_COUNTY_MN: + 2025-01-01: 170 + WRIGHT_COUNTY_MN: + 2025-01-01: 200 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 150 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 190 + ANOKA_COUNTY_MN: + 2025-01-01: 230 + BECKER_COUNTY_MN: + 2025-01-01: 190 + BELTRAMI_COUNTY_MN: + 2025-01-01: 160 + BENTON_COUNTY_MN: + 2025-01-01: 160 + BIG_STONE_COUNTY_MN: + 2025-01-01: 145 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 160 + BROWN_COUNTY_MN: + 2025-01-01: 160 + CARLTON_COUNTY_MN: + 2025-01-01: 190 + CARVER_COUNTY_MN: + 2025-01-01: 230 + CASS_COUNTY_MN: + 2025-01-01: 190 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 160 + CHISAGO_COUNTY_MN: + 2025-01-01: 190 + CLAY_COUNTY_MN: + 2025-01-01: 190 + CLEARWATER_COUNTY_MN: + 2025-01-01: 140 + COOK_COUNTY_MN: + 2025-01-01: 230 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 160 + CROW_WING_COUNTY_MN: + 2025-01-01: 160 + DAKOTA_COUNTY_MN: + 2025-01-01: 230 + DODGE_COUNTY_MN: + 2025-01-01: 190 + DOUGLAS_COUNTY_MN: + 2025-01-01: 160 + FARIBAULT_COUNTY_MN: + 2025-01-01: 145 + FILLMORE_COUNTY_MN: + 2025-01-01: 160 + FREEBORN_COUNTY_MN: + 2025-01-01: 190 + GOODHUE_COUNTY_MN: + 2025-01-01: 190 + GRANT_COUNTY_MN: + 2025-01-01: 160 + HENNEPIN_COUNTY_MN: + 2025-01-01: 230 + HOUSTON_COUNTY_MN: + 2025-01-01: 190 + HUBBARD_COUNTY_MN: + 2025-01-01: 160 + ISANTI_COUNTY_MN: + 2025-01-01: 190 + ITASCA_COUNTY_MN: + 2025-01-01: 190 + JACKSON_COUNTY_MN: + 2025-01-01: 140 + KANABEC_COUNTY_MN: + 2025-01-01: 190 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 160 + KITTSON_COUNTY_MN: + 2025-01-01: 140 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 160 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 140 + LAKE_COUNTY_MN: + 2025-01-01: 190 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 170 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 190 + LINCOLN_COUNTY_MN: + 2025-01-01: 160 + LYON_COUNTY_MN: + 2025-01-01: 140 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 160 + MARSHALL_COUNTY_MN: + 2025-01-01: 160 + MARTIN_COUNTY_MN: + 2025-01-01: 140 + MCLEOD_COUNTY_MN: + 2025-01-01: 160 + MEEKER_COUNTY_MN: + 2025-01-01: 160 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 160 + MORRISON_COUNTY_MN: + 2025-01-01: 160 + MOWER_COUNTY_MN: + 2025-01-01: 160 + MURRAY_COUNTY_MN: + 2025-01-01: 140 + NICOLLET_COUNTY_MN: + 2025-01-01: 145 + NOBLES_COUNTY_MN: + 2025-01-01: 160 + NORMAN_COUNTY_MN: + 2025-01-01: 140 + OLMSTED_COUNTY_MN: + 2025-01-01: 190 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 160 + PENNINGTON_COUNTY_MN: + 2025-01-01: 160 + PINE_COUNTY_MN: + 2025-01-01: 160 + PIPESTONE_COUNTY_MN: + 2025-01-01: 140 + POLK_COUNTY_MN: + 2025-01-01: 160 + POPE_COUNTY_MN: + 2025-01-01: 160 + RAMSEY_COUNTY_MN: + 2025-01-01: 230 + REDWOOD_COUNTY_MN: + 2025-01-01: 160 + RED_LAKE_COUNTY_MN: + 2025-01-01: 160 + RENVILLE_COUNTY_MN: + 2025-01-01: 140 + RICE_COUNTY_MN: + 2025-01-01: 190 + ROCK_COUNTY_MN: + 2025-01-01: 140 + ROSEAU_COUNTY_MN: + 2025-01-01: 140 + SCOTT_COUNTY_MN: + 2025-01-01: 230 + SHERBURNE_COUNTY_MN: + 2025-01-01: 190 + SIBLEY_COUNTY_MN: + 2025-01-01: 160 + STEARNS_COUNTY_MN: + 2025-01-01: 160 + STEELE_COUNTY_MN: + 2025-01-01: 160 + STEVENS_COUNTY_MN: + 2025-01-01: 160 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 190 + SWIFT_COUNTY_MN: + 2025-01-01: 140 + TODD_COUNTY_MN: + 2025-01-01: 160 + TRAVERSE_COUNTY_MN: + 2025-01-01: 160 + WABASHA_COUNTY_MN: + 2025-01-01: 160 + WADENA_COUNTY_MN: + 2025-01-01: 160 + WASECA_COUNTY_MN: + 2025-01-01: 160 + WASHINGTON_COUNTY_MN: + 2025-01-01: 230 + WATONWAN_COUNTY_MN: + 2025-01-01: 140 + WILKIN_COUNTY_MN: + 2025-01-01: 140 + WINONA_COUNTY_MN: + 2025-01-01: 160 + WRIGHT_COUNTY_MN: + 2025-01-01: 190 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 140 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 175 + ANOKA_COUNTY_MN: + 2025-01-01: 205 + BECKER_COUNTY_MN: + 2025-01-01: 175 + BELTRAMI_COUNTY_MN: + 2025-01-01: 150 + BENTON_COUNTY_MN: + 2025-01-01: 150 + BIG_STONE_COUNTY_MN: + 2025-01-01: 140 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 150 + BROWN_COUNTY_MN: + 2025-01-01: 150 + CARLTON_COUNTY_MN: + 2025-01-01: 175 + CARVER_COUNTY_MN: + 2025-01-01: 205 + CASS_COUNTY_MN: + 2025-01-01: 175 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 150 + CHISAGO_COUNTY_MN: + 2025-01-01: 175 + CLAY_COUNTY_MN: + 2025-01-01: 175 + CLEARWATER_COUNTY_MN: + 2025-01-01: 130 + COOK_COUNTY_MN: + 2025-01-01: 205 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 150 + CROW_WING_COUNTY_MN: + 2025-01-01: 150 + DAKOTA_COUNTY_MN: + 2025-01-01: 205 + DODGE_COUNTY_MN: + 2025-01-01: 175 + DOUGLAS_COUNTY_MN: + 2025-01-01: 150 + FARIBAULT_COUNTY_MN: + 2025-01-01: 140 + FILLMORE_COUNTY_MN: + 2025-01-01: 150 + FREEBORN_COUNTY_MN: + 2025-01-01: 175 + GOODHUE_COUNTY_MN: + 2025-01-01: 175 + GRANT_COUNTY_MN: + 2025-01-01: 150 + HENNEPIN_COUNTY_MN: + 2025-01-01: 205 + HOUSTON_COUNTY_MN: + 2025-01-01: 175 + HUBBARD_COUNTY_MN: + 2025-01-01: 150 + ISANTI_COUNTY_MN: + 2025-01-01: 175 + ITASCA_COUNTY_MN: + 2025-01-01: 175 + JACKSON_COUNTY_MN: + 2025-01-01: 130 + KANABEC_COUNTY_MN: + 2025-01-01: 175 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 150 + KITTSON_COUNTY_MN: + 2025-01-01: 130 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 150 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 130 + LAKE_COUNTY_MN: + 2025-01-01: 175 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 150 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 175 + LINCOLN_COUNTY_MN: + 2025-01-01: 150 + LYON_COUNTY_MN: + 2025-01-01: 130 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 150 + MARSHALL_COUNTY_MN: + 2025-01-01: 150 + MARTIN_COUNTY_MN: + 2025-01-01: 130 + MCLEOD_COUNTY_MN: + 2025-01-01: 150 + MEEKER_COUNTY_MN: + 2025-01-01: 150 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 150 + MORRISON_COUNTY_MN: + 2025-01-01: 150 + MOWER_COUNTY_MN: + 2025-01-01: 150 + MURRAY_COUNTY_MN: + 2025-01-01: 130 + NICOLLET_COUNTY_MN: + 2025-01-01: 140 + NOBLES_COUNTY_MN: + 2025-01-01: 150 + NORMAN_COUNTY_MN: + 2025-01-01: 130 + OLMSTED_COUNTY_MN: + 2025-01-01: 175 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 150 + PENNINGTON_COUNTY_MN: + 2025-01-01: 150 + PINE_COUNTY_MN: + 2025-01-01: 150 + PIPESTONE_COUNTY_MN: + 2025-01-01: 130 + POLK_COUNTY_MN: + 2025-01-01: 150 + POPE_COUNTY_MN: + 2025-01-01: 150 + RAMSEY_COUNTY_MN: + 2025-01-01: 205 + REDWOOD_COUNTY_MN: + 2025-01-01: 150 + RED_LAKE_COUNTY_MN: + 2025-01-01: 150 + RENVILLE_COUNTY_MN: + 2025-01-01: 130 + RICE_COUNTY_MN: + 2025-01-01: 175 + ROCK_COUNTY_MN: + 2025-01-01: 130 + ROSEAU_COUNTY_MN: + 2025-01-01: 130 + SCOTT_COUNTY_MN: + 2025-01-01: 205 + SHERBURNE_COUNTY_MN: + 2025-01-01: 175 + SIBLEY_COUNTY_MN: + 2025-01-01: 150 + STEARNS_COUNTY_MN: + 2025-01-01: 150 + STEELE_COUNTY_MN: + 2025-01-01: 150 + STEVENS_COUNTY_MN: + 2025-01-01: 150 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 175 + SWIFT_COUNTY_MN: + 2025-01-01: 130 + TODD_COUNTY_MN: + 2025-01-01: 150 + TRAVERSE_COUNTY_MN: + 2025-01-01: 150 + WABASHA_COUNTY_MN: + 2025-01-01: 150 + WADENA_COUNTY_MN: + 2025-01-01: 150 + WASECA_COUNTY_MN: + 2025-01-01: 150 + WASHINGTON_COUNTY_MN: + 2025-01-01: 205 + WATONWAN_COUNTY_MN: + 2025-01-01: 130 + WILKIN_COUNTY_MN: + 2025-01-01: 130 + WINONA_COUNTY_MN: + 2025-01-01: 150 + WRIGHT_COUNTY_MN: + 2025-01-01: 175 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 130 +CHILD_CARE_CENTER: + INFANT: + AITKIN_COUNTY_MN: + 2025-01-01: 245 + ANOKA_COUNTY_MN: + 2025-01-01: 512.4 + BECKER_COUNTY_MN: + 2025-01-01: 274 + BELTRAMI_COUNTY_MN: + 2025-01-01: 294 + BENTON_COUNTY_MN: + 2025-01-01: 418 + BIG_STONE_COUNTY_MN: + 2025-01-01: 245 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 274 + BROWN_COUNTY_MN: + 2025-01-01: 245 + CARLTON_COUNTY_MN: + 2025-01-01: 274 + CARVER_COUNTY_MN: + 2025-01-01: 427 + CASS_COUNTY_MN: + 2025-01-01: 245 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 245 + CHISAGO_COUNTY_MN: + 2025-01-01: 418 + CLAY_COUNTY_MN: + 2025-01-01: 274 + CLEARWATER_COUNTY_MN: + 2025-01-01: 274 + COOK_COUNTY_MN: + 2025-01-01: 294 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 245 + CROW_WING_COUNTY_MN: + 2025-01-01: 274 + DAKOTA_COUNTY_MN: + 2025-01-01: 512.4 + DODGE_COUNTY_MN: + 2025-01-01: 274 + DOUGLAS_COUNTY_MN: + 2025-01-01: 274 + FARIBAULT_COUNTY_MN: + 2025-01-01: 245 + FILLMORE_COUNTY_MN: + 2025-01-01: 245 + FREEBORN_COUNTY_MN: + 2025-01-01: 245 + GOODHUE_COUNTY_MN: + 2025-01-01: 294 + GRANT_COUNTY_MN: + 2025-01-01: 274 + HENNEPIN_COUNTY_MN: + 2025-01-01: 512.4 + HOUSTON_COUNTY_MN: + 2025-01-01: 245 + HUBBARD_COUNTY_MN: + 2025-01-01: 294 + ISANTI_COUNTY_MN: + 2025-01-01: 294 + ITASCA_COUNTY_MN: + 2025-01-01: 274 + JACKSON_COUNTY_MN: + 2025-01-01: 245 + KANABEC_COUNTY_MN: + 2025-01-01: 274 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 274 + KITTSON_COUNTY_MN: + 2025-01-01: 245 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 274 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 245 + LAKE_COUNTY_MN: + 2025-01-01: 294 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 294 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 245 + LINCOLN_COUNTY_MN: + 2025-01-01: 245 + LYON_COUNTY_MN: + 2025-01-01: 245 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 418 + MARSHALL_COUNTY_MN: + 2025-01-01: 274 + MARTIN_COUNTY_MN: + 2025-01-01: 418 + MCLEOD_COUNTY_MN: + 2025-01-01: 245 + MEEKER_COUNTY_MN: + 2025-01-01: 274 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 294 + MORRISON_COUNTY_MN: + 2025-01-01: 245 + MOWER_COUNTY_MN: + 2025-01-01: 274 + MURRAY_COUNTY_MN: + 2025-01-01: 245 + NICOLLET_COUNTY_MN: + 2025-01-01: 245 + NOBLES_COUNTY_MN: + 2025-01-01: 245 + NORMAN_COUNTY_MN: + 2025-01-01: 274 + OLMSTED_COUNTY_MN: + 2025-01-01: 512.4 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 274 + PENNINGTON_COUNTY_MN: + 2025-01-01: 245 + PINE_COUNTY_MN: + 2025-01-01: 418 + PIPESTONE_COUNTY_MN: + 2025-01-01: 245 + POLK_COUNTY_MN: + 2025-01-01: 245 + POPE_COUNTY_MN: + 2025-01-01: 245 + RAMSEY_COUNTY_MN: + 2025-01-01: 512.4 + REDWOOD_COUNTY_MN: + 2025-01-01: 245 + RED_LAKE_COUNTY_MN: + 2025-01-01: 245 + RENVILLE_COUNTY_MN: + 2025-01-01: 245 + RICE_COUNTY_MN: + 2025-01-01: 294 + ROCK_COUNTY_MN: + 2025-01-01: 245 + ROSEAU_COUNTY_MN: + 2025-01-01: 274 + SCOTT_COUNTY_MN: + 2025-01-01: 512.4 + SHERBURNE_COUNTY_MN: + 2025-01-01: 418 + SIBLEY_COUNTY_MN: + 2025-01-01: 274 + STEARNS_COUNTY_MN: + 2025-01-01: 427 + STEELE_COUNTY_MN: + 2025-01-01: 418 + STEVENS_COUNTY_MN: + 2025-01-01: 245 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 245 + SWIFT_COUNTY_MN: + 2025-01-01: 245 + TODD_COUNTY_MN: + 2025-01-01: 245 + TRAVERSE_COUNTY_MN: + 2025-01-01: 245 + WABASHA_COUNTY_MN: + 2025-01-01: 245 + WADENA_COUNTY_MN: + 2025-01-01: 245 + WASECA_COUNTY_MN: + 2025-01-01: 245 + WASHINGTON_COUNTY_MN: + 2025-01-01: 512.4 + WATONWAN_COUNTY_MN: + 2025-01-01: 245 + WILKIN_COUNTY_MN: + 2025-01-01: 245 + WINONA_COUNTY_MN: + 2025-01-01: 274 + WRIGHT_COUNTY_MN: + 2025-01-01: 418 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 245 + TODDLER: + AITKIN_COUNTY_MN: + 2025-01-01: 225 + ANOKA_COUNTY_MN: + 2025-01-01: 462 + BECKER_COUNTY_MN: + 2025-01-01: 250 + BELTRAMI_COUNTY_MN: + 2025-01-01: 265 + BENTON_COUNTY_MN: + 2025-01-01: 364 + BIG_STONE_COUNTY_MN: + 2025-01-01: 225 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 250 + BROWN_COUNTY_MN: + 2025-01-01: 225 + CARLTON_COUNTY_MN: + 2025-01-01: 250 + CARVER_COUNTY_MN: + 2025-01-01: 385 + CASS_COUNTY_MN: + 2025-01-01: 225 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 225 + CHISAGO_COUNTY_MN: + 2025-01-01: 364 + CLAY_COUNTY_MN: + 2025-01-01: 250 + CLEARWATER_COUNTY_MN: + 2025-01-01: 250 + COOK_COUNTY_MN: + 2025-01-01: 265 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 225 + CROW_WING_COUNTY_MN: + 2025-01-01: 250 + DAKOTA_COUNTY_MN: + 2025-01-01: 462 + DODGE_COUNTY_MN: + 2025-01-01: 250 + DOUGLAS_COUNTY_MN: + 2025-01-01: 250 + FARIBAULT_COUNTY_MN: + 2025-01-01: 225 + FILLMORE_COUNTY_MN: + 2025-01-01: 225 + FREEBORN_COUNTY_MN: + 2025-01-01: 225 + GOODHUE_COUNTY_MN: + 2025-01-01: 265 + GRANT_COUNTY_MN: + 2025-01-01: 250 + HENNEPIN_COUNTY_MN: + 2025-01-01: 462 + HOUSTON_COUNTY_MN: + 2025-01-01: 225 + HUBBARD_COUNTY_MN: + 2025-01-01: 265 + ISANTI_COUNTY_MN: + 2025-01-01: 265 + ITASCA_COUNTY_MN: + 2025-01-01: 250 + JACKSON_COUNTY_MN: + 2025-01-01: 225 + KANABEC_COUNTY_MN: + 2025-01-01: 250 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 250 + KITTSON_COUNTY_MN: + 2025-01-01: 225 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 250 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 225 + LAKE_COUNTY_MN: + 2025-01-01: 265 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 265 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 225 + LINCOLN_COUNTY_MN: + 2025-01-01: 225 + LYON_COUNTY_MN: + 2025-01-01: 225 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 364 + MARSHALL_COUNTY_MN: + 2025-01-01: 250 + MARTIN_COUNTY_MN: + 2025-01-01: 364 + MCLEOD_COUNTY_MN: + 2025-01-01: 225 + MEEKER_COUNTY_MN: + 2025-01-01: 250 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 265 + MORRISON_COUNTY_MN: + 2025-01-01: 225 + MOWER_COUNTY_MN: + 2025-01-01: 250 + MURRAY_COUNTY_MN: + 2025-01-01: 225 + NICOLLET_COUNTY_MN: + 2025-01-01: 225 + NOBLES_COUNTY_MN: + 2025-01-01: 225 + NORMAN_COUNTY_MN: + 2025-01-01: 250 + OLMSTED_COUNTY_MN: + 2025-01-01: 462 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 250 + PENNINGTON_COUNTY_MN: + 2025-01-01: 225 + PINE_COUNTY_MN: + 2025-01-01: 364 + PIPESTONE_COUNTY_MN: + 2025-01-01: 225 + POLK_COUNTY_MN: + 2025-01-01: 225 + POPE_COUNTY_MN: + 2025-01-01: 225 + RAMSEY_COUNTY_MN: + 2025-01-01: 462 + REDWOOD_COUNTY_MN: + 2025-01-01: 225 + RED_LAKE_COUNTY_MN: + 2025-01-01: 225 + RENVILLE_COUNTY_MN: + 2025-01-01: 225 + RICE_COUNTY_MN: + 2025-01-01: 265 + ROCK_COUNTY_MN: + 2025-01-01: 225 + ROSEAU_COUNTY_MN: + 2025-01-01: 250 + SCOTT_COUNTY_MN: + 2025-01-01: 462 + SHERBURNE_COUNTY_MN: + 2025-01-01: 364 + SIBLEY_COUNTY_MN: + 2025-01-01: 250 + STEARNS_COUNTY_MN: + 2025-01-01: 385 + STEELE_COUNTY_MN: + 2025-01-01: 364 + STEVENS_COUNTY_MN: + 2025-01-01: 225 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 225 + SWIFT_COUNTY_MN: + 2025-01-01: 225 + TODD_COUNTY_MN: + 2025-01-01: 225 + TRAVERSE_COUNTY_MN: + 2025-01-01: 225 + WABASHA_COUNTY_MN: + 2025-01-01: 225 + WADENA_COUNTY_MN: + 2025-01-01: 225 + WASECA_COUNTY_MN: + 2025-01-01: 225 + WASHINGTON_COUNTY_MN: + 2025-01-01: 462 + WATONWAN_COUNTY_MN: + 2025-01-01: 225 + WILKIN_COUNTY_MN: + 2025-01-01: 225 + WINONA_COUNTY_MN: + 2025-01-01: 250 + WRIGHT_COUNTY_MN: + 2025-01-01: 364 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 225 + PRESCHOOL: + AITKIN_COUNTY_MN: + 2025-01-01: 210 + ANOKA_COUNTY_MN: + 2025-01-01: 398.4 + BECKER_COUNTY_MN: + 2025-01-01: 240 + BELTRAMI_COUNTY_MN: + 2025-01-01: 250 + BENTON_COUNTY_MN: + 2025-01-01: 328 + BIG_STONE_COUNTY_MN: + 2025-01-01: 210 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 240 + BROWN_COUNTY_MN: + 2025-01-01: 210 + CARLTON_COUNTY_MN: + 2025-01-01: 240 + CARVER_COUNTY_MN: + 2025-01-01: 332 + CASS_COUNTY_MN: + 2025-01-01: 210 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 210 + CHISAGO_COUNTY_MN: + 2025-01-01: 328 + CLAY_COUNTY_MN: + 2025-01-01: 240 + CLEARWATER_COUNTY_MN: + 2025-01-01: 240 + COOK_COUNTY_MN: + 2025-01-01: 250 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 210 + CROW_WING_COUNTY_MN: + 2025-01-01: 240 + DAKOTA_COUNTY_MN: + 2025-01-01: 398.4 + DODGE_COUNTY_MN: + 2025-01-01: 240 + DOUGLAS_COUNTY_MN: + 2025-01-01: 240 + FARIBAULT_COUNTY_MN: + 2025-01-01: 210 + FILLMORE_COUNTY_MN: + 2025-01-01: 210 + FREEBORN_COUNTY_MN: + 2025-01-01: 210 + GOODHUE_COUNTY_MN: + 2025-01-01: 250 + GRANT_COUNTY_MN: + 2025-01-01: 240 + HENNEPIN_COUNTY_MN: + 2025-01-01: 398.4 + HOUSTON_COUNTY_MN: + 2025-01-01: 210 + HUBBARD_COUNTY_MN: + 2025-01-01: 250 + ISANTI_COUNTY_MN: + 2025-01-01: 250 + ITASCA_COUNTY_MN: + 2025-01-01: 240 + JACKSON_COUNTY_MN: + 2025-01-01: 210 + KANABEC_COUNTY_MN: + 2025-01-01: 240 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 240 + KITTSON_COUNTY_MN: + 2025-01-01: 210 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 240 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 210 + LAKE_COUNTY_MN: + 2025-01-01: 250 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 250 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 210 + LINCOLN_COUNTY_MN: + 2025-01-01: 210 + LYON_COUNTY_MN: + 2025-01-01: 210 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 328 + MARSHALL_COUNTY_MN: + 2025-01-01: 240 + MARTIN_COUNTY_MN: + 2025-01-01: 328 + MCLEOD_COUNTY_MN: + 2025-01-01: 210 + MEEKER_COUNTY_MN: + 2025-01-01: 240 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 250 + MORRISON_COUNTY_MN: + 2025-01-01: 210 + MOWER_COUNTY_MN: + 2025-01-01: 240 + MURRAY_COUNTY_MN: + 2025-01-01: 210 + NICOLLET_COUNTY_MN: + 2025-01-01: 210 + NOBLES_COUNTY_MN: + 2025-01-01: 210 + NORMAN_COUNTY_MN: + 2025-01-01: 240 + OLMSTED_COUNTY_MN: + 2025-01-01: 398.4 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 240 + PENNINGTON_COUNTY_MN: + 2025-01-01: 210 + PINE_COUNTY_MN: + 2025-01-01: 328 + PIPESTONE_COUNTY_MN: + 2025-01-01: 210 + POLK_COUNTY_MN: + 2025-01-01: 210 + POPE_COUNTY_MN: + 2025-01-01: 210 + RAMSEY_COUNTY_MN: + 2025-01-01: 398.4 + REDWOOD_COUNTY_MN: + 2025-01-01: 210 + RED_LAKE_COUNTY_MN: + 2025-01-01: 210 + RENVILLE_COUNTY_MN: + 2025-01-01: 210 + RICE_COUNTY_MN: + 2025-01-01: 250 + ROCK_COUNTY_MN: + 2025-01-01: 210 + ROSEAU_COUNTY_MN: + 2025-01-01: 240 + SCOTT_COUNTY_MN: + 2025-01-01: 398.4 + SHERBURNE_COUNTY_MN: + 2025-01-01: 328 + SIBLEY_COUNTY_MN: + 2025-01-01: 240 + STEARNS_COUNTY_MN: + 2025-01-01: 332 + STEELE_COUNTY_MN: + 2025-01-01: 328 + STEVENS_COUNTY_MN: + 2025-01-01: 210 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 210 + SWIFT_COUNTY_MN: + 2025-01-01: 210 + TODD_COUNTY_MN: + 2025-01-01: 210 + TRAVERSE_COUNTY_MN: + 2025-01-01: 210 + WABASHA_COUNTY_MN: + 2025-01-01: 210 + WADENA_COUNTY_MN: + 2025-01-01: 210 + WASECA_COUNTY_MN: + 2025-01-01: 210 + WASHINGTON_COUNTY_MN: + 2025-01-01: 398.4 + WATONWAN_COUNTY_MN: + 2025-01-01: 210 + WILKIN_COUNTY_MN: + 2025-01-01: 210 + WINONA_COUNTY_MN: + 2025-01-01: 240 + WRIGHT_COUNTY_MN: + 2025-01-01: 328 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 210 + SCHOOL_AGE: + AITKIN_COUNTY_MN: + 2025-01-01: 190 + ANOKA_COUNTY_MN: + 2025-01-01: 375 + BECKER_COUNTY_MN: + 2025-01-01: 200 + BELTRAMI_COUNTY_MN: + 2025-01-01: 200 + BENTON_COUNTY_MN: + 2025-01-01: 250 + BIG_STONE_COUNTY_MN: + 2025-01-01: 190 + BLUE_EARTH_COUNTY_MN: + 2025-01-01: 200 + BROWN_COUNTY_MN: + 2025-01-01: 190 + CARLTON_COUNTY_MN: + 2025-01-01: 200 + CARVER_COUNTY_MN: + 2025-01-01: 310 + CASS_COUNTY_MN: + 2025-01-01: 190 + CHIPPEWA_COUNTY_MN: + 2025-01-01: 190 + CHISAGO_COUNTY_MN: + 2025-01-01: 250 + CLAY_COUNTY_MN: + 2025-01-01: 200 + CLEARWATER_COUNTY_MN: + 2025-01-01: 200 + COOK_COUNTY_MN: + 2025-01-01: 200 + COTTONWOOD_COUNTY_MN: + 2025-01-01: 190 + CROW_WING_COUNTY_MN: + 2025-01-01: 200 + DAKOTA_COUNTY_MN: + 2025-01-01: 375 + DODGE_COUNTY_MN: + 2025-01-01: 200 + DOUGLAS_COUNTY_MN: + 2025-01-01: 200 + FARIBAULT_COUNTY_MN: + 2025-01-01: 190 + FILLMORE_COUNTY_MN: + 2025-01-01: 190 + FREEBORN_COUNTY_MN: + 2025-01-01: 190 + GOODHUE_COUNTY_MN: + 2025-01-01: 200 + GRANT_COUNTY_MN: + 2025-01-01: 200 + HENNEPIN_COUNTY_MN: + 2025-01-01: 375 + HOUSTON_COUNTY_MN: + 2025-01-01: 190 + HUBBARD_COUNTY_MN: + 2025-01-01: 200 + ISANTI_COUNTY_MN: + 2025-01-01: 200 + ITASCA_COUNTY_MN: + 2025-01-01: 200 + JACKSON_COUNTY_MN: + 2025-01-01: 190 + KANABEC_COUNTY_MN: + 2025-01-01: 200 + KANDIYOHI_COUNTY_MN: + 2025-01-01: 200 + KITTSON_COUNTY_MN: + 2025-01-01: 190 + KOOCHICHING_COUNTY_MN: + 2025-01-01: 200 + LAC_QUI_PARLE_COUNTY_MN: + 2025-01-01: 190 + LAKE_COUNTY_MN: + 2025-01-01: 190 + LAKE_OF_THE_WOODS_COUNTY_MN: + 2025-01-01: 200 + LE_SUEUR_COUNTY_MN: + 2025-01-01: 190 + LINCOLN_COUNTY_MN: + 2025-01-01: 190 + LYON_COUNTY_MN: + 2025-01-01: 190 + MAHNOMEN_COUNTY_MN: + 2025-01-01: 250 + MARSHALL_COUNTY_MN: + 2025-01-01: 200 + MARTIN_COUNTY_MN: + 2025-01-01: 250 + MCLEOD_COUNTY_MN: + 2025-01-01: 190 + MEEKER_COUNTY_MN: + 2025-01-01: 200 + MILLE_LACS_COUNTY_MN: + 2025-01-01: 200 + MORRISON_COUNTY_MN: + 2025-01-01: 190 + MOWER_COUNTY_MN: + 2025-01-01: 200 + MURRAY_COUNTY_MN: + 2025-01-01: 190 + NICOLLET_COUNTY_MN: + 2025-01-01: 190 + NOBLES_COUNTY_MN: + 2025-01-01: 190 + NORMAN_COUNTY_MN: + 2025-01-01: 200 + OLMSTED_COUNTY_MN: + 2025-01-01: 375 + OTTER_TAIL_COUNTY_MN: + 2025-01-01: 200 + PENNINGTON_COUNTY_MN: + 2025-01-01: 190 + PINE_COUNTY_MN: + 2025-01-01: 250 + PIPESTONE_COUNTY_MN: + 2025-01-01: 190 + POLK_COUNTY_MN: + 2025-01-01: 190 + POPE_COUNTY_MN: + 2025-01-01: 190 + RAMSEY_COUNTY_MN: + 2025-01-01: 375 + REDWOOD_COUNTY_MN: + 2025-01-01: 190 + RED_LAKE_COUNTY_MN: + 2025-01-01: 190 + RENVILLE_COUNTY_MN: + 2025-01-01: 190 + RICE_COUNTY_MN: + 2025-01-01: 200 + ROCK_COUNTY_MN: + 2025-01-01: 190 + ROSEAU_COUNTY_MN: + 2025-01-01: 200 + SCOTT_COUNTY_MN: + 2025-01-01: 375 + SHERBURNE_COUNTY_MN: + 2025-01-01: 250 + SIBLEY_COUNTY_MN: + 2025-01-01: 200 + STEARNS_COUNTY_MN: + 2025-01-01: 310 + STEELE_COUNTY_MN: + 2025-01-01: 250 + STEVENS_COUNTY_MN: + 2025-01-01: 190 + ST_LOUIS_COUNTY_MN: + 2025-01-01: 190 + SWIFT_COUNTY_MN: + 2025-01-01: 190 + TODD_COUNTY_MN: + 2025-01-01: 190 + TRAVERSE_COUNTY_MN: + 2025-01-01: 190 + WABASHA_COUNTY_MN: + 2025-01-01: 190 + WADENA_COUNTY_MN: + 2025-01-01: 190 + WASECA_COUNTY_MN: + 2025-01-01: 190 + WASHINGTON_COUNTY_MN: + 2025-01-01: 375 + WATONWAN_COUNTY_MN: + 2025-01-01: 190 + WILKIN_COUNTY_MN: + 2025-01-01: 190 + WINONA_COUNTY_MN: + 2025-01-01: 200 + WRIGHT_COUNTY_MN: + 2025-01-01: 250 + YELLOW_MEDICINE_COUNTY_MN: + 2025-01-01: 190 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml new file mode 100644 index 00000000000..c2fc788c26d --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml @@ -0,0 +1,136 @@ +# Tests MN CCAP parent activity eligibility (Minn. Rules 3400.0040; manual +# section 9.x). Parents in an authorized activity (work, job search, education, +# training) qualify. For initial applicants the activity requirement is treated +# as met for employable/willing parents (per the program's applicant rules), so +# a working parent is activity eligible. +- name: Case 1, working parent is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 24_000 + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: true + +# Edge cases. The formula treats a caretaker as in an authorized activity when +# working (weekly_hours_worked_before_lsr > 0), a full-time student, or +# disabled. weekly_hours_worked_before_lsr defaults to a positive value for +# adults, so inactive-caretaker cases set it to 0 explicitly. +- name: Case 2, single parent with no activity is not activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 # not working + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # No working/student/disabled caretaker -> not activity eligible. + mn_ccap_activity_eligible: false + +- name: Case 3, full-time student parent is activity eligible without working. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_full_time_student: true + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: true + +- name: Case 4, disabled parent is activity eligible without working. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_disabled: true + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: true + +- name: Case 5, two-parent household with one inactive parent is not activity eligible. + period: 2026-01 + input: + people: + person1: + age: 32 + employment_income: 24_000 # working + person2: + age: 30 + weekly_hours_worked_before_lsr: 0 # inactive caretaker + is_full_time_student: false + is_disabled: false + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # Both parents must be in an authorized activity; the inactive spouse fails. + mn_ccap_activity_eligible: false + +- name: Case 6, two-parent household with both parents working is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 32 + employment_income: 24_000 + person2: + age: 30 + employment_income: 20_000 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + mn_ccap_activity_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml new file mode 100644 index 00000000000..abe14d6abad --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml @@ -0,0 +1,91 @@ +# Tests the MN CCAP overall eligibility gate: at least one eligible child AND +# income eligible AND asset eligible AND parent activity eligible +# (Minn. Rules 3400; manual section 6.x). Asset test reuses is_ccdf_asset_eligible +# (federal limit 1,000,000, which equals MN's limit). +- name: Case 1, eligible family with a young child and low income. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 24_000 # 2,000/month + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_eligible: true + +- name: Case 2, no eligible child (only adults) is ineligible. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 24_000 + person2: + age: 28 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # No child under 13 -> ineligible regardless of income. + mn_ccap_eligible: false + +- name: Case 3, income above the entrance limit makes the family ineligible. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 70_000 # 2-person 47% limit is 46,021.76 + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # 70,000 > 46,021.76 (2-person 47% entrance) -> income ineligible. + mn_ccap_eligible: false + +- name: Case 4, assets above the CCDF limit make the family ineligible. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 24_000 + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + # Assets above the 1,000,000 CCDF limit. + spm_unit_assets: 2_000_000 + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml new file mode 100644 index 00000000000..0b3fb07f326 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml @@ -0,0 +1,178 @@ +# Tests MN CCAP eligible-child determination: a dependent child under 13 +# (or under 15 if disabled) who is a citizen or qualified noncitizen +# (Minn. Stat. 142E.01 subd. 7; reuses is_ccdf_immigration_eligible_child). +- name: Case 1, dependent citizen child under 13 is eligible. + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 6 + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Child age 6 < 13, dependent, citizen by default -> eligible. + mn_ccap_eligible_child: [false, true] + +- name: Case 2, child exactly 13 is not eligible (strict under 13). + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 13 + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_eligible_child: [false, false] + +- name: Case 3, disabled child age 14 is eligible under the extended limit. + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 14 + is_disabled: true + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 14 < 15 disabled limit -> eligible. + mn_ccap_eligible_child: [false, true] + +- name: Case 4, disabled child age 15 is not eligible (strict under 15). + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 15 + is_disabled: true + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_eligible_child: [false, false] + +- name: Case 5, undocumented child is not eligible. + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 6 + immigration_status: UNDOCUMENTED + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Fails the CCDF immigration test even though age/dependency qualify. + mn_ccap_eligible_child: [false, false] + +# Edge cases. +- name: Case 6, non-disabled child age 12 is eligible (just under the 13 limit). + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 12 + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 12 < 13 (non-disabled limit) -> eligible. + mn_ccap_eligible_child: [false, true] + +- name: Case 7, non-disabled child age 14 is not eligible (extended limit applies only if disabled). + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 14 + is_disabled: false + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 14 >= 13 and not disabled -> ineligible. The 15-year extended limit + # requires a disability. + mn_ccap_eligible_child: [false, false] + +- name: Case 8, disabled child age 14 just under the extended limit is eligible. + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 14 + is_disabled: true + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 14 < 15 (disabled limit) -> eligible. + mn_ccap_eligible_child: [false, true] + +- name: Case 9, newborn dependent citizen is eligible (lower age bound). + period: 2026-01 + input: + people: + person1: + age: 40 + person2: + age: 0 + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Age 0 < 13, dependent, citizen by default -> eligible. + mn_ccap_eligible_child: [false, true] diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.yaml new file mode 100644 index 00000000000..439d631d4b6 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.yaml @@ -0,0 +1,320 @@ +# Tests MN CCAP income eligibility against the SMI limits (manual section 6.3, +# DHS-6413N p.5). Limits reuse federal hhs_smi x {47% / 67% / 85%}. For a +# 3-person household, FFY2026 hhs_smi = 120,958.32, so: +# 47% (non-MFIP entrance) = 56,850.41 +# 67% (MFIP/DWP entrance) = 81,042.07 +# 85% (exit during period) = 102,814.57 +# A new applicant (not enrolled) and not on MFIP/DWP uses the 47% limit. +# Annual income inputs (employment_income is annual) are compared against the +# annual SMI limit; the monthly variable annualizes income before the test. +- name: Case 1, non-MFIP applicant just below the 47 percent entrance limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 56_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 56,000 < 56,850.41 -> eligible. + mn_ccap_income_eligible: true + +- name: Case 2, non-MFIP applicant above the 47 percent entrance limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 60_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 60,000 > 56,850.41 -> ineligible at the 47% entrance limit. + mn_ccap_income_eligible: false + +- name: Case 3, MFIP applicant qualifies under the higher 67 percent entrance limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 60_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: true # MFIP/DWP path -> 67% entrance limit + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 60,000 < 81,042.07 -> eligible under the MFIP/DWP 67% entrance limit. + mn_ccap_income_eligible: true + +- name: Case 4, enrolled family stays eligible up to the 85 percent exit limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 95_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: true # already enrolled -> 85% during-period exit limit + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 95,000 < 102,814.57 -> still eligible during the 12-month period. + mn_ccap_income_eligible: true + +- name: Case 5, enrolled family above the 85 percent exit limit loses eligibility. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 110_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: true + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 110,000 > 102,814.57 -> ineligible. + mn_ccap_income_eligible: false + +# Edge cases. +# The income test uses inclusive <= (income at or below the limit is eligible). +# Limits reuse the 2026 federal hhs_smi, computed live, so boundary income +# values straddle the actual computed limit, not the header's illustrative +# numbers. 2026 hhs_smi: size 2 = 103,257.04; size 3 = 127,552.81. +# size 2 47% = 48,530.81; size 3 67% = 85,460.38; size 3 85% = 108,419.89. +- name: Case 6, size-2 non-MFIP applicant one dollar below the 47 percent limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 48_530 # below 48,530.81 (size-2 47% limit) + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # 48,530 <= 48,530.81 -> eligible. + mn_ccap_income_eligible: true + +- name: Case 7, size-2 non-MFIP applicant one dollar above the 47 percent limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 48_531 # above 48,530.81 (size-2 47% limit) + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # 48,531 > 48,530.81 -> ineligible. + mn_ccap_income_eligible: false + +- name: Case 8, size-3 MFIP applicant one dollar below the 67 percent limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 85_460 # below 85,460.38 (size-3 67% limit) + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: true # MFIP/DWP -> 67% entrance limit + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 85,460 <= 85,460.38 -> eligible. + mn_ccap_income_eligible: true + +- name: Case 9, size-3 MFIP applicant one dollar above the 67 percent limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 85_461 # above 85,460.38 (size-3 67% limit) + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: true + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 85,461 > 85,460.38 -> ineligible. + mn_ccap_income_eligible: false + +- name: Case 10, size-3 enrolled family one dollar below the 85 percent exit limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 108_419 # below 108,419.89 (size-3 85% exit limit) + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: true # 85% during-period exit limit + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 108,419 <= 108,419.89 -> still eligible during the period. + mn_ccap_income_eligible: true + +- name: Case 11, size-3 enrolled family one dollar above the 85 percent exit limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 108_420 # above 108,419.89 (size-3 85% exit limit) + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: true + is_tanf_enrolled: false + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 108,420 > 108,419.89 -> ineligible. + mn_ccap_income_eligible: false + +- name: Case 12, zero income is income eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # 0 <= any positive limit -> eligible. + mn_ccap_income_eligible: true + +- name: Case 13, MFIP enrolled family uses the 85 percent exit limit, not the 67 percent entrance limit. + period: 2026-01 + input: + people: + person1: + age: 30 + employment_income: 95_000 # above 85,460.38 (67% entrance) but below 108,419.89 (85% exit) + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: true # enrollment overrides the entrance limit + is_tanf_enrolled: true + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # Enrolled families test against 85% regardless of MFIP/DWP status. + # 95,000 <= 108,419.89 -> eligible. + mn_ccap_income_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml new file mode 100644 index 00000000000..887a28fac0d --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml @@ -0,0 +1,436 @@ +# MN CCAP end-to-end integration scenarios. Benefit (per spm unit) = +# max(min(pre_subsidy_expenses, sum of per-child max rate x (1 + quality diff)) +# - family copay, 0) +# Rates: DHS-6441F (eff Jan 6 2025). Copay: DHS-6413N (eff Oct 13 2025). +# Weekly-to-monthly conversion = x 52 / 12; copay biweekly-to-monthly = x 26 / 12. +# spm_unit_pre_subsidy_childcare_expenses is annual; the monthly formula divides +# it by 12 (e.g. 14,400/year = 1,200/month). +- name: Case 1, single infant in Becker family child care with a mid-income copay. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 30_000 # 2,500/month + person2: + age: 0 + childcare_hours_per_week: 45 # > 35 -> weekly rate + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 14_400 # 1,200/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Income: 30,000/12 = 2,500/month countable. + mn_ccap_countable_income: 2_500 + # 2-person household 47% SMI = 46,021.76; 30,000 < limit -> eligible. + mn_ccap_eligible: true + # Becker family child care infant weekly 205 -> 205*52/12 = 888.33/month. + # Person-level: parent is not an eligible child (0), infant gets the rate. + mn_ccap_provider_rate: [0, 888.33] + # Copay: size-2 table, 30,000 lands in the 29,738-31,031 band -> $31 biweekly + # -> monthly 31*26/12 = 67.17. + mn_ccap_copay: 67.17 + # Subsidy = min(1,200, 888.33) - 67.17 = 821.17. + mn_ccap: 821.17 + +- name: Case 2, subsidy capped at actual expenses below the maximum rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 # size-2 copay band (>= 15,863) -> $2 biweekly + person2: + age: 0 + childcare_hours_per_week: 45 # weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 6_000 # 500/month < 888.33 max + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + mn_ccap_countable_income: 1_500 # 18,000/12 + # Copay: 18,000 in size-2 [15,863, 21,150) band -> $2 biweekly -> 4.33/month. + # Subsidy = min(500, 888.33) - 4.33 = 495.67. + mn_ccap_copay: 4.33 + mn_ccap: 495.67 + +- name: Case 3, negative income does not inflate the benefit. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + self_employment_income: -6_000_000 # large business loss + person2: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 14_400 # 1,200/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Countable income floors at 0 (not negative). + mn_ccap_countable_income: 0 + mn_ccap_copay: 0 + # Subsidy = min(1,200, 888.33) - 0 = 888.33, NOT inflated by negative income. + mn_ccap: 888.33 + +- name: Case 4, four-star quality differential raises the maximum rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 # size-2 copay band (>= 15,863) -> $2 biweekly + person2: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: STAR_4 # +20% + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 18_000 # 1,500/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Copay: 18,000 in size-2 [15,863, 21,150) band -> $2 biweekly -> 4.33/month. + mn_ccap_copay: 4.33 + # Max rate 888.33 * 1.20 = 1,066.00; expenses 1,500 -> not capped. + # Subsidy = min(1,500, 1,066.00) - 4.33 = 1,061.67. + mn_ccap: 1_061.67 + +- name: Case 5, MFIP family eligible under the higher 67 percent entrance limit. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 60_000 # 5,000/month + person2: + age: 28 + person3: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: CHILD_CARE_CENTER + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2, person3] + mn_ccap_enrolled: false + is_tanf_enrolled: true # MFIP/DWP -> 67% entrance limit + spm_unit_pre_subsidy_childcare_expenses: 24_000 # 2,000/month + households: + household: + members: [person1, person2, person3] + state_code: MN + county: BECKER_COUNTY_MN + output: + # 3-person 67% SMI = 81,042.07; 60,000 < limit -> eligible via MFIP path. + mn_ccap_eligible: true + mn_ccap_countable_income: 5_000 # 60,000/12 + # Becker center infant weekly 274 -> 274*52/12 = 1,187.33/month max rate. + # Person-level: the two parents are not eligible children (0), infant gets the rate. + mn_ccap_provider_rate: [0, 0, 1_187.33] + +- name: Case 6, two-parent two-child household sums per-child rates. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 32 + employment_income: 18_000 # $0 copay band + person2: + age: 30 + person3: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + person4: + age: 3 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2, person3, person4] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 36_000 # 3,000/month + households: + household: + members: [person1, person2, person3, person4] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Infant weekly 205 + preschool weekly 190 = 395/week -> 395*52/12 = 1,711.67. + # Copay $0 (4-person, 18,000 below first band). Expenses 3,000 -> not capped. + # Subsidy = min(3,000, 1,711.67) - 0 = 1,711.67. + mn_ccap_copay: 0 + mn_ccap: 1_711.67 + +- name: Case 7, ineligible family with no child in care. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 24_000 + person2: + age: 28 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 0 + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + mn_ccap_eligible: false + mn_ccap: 0 + +# Edge cases. +- name: Case 8, negative income with no deductions does not inflate the subsidy beyond expenses. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + self_employment_income: -6_000_000 # large business loss, no deductions + person2: + age: 0 + childcare_hours_per_week: 45 # weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 6_000 # 500/month < 888.33 max rate + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Countable income floors at 0; copay $0. Subsidy = min(500, 888.33) - 0 = + # 500, capped at actual expenses (not max(888.33 - (-N)) which would inflate). + mn_ccap_countable_income: 0 + mn_ccap_copay: 0 + mn_ccap: 500 + +- name: Case 9, copay exceeding the cost of care floors the subsidy at zero. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 62_000 # high income -> large copay + person2: + age: 0 + childcare_hours_per_week: 45 # weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: true # 85% exit limit keeps the family eligible + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 3_000 # 250/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + mn_ccap_eligible: true + # Size-2 copay at 62,000 -> $305 biweekly -> 305 * 26 / 12 = 660.83/month. + mn_ccap_copay: 660.83 + # Subsidy = max(min(250, 888.33) - 660.83, 0) = max(250 - 660.83, 0) = 0. + mn_ccap: 0 + +- name: Case 10, hourly rate unit feeds the end-to-end benefit. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 20 # <= 35 + childcare_hours_per_day: 4 # <= 5 -> hourly rate + mn_ccap_provider_type: CHILD_CARE_CENTER + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 24_000 # 2,000/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Becker center infant hourly 14 * (20 * 52 / 12) = 1,213.33/month max rate. + # Size-2 copay at 18,000 -> $2 biweekly -> 2 * 26 / 12 = 4.33/month. + mn_ccap_copay: 4.33 + # Subsidy = min(2,000, 1,213.33) - 4.33 = 1,209.00. + mn_ccap: 1_209 + +- name: Case 11, registration fee adds to the subsidy. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 45 # weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 14_400 # 1,200/month + mn_ccap_registration_fee: 50 # optional input paid to the provider + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Max rate 888.33; copay 4.33. Care subsidy = min(1,200, 888.33) - 4.33 = 884.00. + # Plus the 50 registration fee -> 934.00. + mn_ccap_copay: 4.33 + mn_ccap: 934 + +- name: Case 12, accredited or three-star differential capped at actual expenses. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 45 # weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: ACCREDITED_OR_3STAR # +15% + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 12_000 # 1,000/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Max rate 888.33 * 1.15 = 1,021.58; expenses 1,000/month cap the subsidy. + # Copay 4.33. Subsidy = min(1,000, 1,021.58) - 4.33 = 995.67. + mn_ccap_copay: 4.33 + mn_ccap: 995.67 + +- name: Case 13, large five-person family sums per-child rates across age groups. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + employment_income: 30_000 + person2: + age: 33 + person3: + age: 0 # infant + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + person4: + age: 3 # preschool + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + person5: + age: 6 # school age + is_in_k12_school: true + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2, person3, person4, person5] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 60_000 # 5,000/month, not capping + households: + household: + members: [person1, person2, person3, person4, person5] + state_code: MN + county: BECKER_COUNTY_MN + output: + mn_ccap_eligible: true + # Becker family weekly: infant 205, preschool 190, school-age 175. + # Monthly max = (205 + 190 + 175) * 52 / 12 = 570 * 52 / 12 = 2,470.00. + # Size-5 copay at 30,000 -> $2 biweekly -> 4.33/month. + # Subsidy = min(5,000, 2,470.00) - 4.33 = 2,465.67. + mn_ccap_copay: 4.33 + mn_ccap: 2_465.67 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_age_group.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_age_group.yaml new file mode 100644 index 00000000000..606e56089fa --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_age_group.yaml @@ -0,0 +1,170 @@ +# Tests the MN CCAP age-group classification. Family child care and child +# care centers use DIFFERENT month boundaries (family_months.yaml vs +# center_months.yaml). Enum index: 0 INFANT, 1 TODDLER, 2 PRESCHOOL, 3 SCHOOL_AGE. +- name: Case 1, family child care infant (under 12 months). + period: 2026-01 + input: + people: + person1: + age: 0 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: INFANT + +- name: Case 2, family child care toddler (exactly 12 months = age 1). + period: 2026-01 + input: + people: + person1: + age: 1 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: TODDLER + +- name: Case 3, family child care preschool (age 2, 24 months). + period: 2026-01 + input: + people: + person1: + age: 2 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: PRESCHOOL + +- name: Case 4, family child care school age (age 5, 60 months = kindergarten). + period: 2026-01 + input: + people: + person1: + age: 5 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: SCHOOL_AGE + +- name: Case 5, child care center infant uses wider band (age 1 = 12 months, still infant under 16). + period: 2026-01 + input: + people: + person1: + age: 1 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + # Center infant band is up to 16 months, so a 12-month-old is still INFANT + # in a center (would be TODDLER in family child care). Confirms the two + # month-boundary tables diverge. + mn_ccap_age_group: INFANT + +- name: Case 6, child care center preschool (age 3, 36 months, above 33-month center boundary). + period: 2026-01 + input: + people: + person1: + age: 3 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: PRESCHOOL + +# Edge cases at the month-boundary cutoffs, which differ between family child +# care (12/24/60 months) and centers (16/33/60 months). Ages are floats; age x +# 12 gives months, so values are chosen to land cleanly on the intended side of +# each integer-month boundary. +- name: Case 7, family child care toddler just below the 24-month preschool boundary. + period: 2026-01 + input: + people: + person1: + age: 1.99 # 23.88 months, just under the family 24-month boundary + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + # Family preschool starts at 24 months; 23.88 months is still TODDLER. + mn_ccap_age_group: TODDLER + +- name: Case 8, child care center toddler just below the 33-month preschool boundary. + period: 2026-01 + input: + people: + person1: + age: 2.74 # 32.88 months, just under the center 33-month boundary + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + # Center preschool starts at 33 months; 32.88 months is still TODDLER. The + # same child would be PRESCHOOL in family child care (24-month boundary). + mn_ccap_age_group: TODDLER + +- name: Case 9, child care center preschool just above the 33-month boundary. + period: 2026-01 + input: + people: + person1: + age: 2.76 # 33.12 months, just over the center 33-month boundary + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_age_group: PRESCHOOL + +- name: Case 10, child care center toddler at 18 months (above the 16-month center boundary). + period: 2026-01 + input: + people: + person1: + age: 1.5 # 18 months, above the center 16-month toddler boundary + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + # Center toddler starts at 16 months; an 18-month-old is TODDLER in a center + # (and also TODDLER in family child care, whose boundary is 12 months). + mn_ccap_age_group: TODDLER + +- name: Case 11, preschool just below the shared 60-month school-age boundary. + period: 2026-01 + input: + people: + person1: + age: 4.99 # 59.88 months, just under the 60-month school-age boundary + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + # School age starts at 60 months for both provider types; 59.88 months is + # still PRESCHOOL. + mn_ccap_age_group: PRESCHOOL diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml new file mode 100644 index 00000000000..29e50513a37 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml @@ -0,0 +1,207 @@ +# Tests the MN CCAP family copayment (DHS-6413N, eff Oct 13 2025). Copay is +# looked up by household size (2-13) and gross annual income after deductions, +# returning a biweekly dollar amount converted to monthly (x 26 / 12). The $0 +# first band embodies the below-75%-FPG no-copay rule (manual section 6.21). +# Income inputs are annual; the monthly variable annualizes income before the +# annual-threshold lookup. +- name: Case 1, three-person family below the first income band pays no copay. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 # below the 19,988 first nonzero band + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 18,000 < 19,988 -> $0 biweekly -> $0 monthly. + mn_ccap_copay: 0 + +- name: Case 2, three-person family in a mid income band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 30_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 30,000 lands in the 26,650-33,542 band -> $34 biweekly. + # Monthly = 34 * 26 / 12 = 73.67. + mn_ccap_copay: 73.67 + +- name: Case 3, two-person family in its first nonzero band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Size-2 table: 15,863-21,149 band -> $2 biweekly. + # Monthly = 2 * 26 / 12 = 4.33. + mn_ccap_copay: 4.33 + +- name: Case 4, three-person family at the top income band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 80_000 + person2: + age: 28 + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # 80,000 lands in the top 78,272+ band -> $436 biweekly. + # Monthly = 436 * 26 / 12 = 944.67. + mn_ccap_copay: 944.67 + +# Edge cases. +- name: Case 5, two-person family one dollar below the first nonzero copay band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 15_862 # just below the 15,863 first nonzero threshold + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 15,862 < 15,863 -> still in the $0 band (below-75%-FPG no-copay rule). + mn_ccap_copay: 0 + +- name: Case 6, two-person family exactly at the first nonzero copay band. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 15_863 # exactly at the first nonzero threshold + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # 15,863 -> $2 biweekly (first nonzero band). Monthly = 2 * 26 / 12 = 4.33. + mn_ccap_copay: 4.33 + +- name: Case 7, household larger than 13 clamps to the size-13 copay table. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + employment_income: 100_000 + person2: + age: 38 + person3: + age: 12 + person4: + age: 11 + person5: + age: 10 + person6: + age: 9 + person7: + age: 8 + person8: + age: 7 + person9: + age: 6 + person10: + age: 5 + person11: + age: 4 + person12: + age: 3 + person13: + age: 2 + person14: + age: 1 + spm_units: + spm_unit: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, person11, person12, person13, person14] + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10, person11, person12, person13, person14] + state_code: MN + output: + # 14-person household clamps to the size-13 column. 100,000 lands in the + # 98,922 band -> $186 biweekly. Monthly = 186 * 26 / 12 = 403.00. + mn_ccap_copay: 403 + +- name: Case 8, one-person household uses the size-2 copay table. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 30_000 + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MN + output: + # size <= 2 -> size-2 table. 30,000 lands in the 29,738 band -> $31 biweekly. + # Monthly = 31 * 26 / 12 = 67.17. + mn_ccap_copay: 67.17 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml new file mode 100644 index 00000000000..f03765b98ab --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml @@ -0,0 +1,116 @@ +# Tests MN CCAP countable income = gross income (earned + unearned sources) +# minus allowable deductions, floored at zero (Minn. Rules 3400.0170 subp. 4/6a; +# manual sections 6.6 and 6.18). The variable is monthly; annual income inputs +# divide by 12. +- name: Case 1, earnings only. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + employment_income: 36_000 # /year -> 3,000/month + households: + household: + members: [person1] + state_code: MN + output: + # 36,000 / 12 = 3,000 per month. + mn_ccap_countable_income: 3_000 + +- name: Case 2, earned plus unearned income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + employment_income: 24_000 # 2,000/month + social_security_retirement: 6_000 # 500/month (RSDI component) + interest_income: 1_200 # 100/month + households: + household: + members: [person1] + state_code: MN + output: + # (24,000 + 6,000 + 1,200) / 12 = 2,600 per month. + mn_ccap_countable_income: 2_600 + +- name: Case 3, income reduced by allowable deductions. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + employment_income: 36_000 # 3,000/month + child_support_expense: 6_000 # 500/month paid out of household + alimony_expense: 3_600 # 300/month spousal support paid out + households: + household: + members: [person1] + state_code: MN + output: + # (36,000 - 6,000 - 3,600) / 12 = 26,400 / 12 = 2,200 per month. + mn_ccap_countable_income: 2_200 + +- name: Case 4, deductions exceeding gross income floor at zero. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + employment_income: 12_000 # 1,000/month + child_support_expense: 24_000 # 2,000/month paid out + households: + household: + members: [person1] + state_code: MN + output: + # 12,000 - 24,000 = -12,000 -> floored to 0. + mn_ccap_countable_income: 0 + +# Edge cases. +- name: Case 5, zero income yields zero countable income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_countable_income: 0 + +- name: Case 6, negative self-employment income with no deductions floors at zero. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + self_employment_income: -60_000 # business loss, no deductions + households: + household: + members: [person1] + state_code: MN + output: + # max(-60,000 - 0, 0) = 0; a loss must not produce negative countable income. + mn_ccap_countable_income: 0 + +- name: Case 7, multiple unearned income sources are all counted. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + social_security_retirement: 12_000 # 1,000/month (RSDI component) + unemployment_compensation: 6_000 # 500/month + child_support_received: 3_600 # 300/month + general_assistance: 2_400 # 200/month + households: + household: + members: [person1] + state_code: MN + output: + # (12,000 + 6,000 + 3,600 + 2,400) / 12 = 24,000 / 12 = 2,000 per month. + mn_ccap_countable_income: 2_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml new file mode 100644 index 00000000000..78517802522 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml @@ -0,0 +1,141 @@ +# Tests the MN CCAP maximum provider rate lookup (DHS-6441F, eff Jan 6 2025). +# The rate is keyed by provider type x age group x county x selected rate unit. +# Becker County family child care, infant: weekly 205 / full-day 45 / hourly 4.25; +# LNL hourly 3.69. Child care center infant: weekly 274. +# These per-unit max rates are asserted directly (before monthly conversion). +- name: Case 1, Becker family child care infant weekly rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 45 # > 35 -> weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Weekly 205 -> monthly 205 * 52 / 12 = 888.33 + mn_ccap_provider_rate: 888.33 + +- name: Case 2, Becker child care center infant weekly rate (higher than family). + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 45 # > 35 -> weekly + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Weekly 274 -> monthly 274 * 52 / 12 = 1187.33 + mn_ccap_provider_rate: 1187.33 + +- name: Case 3, Hennepin family child care infant weekly rate (metro rate). + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 50 # > 35 -> weekly + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + county: HENNEPIN_COUNTY_MN + output: + # Hennepin family weekly infant 250 -> 250 * 52 / 12 = 1083.33 + mn_ccap_provider_rate: 1083.33 + +- name: Case 4, license-exempt program paid at child care center rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 6 + is_in_k12_school: true + childcare_hours_per_week: 40 # > 35 -> weekly + mn_ccap_provider_type: LICENSE_EXEMPT + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # License-exempt uses the CHILD_CARE_CENTER school-age weekly rate (200) + # -> 200 * 52 / 12 = 866.67. + mn_ccap_provider_rate: 866.67 + +# Edge cases covering the full-day, hourly, and LNL-hourly rate units (the +# cases above all exercise the weekly unit). Becker County center rates: +# infant full-day 67.50, infant hourly 14. Becker LNL school-age hourly 3.69. +# Daily rate -> monthly via attending days; hourly -> monthly via hours/week x +# (52 / 12). +- name: Case 5, Becker center infant full-day rate converts by attending days. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 30 # <= 35 + childcare_hours_per_day: 6 # > 5 -> full-day rate + childcare_attending_days_per_month: 16 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Full-day 67.50 * 16 attending days = 1,080.00/month. + mn_ccap_provider_rate: 1_080 + +- name: Case 6, Becker center infant hourly rate converts by monthly hours. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 20 # <= 35 + childcare_hours_per_day: 4 # <= 5 -> hourly rate + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Hourly 14 * (20 * 52 / 12) = 14 * 86.6667 = 1,213.33/month. + mn_ccap_provider_rate: 1_213.33 + +- name: Case 7, Becker legal non-licensed school-age hourly rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 6 + childcare_hours_per_week: 40 # LNL is hourly-only regardless of hours + mn_ccap_provider_type: LEGAL_NON_LICENSED + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # LNL uses its own hourly table; school-age 3.69 * (40 * 52 / 12) = + # 3.69 * 173.3333 = 546.00/month. + mn_ccap_provider_rate: 546 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml new file mode 100644 index 00000000000..6ea48f356ec --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml @@ -0,0 +1,77 @@ +# Tests the MN CCAP quality differential, applied inside mn_ccap_max_rate as +# standard_rate x (1 + differential) (Minn. Stat. 142E.17 subd. 4-5; REQ-024). +# 4-star Parent Aware = +20%, accredited or 3-star Parent Aware = +15%, none = 0%. +# Each case uses a Becker family-child-care infant on a weekly rate: standard +# monthly max rate = 205 * 52 / 12 = 888.33. The differential is capped at the +# provider's charge downstream in mn_ccap (see integration Case 12), not here. +- name: Case 1, four-star provider gets a 20 percent differential above the standard rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + person2: + age: 0 + childcare_hours_per_week: 45 # > 35 -> weekly rate + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: STAR_4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Standard rate 888.33 * 1.20 = 1,066.00 (parent is not an eligible child). + mn_ccap_max_rate: [0, 1_066] + +- name: Case 2, accredited or three-star provider gets a 15 percent differential. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + person2: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: ACCREDITED_OR_3STAR + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Standard rate 888.33 * 1.15 = 1,021.58. + mn_ccap_max_rate: [0, 1_021.58] + +- name: Case 3, no quality rating gets no differential. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + person2: + age: 0 + childcare_hours_per_week: 45 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Standard rate 888.33 * 1.00 = 888.33. + mn_ccap_max_rate: [0, 888.33] diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.yaml new file mode 100644 index 00000000000..1506ab774c0 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.yaml @@ -0,0 +1,128 @@ +# Tests the MN CCAP rate-unit selection (manual section 9.9, verified p.312). +# Default rule for a single licensed/exempt provider: +# WEEKLY if authorized > 35 hours/week +# FULL_DAY if <= 35 hrs/week AND > 5 hrs/day +# HOURLY if <= 35 hrs/week AND <= 5 hrs/day +# Legal non-licensed (LNL) providers are HOURLY only. +- name: Case 1, more than 35 hours per week selects weekly rate. + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 40 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: WEEKLY + +- name: Case 2, exactly 35 hours per week is not weekly (strict > 35), long days select full day. + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 35 + # 35 hours per week with > 5 hours per day -> full-day rate. + childcare_hours_per_day: 8 + mn_ccap_provider_type: FAMILY_CHILD_CARE + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: FULL_DAY + +- name: Case 3, low weekly hours with short days selects hourly rate. + period: 2026-01 + input: + people: + person1: + # 10 hrs/week over many short days (<= 5 hrs/day) -> hourly rate. + childcare_hours_per_week: 10 + childcare_attending_days_per_month: 20 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: HOURLY + +- name: Case 4, legal non-licensed provider forced to hourly even with high weekly hours. + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 45 + mn_ccap_provider_type: LEGAL_NON_LICENSED + households: + household: + members: [person1] + state_code: MN + output: + # LNL is hourly-only regardless of the >35 hr/week weekly trigger. + mn_ccap_rate_unit: LNL_HOURLY + +# Edge cases. Weekly threshold is strict > 35 hrs/week; full-day vs hourly +# threshold is strict > 5 hrs/day. +- name: Case 5, exactly 36 hours per week selects weekly (just over the 35 threshold). + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 36 # > 35 -> weekly + childcare_hours_per_day: 8 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: WEEKLY + +- name: Case 6, exactly 35 hours per week with long days selects full day (not weekly). + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 35 # not > 35 -> not weekly + childcare_hours_per_day: 8 # > 5 -> full day + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: FULL_DAY + +- name: Case 7, exactly 5 hours per day with low weekly hours selects hourly (not full day). + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 30 # <= 35 + childcare_hours_per_day: 5 # not > 5 -> hourly, not full day + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: HOURLY + +- name: Case 8, exactly 6 hours per day with low weekly hours selects full day (just over the 5 threshold). + period: 2026-01 + input: + people: + person1: + childcare_hours_per_week: 30 # <= 35 + childcare_hours_per_day: 6 # > 5 -> full day + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + output: + mn_ccap_rate_unit: FULL_DAY diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.yaml new file mode 100644 index 00000000000..22ae9efe5d2 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.yaml @@ -0,0 +1,55 @@ +# Tests the MN CCAP annual aggregator that feeds the federal child_care_subsidies +# variable. mn_child_care_subsidies (YEAR) adds the monthly mn_ccap benefit, so a +# whole-year period sums 12 months. +- name: Case 1, single infant in Becker family child care, full year. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 # size-2 copay band (>= 15,863) -> $2 biweekly + person2: + age: 0 + childcare_hours_per_week: 45 # weekly rate + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 18_000 # 1,500/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Copay: 18,000 in the size-2 [15,863, 21,150) band -> $2 biweekly -> 4.33/month. + # Monthly subsidy = min(1,500, 888.33) - 4.33 = 884.00; annual = 884.00 * 12 = 10,608. + mn_child_care_subsidies: 10_608 + +- name: Case 2, no eligible child yields zero annual subsidy. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 28 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 0 + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + mn_child_care_subsidies: 0 diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py new file mode 100644 index 00000000000..71a2cb10bd0 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py @@ -0,0 +1,53 @@ +from policyengine_us.model_api import * + + +class mn_ccap_copay(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP family copayment" + definition_period = MONTH + defined_for = StateCode.MN + reference = ( + # DHS-6413N copayment schedules; Minn. Stat. 142E.15. + "https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=6", + ) + + def formula(spm_unit, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap.copay.biweekly + annual_income = spm_unit("mn_ccap_countable_income", period.this_year) + # Copayment schedules are published by household size from 2 through 13. + # Households with 13 or more people use the 13-person column. + size = spm_unit("spm_unit_size", period.this_year) + biweekly_copay = select( + [ + size <= 2, + size == 3, + size == 4, + size == 5, + size == 6, + size == 7, + size == 8, + size == 9, + size == 10, + size == 11, + size == 12, + ], + [ + p.size_2.calc(annual_income), + p.size_3.calc(annual_income), + p.size_4.calc(annual_income), + p.size_5.calc(annual_income), + p.size_6.calc(annual_income), + p.size_7.calc(annual_income), + p.size_8.calc(annual_income), + p.size_9.calc(annual_income), + p.size_10.calc(annual_income), + p.size_11.calc(annual_income), + p.size_12.calc(annual_income), + ], + default=p.size_13.calc(annual_income), + ) + # Convert the biweekly copayment to a monthly amount (26 pay periods + # per year over 12 months). + return biweekly_copay * 26 / MONTHS_IN_YEAR diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py new file mode 100644 index 00000000000..3bfee0c905d --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py @@ -0,0 +1,37 @@ +from policyengine_us.model_api import * + + +class mn_ccap_activity_eligible(Variable): + value_type = bool + entity = SPMUnit + label = "Eligible for Minnesota CCAP based on authorized activity" + definition_period = MONTH + defined_for = StateCode.MN + reference = ( + # Minn. Rules 3400.0040 — authorized activities (employment, job + # search, education, training). + "https://www.revisor.mn.gov/rules/3400.0040/", + ) + + def formula(spm_unit, period, parameters): + # Each parent (sole parent or both parents in a two-parent household) + # must be in an authorized activity: employment, job search, education, + # or training. Minnesota imposes no minimum-hours bar at application, so + # we treat an applicant caretaker as meeting the activity requirement + # when employed, a student, or disabled (a disability can interrupt an + # authorized activity). We don't track job-search status at the moment, + # so caretakers in job search are not separately captured here. + person = spm_unit.members + is_head_or_spouse = person("is_tax_unit_head_or_spouse", period.this_year) + # Use the pre-labor-supply-response hours to avoid a circular + # dependency in reform and microsimulation runs. + hours_worked = person("weekly_hours_worked_before_lsr", period.this_year) + is_working = hours_worked > 0 + is_student = person("is_full_time_student", period.this_year) + is_disabled = person("is_disabled", period.this_year) + in_authorized_activity = is_working | is_student | is_disabled + has_caretaker = spm_unit.sum(is_head_or_spouse) > 0 + no_inactive_caretaker = ( + spm_unit.sum(is_head_or_spouse & ~in_authorized_activity) == 0 + ) + return has_caretaker & no_inactive_caretaker diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.py new file mode 100644 index 00000000000..eebff64fb26 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.py @@ -0,0 +1,20 @@ +from policyengine_us.model_api import * + + +class mn_ccap_eligible(Variable): + value_type = bool + entity = SPMUnit + label = "Eligible for Minnesota CCAP" + definition_period = MONTH + defined_for = StateCode.MN + reference = ( + # Minn. Rules 3400.0040, 3400.0170; Minn. Stat. 142E. + "https://www.revisor.mn.gov/rules/3400/", + ) + + def formula(spm_unit, period, parameters): + has_eligible_child = add(spm_unit, period, ["mn_ccap_eligible_child"]) > 0 + income_eligible = spm_unit("mn_ccap_income_eligible", period) + asset_eligible = spm_unit("is_ccdf_asset_eligible", period.this_year) + activity_eligible = spm_unit("mn_ccap_activity_eligible", period) + return has_eligible_child & income_eligible & asset_eligible & activity_eligible diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py new file mode 100644 index 00000000000..9e440ca9b42 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py @@ -0,0 +1,25 @@ +from policyengine_us.model_api import * + + +class mn_ccap_eligible_child(Variable): + value_type = bool + entity = Person + label = "Eligible child for Minnesota CCAP" + definition_period = MONTH + defined_for = StateCode.MN + reference = ( + # Minn. Stat. 142E.01 subd. 7 — eligible child (formerly 119B.011). + "https://www.revisor.mn.gov/statutes/cite/142E.01", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap.age_threshold + age = person("age", period.this_year) + is_disabled = person("is_disabled", period.this_year) + # Under 13, or under 15 if the child has a disability. + age_eligible = where(is_disabled, age < p.disabled_child, age < p.child) + is_dependent = person("is_tax_unit_dependent", period.this_year) + immigration_eligible = person( + "is_ccdf_immigration_eligible_child", period.this_year + ) + return age_eligible & is_dependent & immigration_eligible diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py new file mode 100644 index 00000000000..cc93ea5420a --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py @@ -0,0 +1,33 @@ +from policyengine_us.model_api import * + + +class mn_ccap_income_eligible(Variable): + value_type = bool + entity = SPMUnit + label = "Eligible for Minnesota CCAP based on income" + definition_period = MONTH + defined_for = StateCode.MN + reference = ( + # Minn. Stat. 142E.06 subd. 1 — income eligibility (formerly 119B.09); + # DHS-6413N entrance and exit limits. + "https://www.revisor.mn.gov/statutes/cite/142E.06", + ) + + def formula(spm_unit, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap.income.smi_rate + countable_income = spm_unit("mn_ccap_countable_income", period.this_year) + smi = spm_unit("hhs_smi", period.this_year) + enrolled = spm_unit("mn_ccap_enrolled", period) + # Minnesota Family Investment Program / Diversionary Work Program + # families enter at 67% of SMI; all other families enter at 47%. + on_mfip_or_dwp = spm_unit("is_tanf_enrolled", period) + entrance_rate = where( + on_mfip_or_dwp, + p.entrance_mfip, + p.entrance_other, + ) + # Applicants are tested against the entrance limit; families already + # enrolled remain eligible until income exceeds 85% of SMI during the + # 12-month eligibility period. + smi_rate = where(enrolled, p.exit_during_period, entrance_rate) + return countable_income <= smi * smi_rate diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap.py new file mode 100644 index 00000000000..b050ee0f002 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap.py @@ -0,0 +1,32 @@ +from policyengine_us.model_api import * + + +class mn_ccap(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP benefit amount" + definition_period = MONTH + defined_for = "mn_ccap_eligible" + reference = ( + # Minnesota CCAP Policy Manual section 9.9; Minn. Stat. 142E.17 subd. 1. + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) + + def formula(spm_unit, period, parameters): + # The subsidy pays the lower of the family's actual child care expenses + # or the sum of each eligible child's maximum rate (including any + # quality differential), less the family copayment, floored at zero. + # Capping at actual expenses also caps the quality differential at the + # provider's charge. + total_max_rate = add(spm_unit, period, ["mn_ccap_max_rate"]) + pre_subsidy_childcare_expenses = spm_unit( + "spm_unit_pre_subsidy_childcare_expenses", period + ) + capped_expenses = min_(pre_subsidy_childcare_expenses, total_max_rate) + copay = spm_unit("mn_ccap_copay", period) + subsidy = max_(capped_expenses - copay, 0) + # The program also pays the provider's registration fee on the family's + # behalf, where charged (optional input, default $0). + registration_fee = spm_unit("mn_ccap_registration_fee", period) + return subsidy + registration_fee diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_age_group.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_age_group.py new file mode 100644 index 00000000000..914c5dfb596 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_age_group.py @@ -0,0 +1,44 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.gov.states.mn.dcyf.ccap.mn_ccap_provider_type import ( + MNCCAPProviderType, +) + + +class MNCCAPAgeGroup(Enum): + INFANT = "Infant" + TODDLER = "Toddler" + PRESCHOOL = "Preschool" + SCHOOL_AGE = "School age" + + +class mn_ccap_age_group(Variable): + value_type = Enum + entity = Person + possible_values = MNCCAPAgeGroup + default_value = MNCCAPAgeGroup.SCHOOL_AGE + definition_period = MONTH + label = "Minnesota CCAP child age group" + defined_for = StateCode.MN + reference = ( + # Minn. Rules 9503.0005 — infant/toddler/preschool/school age + # definitions, which differ between family child care and centers. + "https://www.revisor.mn.gov/rules/9503.0005/", + ) + + def formula(person, period, parameters): + # age is a float; the bracket parameters key on age in months. + age_in_months = person("age", period.this_year) * MONTHS_IN_YEAR + provider_type = person("mn_ccap_provider_type", period) + p = parameters(period).gov.states.mn.dcyf.ccap.age_group + # Family child care and legal non-licensed providers use the family + # child care age boundaries; centers and license-exempt programs (paid + # at the center rate) use the center age boundaries. The bracket + # parameters return the integer index into MNCCAPAgeGroup. + is_family_boundary = (provider_type == MNCCAPProviderType.FAMILY_CHILD_CARE) | ( + provider_type == MNCCAPProviderType.LEGAL_NON_LICENSED + ) + return where( + is_family_boundary, + p.family_months.calc(age_in_months), + p.center_months.calc(age_in_months), + ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.py new file mode 100644 index 00000000000..4da025177bc --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.py @@ -0,0 +1,24 @@ +from policyengine_us.model_api import * + + +class mn_ccap_countable_income(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP countable annual income" + definition_period = YEAR + defined_for = StateCode.MN + reference = ( + "https://www.revisor.mn.gov/rules/3400.0170/", + "https://www.revisor.mn.gov/statutes/cite/256P.06", + ) + + def formula(spm_unit, period, parameters): + # Annual gross income (earned counted gross, before payroll deductions) + # less allowable deductions, used for both the income-eligibility test + # and the copayment lookup. Flooring the result at zero matches the + # labor-supply rule and prevents net losses from inflating the benefit. + earned = add(spm_unit, period, ["mn_ccap_gross_earned_income"]) + unearned = add(spm_unit, period, ["mn_ccap_gross_unearned_income"]) + deductions = add(spm_unit, period, ["mn_ccap_income_deductions"]) + return max_(earned + unearned - deductions, 0) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_enrolled.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_enrolled.py new file mode 100644 index 00000000000..1ee4471c8c3 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_enrolled.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class mn_ccap_enrolled(Variable): + value_type = bool + entity = SPMUnit + definition_period = MONTH + label = "Currently enrolled in Minnesota CCAP" + defined_for = StateCode.MN diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py new file mode 100644 index 00000000000..b61a74fbbb3 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py @@ -0,0 +1,16 @@ +from policyengine_us.model_api import * + + +class mn_ccap_gross_earned_income(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP gross earned income" + definition_period = YEAR + defined_for = StateCode.MN + reference = ( + "https://www.revisor.mn.gov/statutes/cite/256P.06", + "https://www.revisor.mn.gov/rules/3400.0170/", + ) + # Earned income is counted gross, before payroll deductions. + adds = "gov.states.mn.dcyf.ccap.income.countable_income.earned" diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_unearned_income.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_unearned_income.py new file mode 100644 index 00000000000..3c3c0c34325 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_unearned_income.py @@ -0,0 +1,15 @@ +from policyengine_us.model_api import * + + +class mn_ccap_gross_unearned_income(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP gross unearned income" + definition_period = YEAR + defined_for = StateCode.MN + reference = ( + "https://www.revisor.mn.gov/statutes/cite/256P.06", + "https://www.revisor.mn.gov/rules/3400.0170/", + ) + adds = "gov.states.mn.dcyf.ccap.income.countable_income.unearned" diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_income_deductions.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_income_deductions.py new file mode 100644 index 00000000000..c18e9ac0030 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_income_deductions.py @@ -0,0 +1,12 @@ +from policyengine_us.model_api import * + + +class mn_ccap_income_deductions(Variable): + value_type = float + entity = SPMUnit + unit = USD + label = "Minnesota CCAP allowable income deductions" + definition_period = YEAR + defined_for = StateCode.MN + reference = ("https://www.revisor.mn.gov/rules/3400.0170/",) + adds = "gov.states.mn.dcyf.ccap.income.deductions.sources" diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.py new file mode 100644 index 00000000000..84fdf1e29fc --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.py @@ -0,0 +1,28 @@ +from policyengine_us.model_api import * + + +class mn_ccap_max_rate(Variable): + value_type = float + entity = Person + unit = USD + label = ( + "Minnesota CCAP maximum monthly rate per child including quality differential" + ) + definition_period = MONTH + defined_for = "mn_ccap_eligible_child" + reference = ( + # Minn. Stat. 142E.17 subd. 1, 4-5 — maximum rates and quality + # differentials. + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap + provider_rate = person("mn_ccap_provider_rate", period) + quality_rating = person("mn_ccap_quality_rating", period) + # Higher-quality providers receive a 15% or 20% differential above the + # standard maximum rate. The differential is capped at the provider's + # actual charge downstream, where the benefit is capped at the family's + # pre-subsidy child care expenses. + differential = p.quality_differential[quality_rating] + return provider_rate * (1 + differential) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py new file mode 100644 index 00000000000..0fa2d3088e1 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py @@ -0,0 +1,86 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.gov.states.mn.dcyf.ccap.mn_ccap_provider_type import ( + MNCCAPProviderType, +) +from policyengine_us.variables.gov.states.mn.dcyf.ccap.mn_ccap_rate_unit import ( + MNCCAPRateUnit, +) + + +class mn_ccap_provider_rate(Variable): + value_type = float + entity = Person + unit = USD + label = "Minnesota CCAP maximum monthly provider rate per child" + definition_period = MONTH + defined_for = "mn_ccap_eligible_child" + reference = ( + # DHS-6441F standard maximum rates; Minn. Stat. 142E.17. + "https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap.rates + provider_type = person("mn_ccap_provider_type", period) + age_group = person("mn_ccap_age_group", period) + rate_unit = person("mn_ccap_rate_unit", period) + # defined_for filters output but does not short-circuit vectorized + # execution, so mask on Minnesota before indexing county_str; non-MN + # county strings are absent from the rate tables and would crash the + # lookup. + county = person.household("county_str", period.this_year) + in_mn = person.household("state_code_str", period.this_year) == "MN" + county_key = where(in_mn, county, "HENNEPIN_COUNTY_MN") + + # Centers and license-exempt programs (paid at the center rate per + # section 9.9) use the child care center column; family child care + # providers use the family child care column. Legal non-licensed + # providers use their own hourly rate table. + family = MNCCAPProviderType.FAMILY_CHILD_CARE.name + center = MNCCAPProviderType.CHILD_CARE_CENTER.name + uses_center = (provider_type == MNCCAPProviderType.CHILD_CARE_CENTER) | ( + provider_type == MNCCAPProviderType.LICENSE_EXEMPT + ) + + weekly_rate = where( + uses_center, + p.weekly[center][age_group][county_key], + p.weekly[family][age_group][county_key], + ) + full_day_rate = where( + uses_center, + p.full_day[center][age_group][county_key], + p.full_day[family][age_group][county_key], + ) + hourly_rate = where( + uses_center, + p.hourly[center][age_group][county_key], + p.hourly[family][age_group][county_key], + ) + lnl_hourly_rate = p.lnl_hourly[age_group][county_key] + + # Convert each rate unit to a monthly maximum: weekly rates use the + # average weeks-per-month factor (RI precedent), daily rates use + # monthly attending days, and hourly rates use monthly attending hours. + days_per_month = person("childcare_attending_days_per_month", period.this_year) + hours_per_week = person("childcare_hours_per_week", period.this_year) + hours_per_month = hours_per_week * (WEEKS_IN_YEAR / MONTHS_IN_YEAR) + + monthly_weekly = weekly_rate * (WEEKS_IN_YEAR / MONTHS_IN_YEAR) + monthly_full_day = full_day_rate * days_per_month + monthly_hourly = hourly_rate * hours_per_month + monthly_lnl = lnl_hourly_rate * hours_per_month + + return select( + [ + rate_unit == MNCCAPRateUnit.WEEKLY, + rate_unit == MNCCAPRateUnit.FULL_DAY, + rate_unit == MNCCAPRateUnit.LNL_HOURLY, + ], + [ + monthly_weekly, + monthly_full_day, + monthly_lnl, + ], + default=monthly_hourly, + ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_type.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_type.py new file mode 100644 index 00000000000..3e70cc39591 --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_type.py @@ -0,0 +1,22 @@ +from policyengine_us.model_api import * + + +class MNCCAPProviderType(Enum): + FAMILY_CHILD_CARE = "Family child care" + CHILD_CARE_CENTER = "Child care center" + LICENSE_EXEMPT = "License-exempt program" + LEGAL_NON_LICENSED = "Legal non-licensed provider" + + +class mn_ccap_provider_type(Variable): + value_type = Enum + entity = Person + possible_values = MNCCAPProviderType + default_value = MNCCAPProviderType.CHILD_CARE_CENTER + definition_period = MONTH + label = "Minnesota CCAP child care provider type" + defined_for = StateCode.MN + reference = ( + # Minn. Stat. 142E.17 subd. 1 — provider categories and rates. + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_quality_rating.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_quality_rating.py new file mode 100644 index 00000000000..b011bfd357e --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_quality_rating.py @@ -0,0 +1,22 @@ +from policyengine_us.model_api import * + + +class MNCCAPQualityRating(Enum): + STAR_4 = "Four-star Parent Aware" + ACCREDITED_OR_3STAR = "Accredited or three-star Parent Aware" + NONE = "No quality differential" + + +class mn_ccap_quality_rating(Variable): + value_type = Enum + entity = Person + possible_values = MNCCAPQualityRating + default_value = MNCCAPQualityRating.NONE + definition_period = MONTH + label = "Minnesota CCAP provider quality rating" + defined_for = StateCode.MN + reference = ( + # Minn. Stat. 142E.17 subd. 4-5 — accreditation and Parent Aware + # quality differentials. + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.py new file mode 100644 index 00000000000..28f6e116a7b --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_rate_unit.py @@ -0,0 +1,51 @@ +from policyengine_us.model_api import * +from policyengine_us.variables.gov.states.mn.dcyf.ccap.mn_ccap_provider_type import ( + MNCCAPProviderType, +) + + +class MNCCAPRateUnit(Enum): + WEEKLY = "Weekly" + FULL_DAY = "Full day" + HOURLY = "Hourly" + LNL_HOURLY = "Legal non-licensed hourly" + + +class mn_ccap_rate_unit(Variable): + value_type = Enum + entity = Person + possible_values = MNCCAPRateUnit + default_value = MNCCAPRateUnit.HOURLY + definition_period = MONTH + label = "Minnesota CCAP rate unit" + defined_for = StateCode.MN + reference = ( + # Minnesota CCAP Policy Manual section 9.9; Minn. Stat. 142E.17 subd. 1(f). + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.mn.dcyf.ccap.rate_unit + hours_per_week = person("childcare_hours_per_week", period.this_year) + hours_per_day = person("childcare_hours_per_day", period.this_year) + provider_type = person("mn_ccap_provider_type", period) + # Section 9.9: weekly rate when authorized care exceeds 35 hours per + # week; full-day rate when 35 or fewer hours per week but more than 5 + # hours per day; hourly otherwise. + weekly = hours_per_week > p.weekly_hours_threshold + full_day = hours_per_day > p.daily_hours_threshold + # Legal non-licensed providers are paid only on an hourly basis. + is_lnl = provider_type == MNCCAPProviderType.LEGAL_NON_LICENSED + return select( + [ + is_lnl, + weekly, + full_day, + ], + [ + MNCCAPRateUnit.LNL_HOURLY, + MNCCAPRateUnit.WEEKLY, + MNCCAPRateUnit.FULL_DAY, + ], + default=MNCCAPRateUnit.HOURLY, + ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_registration_fee.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_registration_fee.py new file mode 100644 index 00000000000..db97afd637e --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_registration_fee.py @@ -0,0 +1,19 @@ +from policyengine_us.model_api import * + + +class mn_ccap_registration_fee(Variable): + value_type = float + entity = SPMUnit + unit = USD + definition_period = MONTH + label = "Minnesota CCAP registration fee paid on the family's behalf" + defined_for = StateCode.MN + reference = ( + # DHS-6443D registration fee maximums; Minnesota CCAP Policy Manual + # section 9.3.6; Minn. Stat. 142E.17 subd. 1(i). + "https://www.revisor.mn.gov/statutes/cite/142E.17", + ) + # Optional input: the registration fee the program pays the provider on the + # family's behalf. We don't track whether a provider charges a registration + # fee, so this defaults to $0. The county/city maximum cap and the limit of + # two fees per child per 12-month period are not modeled at the moment. diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.py new file mode 100644 index 00000000000..32226f8cc0a --- /dev/null +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_child_care_subsidies.py @@ -0,0 +1,11 @@ +from policyengine_us.model_api import * + + +class mn_child_care_subsidies(Variable): + value_type = float + entity = SPMUnit + label = "Minnesota child care subsidies" + unit = USD + definition_period = YEAR + defined_for = StateCode.MN + adds = ["mn_ccap"] From ae6b2e4b5f156c35df8f9300a01eb32e20edca93 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 15 Jun 2026 14:59:20 -0400 Subject: [PATCH 3/8] Add changelog fragment for Minnesota CCAP Co-Authored-By: Claude Opus 4.8 (1M context) --- changelog.d/mn-ccap.added.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/mn-ccap.added.md diff --git a/changelog.d/mn-ccap.added.md b/changelog.d/mn-ccap.added.md new file mode 100644 index 00000000000..e83becb6474 --- /dev/null +++ b/changelog.d/mn-ccap.added.md @@ -0,0 +1 @@ +Added Minnesota Child Care Assistance Program (CCAP). From b66c900d6f66be73aa8a34d467b2fb19c7e4aeda Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 15 Jun 2026 15:37:52 -0400 Subject: [PATCH 4/8] Review-fix round 1: address critical issues from /review-program - Model MN CCAP activity-hours requirement (>=20 hr/wk, >=10 FT students) per Minn. Stat. 142E.12 subd.1(b) - Fix citations: 142E.06->142E.10 subd.1 (income), 142E.01 subd.7->subd.4 (child age), family_months->9502.0315, rate_unit->142E.17 subd.1 - Replace hard-coded 26 with WEEKS_IN_YEAR/2; strip page suffix from reference titles - Add MN CCAP to programs.yaml; add copay size 7/10 + LNL/exempt/full-day integration tests Co-Authored-By: Claude Opus 4.8 (1M context) --- .../dcyf/ccap/activity/min_weekly_hours.yaml | 11 +++ .../activity/student_min_weekly_hours.yaml | 11 +++ .../mn/dcyf/ccap/age_group/family_months.yaml | 6 +- .../mn/dcyf/ccap/age_threshold/child.yaml | 2 +- .../ccap/age_threshold/disabled_child.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_10.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_11.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_12.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_13.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_2.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_3.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_4.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_5.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_6.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_7.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_8.yaml | 2 +- .../mn/dcyf/ccap/copay/biweekly/size_9.yaml | 2 +- .../ccap/income/smi_rate/entrance_mfip.yaml | 6 +- .../ccap/income/smi_rate/entrance_other.yaml | 6 +- .../income/smi_rate/exit_during_period.yaml | 6 +- .../ccap/rate_unit/daily_hours_threshold.yaml | 2 +- .../rate_unit/weekly_hours_threshold.yaml | 2 +- policyengine_us/programs.yaml | 8 +- .../mn_ccap_activity_eligible.yaml | 63 +++++++++--- .../gov/states/mn/dcyf/ccap/integration.yaml | 96 +++++++++++++++++++ .../states/mn/dcyf/ccap/mn_ccap_copay.yaml | 70 ++++++++++++++ ...ifferential.yaml => mn_ccap_max_rate.yaml} | 2 +- .../mn/dcyf/ccap/copay/mn_ccap_copay.py | 6 +- .../eligibility/mn_ccap_activity_eligible.py | 27 ++++-- .../eligibility/mn_ccap_eligible_child.py | 2 +- .../eligibility/mn_ccap_income_eligible.py | 14 +-- 31 files changed, 307 insertions(+), 59 deletions(-) create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/min_weekly_hours.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml rename policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/{mn_ccap_quality_differential.yaml => mn_ccap_max_rate.yaml} (99%) diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/min_weekly_hours.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/min_weekly_hours.yaml new file mode 100644 index 00000000000..e9dde265e26 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/min_weekly_hours.yaml @@ -0,0 +1,11 @@ +description: Minnesota requires an employed caretaker to work at least this many hours per week to meet the activity requirement under the Child Care Assistance Program. +values: + 2025-01-01: 20 + +metadata: + unit: hour + period: week + label: Minnesota CCAP employed caretaker minimum weekly work hours + reference: + - title: Minn. Stat. 142E.12, subd. 1(b) (employment and education requirements; formerly 119B.10) + href: https://www.revisor.mn.gov/statutes/cite/142E.12 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml new file mode 100644 index 00000000000..a1a23d33a8d --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml @@ -0,0 +1,11 @@ +description: Minnesota requires a full-time student caretaker to work at least this many hours per week to meet the activity requirement under the Child Care Assistance Program. +values: + 2025-01-01: 10 + +metadata: + unit: hour + period: week + label: Minnesota CCAP full-time student caretaker minimum weekly work hours + reference: + - title: Minn. Stat. 142E.12, subd. 1(b) (employment and education requirements; formerly 119B.10) + href: https://www.revisor.mn.gov/statutes/cite/142E.12 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml index c45e6c42c3c..917590f2918 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/family_months.yaml @@ -8,8 +8,10 @@ metadata: period: year label: Minnesota CCAP family child care age group by months reference: - - title: Minnesota CCAP Policy Manual, glossary (Infant, Toddler, Preschool, School Age — Licensed Family Child Care) - href: https://www.revisor.mn.gov/rules/9503.0005/ + - title: Minn. Rules 9502.0315 (family day care definitions) + href: https://www.revisor.mn.gov/rules/9502.0315/ + - title: Minn. Stat. 142B.01, subd. 13 (toddler, preschooler, and school age definitions) + href: https://www.revisor.mn.gov/statutes/cite/142B.01 brackets: # Infant: up to 12 months diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml index e8a32efdece..366d956c35f 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/child.yaml @@ -7,5 +7,5 @@ metadata: period: year label: Minnesota CCAP child age limit reference: - - title: Minn. Stat. 142E.01, subd. 7 (eligible child; formerly 119B.011, subd. 8) + - title: Minn. Stat. 142E.01, subd. 4 (Child) href: https://www.revisor.mn.gov/statutes/cite/142E.01 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml index 20bb3ce60cd..a9eb727deab 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_threshold/disabled_child.yaml @@ -7,5 +7,5 @@ metadata: period: year label: Minnesota CCAP disabled child age limit reference: - - title: Minn. Stat. 142E.01, subd. 7 (eligible child; formerly 119B.011, subd. 8) + - title: Minn. Stat. 142E.01, subd. 4 (Child) href: https://www.revisor.mn.gov/statutes/cite/142E.01 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml index 76c86cebac1..fd06879aec5 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_10.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for ten-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.10 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=10 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml index 1e3d8751764..ac52812c4d2 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_11.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for eleven-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.10 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=10 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml index d201431f899..4505286edf2 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_12.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for twelve-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.11 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=11 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml index 94de5804e5a..05af3a4bfbb 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_13.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for thirteen-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.11 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=11 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml index 547fb2e3b68..957aedca0ea 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_2.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for two-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.6 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=6 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml index 514774bf9dd..8a4ccc3e217 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_3.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for three-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.6 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=6 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml index 64080ec7768..e874bb584b0 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_4.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for four-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.7 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=7 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml index 6ed82473817..b3285d55018 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_5.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for five-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.7 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=7 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml index abdfd9cc07b..883851820c9 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_6.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for six-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.8 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=8 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml index 85d6d7b8e7d..d973bacd986 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_7.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for seven-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.8 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=8 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml index e93cb9f0691..b921845901b 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_8.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for eight-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.9 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=9 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml index 9f5c9b07056..d6fb5b70597 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/copay/biweekly/size_9.yaml @@ -6,7 +6,7 @@ metadata: threshold_period: year label: Minnesota CCAP biweekly copayment for nine-person family reference: - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.9 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=9 brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml index d4a5aadc30d..b83019ab2c0 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_mfip.yaml @@ -7,7 +7,7 @@ metadata: period: year label: Minnesota CCAP MFIP/DWP entrance income limit (share of SMI) reference: - - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) - href: https://www.revisor.mn.gov/statutes/cite/142E.06 - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + - title: Minn. Stat. 142E.10, subd. 1 (financial eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.10 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml index cde1e73d076..35e74d5dc6b 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/entrance_other.yaml @@ -7,7 +7,7 @@ metadata: period: year label: Minnesota CCAP non-MFIP entrance income limit (share of SMI) reference: - - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) - href: https://www.revisor.mn.gov/statutes/cite/142E.06 - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + - title: Minn. Stat. 142E.10, subd. 1 (financial eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.10 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml index a3181dd17e0..74f442f3619 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml @@ -7,7 +7,7 @@ metadata: period: year label: Minnesota CCAP exit income limit during eligibility period (share of SMI) reference: - - title: Minn. Stat. 142E.06, subd. 1 (income eligibility; formerly 119B.09) - href: https://www.revisor.mn.gov/statutes/cite/142E.06 - - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025, p.5 + - title: Minn. Stat. 142E.10, subd. 1 (financial eligibility; formerly 119B.09) + href: https://www.revisor.mn.gov/statutes/cite/142E.10 + - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 (85% exit limit) href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml index d6edb9b01ce..7b07146d7fd 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml @@ -7,5 +7,5 @@ metadata: period: day label: Minnesota CCAP full-day rate hours-per-day threshold reference: - - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of payment amounts) + - title: Minn. Stat. 142E.17, subd. 1 (hourly, full-day, and weekly rate basis) href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml index 9fd04b25387..bb8f5187039 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml @@ -7,5 +7,5 @@ metadata: period: week label: Minnesota CCAP weekly rate hours-per-week threshold reference: - - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of payment amounts) + - title: Minn. Stat. 142E.17, subd. 1 (hourly, full-day, and weekly rate basis) href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 83ef1f1f1a0..29043ce52a5 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -460,7 +460,7 @@ programs: category: Benefits agency: HHS status: partial - coverage: AK, AR, AL, CA, CO, CT, DE, DC, FL, HI, IA, ID, IL, IN, KS, KY, MA, MD, ME, NC, NH, NJ, PA, RI, SC, TX, VA, VT, WA, WV + coverage: AK, AR, AL, CA, CO, CT, DE, DC, FL, HI, IA, ID, IL, IN, KS, KY, MA, MD, ME, MN, NC, NH, NJ, PA, RI, SC, TX, VA, VT, WA, WV state_implementations: - state: AK status: complete @@ -560,6 +560,12 @@ programs: full_name: Iowa Child Care Assistance variable: ia_cca parameter_prefix: gov.states.ia.hhs.cca + - state: MN + status: complete + name: Minnesota CCAP + full_name: Minnesota Child Care Assistance Program + variable: mn_ccap + parameter_prefix: gov.states.mn.dcyf.ccap - state: NH status: complete name: New Hampshire CCAP diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml index c2fc788c26d..599144ecc3b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml @@ -1,8 +1,8 @@ -# Tests MN CCAP parent activity eligibility (Minn. Rules 3400.0040; manual -# section 9.x). Parents in an authorized activity (work, job search, education, -# training) qualify. For initial applicants the activity requirement is treated -# as met for employable/willing parents (per the program's applicant rules), so -# a working parent is activity eligible. +# Tests MN CCAP parent activity eligibility (Minn. Stat. 142E.12, subd. 1(b); +# Minn. Rules 3400.0040). Each caretaker must be in an authorized activity: an +# employed caretaker must work at least 20 hours per week, while a full-time +# student must work at least 10 hours per week. A disabled caretaker is treated +# as meeting the requirement. - name: Case 1, working parent is activity eligible. period: 2026-01 input: @@ -22,10 +22,10 @@ output: mn_ccap_activity_eligible: true -# Edge cases. The formula treats a caretaker as in an authorized activity when -# working (weekly_hours_worked_before_lsr > 0), a full-time student, or -# disabled. weekly_hours_worked_before_lsr defaults to a positive value for -# adults, so inactive-caretaker cases set it to 0 explicitly. +# Edge cases. A caretaker meets the activity requirement when working at least +# 20 hours per week, when a full-time student working at least 10 hours per +# week, or when disabled. weekly_hours_worked_before_lsr defaults to 40 hours +# for adults, so inactive-caretaker cases set it to 0 explicitly. - name: Case 2, single parent with no activity is not activity eligible. period: 2026-01 input: @@ -48,13 +48,13 @@ # No working/student/disabled caretaker -> not activity eligible. mn_ccap_activity_eligible: false -- name: Case 3, full-time student parent is activity eligible without working. +- name: Case 3, full-time student parent working at least 10 hours per week is activity eligible. period: 2026-01 input: people: person1: age: 30 - weekly_hours_worked_before_lsr: 0 + weekly_hours_worked_before_lsr: 10 # meets the 10 hr/wk student floor is_full_time_student: true person2: age: 4 @@ -134,3 +134,44 @@ state_code: MN output: mn_ccap_activity_eligible: true + +- name: Case 7, full-time student parent working below the 10 hour floor is not activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 9 # below the 10 hr/wk student floor + is_full_time_student: true + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: false + +- name: Case 8, employed parent working below the 20 hour floor is not activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 19 # below the 20 hr/wk employment floor + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml index 887a28fac0d..48e347a96b9 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml @@ -434,3 +434,99 @@ # Subsidy = min(5,000, 2,470.00) - 4.33 = 2,465.67. mn_ccap_copay: 4.33 mn_ccap: 2_465.67 + +- name: Case 14, legal non-licensed hourly provider feeds the end-to-end benefit. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 20 # LNL is always paid hourly per section 9.9 + mn_ccap_provider_type: LEGAL_NON_LICENSED + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 12_000 # 1,000/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Becker LNL infant hourly 3.69 * (20 * 52 / 12) = 3.69 * 86.6667 = 319.80/month. + # Size-2 copay at 18,000 -> $2 biweekly -> 2 * 26 / 12 = 4.33/month. + mn_ccap_copay: 4.33 + # Subsidy = min(1,000, 319.80) - 4.33 = 315.47. + mn_ccap: 315.47 + +- name: Case 15, license-exempt program paid at the licensed center rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 45 # > 35 -> weekly rate + mn_ccap_provider_type: LICENSE_EXEMPT + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 18_000 # 1,500/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # License-exempt programs are paid at the licensed center column (section 9.9). + # Becker center infant weekly 274 -> 274 * 52 / 12 = 1,187.33/month. + # Size-2 copay at 18,000 -> $2 biweekly -> 4.33/month. + mn_ccap_copay: 4.33 + # Subsidy = min(1,500, 1,187.33) - 4.33 = 1,183.00. + mn_ccap: 1_183 + +- name: Case 16, full-day rate unit feeds the end-to-end benefit. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 30 + employment_income: 18_000 + person2: + age: 0 + childcare_hours_per_week: 30 # <= 35 + childcare_hours_per_day: 6 # > 5 -> full-day rate + childcare_attending_days_per_month: 20 + mn_ccap_provider_type: FAMILY_CHILD_CARE + mn_ccap_quality_rating: NONE + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + spm_unit_pre_subsidy_childcare_expenses: 12_000 # 1,000/month + households: + household: + members: [person1, person2] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Becker family infant full-day 45 * 20 attending days = 900.00/month max rate. + # Size-2 copay at 18,000 -> $2 biweekly -> 4.33/month. + mn_ccap_copay: 4.33 + # Subsidy = min(1,000, 900.00) - 4.33 = 895.67. + mn_ccap: 895.67 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml index 29e50513a37..4095b229972 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_copay.yaml @@ -205,3 +205,73 @@ # size <= 2 -> size-2 table. 30,000 lands in the 29,738 band -> $31 biweekly. # Monthly = 31 * 26 / 12 = 67.17. mn_ccap_copay: 67.17 + +- name: Case 9, seven-person family in a mid income band uses the size-7 copay table. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + employment_income: 63_000 + person2: + age: 38 + person3: + age: 12 + person4: + age: 10 + person5: + age: 8 + person6: + age: 6 + person7: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3, person4, person5, person6, person7] + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7] + state_code: MN + output: + # Size-7 table (DHS-6413N p.8): 63,000 lands in the 61,604-64,169 band -> + # $72 biweekly. Monthly = 72 * 26 / 12 = 156.00. + mn_ccap_copay: 156 + +- name: Case 10, ten-person family in a mid income band uses the size-10 copay table. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 45 + employment_income: 75_000 + person2: + age: 43 + person3: + age: 15 + person4: + age: 13 + person5: + age: 11 + person6: + age: 9 + person7: + age: 7 + person8: + age: 5 + person9: + age: 3 + person10: + age: 1 + spm_units: + spm_unit: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10] + households: + household: + members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10] + state_code: MN + output: + # Size-10 table (DHS-6413N p.10): 75,000 lands in the 73,944-76,659 band -> + # $86 biweekly. Monthly = 86 * 26 / 12 = 186.33. + mn_ccap_copay: 186.33 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.yaml similarity index 99% rename from policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml rename to policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.yaml index 6ea48f356ec..e3bbf82ac96 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_quality_differential.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_max_rate.yaml @@ -1,5 +1,5 @@ # Tests the MN CCAP quality differential, applied inside mn_ccap_max_rate as -# standard_rate x (1 + differential) (Minn. Stat. 142E.17 subd. 4-5; REQ-024). +# standard_rate x (1 + differential) (Minn. Stat. 142E.17 subd. 4-5). # 4-star Parent Aware = +20%, accredited or 3-star Parent Aware = +15%, none = 0%. # Each case uses a Becker family-child-care infant on a weekly rate: standard # monthly max rate = 205 * 52 / 12 = 888.33. The differential is capped at the diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py index 71a2cb10bd0..12a1101da8c 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/copay/mn_ccap_copay.py @@ -48,6 +48,6 @@ def formula(spm_unit, period, parameters): ], default=p.size_13.calc(annual_income), ) - # Convert the biweekly copayment to a monthly amount (26 pay periods - # per year over 12 months). - return biweekly_copay * 26 / MONTHS_IN_YEAR + # Convert the biweekly copayment to a monthly amount (26 biweekly pay + # periods per year over 12 months). + return biweekly_copay * (WEEKS_IN_YEAR / 2) / MONTHS_IN_YEAR diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py index 3bfee0c905d..c1808fc0e00 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py @@ -8,28 +8,37 @@ class mn_ccap_activity_eligible(Variable): definition_period = MONTH defined_for = StateCode.MN reference = ( + # Minn. Stat. 142E.12, subd. 1 — employment and education requirements. + "https://www.revisor.mn.gov/statutes/cite/142E.12", # Minn. Rules 3400.0040 — authorized activities (employment, job # search, education, training). "https://www.revisor.mn.gov/rules/3400.0040/", ) def formula(spm_unit, period, parameters): - # Each parent (sole parent or both parents in a two-parent household) - # must be in an authorized activity: employment, job search, education, - # or training. Minnesota imposes no minimum-hours bar at application, so - # we treat an applicant caretaker as meeting the activity requirement - # when employed, a student, or disabled (a disability can interrupt an - # authorized activity). We don't track job-search status at the moment, - # so caretakers in job search are not separately captured here. + # Each caretaker (sole parent or both parents in a two-parent + # household) must be in an authorized activity. An employed caretaker + # must work an average of at least 20 hours per week; a full-time + # student must work at least 10 hours per week (Minn. Stat. 142E.12 + # subd. 1(b)). A disability can interrupt an authorized activity, so a + # disabled caretaker is treated as meeting the requirement. We don't + # track job-search status or the minimum-wage component at the moment, + # so caretakers in job search and the minimum-wage test are not + # separately captured here. + p = parameters(period).gov.states.mn.dcyf.ccap.activity person = spm_unit.members is_head_or_spouse = person("is_tax_unit_head_or_spouse", period.this_year) # Use the pre-labor-supply-response hours to avoid a circular # dependency in reform and microsimulation runs. hours_worked = person("weekly_hours_worked_before_lsr", period.this_year) - is_working = hours_worked > 0 is_student = person("is_full_time_student", period.this_year) is_disabled = person("is_disabled", period.this_year) - in_authorized_activity = is_working | is_student | is_disabled + meets_hours_floor = where( + is_student, + hours_worked >= p.student_min_weekly_hours, + hours_worked >= p.min_weekly_hours, + ) + in_authorized_activity = meets_hours_floor | is_disabled has_caretaker = spm_unit.sum(is_head_or_spouse) > 0 no_inactive_caretaker = ( spm_unit.sum(is_head_or_spouse & ~in_authorized_activity) == 0 diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py index 9e440ca9b42..7302290b196 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.py @@ -8,7 +8,7 @@ class mn_ccap_eligible_child(Variable): definition_period = MONTH defined_for = StateCode.MN reference = ( - # Minn. Stat. 142E.01 subd. 7 — eligible child (formerly 119B.011). + # Minn. Stat. 142E.01, subd. 4 — definition of "Child". "https://www.revisor.mn.gov/statutes/cite/142E.01", ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py index cc93ea5420a..59207eea1b2 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_income_eligible.py @@ -8,12 +8,17 @@ class mn_ccap_income_eligible(Variable): definition_period = MONTH defined_for = StateCode.MN reference = ( - # Minn. Stat. 142E.06 subd. 1 — income eligibility (formerly 119B.09); - # DHS-6413N entrance and exit limits. - "https://www.revisor.mn.gov/statutes/cite/142E.06", + # Minn. Stat. 142E.10, subd. 1 — financial eligibility (formerly + # 119B.09); DHS-6413N entrance and exit limits. + "https://www.revisor.mn.gov/statutes/cite/142E.10", ) def formula(spm_unit, period, parameters): + # Families enrolled during the 12-month eligibility period remain + # eligible until income exceeds 85% of SMI; we apply that limit to all + # enrolled families. The separate 67%-of-SMI limit tested at + # redetermination is not modeled, because we don't track + # redetermination events at the moment (a point-in-time limitation). p = parameters(period).gov.states.mn.dcyf.ccap.income.smi_rate countable_income = spm_unit("mn_ccap_countable_income", period.this_year) smi = spm_unit("hhs_smi", period.this_year) @@ -26,8 +31,5 @@ def formula(spm_unit, period, parameters): p.entrance_mfip, p.entrance_other, ) - # Applicants are tested against the entrance limit; families already - # enrolled remain eligible until income exceeds 85% of SMI during the - # 12-month eligibility period. smi_rate = where(enrolled, p.exit_during_period, entrance_rate) return countable_income <= smi * smi_rate From 639d088f1dc48b958ff3b0fa371f72b7acbd9525 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 15 Jun 2026 15:51:57 -0400 Subject: [PATCH 5/8] Review-fix round 2: citation correctness and coverage transparency - exit_during_period.yaml: cite DHS-6413N + 45 CFR 98.21(a)(1) for 85% SMI (142E.10 lacks it) - Document 142E.12 subd.3 education/training pathway as not modeled; pin 142E.12 subd.1(b) ref - center_months.yaml: align title with 9503.0005 href - Add inclusive 20-hr activity edge test; fix stale subd.7 comment Co-Authored-By: Claude Opus 4.8 (1M context) --- .../mn/dcyf/ccap/age_group/center_months.yaml | 2 +- .../income/smi_rate/exit_during_period.yaml | 4 ++-- .../mn_ccap_activity_eligible.yaml | 22 +++++++++++++++++++ .../eligibility/mn_ccap_eligible_child.yaml | 2 +- .../eligibility/mn_ccap_activity_eligible.py | 10 +++++++-- 5 files changed, 34 insertions(+), 6 deletions(-) diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml index 7b9579db2ce..b9cdf92e8df 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/age_group/center_months.yaml @@ -8,7 +8,7 @@ metadata: period: year label: Minnesota CCAP child care center age group by months reference: - - title: Minnesota CCAP Policy Manual, glossary (Infant, Toddler, Preschool, School Age — Licensed Center Child Care) + - title: Minn. Rules 9503.0005 (child care center infant, toddler, preschooler, and school age definitions) href: https://www.revisor.mn.gov/rules/9503.0005/ brackets: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml index 74f442f3619..93c5a7f010b 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/smi_rate/exit_during_period.yaml @@ -7,7 +7,7 @@ metadata: period: year label: Minnesota CCAP exit income limit during eligibility period (share of SMI) reference: - - title: Minn. Stat. 142E.10, subd. 1 (financial eligibility; formerly 119B.09) - href: https://www.revisor.mn.gov/statutes/cite/142E.10 - title: Minnesota CCAP Copayment schedules (DHS-6413N), effective Oct. 13, 2025 (85% exit limit) href: https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6413N-ENG#page=5 + - title: 45 CFR 98.21(a)(1) (minimum 12-month eligibility period; income up to 85% of state median income) + href: https://www.ecfr.gov/current/title-45/section-98.21#p-98.21(a)(1) diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml index 599144ecc3b..a721b83dfc8 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml @@ -175,3 +175,25 @@ state_code: MN output: mn_ccap_activity_eligible: false + +- name: Case 9, employed parent working exactly the 20 hour floor is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 20 # exactly the 20 hr/wk employment floor (inclusive) + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # "at least an average of 20 hours" is inclusive, so exactly 20 qualifies. + mn_ccap_activity_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml index 0b3fb07f326..e176550f21e 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible_child.yaml @@ -1,6 +1,6 @@ # Tests MN CCAP eligible-child determination: a dependent child under 13 # (or under 15 if disabled) who is a citizen or qualified noncitizen -# (Minn. Stat. 142E.01 subd. 7; reuses is_ccdf_immigration_eligible_child). +# (Minn. Stat. 142E.01 subd. 4; reuses is_ccdf_immigration_eligible_child). - name: Case 1, dependent citizen child under 13 is eligible. period: 2026-01 input: diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py index c1808fc0e00..7e428f56f28 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py @@ -8,7 +8,8 @@ class mn_ccap_activity_eligible(Variable): definition_period = MONTH defined_for = StateCode.MN reference = ( - # Minn. Stat. 142E.12, subd. 1 — employment and education requirements. + # Minn. Stat. 142E.12, subd. 1(b) — minimum weekly hours for employed + # caretakers (20) and working full-time students (10). "https://www.revisor.mn.gov/statutes/cite/142E.12", # Minn. Rules 3400.0040 — authorized activities (employment, job # search, education, training). @@ -24,7 +25,12 @@ def formula(spm_unit, period, parameters): # disabled caretaker is treated as meeting the requirement. We don't # track job-search status or the minimum-wage component at the moment, # so caretakers in job search and the minimum-wage test are not - # separately captured here. + # separately captured here. We also don't track approved + # education/training program enrollment at the moment, so the Minn. + # Stat. 142E.12 subd. 3 education/training-only pathway (a non-employed + # full-time student in an approved program, with no minimum + # employment-hours requirement) is not modeled and such caretakers are + # under-included here. p = parameters(period).gov.states.mn.dcyf.ccap.activity person = spm_unit.members is_head_or_spouse = person("is_tax_unit_head_or_spouse", period.this_year) From eb3445eeec6a2f323b3361dc20f2a0c93edbd834 Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 16 Jun 2026 15:28:10 -0400 Subject: [PATCH 6/8] Refine MN CCAP income, activity, and provider rate rules - Exclude children's earned income from countable income (manual 6.6.1) - Activity eligibility: MFIP/DWP categorical, full-time-student education pathway, and broaden the "unable to provide care" exemption (manual 4.6.1, 4.6.3); full-time students no longer need a work-hours floor - Apply statutory per-day and per-week payment caps and legal non-licensed 10-hour/day and 50-hour/week caps to provider rates (Minn. Stat. 142E.17 subd. 1(f), 2(b)) Co-Authored-By: Claude Opus 4.8 (1M context) --- .../activity/student_min_weekly_hours.yaml | 11 -- .../dcyf/ccap/rates/lnl_max_daily_hours.yaml | 11 ++ .../dcyf/ccap/rates/lnl_max_weekly_hours.yaml | 11 ++ .../mn_ccap_activity_eligible.yaml | 152 ++++++++++++++---- .../gov/states/mn/dcyf/ccap/integration.yaml | 14 +- .../dcyf/ccap/mn_ccap_countable_income.yaml | 23 +++ .../mn/dcyf/ccap/mn_ccap_provider_rate.yaml | 74 ++++++++- .../eligibility/mn_ccap_activity_eligible.py | 59 +++---- .../dcyf/ccap/mn_ccap_gross_earned_income.py | 12 +- .../mn/dcyf/ccap/mn_ccap_provider_rate.py | 44 +++-- 10 files changed, 322 insertions(+), 89 deletions(-) delete mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_daily_hours.yaml create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_weekly_hours.yaml diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml deleted file mode 100644 index a1a23d33a8d..00000000000 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/activity/student_min_weekly_hours.yaml +++ /dev/null @@ -1,11 +0,0 @@ -description: Minnesota requires a full-time student caretaker to work at least this many hours per week to meet the activity requirement under the Child Care Assistance Program. -values: - 2025-01-01: 10 - -metadata: - unit: hour - period: week - label: Minnesota CCAP full-time student caretaker minimum weekly work hours - reference: - - title: Minn. Stat. 142E.12, subd. 1(b) (employment and education requirements; formerly 119B.10) - href: https://www.revisor.mn.gov/statutes/cite/142E.12 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_daily_hours.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_daily_hours.yaml new file mode 100644 index 00000000000..54ed8687f41 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_daily_hours.yaml @@ -0,0 +1,11 @@ +description: Minnesota limits legal non-licensed child care payment to this many hours per day under the Child Care Assistance Program. +values: + 2025-01-01: 10 + +metadata: + unit: hour + period: day + label: Minnesota CCAP legal non-licensed maximum daily payable hours + reference: + - title: Minn. Stat. 142E.17, subd. 2(b) (legal non-licensed family child care provider rates) + href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_weekly_hours.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_weekly_hours.yaml new file mode 100644 index 00000000000..b260cc5a83b --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rates/lnl_max_weekly_hours.yaml @@ -0,0 +1,11 @@ +description: Minnesota limits legal non-licensed child care payment to this many hours per week under the Child Care Assistance Program. +values: + 2025-01-01: 50 + +metadata: + unit: hour + period: week + label: Minnesota CCAP legal non-licensed maximum weekly payable hours + reference: + - title: Minn. Stat. 142E.17, subd. 2(b) (legal non-licensed family child care provider rates) + href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml index a721b83dfc8..951c75db418 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml @@ -1,8 +1,10 @@ # Tests MN CCAP parent activity eligibility (Minn. Stat. 142E.12, subd. 1(b); -# Minn. Rules 3400.0040). Each caretaker must be in an authorized activity: an -# employed caretaker must work at least 20 hours per week, while a full-time -# student must work at least 10 hours per week. A disabled caretaker is treated -# as meeting the requirement. +# Minn. Rules 3400.0040; CCAP Policy Manual 4.6.1). At least one caretaker must +# be in an authorized activity (employed at least 20 hours per week, or a +# full-time student); in a two-caretaker family the other caretaker must be in +# an activity or unable to provide care. MFIP/DWP families meet the requirement +# through their employment plan. weekly_hours_worked_before_lsr defaults to 40 +# hours for adults, so inactive-caretaker cases set it to 0 explicitly. - name: Case 1, working parent is activity eligible. period: 2026-01 input: @@ -22,17 +24,13 @@ output: mn_ccap_activity_eligible: true -# Edge cases. A caretaker meets the activity requirement when working at least -# 20 hours per week, when a full-time student working at least 10 hours per -# week, or when disabled. weekly_hours_worked_before_lsr defaults to 40 hours -# for adults, so inactive-caretaker cases set it to 0 explicitly. - name: Case 2, single parent with no activity is not activity eligible. period: 2026-01 input: people: person1: age: 30 - weekly_hours_worked_before_lsr: 0 # not working + weekly_hours_worked_before_lsr: 0 is_full_time_student: false is_disabled: false person2: @@ -45,16 +43,15 @@ members: [person1, person2] state_code: MN output: - # No working/student/disabled caretaker -> not activity eligible. mn_ccap_activity_eligible: false -- name: Case 3, full-time student parent working at least 10 hours per week is activity eligible. +- name: Case 3, full-time student parent is activity eligible without working. period: 2026-01 input: people: person1: age: 30 - weekly_hours_worked_before_lsr: 10 # meets the 10 hr/wk student floor + weekly_hours_worked_before_lsr: 0 is_full_time_student: true person2: age: 4 @@ -66,9 +63,10 @@ members: [person1, person2] state_code: MN output: + # Education is itself an authorized activity (section 4.6.6.9). mn_ccap_activity_eligible: true -- name: Case 4, disabled parent is activity eligible without working. +- name: Case 4, single disabled parent with no activity is not activity eligible. period: 2026-01 input: people: @@ -86,18 +84,44 @@ members: [person1, person2] state_code: MN output: + # A single caretaker must be in an authorized activity; the unable-to- + # provide-care exemption applies only to a second caretaker. + mn_ccap_activity_eligible: false + +- name: Case 5, two-parent household with one working and one disabled is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 32 + employment_income: 24_000 + person2: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_disabled: true + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # One caretaker is active; the disabled caretaker is unable to provide care. mn_ccap_activity_eligible: true -- name: Case 5, two-parent household with one inactive parent is not activity eligible. +- name: Case 6, two-parent household with one inactive able parent is not activity eligible. period: 2026-01 input: people: person1: age: 32 - employment_income: 24_000 # working + employment_income: 24_000 person2: age: 30 - weekly_hours_worked_before_lsr: 0 # inactive caretaker + weekly_hours_worked_before_lsr: 0 is_full_time_student: false is_disabled: false person3: @@ -110,10 +134,10 @@ members: [person1, person2, person3] state_code: MN output: - # Both parents must be in an authorized activity; the inactive spouse fails. + # The second caretaker is neither active nor unable to provide care. mn_ccap_activity_eligible: false -- name: Case 6, two-parent household with both parents working is activity eligible. +- name: Case 7, two-parent household with both parents working is activity eligible. period: 2026-01 input: people: @@ -135,14 +159,40 @@ output: mn_ccap_activity_eligible: true -- name: Case 7, full-time student parent working below the 10 hour floor is not activity eligible. +- name: Case 8, two-parent household with both parents unable to provide care is not activity eligible. period: 2026-01 input: people: person1: + age: 32 + weekly_hours_worked_before_lsr: 0 + is_disabled: true + person2: age: 30 - weekly_hours_worked_before_lsr: 9 # below the 10 hr/wk student floor - is_full_time_student: true + weekly_hours_worked_before_lsr: 0 + is_disabled: true + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # No caretaker is in an authorized activity. + mn_ccap_activity_eligible: false + +- name: Case 9, employed parent working below the 20 hour floor is not activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 19 + is_full_time_student: false + is_disabled: false person2: age: 4 spm_units: @@ -155,13 +205,13 @@ output: mn_ccap_activity_eligible: false -- name: Case 8, employed parent working below the 20 hour floor is not activity eligible. +- name: Case 10, employed parent working exactly the 20 hour floor is activity eligible. period: 2026-01 input: people: person1: age: 30 - weekly_hours_worked_before_lsr: 19 # below the 20 hr/wk employment floor + weekly_hours_worked_before_lsr: 20 is_full_time_student: false is_disabled: false person2: @@ -174,15 +224,16 @@ members: [person1, person2] state_code: MN output: - mn_ccap_activity_eligible: false + # "at least an average of 20 hours" is inclusive, so exactly 20 qualifies. + mn_ccap_activity_eligible: true -- name: Case 9, employed parent working exactly the 20 hour floor is activity eligible. +- name: Case 11, MFIP/DWP family meets the activity requirement without the hours floor. period: 2026-01 input: people: person1: age: 30 - weekly_hours_worked_before_lsr: 20 # exactly the 20 hr/wk employment floor (inclusive) + weekly_hours_worked_before_lsr: 0 is_full_time_student: false is_disabled: false person2: @@ -190,10 +241,57 @@ spm_units: spm_unit: members: [person1, person2] + is_tanf_enrolled: true households: household: members: [person1, person2] state_code: MN output: - # "at least an average of 20 hours" is inclusive, so exactly 20 qualifies. + # MFIP/DWP families meet the requirement through their employment plan. + mn_ccap_activity_eligible: true + +- name: Case 12, the CCDF activity-test input covers approved activities not modeled directly. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + meets_ccdf_activity_test: true + households: + household: + members: [person1, person2] + state_code: MN + output: + mn_ccap_activity_eligible: true + +- name: Case 13, two-parent household with one working and one under house arrest is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 32 + employment_income: 24_000 + person2: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_incarcerated: true + person3: + age: 4 + spm_units: + spm_unit: + members: [person1, person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MN + output: + # House arrest makes the second caretaker unable to provide care. mn_ccap_activity_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml index 48e347a96b9..3d3c7747f73 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/integration.yaml @@ -322,11 +322,12 @@ state_code: MN county: BECKER_COUNTY_MN output: - # Becker center infant hourly 14 * (20 * 52 / 12) = 1,213.33/month max rate. + # Becker center infant hourly 14, 4 hrs/day: daily cap min(14*4, 67.50)=56 + # not binding; weekly cap min(14*20, 274)=274 -> 274 * 52 / 12 = 1,187.33. # Size-2 copay at 18,000 -> $2 biweekly -> 2 * 26 / 12 = 4.33/month. mn_ccap_copay: 4.33 - # Subsidy = min(2,000, 1,213.33) - 4.33 = 1,209.00. - mn_ccap: 1_209 + # Subsidy = min(2,000, 1,187.33) - 4.33 = 1,183.00. + mn_ccap: 1_183 - name: Case 11, registration fee adds to the subsidy. period: 2026-01 @@ -525,8 +526,9 @@ state_code: MN county: BECKER_COUNTY_MN output: - # Becker family infant full-day 45 * 20 attending days = 900.00/month max rate. + # Becker family infant full-day 45 * 20 days = 900 capped at the weekly rate + # 205 * 52 / 12 = 888.33/month max rate. # Size-2 copay at 18,000 -> $2 biweekly -> 4.33/month. mn_ccap_copay: 4.33 - # Subsidy = min(1,000, 900.00) - 4.33 = 895.67. - mn_ccap: 895.67 + # Subsidy = min(1,000, 888.33) - 4.33 = 884.00. + mn_ccap: 884 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml index f03765b98ab..e43f8f39e67 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml @@ -114,3 +114,26 @@ output: # (12,000 + 6,000 + 3,600 + 2,400) / 12 = 24,000 / 12 = 2,000 per month. mn_ccap_countable_income: 2_000 + +- name: Case 8, a child's earned income is not counted. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + employment_income: 36_000 # parent, 3,000/month + person2: + age: 16 + employment_income: 12_000 # excluded as a child's earned income + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Only the parent's 36,000/12 = 3,000 counts; the child's earnings are + # excluded (section 6.6.1). + mn_ccap_countable_income: 3_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml index 78517802522..270d78945d4 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.yaml @@ -79,7 +79,7 @@ # Edge cases covering the full-day, hourly, and LNL-hourly rate units (the # cases above all exercise the weekly unit). Becker County center rates: -# infant full-day 67.50, infant hourly 14. Becker LNL school-age hourly 3.69. +# infant full-day 67.50, infant hourly 14. Becker LNL school-age hourly 3.15. # Daily rate -> monthly via attending days; hourly -> monthly via hours/week x # (52 / 12). - name: Case 5, Becker center infant full-day rate converts by attending days. @@ -118,8 +118,9 @@ state_code: MN county: BECKER_COUNTY_MN output: - # Hourly 14 * (20 * 52 / 12) = 14 * 86.6667 = 1,213.33/month. - mn_ccap_provider_rate: 1_213.33 + # Hourly 14, 4 hrs/day -> daily cap min(14 * 4, 67.50) = 56 (not binding). + # Weekly cap: min(14 * 20, 274) = 274 -> 274 * 52 / 12 = 1,187.33/month. + mn_ccap_provider_rate: 1_187.33 - name: Case 7, Becker legal non-licensed school-age hourly rate. period: 2026-01 @@ -136,6 +137,69 @@ state_code: MN county: BECKER_COUNTY_MN output: - # LNL uses its own hourly table; school-age 3.69 * (40 * 52 / 12) = - # 3.69 * 173.3333 = 546.00/month. + # LNL uses its own hourly table; school-age 3.15 * (40 * 52 / 12) = + # 3.15 * 173.3333 = 546.00/month (40 hrs/week is under the 50-hour cap). mn_ccap_provider_rate: 546 + +# Statutory caps (Minn. Stat. 142E.17 subd. 1(f), 2(b)): a day of care cannot +# exceed the daily rate, a week cannot exceed the weekly rate, and legal +# non-licensed payment is capped at 10 hours/day and 50 hours/week. +- name: Case 8, hourly daily cap binds when the hourly rate times daily hours exceeds the daily rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 20 # <= 35 + childcare_hours_per_day: 5 # <= 5 -> hourly rate + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Daily cap: min(14 * 5, 67.50) = 67.50 -> effective hourly 13.50. + # Weekly: min(13.50 * 20, 274) = 270 -> 270 * 52 / 12 = 1,170.00/month. + mn_ccap_provider_rate: 1_170 + +- name: Case 9, full-day weekly cap binds when the daily rate times attending days exceeds the weekly rate. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 0 + childcare_hours_per_week: 30 # <= 35 + childcare_hours_per_day: 6 # > 5 -> full-day rate + childcare_attending_days_per_month: 20 + mn_ccap_provider_type: CHILD_CARE_CENTER + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # Full-day 67.50 * 20 = 1,350 capped at the weekly rate 274 * 52 / 12 = + # 1,187.33/month. + mn_ccap_provider_rate: 1_187.33 + +- name: Case 10, legal non-licensed weekly hours capped at 50. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 6 + childcare_hours_per_week: 60 # capped at 50 payable hours/week + mn_ccap_provider_type: LEGAL_NON_LICENSED + households: + household: + members: [person1] + state_code: MN + county: BECKER_COUNTY_MN + output: + # LNL school-age 3.15 * min(60, 50) = 157.50/week -> 157.50 * 52 / 12 = + # 682.50/month. + mn_ccap_provider_rate: 682.50 diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py index 7e428f56f28..c787813c6a2 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py @@ -8,45 +8,48 @@ class mn_ccap_activity_eligible(Variable): definition_period = MONTH defined_for = StateCode.MN reference = ( - # Minn. Stat. 142E.12, subd. 1(b) — minimum weekly hours for employed - # caretakers (20) and working full-time students (10). + # Minn. Stat. 142E.12, subd. 1(b) — minimum weekly hours for an + # employed caretaker (20). "https://www.revisor.mn.gov/statutes/cite/142E.12", - # Minn. Rules 3400.0040 — authorized activities (employment, job - # search, education, training). + # Minn. Rules 3400.0040; CCAP Policy Manual 4.6.1 — activity + # requirements based on family composition. "https://www.revisor.mn.gov/rules/3400.0040/", ) def formula(spm_unit, period, parameters): - # Each caretaker (sole parent or both parents in a two-parent - # household) must be in an authorized activity. An employed caretaker - # must work an average of at least 20 hours per week; a full-time - # student must work at least 10 hours per week (Minn. Stat. 142E.12 - # subd. 1(b)). A disability can interrupt an authorized activity, so a - # disabled caretaker is treated as meeting the requirement. We don't - # track job-search status or the minimum-wage component at the moment, - # so caretakers in job search and the minimum-wage test are not - # separately captured here. We also don't track approved - # education/training program enrollment at the moment, so the Minn. - # Stat. 142E.12 subd. 3 education/training-only pathway (a non-employed - # full-time student in an approved program, with no minimum - # employment-hours requirement) is not modeled and such caretakers are - # under-included here. p = parameters(period).gov.states.mn.dcyf.ccap.activity person = spm_unit.members - is_head_or_spouse = person("is_tax_unit_head_or_spouse", period.this_year) + is_caretaker = person("is_tax_unit_head_or_spouse", period.this_year) # Use the pre-labor-supply-response hours to avoid a circular # dependency in reform and microsimulation runs. hours_worked = person("weekly_hours_worked_before_lsr", period.this_year) is_student = person("is_full_time_student", period.this_year) - is_disabled = person("is_disabled", period.this_year) - meets_hours_floor = where( - is_student, - hours_worked >= p.student_min_weekly_hours, - hours_worked >= p.min_weekly_hours, + # A caretaker is in an authorized activity when employed at least the + # minimum weekly hours or enrolled as a full-time student (education is + # itself an authorized activity under section 4.6.6.9). + in_activity = (hours_worked >= p.min_weekly_hours) | is_student + # Section 4.6.1: in a two-caretaker family at least one caretaker must + # be in an authorized activity; the other must be in an activity or + # "unable to provide care" (a medical condition, being incapacitated or + # institutionalized, or house arrest). is_disabled is the fallback + # medical-condition signal. + unable_to_provide_care = ( + person("is_disabled", period.this_year) + | person("is_incapable_of_self_care", period.this_year) + | person("is_incarcerated", period) + | person("in_out_of_home_care_facility", period.this_year) + | person("is_in_residential_care_facility", period) ) - in_authorized_activity = meets_hours_floor | is_disabled - has_caretaker = spm_unit.sum(is_head_or_spouse) > 0 no_inactive_caretaker = ( - spm_unit.sum(is_head_or_spouse & ~in_authorized_activity) == 0 + spm_unit.sum(is_caretaker & ~in_activity & ~unable_to_provide_care) == 0 + ) + has_active_caretaker = spm_unit.sum(is_caretaker & in_activity) > 0 + # Families receiving MFIP or DWP meet the activity requirement through + # their employment plan (section 4.6.3). The minimum-wage test and the + # job-search, education, and training pathways are not separately + # tracked, so the meets_ccdf_activity_test input covers them. + on_mfip_or_dwp = spm_unit("is_tanf_enrolled", period) + fallback = spm_unit("meets_ccdf_activity_test", period.this_year) + return ( + on_mfip_or_dwp | fallback | (no_inactive_caretaker & has_active_caretaker) ) - return has_caretaker & no_inactive_caretaker diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py index b61a74fbbb3..0df45a928e9 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py @@ -12,5 +12,13 @@ class mn_ccap_gross_earned_income(Variable): "https://www.revisor.mn.gov/statutes/cite/256P.06", "https://www.revisor.mn.gov/rules/3400.0170/", ) - # Earned income is counted gross, before payroll deductions. - adds = "gov.states.mn.dcyf.ccap.income.countable_income.earned" + + def formula(spm_unit, period, parameters): + # Earned income is counted gross, before payroll deductions, excluding a + # child's earned income. Section 6.6.1 also counts a non-student minor's + # and a dependent student's earnings, which we don't separately track. + p = parameters(period).gov.states.mn.dcyf.ccap.income.countable_income + person = spm_unit.members + earned = add(person, period, p.earned) + is_child = person("is_child", period) + return spm_unit.sum(earned) - spm_unit.sum(earned * is_child) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py index 0fa2d3088e1..a7117dfac0f 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_provider_rate.py @@ -15,8 +15,10 @@ class mn_ccap_provider_rate(Variable): definition_period = MONTH defined_for = "mn_ccap_eligible_child" reference = ( - # DHS-6441F standard maximum rates; Minn. Stat. 142E.17. + # DHS-6441F standard maximum rates. "https://edocs.dhs.state.mn.us/lfserver/Public/DHS-6441F-ENG#page=5", + # Minn. Stat. 142E.17 subd. 1(f), 2(b) — daily and weekly payment caps. + "https://www.revisor.mn.gov/statutes/cite/142E.17", ) def formula(person, period, parameters): @@ -59,17 +61,39 @@ def formula(person, period, parameters): ) lnl_hourly_rate = p.lnl_hourly[age_group][county_key] - # Convert each rate unit to a monthly maximum: weekly rates use the - # average weeks-per-month factor (RI precedent), daily rates use - # monthly attending days, and hourly rates use monthly attending hours. - days_per_month = person("childcare_attending_days_per_month", period.this_year) + hours_per_day = person("childcare_hours_per_day", period.this_year) hours_per_week = person("childcare_hours_per_week", period.this_year) - hours_per_month = hours_per_week * (WEEKS_IN_YEAR / MONTHS_IN_YEAR) + days_per_month = person("childcare_attending_days_per_month", period.this_year) + weeks_per_month = WEEKS_IN_YEAR / MONTHS_IN_YEAR + + # Minn. Stat. 142E.17 subd. 1(f): payment for one day of care cannot + # exceed the daily rate and payment for one week cannot exceed the + # weekly rate. Cap the hourly rate at the daily rate per day, then cap + # the week at the weekly rate. + capped_daily = min_(hourly_rate * hours_per_day, full_day_rate) + effective_hourly = where( + hours_per_day > 0, capped_daily / hours_per_day, hourly_rate + ) + weekly_from_hourly = min_(effective_hourly * hours_per_week, weekly_rate) + monthly_hourly = weekly_from_hourly * weeks_per_month - monthly_weekly = weekly_rate * (WEEKS_IN_YEAR / MONTHS_IN_YEAR) - monthly_full_day = full_day_rate * days_per_month - monthly_hourly = hourly_rate * hours_per_month - monthly_lnl = lnl_hourly_rate * hours_per_month + # A week of full-day care cannot exceed the weekly rate. + monthly_full_day = min_( + full_day_rate * days_per_month, weekly_rate * weeks_per_month + ) + monthly_weekly = weekly_rate * weeks_per_month + + # Subd. 2(b): legal non-licensed providers are paid hourly, capped at + # the maximum payable hours per day and per week. + lnl_daily_fraction = where( + hours_per_day > p.lnl_max_daily_hours, + p.lnl_max_daily_hours / hours_per_day, + 1, + ) + lnl_weekly_hours = min_( + hours_per_week * lnl_daily_fraction, p.lnl_max_weekly_hours + ) + monthly_lnl = lnl_hourly_rate * lnl_weekly_hours * weeks_per_month return select( [ From 5a877f012db54644985f6e692e230524ffe06969 Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 16 Jun 2026 15:33:22 -0400 Subject: [PATCH 7/8] Sync uv.lock self-version with pyproject after upstream merge Co-Authored-By: Claude Opus 4.8 (1M context) --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index 40b9494fc95..f450315e1d0 100644 --- a/uv.lock +++ b/uv.lock @@ -2974,7 +2974,7 @@ wheels = [ [[package]] name = "policyengine-us" -version = "1.721.1" +version = "1.729.5" source = { editable = "." } dependencies = [ { name = "microdf-python" }, From 0b8ee01405b6dc52d5a3dac486e48c68c3329ca4 Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 16 Jun 2026 16:35:07 -0400 Subject: [PATCH 8/8] Add MN CCAP homelessness exemption and fix self-employment loss offset - Exempt families experiencing homelessness from the authorized-activity requirement (CCAP Policy Manual 4.6.9), mirroring MA/SC/AL/KY CCAP via is_homeless. - Floor net self-employment at zero per person so a business loss cannot reduce wages or unearned income (Minn. Rules 3400.0170 subp. 4; manual 6.15.6); split self-employment into its own countable-income source list. - Cite CCAP Policy Manual 9.9 as the source of the rate-unit hour thresholds. - Add tests: homelessness exemption, self-employment loss floor (wage, unearned, cross-member, and allowed cross-business offset), and the activity term in the overall eligibility gate. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../ccap/income/countable_income/earned.yaml | 6 +- .../self_employment_sources.yaml | 15 ++++ .../ccap/rate_unit/daily_hours_threshold.yaml | 2 + .../rate_unit/weekly_hours_threshold.yaml | 2 + .../mn_ccap_activity_eligible.yaml | 24 ++++++ .../ccap/eligibility/mn_ccap_eligible.yaml | 26 +++++++ .../dcyf/ccap/mn_ccap_countable_income.yaml | 77 +++++++++++++++++++ .../eligibility/mn_ccap_activity_eligible.py | 11 ++- .../dcyf/ccap/mn_ccap_gross_earned_income.py | 8 +- 9 files changed, 166 insertions(+), 5 deletions(-) create mode 100644 policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/self_employment_sources.yaml diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml index b07e6c7e532..2b22034fd6f 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/earned.yaml @@ -4,10 +4,10 @@ values: # Wages and salaries (including overtime and bonuses), paid vacation and # sick leave, tips, commissions, severance based on accrued leave, and # taxable allowances are all captured by employment_income. Earned income - # is counted gross, before payroll deductions. + # is counted gross, before payroll deductions. Self-employment income is + # counted separately (see self_employment_sources) so that a net business + # loss is confined to self-employment and cannot reduce wages. - employment_income - - self_employment_income - - sstb_self_employment_income # The following earned income types are counted per Minn. Stat. 256P.06 # and manual section 6.6 but have no matching variable, so we do not track # them at the moment: diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/self_employment_sources.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/self_employment_sources.yaml new file mode 100644 index 00000000000..786ffb8aa06 --- /dev/null +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/income/countable_income/self_employment_sources.yaml @@ -0,0 +1,15 @@ +description: Minnesota counts these self-employment income sources under the Child Care Assistance Program. +values: + 2025-01-01: + - self_employment_income + - sstb_self_employment_income + +metadata: + unit: list + period: year + label: Minnesota CCAP countable self-employment income sources + reference: + - title: Minn. Stat. 256P.06, subd. 3 (earned income) + href: https://www.revisor.mn.gov/statutes/cite/256P.06 + - title: Minn. Rules 3400.0170, subp. 4 (gross annual income) + href: https://www.revisor.mn.gov/rules/3400.0170/ diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml index 7b07146d7fd..301e87debce 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/daily_hours_threshold.yaml @@ -7,5 +7,7 @@ metadata: period: day label: Minnesota CCAP full-day rate hours-per-day threshold reference: + - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of Payment Amounts) + href: https://www.dhs.state.mn.us/main/idcplg?IdcService=GET_DYNAMIC_CONVERSION&RevisionSelectionMethod=LatestReleased&dDocName=CCAP_02 - title: Minn. Stat. 142E.17, subd. 1 (hourly, full-day, and weekly rate basis) href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml index bb8f5187039..4481022189c 100644 --- a/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml +++ b/policyengine_us/parameters/gov/states/mn/dcyf/ccap/rate_unit/weekly_hours_threshold.yaml @@ -7,5 +7,7 @@ metadata: period: week label: Minnesota CCAP weekly rate hours-per-week threshold reference: + - title: Minnesota CCAP Policy Manual, section 9.9 (Determination of Payment Amounts) + href: https://www.dhs.state.mn.us/main/idcplg?IdcService=GET_DYNAMIC_CONVERSION&RevisionSelectionMethod=LatestReleased&dDocName=CCAP_02 - title: Minn. Stat. 142E.17, subd. 1 (hourly, full-day, and weekly rate basis) href: https://www.revisor.mn.gov/statutes/cite/142E.17 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml index 951c75db418..06e789d8a92 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.yaml @@ -295,3 +295,27 @@ output: # House arrest makes the second caretaker unable to provide care. mn_ccap_activity_eligible: true + +- name: Case 14, homeless family with no other authorized activity is activity eligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + is_homeless: true + output: + # Section 4.6.9: families experiencing homelessness are exempt from the + # activity requirement (same inactive caretaker as Case 2, but homeless). + mn_ccap_activity_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml index abe14d6abad..c1b20fa00d9 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_eligible.yaml @@ -89,3 +89,29 @@ state_code: MN output: mn_ccap_eligible: false + +- name: Case 5, no caretaker in an authorized activity makes the family ineligible. + period: 2026-01 + input: + people: + person1: + age: 30 + weekly_hours_worked_before_lsr: 0 + is_full_time_student: false + is_disabled: false + person2: + age: 4 + spm_units: + spm_unit: + members: [person1, person2] + mn_ccap_enrolled: false + is_tanf_enrolled: false + households: + household: + members: [person1, person2] + state_code: MN + output: + # Eligible child, no income (income eligible), and low assets (asset + # eligible), but the single caretaker is in no authorized activity, so the + # activity term alone makes the family ineligible. + mn_ccap_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml index e43f8f39e67..4501467b683 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mn/dcyf/ccap/mn_ccap_countable_income.yaml @@ -137,3 +137,80 @@ # Only the parent's 36,000/12 = 3,000 counts; the child's earnings are # excluded (section 6.6.1). mn_ccap_countable_income: 3_000 + +- name: Case 9, a self-employment loss does not offset wages. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + employment_income: 36_000 # 3,000/month wages + self_employment_income: -60_000 # business loss + households: + household: + members: [person1] + state_code: MN + output: + # Minn. Rules 3400.0170 subp. 4: a self-employment loss is confined to + # self-employment, so the -60,000 loss is floored at zero and the 36,000 + # wages still count. 36,000 / 12 = 3,000 per month. + mn_ccap_countable_income: 3_000 + +- name: Case 10, a self-employment loss does not offset unearned income. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + unemployment_compensation: 30_000 # 2,500/month unearned + self_employment_income: -10_000 # business loss + households: + household: + members: [person1] + state_code: MN + output: + # The floored loss (0) cannot erode unearned income. 30,000 / 12 = 2,500. + mn_ccap_countable_income: 2_500 + +- name: Case 11, one member's self-employment loss does not offset another's wages. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + employment_income: 36_000 # 3,000/month wages + person2: + age: 30 + self_employment_income: -60_000 # other adult's business loss + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + # Each person's self-employment total is floored at zero independently, so + # person2's loss cannot reduce person1's wages. 36,000 / 12 = 3,000. + mn_ccap_countable_income: 3_000 + +- name: Case 12, a self-employment loss offsets other self-employment income of the same person. + period: 2026-01 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 35 + self_employment_income: 20_000 # one business + sstb_self_employment_income: -8_000 # a different business at a loss + households: + household: + members: [person1] + state_code: MN + output: + # The allowed cross-business offset still works: max(20,000 - 8,000, 0) = + # 12,000 net self-employment. 12,000 / 12 = 1,000 per month. + mn_ccap_countable_income: 1_000 diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py index c787813c6a2..b1331672e31 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/eligibility/mn_ccap_activity_eligible.py @@ -50,6 +50,15 @@ def formula(spm_unit, period, parameters): # tracked, so the meets_ccdf_activity_test input covers them. on_mfip_or_dwp = spm_unit("is_tanf_enrolled", period) fallback = spm_unit("meets_ccdf_activity_test", period.this_year) + # Section 4.6.9: families experiencing homelessness are exempt from the + # activity requirement. We don't track the length of the exemption at the + # moment (the manual limits it to roughly the first three months), so a + # household flagged as homeless is treated as meeting the requirement for + # the full period. + is_homeless = spm_unit.household("is_homeless", period.this_year) return ( - on_mfip_or_dwp | fallback | (no_inactive_caretaker & has_active_caretaker) + on_mfip_or_dwp + | fallback + | is_homeless + | (no_inactive_caretaker & has_active_caretaker) ) diff --git a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py index 0df45a928e9..b88714a21be 100644 --- a/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py +++ b/policyengine_us/variables/gov/states/mn/dcyf/ccap/mn_ccap_gross_earned_income.py @@ -19,6 +19,12 @@ def formula(spm_unit, period, parameters): # and a dependent student's earnings, which we don't separately track. p = parameters(period).gov.states.mn.dcyf.ccap.income.countable_income person = spm_unit.members - earned = add(person, period, p.earned) + wages = add(person, period, p.earned) + # Minn. Rules 3400.0170, subp. 4 and CCAP Policy Manual section 6.15.6: + # a net self-employment loss may offset self-employment income from + # another business but cannot reduce wages, so floor the per-person + # self-employment total at zero before adding it to wages. + self_employment = add(person, period, p.self_employment_sources) + earned = wages + max_(self_employment, 0) is_child = person("is_child", period) return spm_unit.sum(earned) - spm_unit.sum(earned * is_child)