policyengine-us 1.409.0__py3-none-any.whl → 1.410.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of policyengine-us might be problematic. Click here for more details.

Files changed (89) hide show
  1. policyengine_us/parameters/gov/states/ma/eec/README.md +1 -0
  2. policyengine_us/parameters/gov/states/ma/eec/ccfa/README.md +1 -0
  3. policyengine_us/parameters/gov/states/ma/eec/ccfa/activity_requirements/weekly_hours.yaml +11 -0
  4. policyengine_us/parameters/gov/states/ma/eec/ccfa/activity_requirements/work_exempt_age.yaml +11 -0
  5. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/child.yaml +13 -0
  6. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/disabled_child.yaml +14 -0
  7. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/infant.yaml +11 -0
  8. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/school_age.yaml +11 -0
  9. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/toddler.yaml +11 -0
  10. policyengine_us/parameters/gov/states/ma/eec/ccfa/assets/limit.yaml +11 -0
  11. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/fee_percentages.yaml +69 -0
  12. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/income_ratio_increments.yaml +39 -0
  13. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/maximum_level.yaml +11 -0
  14. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/additional_child.yaml +11 -0
  15. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/first_child.yaml +11 -0
  16. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/second_child.yaml +11 -0
  17. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/countable_income/sources.yaml +30 -0
  18. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/smi_rate/new_applicants.yaml +15 -0
  19. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/smi_rate/redetermination.yaml +12 -0
  20. policyengine_us/parameters/gov/states/ma/eec/ccfa/qualified_immigration_statuses.yaml +19 -0
  21. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/metro_and_boston_metro.yaml +15 -0
  22. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/northeast.yaml +16 -0
  23. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/western_central_and_southeast.yaml +21 -0
  24. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/amount_ratio.yaml +23 -0
  25. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/center_based/early_education.yaml +46 -0
  26. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/center_based/school_age.yaml +59 -0
  27. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/age_threshold.yaml +12 -0
  28. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/older.yaml +24 -0
  29. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/younger.yaml +24 -0
  30. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/head_start_partner_and_kindergarten.yaml +55 -0
  31. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/informal_child_care/child_home.yaml +14 -0
  32. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/informal_child_care/relative_home.yaml +14 -0
  33. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccfa_base_copay.yaml +31 -0
  34. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccfa_total_copay.yaml +104 -0
  35. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccsp_copay_level.yaml +44 -0
  36. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_activity_eligible.yaml +111 -0
  37. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_asset_eligible.yaml +15 -0
  38. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible.yaml +44 -0
  39. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible_child.yaml +43 -0
  40. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_immigration_status_eligible.yaml +23 -0
  41. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_income_eligible.yaml +42 -0
  42. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/enum_variables/ma_ccfa_child_age_category.yaml +87 -0
  43. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa.yaml +249 -0
  44. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_fpg.yaml +26 -0
  45. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_maximum_benefit_amount.yaml +209 -0
  46. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_region.yaml +23 -0
  47. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_early_education_reimbursement.yaml +10 -0
  48. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_school_age_reimbursement.yaml +11 -0
  49. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_family_child_care_reimbursement.yaml +10 -0
  50. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_head_start_partner_and_kindergarten_reimbursement.yaml +10 -0
  51. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_informal_child_care_reimbursement.yaml +10 -0
  52. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_maximum_reimbursement.yaml +27 -0
  53. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_reimbursement_ratio.yaml +31 -0
  54. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_uncapped_daily_payment.yaml +8 -0
  55. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_base_copay.py +27 -0
  56. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_copay_level.py +30 -0
  57. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_total_copay.py +35 -0
  58. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_activity_eligible.py +43 -0
  59. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_asset_eligible.py +15 -0
  60. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible.py +34 -0
  61. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible_child.py +23 -0
  62. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_immigration_status_eligible.py +19 -0
  63. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_income_eligible.py +27 -0
  64. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa.py +25 -0
  65. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_care_provider_type.py +22 -0
  66. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_child_age_category.py +45 -0
  67. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_countable_income.py +15 -0
  68. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_enrolled.py +9 -0
  69. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_fpg.py +27 -0
  70. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_is_in_relatives_home_care.py +9 -0
  71. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_maximum_benefit_amount.py +19 -0
  72. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_region.py +45 -0
  73. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_schedule_type.py +21 -0
  74. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_child_care_subsidies.py +11 -0
  75. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_early_education_reimbursement.py +19 -0
  76. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_school_age_reimbursement.py +20 -0
  77. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_family_child_care_reimbursement.py +21 -0
  78. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_head_start_partner_and_kindergarten_reimbursement.py +17 -0
  79. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_informal_child_care_reimbursement.py +20 -0
  80. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_maximum_reimbursement.py +23 -0
  81. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_reimbursement_ratio.py +17 -0
  82. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_uncapped_daily_payment.py +66 -0
  83. policyengine_us/variables/household/expense/childcare/childcare_attending_days_per_month.py +9 -0
  84. policyengine_us/variables/household/expense/childcare/childcare_expenses.py +1 -1
  85. {policyengine_us-1.409.0.dist-info → policyengine_us-1.410.0.dist-info}/METADATA +1 -1
  86. {policyengine_us-1.409.0.dist-info → policyengine_us-1.410.0.dist-info}/RECORD +89 -6
  87. {policyengine_us-1.409.0.dist-info → policyengine_us-1.410.0.dist-info}/WHEEL +0 -0
  88. {policyengine_us-1.409.0.dist-info → policyengine_us-1.410.0.dist-info}/entry_points.txt +0 -0
  89. {policyengine_us-1.409.0.dist-info → policyengine_us-1.410.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,249 @@
1
+ - name: Case 1, eligible family.
2
+ period: 2025-01
3
+ input:
4
+ ma_ccfa_eligible: true
5
+ ma_ccfa_total_copay: 50
6
+ spm_unit_pre_subsidy_childcare_expenses: 100
7
+ ma_ccfa_maximum_reimbursement: 200
8
+ state_code: MA
9
+ output:
10
+ ma_ccfa: 50
11
+
12
+ - name: Case 2, eligible family.
13
+ period: 2025-01
14
+ input:
15
+ ma_ccfa_eligible: true
16
+ ma_ccfa_total_copay: 50
17
+ spm_unit_pre_subsidy_childcare_expenses: 180
18
+ ma_ccfa_maximum_reimbursement: 100
19
+ state_code: MA
20
+ output:
21
+ ma_ccfa: 100
22
+
23
+ - name: Case 3, integration test, family of 2, $1800 monthly income.
24
+ period: 2025-01
25
+ absolute_error_margin: 0.3
26
+ input:
27
+ people:
28
+ person1:
29
+ age: 40
30
+ employment_income: 1_800 * 12
31
+ weekly_hours_worked: 40
32
+ person2:
33
+ age: 1
34
+ is_tax_unit_dependent: true
35
+ ma_ccfa_child_age_category: INFANT
36
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
37
+ childcare_attending_days_per_month: 10
38
+ childcare_hours_per_day: 6
39
+ spm_units:
40
+ spm_unit:
41
+ members: [person1, person2]
42
+ spm_unit_pre_subsidy_childcare_expenses: 1_200 * 12
43
+ tax_units:
44
+ tax_unit:
45
+ members: [person1, person2]
46
+ households:
47
+ household:
48
+ members: [person1, person2]
49
+ state_code: MA
50
+ county_str: BERKSHIRE_COUNTY_MA
51
+ output:
52
+ ma_ccfa_total_copay: 3.88
53
+ ma_ccfa_maximum_reimbursement: [0, 1_050]
54
+ ma_ccfa_eligible: true
55
+ ma_ccfa: 1_050
56
+
57
+ - name: Case 4, TAFDC recipient integration test - automatic eligibility and zero copay.
58
+ period: 2025-01
59
+ absolute_error_margin: 0.5
60
+ input:
61
+ people:
62
+ person1:
63
+ age: 28
64
+ employment_income: 800 * 12
65
+ weekly_hours_worked: 20
66
+ person2:
67
+ age: 3
68
+ is_tax_unit_dependent: true
69
+ ma_ccfa_child_age_category: PRESCHOOL
70
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
71
+ childcare_attending_days_per_month: 22
72
+ childcare_hours_per_day: 8
73
+ person3:
74
+ age: 5
75
+ is_tax_unit_dependent: true
76
+ ma_ccfa_child_age_category: PRESCHOOL
77
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
78
+ childcare_attending_days_per_month: 22
79
+ childcare_hours_per_day: 8
80
+ spm_units:
81
+ spm_unit:
82
+ members: [person1, person2, person3]
83
+ spm_unit_pre_subsidy_childcare_expenses: 2_400 * 12
84
+ ma_tafdc_eligible: true
85
+ tax_units:
86
+ tax_unit:
87
+ members: [person1, person2, person3]
88
+ households:
89
+ household:
90
+ members: [person1, person2, person3]
91
+ state_code: MA
92
+ county_str: SUFFOLK_COUNTY_MA
93
+ output:
94
+ ma_ccfa_eligible: true
95
+ ma_ccfa_total_copay: 0
96
+ ma_ccfa_maximum_reimbursement: [0, 1_789.26, 1_789.26]
97
+ ma_ccfa: 3_578.52
98
+
99
+ - name: Case 5, two-parent family with multiple children, moderate income.
100
+ period: 2025-01
101
+ absolute_error_margin: 0.4
102
+ input:
103
+ people:
104
+ person1:
105
+ age: 35
106
+ employment_income: 2_000 * 12
107
+ weekly_hours_worked: 40
108
+ person2:
109
+ age: 32
110
+ employment_income: 1_500 * 12
111
+ weekly_hours_worked: 30
112
+ person3:
113
+ age: 1
114
+ is_tax_unit_dependent: true
115
+ ma_ccfa_child_age_category: INFANT
116
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
117
+ childcare_attending_days_per_month: 20
118
+ childcare_hours_per_day: 8
119
+ person4:
120
+ age: 4
121
+ is_tax_unit_dependent: true
122
+ ma_ccfa_child_age_category: PRESCHOOL
123
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
124
+ childcare_attending_days_per_month: 22
125
+ childcare_hours_per_day: 7
126
+ spm_units:
127
+ spm_unit:
128
+ members: [person1, person2, person3, person4]
129
+ spm_unit_pre_subsidy_childcare_expenses: 2_500 * 12
130
+ tax_units:
131
+ tax_unit:
132
+ members: [person1, person2, person3, person4]
133
+ households:
134
+ household:
135
+ members: [person1, person2, person3, person4]
136
+ state_code: MA
137
+ county_str: SUFFOLK_COUNTY_MA
138
+ output:
139
+ ma_ccfa_eligible: true
140
+ ma_ccfa_total_copay: 66.15
141
+ ma_ccfa: 4_215.46
142
+
143
+ - name: Case 6, family child care provider in Western Massachusetts.
144
+ period: 2025-01
145
+ absolute_error_margin: 0.3
146
+ input:
147
+ people:
148
+ person1:
149
+ age: 29
150
+ employment_income: 1_800 * 12
151
+ weekly_hours_worked: 35
152
+ person2:
153
+ age: 4
154
+ is_tax_unit_dependent: true
155
+ ma_ccfa_child_age_category: PRESCHOOL
156
+ ma_ccfa_care_provider_type: FAMILY_CHILD_CARE
157
+ childcare_attending_days_per_month: 20
158
+ childcare_hours_per_day: 7
159
+ spm_units:
160
+ spm_unit:
161
+ members: [person1, person2]
162
+ spm_unit_pre_subsidy_childcare_expenses: 1_000 * 12
163
+ tax_units:
164
+ tax_unit:
165
+ members: [person1, person2]
166
+ households:
167
+ household:
168
+ members: [person1, person2]
169
+ state_code: MA
170
+ county_str: BERKSHIRE_COUNTY_MA
171
+ output:
172
+ ma_ccfa_eligible: true
173
+ ma_ccfa_maximum_reimbursement: [0, 987.8]
174
+ ma_ccfa: 987.8
175
+
176
+ - name: Case 7, senior caregiver exempt from activity requirements.
177
+ period: 2025-01
178
+ absolute_error_margin: 0.3
179
+ input:
180
+ people:
181
+ person1:
182
+ age: 67
183
+ employment_income: 1_500 * 12
184
+ weekly_hours_worked: 0
185
+ person2:
186
+ age: 6
187
+ is_tax_unit_dependent: true
188
+ ma_ccfa_child_age_category: SCHOOL_AGE
189
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_SCHOOL_AGE
190
+ childcare_attending_days_per_month: 18
191
+ childcare_hours_per_day: 6
192
+ spm_units:
193
+ spm_unit:
194
+ members: [person1, person2]
195
+ spm_unit_pre_subsidy_childcare_expenses: 950 * 12
196
+ tax_units:
197
+ tax_unit:
198
+ members: [person1, person2]
199
+ households:
200
+ household:
201
+ members: [person1, person2]
202
+ state_code: MA
203
+ county_str: MIDDLESEX_COUNTY_MA
204
+ output:
205
+ ma_ccfa_eligible: true
206
+ ma_ccfa_activity_eligible: true
207
+ ma_ccfa: 950.58
208
+
209
+ - name: Case 8, income at edge of new applicant limit (50% SMI).
210
+ period: 2025-01
211
+ absolute_error_margin: 0.01
212
+ input:
213
+ people:
214
+ person1:
215
+ age: 30
216
+ employment_income: 5_000 * 12
217
+ weekly_hours_worked: 35
218
+ person2:
219
+ age: 2
220
+ is_tax_unit_dependent: true
221
+ ma_ccfa_child_age_category: TODDLER
222
+ ma_ccfa_care_provider_type: FAMILY_CHILD_CARE
223
+ childcare_attending_days_per_month: 22
224
+ childcare_hours_per_day: 8
225
+ person3:
226
+ age: 4
227
+ is_tax_unit_dependent: true
228
+ ma_ccfa_child_age_category: PRESCHOOL
229
+ ma_ccfa_care_provider_type: FAMILY_CHILD_CARE
230
+ childcare_attending_days_per_month: 20
231
+ childcare_hours_per_day: 7
232
+ spm_units:
233
+ spm_unit:
234
+ members: [person1, person2, person3]
235
+ spm_unit_pre_subsidy_childcare_expenses: 1_600 * 12
236
+ ma_ccfa_enrolled: false
237
+ tax_units:
238
+ tax_unit:
239
+ members: [person1, person2, person3]
240
+ households:
241
+ household:
242
+ members: [person1, person2, person3]
243
+ state_code: MA
244
+ county_str: HAMPSHIRE_COUNTY_MA
245
+ output:
246
+ ma_ccfa_eligible: true
247
+ ma_ccfa_income_eligible: true
248
+ ma_ccfa_total_copay: 363.16
249
+ ma_ccfa: 2_074.38
@@ -0,0 +1,26 @@
1
+ - name: Case 1, family of 2.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.5
4
+ input:
5
+ spm_unit_size: 2
6
+ state_code: MA
7
+ output:
8
+ ma_ccfa_fpg: 1_703
9
+
10
+ - name: Case 2, family of 3.
11
+ period: 2025-01
12
+ absolute_error_margin: 0.4
13
+ input:
14
+ spm_unit_size: 3
15
+ state_code: MA
16
+ output:
17
+ ma_ccfa_fpg: 2_152
18
+
19
+ - name: Case 3, family of 4.
20
+ period: 2025-01
21
+ absolute_error_margin: 0.2
22
+ input:
23
+ spm_unit_size: 4
24
+ state_code: MA
25
+ output:
26
+ ma_ccfa_fpg: 2_600
@@ -0,0 +1,209 @@
1
+ - name: No benefit when not eligible for CCFA
2
+ period: 2025-01
3
+ input:
4
+ ma_ccfa_eligible: false
5
+ state_code: MA
6
+ output:
7
+ ma_ccfa_maximum_benefit_amount: 0
8
+
9
+ - name: Full reimbursement with zero copay
10
+ period: 2025-01
11
+ input:
12
+ people:
13
+ parent:
14
+ age: 30
15
+ child:
16
+ age: 3
17
+ ma_ccfa_maximum_reimbursement: 1_200
18
+ spm_units:
19
+ spm_unit:
20
+ members: [parent, child]
21
+ ma_ccfa_eligible: true
22
+ ma_ccfa_total_copay: 0
23
+ households:
24
+ household:
25
+ state_code: MA
26
+ members: [parent, child]
27
+ output:
28
+ ma_ccfa_maximum_benefit_amount: 1_200
29
+
30
+ - name: Reduced benefit with copay
31
+ period: 2025-01
32
+ input:
33
+ people:
34
+ parent:
35
+ age: 30
36
+ child:
37
+ age: 3
38
+ ma_ccfa_maximum_reimbursement: 1_200
39
+ spm_units:
40
+ spm_unit:
41
+ members: [parent, child]
42
+ ma_ccfa_eligible: true
43
+ ma_ccfa_total_copay: 300
44
+ households:
45
+ household:
46
+ state_code: MA
47
+ members: [parent, child]
48
+ output:
49
+ ma_ccfa_maximum_benefit_amount: 900
50
+
51
+ - name: Multiple children with different reimbursement rates
52
+ period: 2025-01
53
+ input:
54
+ people:
55
+ parent:
56
+ age: 35
57
+ infant:
58
+ age: 1
59
+ ma_ccfa_maximum_reimbursement: 1_500
60
+ toddler:
61
+ age: 3
62
+ ma_ccfa_maximum_reimbursement: 1_200
63
+ school_age:
64
+ age: 8
65
+ ma_ccfa_maximum_reimbursement: 800
66
+ spm_units:
67
+ spm_unit:
68
+ members: [parent, infant, toddler, school_age]
69
+ ma_ccfa_eligible: true
70
+ ma_ccfa_total_copay: 400
71
+ households:
72
+ household:
73
+ state_code: MA
74
+ members: [parent, infant, toddler, school_age]
75
+ output:
76
+ ma_ccfa_maximum_benefit_amount: 3_100 # (1500 + 1200 + 800) - 400
77
+
78
+ - name: Zero benefit when copay exceeds reimbursement
79
+ period: 2025-01
80
+ input:
81
+ people:
82
+ parent:
83
+ age: 30
84
+ child:
85
+ age: 4
86
+ ma_ccfa_maximum_reimbursement: 500
87
+ spm_units:
88
+ spm_unit:
89
+ members: [parent, child]
90
+ ma_ccfa_eligible: true
91
+ ma_ccfa_total_copay: 600
92
+ households:
93
+ household:
94
+ state_code: MA
95
+ members: [parent, child]
96
+ output:
97
+ ma_ccfa_maximum_benefit_amount: 0 # max(500 - 600, 0) = 0
98
+
99
+ - name: TAFDC recipient with categorical eligibility and no copay
100
+ period: 2025-01
101
+ input:
102
+ people:
103
+ parent:
104
+ age: 28
105
+ child1:
106
+ age: 2
107
+ ma_ccfa_maximum_reimbursement: 1_400
108
+ child2:
109
+ age: 5
110
+ ma_ccfa_maximum_reimbursement: 1_100
111
+ spm_units:
112
+ spm_unit:
113
+ members: [parent, child1, child2]
114
+ ma_ccfa_eligible: true
115
+ ma_tafdc_eligible: true
116
+ ma_ccfa_total_copay: 0 # TAFDC recipients typically have no copay
117
+ households:
118
+ household:
119
+ state_code: MA
120
+ members: [parent, child1, child2]
121
+ output:
122
+ ma_ccfa_maximum_benefit_amount: 2_500 # 1400 + 1100
123
+
124
+ - name: High income family with maximum copay
125
+ period: 2025-01
126
+ input:
127
+ people:
128
+ parent1:
129
+ age: 40
130
+ parent2:
131
+ age: 38
132
+ child:
133
+ age: 6
134
+ ma_ccfa_maximum_reimbursement: 1_000
135
+ spm_units:
136
+ spm_unit:
137
+ members: [parent1, parent2, child]
138
+ ma_ccfa_eligible: true
139
+ ma_ccfa_total_copay: 800
140
+ households:
141
+ household:
142
+ state_code: MA
143
+ members: [parent1, parent2, child]
144
+ output:
145
+ ma_ccfa_maximum_benefit_amount: 200 # 1000 - 800
146
+
147
+ - name: Single parent with infant - higher reimbursement rate
148
+ period: 2025-01
149
+ input:
150
+ people:
151
+ parent:
152
+ age: 25
153
+ infant:
154
+ age: 0.5 # 6 months old
155
+ ma_ccfa_maximum_reimbursement: 1_800 # Infants typically have higher rates
156
+ spm_units:
157
+ spm_unit:
158
+ members: [parent, infant]
159
+ ma_ccfa_eligible: true
160
+ ma_ccfa_total_copay: 150
161
+ households:
162
+ household:
163
+ state_code: MA
164
+ members: [parent, infant]
165
+ output:
166
+ ma_ccfa_maximum_benefit_amount: 1_650 # 1800 - 150
167
+
168
+ - name: Family with disabled child - extended age eligibility
169
+ period: 2025-01
170
+ input:
171
+ people:
172
+ parent:
173
+ age: 45
174
+ disabled_child:
175
+ age: 14
176
+ is_disabled: true
177
+ ma_ccfa_maximum_reimbursement: 1_300
178
+ spm_units:
179
+ spm_unit:
180
+ members: [parent, disabled_child]
181
+ ma_ccfa_eligible: true
182
+ ma_ccfa_total_copay: 250
183
+ households:
184
+ household:
185
+ state_code: MA
186
+ members: [parent, disabled_child]
187
+ output:
188
+ ma_ccfa_maximum_benefit_amount: 1_050 # 1300 - 250
189
+
190
+ - name: Edge case - exactly zero after copay
191
+ period: 2025-01
192
+ input:
193
+ people:
194
+ parent:
195
+ age: 32
196
+ child:
197
+ age: 7
198
+ ma_ccfa_maximum_reimbursement: 750
199
+ spm_units:
200
+ spm_unit:
201
+ members: [parent, child]
202
+ ma_ccfa_eligible: true
203
+ ma_ccfa_total_copay: 750
204
+ households:
205
+ household:
206
+ state_code: MA
207
+ members: [parent, child]
208
+ output:
209
+ ma_ccfa_maximum_benefit_amount: 0 # 750 - 750 = 0
@@ -0,0 +1,23 @@
1
+ - name: Case 1
2
+ period: 2024-01
3
+ input:
4
+ county_str: BERKSHIRE_COUNTY_MA
5
+ state_code: MA
6
+ output:
7
+ ma_ccfa_region: WESTERN_CENTRAL_AND_SOUTHEAST
8
+
9
+ - name: Case 2
10
+ period: 2024-01
11
+ input:
12
+ county_str: ESSEX_COUNTY_MA
13
+ state_code: MA
14
+ output:
15
+ ma_ccfa_region: NORTHEAST
16
+
17
+ - name: Case 3
18
+ period: 2024-01
19
+ input:
20
+ county_str: SUFFOLK_COUNTY_MA
21
+ state_code: MA
22
+ output:
23
+ ma_ccfa_region: METRO_AND_BOSTON_METRO
@@ -0,0 +1,10 @@
1
+ - name: Case 1, region 1, infant.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ age: 0.5
6
+ county_str: BERKSHIRE_COUNTY_MA
7
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
8
+ state_code: MA
9
+ output:
10
+ ma_ccfa_center_based_early_education_reimbursement: 105
@@ -0,0 +1,11 @@
1
+ - name: Case 1, region 1, school age, full day.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ age: 6
6
+ county_str: BERKSHIRE_COUNTY_MA
7
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_SCHOOL_AGE
8
+ ma_ccfa_schedule_type: FULL_DAY
9
+ state_code: MA
10
+ output:
11
+ ma_ccfa_center_based_school_age_reimbursement: 49.69
@@ -0,0 +1,10 @@
1
+ - name: Case 1, region 1, 2 years old.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ county_str: BERKSHIRE_COUNTY_MA
6
+ ma_ccfa_care_provider_type: FAMILY_CHILD_CARE
7
+ age: 2
8
+ state_code: MA
9
+ output:
10
+ ma_ccfa_family_child_care_reimbursement: 49.39
@@ -0,0 +1,10 @@
1
+ - name: Case 1, region 1, full day.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ county_str: BERKSHIRE_COUNTY_MA
6
+ ma_ccfa_care_provider_type: HEAD_START_PARTNER_AND_KINDERGARTEN
7
+ ma_ccfa_schedule_type: FULL_DAY
8
+ state_code: MA
9
+ output:
10
+ ma_ccfa_head_start_partner_and_kindergarten_reimbursement: 58.09
@@ -0,0 +1,10 @@
1
+ - name: Case 1, informal child care in relative home.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ county_str: BERKSHIRE_COUNTY_MA
6
+ ma_ccfa_care_provider_type: INFORMAL_CHILD_CARE
7
+ state_code: MA
8
+ ma_ccfa_is_in_relatives_home_care: true
9
+ output:
10
+ ma_ccfa_informal_child_care_reimbursement: 24.57
@@ -0,0 +1,27 @@
1
+ - name: Case 1, region 1, center based care school age full day for 10 days.
2
+ period: 2025-01
3
+ absolute_error_margin: 0.2
4
+ input:
5
+ county_str: BERKSHIRE_COUNTY_MA
6
+ ma_ccfa_child_age_category: SCHOOL_AGE
7
+ ma_ccfa_schedule_type: FULL_DAY
8
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_SCHOOL_AGE
9
+ childcare_attending_days_per_month: 10
10
+ childcare_hours_per_day: 6
11
+ state_code: MA
12
+ output:
13
+ ma_ccfa_maximum_reimbursement: 496.9
14
+
15
+ - name: Case 2, region 1, informal child care full day for 10 days.
16
+ period: 2025-01
17
+ absolute_error_margin: 0.2
18
+ input:
19
+ county_str: BERKSHIRE_COUNTY_MA
20
+ ma_ccfa_care_provider_type: INFORMAL_CHILD_CARE
21
+ ma_ccfa_is_in_relatives_home_care: true
22
+ childcare_attending_days_per_month: 10
23
+ childcare_hours_per_day: 6
24
+ state_code: MA
25
+ output:
26
+ ma_ccfa_uncapped_daily_payment: 24.57
27
+ ma_ccfa_maximum_reimbursement: 245.7
@@ -0,0 +1,31 @@
1
+ - name: Case 1, in 2024, 6 hours per day, part time.
2
+ period: 2024-01
3
+ input:
4
+ childcare_hours_per_day: 6
5
+ state_code: MA
6
+ output:
7
+ ma_ccfa_reimbursement_ratio: 0.6
8
+
9
+ - name: Case 2, in 2024, 7 hours per day, full time.
10
+ period: 2024-01
11
+ input:
12
+ childcare_hours_per_day: 7
13
+ state_code: MA
14
+ output:
15
+ ma_ccfa_reimbursement_ratio: 1
16
+
17
+ - name: Case 3, in 2025, 6 hours per day, full time.
18
+ period: 2025-01
19
+ input:
20
+ childcare_hours_per_day: 6
21
+ state_code: MA
22
+ output:
23
+ ma_ccfa_reimbursement_ratio: 1
24
+
25
+ - name: Case 4, in 2025, 5 hours per day, part time.
26
+ period: 2025-01
27
+ input:
28
+ childcare_hours_per_day: 5
29
+ state_code: MA
30
+ output:
31
+ ma_ccfa_reimbursement_ratio: 0.6
@@ -0,0 +1,8 @@
1
+ - name: Case 1.
2
+ period: 2024-01
3
+ input:
4
+ ma_ccfa_center_based_early_education_reimbursement: 105
5
+ ma_ccfa_care_provider_type: CENTER_BASED_CARE_EARLY_EDUCATION
6
+ state_code: MA
7
+ output:
8
+ ma_ccfa_uncapped_daily_payment: 105
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ma_ccfa_base_copay(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ unit = USD
8
+ label = "Massachusetts Child Care Financial Assistance (CCFA) parent base copay"
9
+ definition_period = MONTH
10
+ defined_for = StateCode.MA
11
+ reference = "https://www.mass.gov/doc/eecs-financial-assistance-policy-guide-february-1-2022/download#page=76"
12
+
13
+ def formula(spm_unit, period, parameters):
14
+ p = parameters(period).gov.states.ma.eec.ccfa.copay.fee_level
15
+
16
+ # Step 1: Get the family's copay level
17
+ copay_level = spm_unit("ma_ccfa_copay_level", period)
18
+
19
+ # Step 2: Get the fee percentage for that level
20
+ fee_percentage = p.fee_percentages[copay_level]
21
+
22
+ # Step 3: Calculate fee on income above poverty
23
+ income = spm_unit("ma_ccfa_countable_income", period)
24
+ fpg = spm_unit("ma_ccfa_fpg", period)
25
+ income_above_poverty_level = max_(income - fpg, 0)
26
+
27
+ return income_above_poverty_level * fee_percentage
@@ -0,0 +1,30 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ma_ccfa_copay_level(Variable):
5
+ value_type = int
6
+ entity = SPMUnit
7
+ label = "Massachusetts CCSP copay level"
8
+ definition_period = MONTH
9
+ defined_for = StateCode.MA
10
+ reference = "https://www.mass.gov/doc/parent-fee-chart-fy2025/download"
11
+
12
+ def formula(spm_unit, period, parameters):
13
+ p = parameters(period).gov.states.ma.eec.ccfa.copay.fee_level
14
+ income = spm_unit("ma_ccfa_countable_income", period)
15
+ family_size = spm_unit("spm_unit_size", period)
16
+ capped_size = np.clip(family_size, 2, 12)
17
+ fpg = spm_unit("ma_ccfa_fpg", period)
18
+
19
+ # Calculate income as ratio of FPG
20
+ income_ratio = income / fpg
21
+
22
+ # Get the increment for this family size
23
+ ratio_increment = p.income_ratio_increments[capped_size]
24
+
25
+ # Calculate how many increments above 100% FPG the income is.
26
+ levels_above_fpg = max_(0, income_ratio - 1) / ratio_increment
27
+
28
+ fee_level = 1 + np.ceil(levels_above_fpg)
29
+
30
+ return min_(fee_level, p.maximum_level)