policyengine-us 1.409.0__py3-none-any.whl → 1.411.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 (101) hide show
  1. policyengine_us/parameters/gov/contrib/aca/ptc_additional_bracket/brackets.yaml +42 -0
  2. policyengine_us/parameters/gov/contrib/aca/ptc_additional_bracket/in_effect.yaml +10 -0
  3. policyengine_us/parameters/gov/contrib/aca/ptc_additional_bracket/income_eligibility.yaml +28 -0
  4. policyengine_us/parameters/gov/contrib/aca/ptc_simplified_bracket/brackets.yaml +28 -0
  5. policyengine_us/parameters/gov/contrib/aca/ptc_simplified_bracket/in_effect.yaml +10 -0
  6. policyengine_us/parameters/gov/contrib/aca/ptc_simplified_bracket/income_eligibility.yaml +28 -0
  7. policyengine_us/parameters/gov/states/ma/eec/README.md +1 -0
  8. policyengine_us/parameters/gov/states/ma/eec/ccfa/README.md +1 -0
  9. policyengine_us/parameters/gov/states/ma/eec/ccfa/activity_requirements/weekly_hours.yaml +11 -0
  10. policyengine_us/parameters/gov/states/ma/eec/ccfa/activity_requirements/work_exempt_age.yaml +11 -0
  11. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/child.yaml +13 -0
  12. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/disabled_child.yaml +14 -0
  13. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/infant.yaml +11 -0
  14. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/school_age.yaml +11 -0
  15. policyengine_us/parameters/gov/states/ma/eec/ccfa/age_threshold/toddler.yaml +11 -0
  16. policyengine_us/parameters/gov/states/ma/eec/ccfa/assets/limit.yaml +11 -0
  17. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/fee_percentages.yaml +69 -0
  18. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/income_ratio_increments.yaml +39 -0
  19. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/fee_level/maximum_level.yaml +11 -0
  20. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/additional_child.yaml +11 -0
  21. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/first_child.yaml +11 -0
  22. policyengine_us/parameters/gov/states/ma/eec/ccfa/copay/ratio/second_child.yaml +11 -0
  23. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/countable_income/sources.yaml +30 -0
  24. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/smi_rate/new_applicants.yaml +15 -0
  25. policyengine_us/parameters/gov/states/ma/eec/ccfa/income/smi_rate/redetermination.yaml +12 -0
  26. policyengine_us/parameters/gov/states/ma/eec/ccfa/qualified_immigration_statuses.yaml +19 -0
  27. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/metro_and_boston_metro.yaml +15 -0
  28. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/northeast.yaml +16 -0
  29. policyengine_us/parameters/gov/states/ma/eec/ccfa/region/western_central_and_southeast.yaml +21 -0
  30. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/amount_ratio.yaml +23 -0
  31. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/center_based/early_education.yaml +46 -0
  32. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/center_based/school_age.yaml +59 -0
  33. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/age_threshold.yaml +12 -0
  34. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/older.yaml +24 -0
  35. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/family_child_care/younger.yaml +24 -0
  36. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/head_start_partner_and_kindergarten.yaml +55 -0
  37. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/informal_child_care/child_home.yaml +14 -0
  38. policyengine_us/parameters/gov/states/ma/eec/ccfa/reimbursement_rates/informal_child_care/relative_home.yaml +14 -0
  39. policyengine_us/reforms/aca/__init__.py +6 -0
  40. policyengine_us/reforms/aca/aca_ptc_additional_bracket.py +126 -0
  41. policyengine_us/reforms/aca/aca_ptc_simplified_bracket.py +127 -0
  42. policyengine_us/reforms/reforms.py +12 -0
  43. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccfa_base_copay.yaml +31 -0
  44. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccfa_total_copay.yaml +104 -0
  45. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/copay/ma_ccsp_copay_level.yaml +44 -0
  46. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_activity_eligible.yaml +111 -0
  47. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_asset_eligible.yaml +15 -0
  48. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible.yaml +44 -0
  49. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible_child.yaml +43 -0
  50. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_immigration_status_eligible.yaml +23 -0
  51. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_income_eligible.yaml +42 -0
  52. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/enum_variables/ma_ccfa_child_age_category.yaml +87 -0
  53. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa.yaml +249 -0
  54. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_fpg.yaml +26 -0
  55. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_maximum_benefit_amount.yaml +209 -0
  56. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/ma_ccfa_region.yaml +23 -0
  57. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_early_education_reimbursement.yaml +10 -0
  58. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_school_age_reimbursement.yaml +11 -0
  59. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_family_child_care_reimbursement.yaml +10 -0
  60. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_head_start_partner_and_kindergarten_reimbursement.yaml +10 -0
  61. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_informal_child_care_reimbursement.yaml +10 -0
  62. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_maximum_reimbursement.yaml +27 -0
  63. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_reimbursement_ratio.yaml +31 -0
  64. policyengine_us/tests/policy/baseline/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_uncapped_daily_payment.yaml +8 -0
  65. policyengine_us/tests/policy/contrib/aca/ptc_additional_bracket.yaml +117 -0
  66. policyengine_us/tests/policy/contrib/aca/ptc_simplified_bracket.yaml +117 -0
  67. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_base_copay.py +27 -0
  68. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_copay_level.py +30 -0
  69. policyengine_us/variables/gov/states/ma/eec/ccfa/copay/ma_ccfa_total_copay.py +35 -0
  70. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_activity_eligible.py +43 -0
  71. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_asset_eligible.py +15 -0
  72. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible.py +34 -0
  73. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_eligible_child.py +23 -0
  74. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_immigration_status_eligible.py +19 -0
  75. policyengine_us/variables/gov/states/ma/eec/ccfa/eligibility/ma_ccfa_income_eligible.py +27 -0
  76. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa.py +25 -0
  77. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_care_provider_type.py +22 -0
  78. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_child_age_category.py +45 -0
  79. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_countable_income.py +15 -0
  80. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_enrolled.py +9 -0
  81. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_fpg.py +27 -0
  82. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_is_in_relatives_home_care.py +9 -0
  83. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_maximum_benefit_amount.py +19 -0
  84. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_region.py +45 -0
  85. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_ccfa_schedule_type.py +21 -0
  86. policyengine_us/variables/gov/states/ma/eec/ccfa/ma_child_care_subsidies.py +11 -0
  87. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_early_education_reimbursement.py +19 -0
  88. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_center_based_school_age_reimbursement.py +20 -0
  89. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_family_child_care_reimbursement.py +21 -0
  90. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_head_start_partner_and_kindergarten_reimbursement.py +17 -0
  91. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_informal_child_care_reimbursement.py +20 -0
  92. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_maximum_reimbursement.py +23 -0
  93. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_reimbursement_ratio.py +17 -0
  94. policyengine_us/variables/gov/states/ma/eec/ccfa/reimbursement/ma_ccfa_uncapped_daily_payment.py +66 -0
  95. policyengine_us/variables/household/expense/childcare/childcare_attending_days_per_month.py +9 -0
  96. policyengine_us/variables/household/expense/childcare/childcare_expenses.py +1 -1
  97. {policyengine_us-1.409.0.dist-info → policyengine_us-1.411.0.dist-info}/METADATA +1 -1
  98. {policyengine_us-1.409.0.dist-info → policyengine_us-1.411.0.dist-info}/RECORD +101 -7
  99. {policyengine_us-1.409.0.dist-info → policyengine_us-1.411.0.dist-info}/WHEEL +0 -0
  100. {policyengine_us-1.409.0.dist-info → policyengine_us-1.411.0.dist-info}/entry_points.txt +0 -0
  101. {policyengine_us-1.409.0.dist-info → policyengine_us-1.411.0.dist-info}/licenses/LICENSE +0 -0
@@ -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,117 @@
1
+ - name: Single filer at 250% FPL - uses baseline value
2
+ period: 2026
3
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
4
+ absolute_error_margin: 0.00001
5
+ input:
6
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
7
+ aca_magi_fraction: 2.5
8
+ output:
9
+ aca_ptc_phase_out_rate: 0.04
10
+
11
+ - name: Single filer at 300% FPL - uses baseline value
12
+ period: 2026
13
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
14
+ absolute_error_margin: 0.00001
15
+ input:
16
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
17
+ aca_magi_fraction: 3.0
18
+ output:
19
+ aca_ptc_phase_out_rate: 0.06
20
+
21
+ - name: Single filer at 400% FPL - linear increase to 10%
22
+ period: 2026
23
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
24
+ absolute_error_margin: 0.00001
25
+ input:
26
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
27
+ aca_magi_fraction: 4.0
28
+ output:
29
+ aca_ptc_phase_out_rate: 0.10
30
+
31
+ - name: Single filer at 500% FPL - linear increase to 14%
32
+ period: 2026
33
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
34
+ absolute_error_margin: 0.00001
35
+ input:
36
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
37
+ aca_magi_fraction: 5.0
38
+ output:
39
+ aca_ptc_phase_out_rate: 0.14
40
+
41
+ - name: Single filer at 600% FPL - linear increase to 18%
42
+ period: 2026
43
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
44
+ absolute_error_margin: 0.00001
45
+ input:
46
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
47
+ aca_magi_fraction: 6.0
48
+ output:
49
+ aca_ptc_phase_out_rate: 0.18
50
+
51
+ - name: Single filer at 350% FPL - interpolated value
52
+ period: 2026
53
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
54
+ absolute_error_margin: 0.00001
55
+ input:
56
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
57
+ aca_magi_fraction: 3.5
58
+ output:
59
+ aca_ptc_phase_out_rate: 0.08
60
+
61
+ - name: Baseline comparison at 400% FPL - shows difference
62
+ period: 2026
63
+ absolute_error_margin: 0.00001
64
+ input:
65
+ aca_magi_fraction: 4.0
66
+ output:
67
+ aca_ptc_phase_out_rate: 0.0996
68
+
69
+ - name: Edge case - Lower boundary at 0% FPL
70
+ period: 2026
71
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
72
+ absolute_error_margin: 0.00001
73
+ input:
74
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
75
+ aca_magi_fraction: 0.0
76
+ output:
77
+ aca_ptc_phase_out_rate: 0.0
78
+
79
+ - name: Edge case - Lower boundary at 150% FPL (first bracket threshold)
80
+ period: 2026
81
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
82
+ absolute_error_margin: 0.00001
83
+ input:
84
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
85
+ aca_magi_fraction: 1.5
86
+ output:
87
+ aca_ptc_phase_out_rate: 0.0
88
+
89
+ - name: Edge case - First positive bracket at 200% FPL
90
+ period: 2026
91
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
92
+ absolute_error_margin: 0.00001
93
+ input:
94
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
95
+ aca_magi_fraction: 2.0
96
+ output:
97
+ aca_ptc_phase_out_rate: 0.02
98
+
99
+ - name: Edge case - Upper boundary at 1000% FPL (highest defined bracket)
100
+ period: 2026
101
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
102
+ absolute_error_margin: 0.00001
103
+ input:
104
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
105
+ aca_magi_fraction: 10.0
106
+ output:
107
+ aca_ptc_phase_out_rate: 0.34
108
+
109
+ - name: Edge case - Interpolation between 1.5 and 2.0 at 175% FPL
110
+ period: 2026
111
+ reforms: policyengine_us.reforms.aca.aca_ptc_additional_bracket.aca_ptc_additional_bracket
112
+ absolute_error_margin: 0.00001
113
+ input:
114
+ gov.contrib.aca.ptc_additional_bracket.in_effect: true
115
+ aca_magi_fraction: 1.75
116
+ output:
117
+ aca_ptc_phase_out_rate: 0.01
@@ -0,0 +1,117 @@
1
+ - name: Single filer at 100% FPL - starts at 0%
2
+ period: 2028
3
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
4
+ absolute_error_margin: 0.00001
5
+ input:
6
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
7
+ aca_magi_fraction: 1.0
8
+ output:
9
+ aca_ptc_phase_out_rate: 0.0
10
+
11
+ - name: Single filer at 200% FPL - linear increase to 4%
12
+ period: 2028
13
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
14
+ absolute_error_margin: 0.00001
15
+ input:
16
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
17
+ aca_magi_fraction: 2.0
18
+ output:
19
+ aca_ptc_phase_out_rate: 0.04
20
+
21
+ - name: Single filer at 300% FPL - linear increase to 8%
22
+ period: 2028
23
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
24
+ absolute_error_margin: 0.00001
25
+ input:
26
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
27
+ aca_magi_fraction: 3.0
28
+ output:
29
+ aca_ptc_phase_out_rate: 0.08
30
+
31
+ - name: Single filer at 400% FPL - linear increase to 12%
32
+ period: 2028
33
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
34
+ absolute_error_margin: 0.00001
35
+ input:
36
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
37
+ aca_magi_fraction: 4.0
38
+ output:
39
+ aca_ptc_phase_out_rate: 0.12
40
+
41
+ - name: Single filer at 500% FPL - linear increase to 16%
42
+ period: 2028
43
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
44
+ absolute_error_margin: 0.00001
45
+ input:
46
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
47
+ aca_magi_fraction: 5.0
48
+ output:
49
+ aca_ptc_phase_out_rate: 0.16
50
+
51
+ - name: Single filer at 600% FPL - linear increase to 20%
52
+ period: 2028
53
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
54
+ absolute_error_margin: 0.00001
55
+ input:
56
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
57
+ aca_magi_fraction: 6.0
58
+ output:
59
+ aca_ptc_phase_out_rate: 0.20
60
+
61
+ - name: Single filer at 150% FPL - interpolated value
62
+ period: 2028
63
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
64
+ absolute_error_margin: 0.00001
65
+ input:
66
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
67
+ aca_magi_fraction: 1.5
68
+ output:
69
+ aca_ptc_phase_out_rate: 0.02
70
+
71
+ - name: Baseline comparison at 400% FPL - shows difference
72
+ period: 2028
73
+ absolute_error_margin: 0.00001
74
+ input:
75
+ aca_magi_fraction: 4.0
76
+ output:
77
+ aca_ptc_phase_out_rate: 0.0996
78
+
79
+ - name: Edge case - Lower boundary at 0% FPL
80
+ period: 2028
81
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
82
+ absolute_error_margin: 0.00001
83
+ input:
84
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
85
+ aca_magi_fraction: 0.0
86
+ output:
87
+ aca_ptc_phase_out_rate: 0.0
88
+
89
+ - name: Edge case - Upper boundary at 1000% FPL
90
+ period: 2028
91
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
92
+ absolute_error_margin: 0.00001
93
+ input:
94
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
95
+ aca_magi_fraction: 10.0
96
+ output:
97
+ aca_ptc_phase_out_rate: 0.36
98
+
99
+ - name: Edge case - Interpolation between 1.0 and 2.0 at 175% FPL
100
+ period: 2028
101
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
102
+ absolute_error_margin: 0.00001
103
+ input:
104
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
105
+ aca_magi_fraction: 1.75
106
+ output:
107
+ aca_ptc_phase_out_rate: 0.03
108
+
109
+ - name: Comparison with additional bracket reform at 600% FPL
110
+ period: 2028
111
+ reforms: policyengine_us.reforms.aca.aca_ptc_simplified_bracket.aca_ptc_simplified_bracket
112
+ absolute_error_margin: 0.00001
113
+ input:
114
+ gov.contrib.aca.ptc_simplified_bracket.in_effect: true
115
+ aca_magi_fraction: 6.0
116
+ output:
117
+ aca_ptc_phase_out_rate: 0.20
@@ -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)
@@ -0,0 +1,35 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ma_ccfa_total_copay(Variable):
5
+ value_type = float
6
+ entity = SPMUnit
7
+ unit = USD
8
+ label = "Massachusetts Child Care Financial Assistance (CCFA) parent total 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
+ # TAFDC recipients get free child care (no copay)
15
+ tafdc_eligible = spm_unit("ma_tafdc_eligible", period)
16
+
17
+ p = parameters(period).gov.states.ma.eec.ccfa.copay.ratio
18
+ base_copay = spm_unit("ma_ccfa_base_copay", period)
19
+ eligible_child = spm_unit.members("ma_ccfa_eligible_child", period)
20
+ num_children = spm_unit.sum(eligible_child)
21
+
22
+ first_child_fee = (num_children >= 1) * (base_copay * p.first_child)
23
+ second_child_fee = (num_children >= 2) * (base_copay * p.second_child)
24
+
25
+ additional_children_count = max_(0, num_children - 2)
26
+ additional_children_fee = additional_children_count * (
27
+ base_copay * p.additional_child
28
+ )
29
+
30
+ total_copay = (
31
+ first_child_fee + second_child_fee + additional_children_fee
32
+ )
33
+
34
+ # Return zero copay for TAFDC recipients
35
+ return where(tafdc_eligible, 0, total_copay)