policyengine-us 1.405.0__py3-none-any.whl → 1.407.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.
- policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/amount.yaml +19 -0
- policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/in_effect.yaml +7 -0
- policyengine_us/parameters/gov/contrib/ctc/per_child_phase_in/in_effect.yaml +7 -0
- policyengine_us/parameters/gov/contrib/ctc/per_child_phase_out/in_effect.yaml +7 -0
- policyengine_us/parameters/gov/usda/school_meals/amount/nslp.yaml +25 -0
- policyengine_us/parameters/gov/usda/school_meals/amount/sbp.yaml +22 -0
- policyengine_us/reforms/ctc/__init__.py +9 -0
- policyengine_us/reforms/ctc/ctc_minimum_refundable_amount.py +90 -0
- policyengine_us/reforms/ctc/ctc_per_child_phase_in.py +49 -0
- policyengine_us/reforms/ctc/ctc_per_child_phase_out.py +54 -0
- policyengine_us/reforms/reforms.py +16 -0
- policyengine_us/tests/policy/baseline/gov/usda/school_meals/integration.yaml +23 -0
- policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_daily_subsidy.yaml +8 -0
- policyengine_us/tests/policy/contrib/ctc/ctc_minimum_refundable_amount.yaml +365 -0
- policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_in.yaml +144 -0
- policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_out.yaml +118 -0
- {policyengine_us-1.405.0.dist-info → policyengine_us-1.407.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.405.0.dist-info → policyengine_us-1.407.0.dist-info}/RECORD +21 -11
- {policyengine_us-1.405.0.dist-info → policyengine_us-1.407.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.405.0.dist-info → policyengine_us-1.407.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.405.0.dist-info → policyengine_us-1.407.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
description: Minimum refundable amount per child for the CTC, exempt from phase-in but subject to phase-out
|
|
2
|
+
|
|
3
|
+
metadata:
|
|
4
|
+
amount_unit: currency-USD
|
|
5
|
+
threshold_unit: year
|
|
6
|
+
type: single_amount
|
|
7
|
+
period: year
|
|
8
|
+
label: CTC minimum refundable amount per child
|
|
9
|
+
|
|
10
|
+
brackets:
|
|
11
|
+
- threshold:
|
|
12
|
+
2024-01-01: 0
|
|
13
|
+
amount:
|
|
14
|
+
2024-01-01: 0
|
|
15
|
+
- threshold:
|
|
16
|
+
2024-01-01: 6
|
|
17
|
+
amount:
|
|
18
|
+
2024-01-01: 0
|
|
19
|
+
|
|
@@ -7,48 +7,66 @@ CONTIGUOUS_US:
|
|
|
7
7
|
2021-07-01: 0.35
|
|
8
8
|
2022-07-01: 0.37
|
|
9
9
|
2023-07-01: 0.40
|
|
10
|
+
2024-07-01: 0.42
|
|
11
|
+
2025-01-01: 0.46
|
|
10
12
|
REDUCED:
|
|
11
13
|
2020-07-01: 3.11
|
|
12
14
|
2021-07-01: 3.26
|
|
13
15
|
2022-07-01: 3.53
|
|
14
16
|
2023-07-01: 3.85
|
|
17
|
+
2024-07-01: 4.03
|
|
18
|
+
2025-01-01: 4.20
|
|
15
19
|
FREE:
|
|
16
20
|
2020-07-01: 3.51
|
|
17
21
|
2021-07-01: 3.66
|
|
18
22
|
2022-07-01: 3.93
|
|
19
23
|
2023-07-01: 4.25
|
|
24
|
+
2024-07-01: 4.43
|
|
25
|
+
2025-01-01: 4.60
|
|
20
26
|
AK:
|
|
21
27
|
PAID:
|
|
22
28
|
2020-07-01: 0.54
|
|
23
29
|
2021-07-01: 0.57
|
|
24
30
|
2022-07-01: 0.61
|
|
25
31
|
2023-07-01: 0.66
|
|
32
|
+
2024-07-01: 0.69
|
|
33
|
+
2025-01-01: 0.71
|
|
26
34
|
REDUCED:
|
|
27
35
|
2020-07-01: 5.30
|
|
28
36
|
2021-07-01: 5.54
|
|
29
37
|
2022-07-01: 5.97
|
|
30
38
|
2023-07-01: 6.50
|
|
39
|
+
2024-07-01: 6.78
|
|
40
|
+
2025-01-01: 7.05
|
|
31
41
|
FREE:
|
|
32
42
|
2020-07-01: 5.70
|
|
33
43
|
2021-07-01: 5.94
|
|
34
44
|
2022-07-01: 6.37
|
|
35
45
|
2023-07-01: 6.90
|
|
46
|
+
2024-07-01: 7.18
|
|
47
|
+
2025-01-01: 7.45
|
|
36
48
|
HI:
|
|
37
49
|
PAID:
|
|
38
50
|
2020-07-01: 0.39
|
|
39
51
|
2021-07-01: 0.41
|
|
40
52
|
2022-07-01: 0.44
|
|
41
53
|
2023-07-01: 0.53
|
|
54
|
+
2024-07-01: 0.55
|
|
55
|
+
2025-01-01: 0.57
|
|
42
56
|
REDUCED:
|
|
43
57
|
2020-07-01: 3.71
|
|
44
58
|
2021-07-01: 3.88
|
|
45
59
|
2022-07-01: 4.20
|
|
46
60
|
2023-07-01: 5.14
|
|
61
|
+
2024-07-01: 5.36
|
|
62
|
+
2025-01-01: 5.58
|
|
47
63
|
FREE:
|
|
48
64
|
2020-07-01: 4.11
|
|
49
65
|
2021-07-01: 4.28
|
|
50
66
|
2022-07-01: 4.60
|
|
51
67
|
2023-07-01: 5.54
|
|
68
|
+
2024-07-01: 5.76
|
|
69
|
+
2025-01-01: 5.98
|
|
52
70
|
|
|
53
71
|
metadata:
|
|
54
72
|
unit: currency-USD
|
|
@@ -59,6 +77,13 @@ metadata:
|
|
|
59
77
|
href: https://www.federalregister.gov/documents/2021/07/16/2021-15107/national-school-lunch-special-milk-and-school-breakfast-programs-national-average-paymentsmaximum
|
|
60
78
|
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2022
|
|
61
79
|
href: https://www.federalregister.gov/documents/2022/07/26/2022-15892/national-school-lunch-special-milk-and-school-breakfast-programs-national-average-paymentsmaximum
|
|
80
|
+
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2023
|
|
81
|
+
href: https://www.federalregister.gov/documents/2023/07/07/2023-14313/national-school-lunch-special-milk-and-school-breakfast-programs-national-average-paymentsmaximum
|
|
82
|
+
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2024
|
|
83
|
+
href: https://www.regulations.gov/document/FNS-2024-0022-0001
|
|
84
|
+
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2025
|
|
85
|
+
href: https://www.govinfo.gov/content/pkg/FR-2025-07-24/pdf/2025-13879.pdf#page=3
|
|
86
|
+
|
|
62
87
|
period: day
|
|
63
88
|
label: National School Lunch Program value
|
|
64
89
|
breakdown:
|
|
@@ -7,48 +7,66 @@ CONTIGUOUS_US:
|
|
|
7
7
|
2021-07-01: 0.33
|
|
8
8
|
2022-07-01: 0.35
|
|
9
9
|
2023-07-01: 0.38
|
|
10
|
+
2024-07-01: 0.39
|
|
11
|
+
2025-01-01: 0.40
|
|
10
12
|
REDUCED:
|
|
11
13
|
2020-07-01: 1.59
|
|
12
14
|
2021-07-01: 1.67
|
|
13
15
|
2022-07-01: 1.81
|
|
14
16
|
2023-07-01: 1.98
|
|
17
|
+
2024-07-01: 2.07
|
|
18
|
+
2025-01-01: 2.16
|
|
15
19
|
FREE:
|
|
16
20
|
2020-07-01: 1.89
|
|
17
21
|
2021-07-01: 1.97
|
|
18
22
|
2022-07-01: 2.11
|
|
19
23
|
2023-07-01: 2.28
|
|
24
|
+
2024-07-01: 2.37
|
|
25
|
+
2025-01-01: 2.46
|
|
20
26
|
AK:
|
|
21
27
|
PAID:
|
|
22
28
|
2020-07-01: 0.49
|
|
23
29
|
2021-07-01: 0.50
|
|
24
30
|
2022-07-01: 0.54
|
|
25
31
|
2023-07-01: 0.58
|
|
32
|
+
2024-07-01: 0.60
|
|
33
|
+
2025-01-01: 0.62
|
|
26
34
|
REDUCED:
|
|
27
35
|
2020-07-01: 2.73
|
|
28
36
|
2021-07-01: 2.85
|
|
29
37
|
2022-07-01: 3.08
|
|
30
38
|
2023-07-01: 3.36
|
|
39
|
+
2024-07-01: 3.50
|
|
40
|
+
2025-01-01: 3.65
|
|
31
41
|
FREE:
|
|
32
42
|
2020-07-01: 3.03
|
|
33
43
|
2021-07-01: 3.15
|
|
34
44
|
2022-07-01: 3.38
|
|
35
45
|
2023-07-01: 3.66
|
|
46
|
+
2024-07-01: 3.80
|
|
47
|
+
2025-01-01: 3.95
|
|
36
48
|
HI:
|
|
37
49
|
PAID:
|
|
38
50
|
2020-07-01: 0.37
|
|
39
51
|
2021-07-01: 0.38
|
|
40
52
|
2022-07-01: 0.40
|
|
41
53
|
2023-07-01: 0.47
|
|
54
|
+
2024-07-01: 0.49
|
|
55
|
+
2025-01-01: 0.51
|
|
42
56
|
REDUCED:
|
|
43
57
|
2020-07-01: 1.91
|
|
44
58
|
2021-07-01: 1.99
|
|
45
59
|
2022-07-01: 2.16
|
|
46
60
|
2023-07-01: 2.65
|
|
61
|
+
2024-07-01: 2.76
|
|
62
|
+
2025-01-01: 2.88
|
|
47
63
|
FREE:
|
|
48
64
|
2020-07-01: 2.21
|
|
49
65
|
2021-07-01: 2.29
|
|
50
66
|
2022-07-01: 2.46
|
|
51
67
|
2023-07-01: 2.95
|
|
68
|
+
2024-07-01: 3.06
|
|
69
|
+
2025-01-01: 3.18
|
|
52
70
|
|
|
53
71
|
metadata:
|
|
54
72
|
unit: currency-USD
|
|
@@ -61,6 +79,10 @@ metadata:
|
|
|
61
79
|
href: https://www.federalregister.gov/documents/2022/07/26/2022-15892/national-school-lunch-special-milk-and-school-breakfast-programs-national-average-paymentsmaximum
|
|
62
80
|
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2023
|
|
63
81
|
href: https://www.federalregister.gov/documents/2023/07/07/2023-14313/national-school-lunch-special-milk-and-school-breakfast-programs-national-average-paymentsmaximum
|
|
82
|
+
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2024
|
|
83
|
+
href: https://www.regulations.gov/document/FNS-2024-0022-0001
|
|
84
|
+
- title: National School Lunch, Special Milk, and School Breakfast Programs, National Average Payments/Maximum Reimbursement Rates - 2025
|
|
85
|
+
href: https://www.govinfo.gov/content/pkg/FR-2025-07-24/pdf/2025-13879.pdf#page=4
|
|
64
86
|
period: day
|
|
65
87
|
label: School Breakfast Program value
|
|
66
88
|
breakdown:
|
|
@@ -4,3 +4,12 @@ from .ctc_older_child_supplement import (
|
|
|
4
4
|
from .ctc_additional_bracket import (
|
|
5
5
|
create_ctc_additional_bracket_reform,
|
|
6
6
|
)
|
|
7
|
+
from .ctc_per_child_phase_out import (
|
|
8
|
+
create_ctc_per_child_phase_out_reform,
|
|
9
|
+
)
|
|
10
|
+
from .ctc_per_child_phase_in import (
|
|
11
|
+
create_ctc_per_child_phase_in_reform,
|
|
12
|
+
)
|
|
13
|
+
from .ctc_minimum_refundable_amount import (
|
|
14
|
+
create_ctc_minimum_refundable_amount_reform,
|
|
15
|
+
)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def create_ctc_minimum_refundable_amount() -> Reform:
|
|
5
|
+
class ctc_minimum_refundable_amount(Variable):
|
|
6
|
+
value_type = float
|
|
7
|
+
entity = Person
|
|
8
|
+
label = "CTC minimum refundable amount"
|
|
9
|
+
unit = USD
|
|
10
|
+
defined_for = "ctc_qualifying_child"
|
|
11
|
+
documentation = "Minimum refundable amount per child, exempt from phase-in but subject to phase-out."
|
|
12
|
+
definition_period = YEAR
|
|
13
|
+
|
|
14
|
+
def formula(person, period, parameters):
|
|
15
|
+
p = parameters(period).gov.contrib.ctc.minimum_refundable
|
|
16
|
+
|
|
17
|
+
age = person("age", period)
|
|
18
|
+
|
|
19
|
+
return p.amount.calc(age)
|
|
20
|
+
|
|
21
|
+
class refundable_ctc(Variable):
|
|
22
|
+
value_type = float
|
|
23
|
+
entity = TaxUnit
|
|
24
|
+
label = "refundable CTC"
|
|
25
|
+
unit = USD
|
|
26
|
+
documentation = (
|
|
27
|
+
"The portion of the Child Tax Credit that is refundable."
|
|
28
|
+
)
|
|
29
|
+
definition_period = YEAR
|
|
30
|
+
reference = "https://www.law.cornell.edu/uscode/text/26/24#d"
|
|
31
|
+
|
|
32
|
+
def formula(tax_unit, period, parameters):
|
|
33
|
+
# This line corresponds to "the credit which would be allowed under this section [the CTC section]"
|
|
34
|
+
# without regard to this subsection [the refundability section] and the limitation under
|
|
35
|
+
# section 26(a) [the section that limits the amount of the non-refundable CTC to tax liability].
|
|
36
|
+
# This is the full CTC. This is then limited to the maximum refundable amount per child as per the
|
|
37
|
+
# TCJA provision.
|
|
38
|
+
|
|
39
|
+
ctc = parameters(period).gov.irs.credits.ctc
|
|
40
|
+
|
|
41
|
+
maximum_amount = tax_unit("ctc_refundable_maximum", period)
|
|
42
|
+
|
|
43
|
+
total_ctc = tax_unit("ctc", period)
|
|
44
|
+
|
|
45
|
+
if ctc.refundable.fully_refundable:
|
|
46
|
+
reduction = tax_unit("ctc_phase_out", period)
|
|
47
|
+
reduced_max_amount = max_(0, maximum_amount - reduction)
|
|
48
|
+
return min_(reduced_max_amount, total_ctc)
|
|
49
|
+
|
|
50
|
+
maximum_refundable_ctc = min_(maximum_amount, total_ctc)
|
|
51
|
+
minimum_refundable_ctc = add(
|
|
52
|
+
tax_unit, period, ["ctc_minimum_refundable_amount"]
|
|
53
|
+
)
|
|
54
|
+
phase_in = tax_unit("ctc_phase_in", period)
|
|
55
|
+
phase_in_with_minimum = max_(phase_in, minimum_refundable_ctc)
|
|
56
|
+
limiting_tax = tax_unit("ctc_limiting_tax_liability", period)
|
|
57
|
+
ctc_capped_by_tax = min_(total_ctc, limiting_tax)
|
|
58
|
+
ctc_capped_by_increased_tax = min_(
|
|
59
|
+
total_ctc, limiting_tax + phase_in_with_minimum
|
|
60
|
+
)
|
|
61
|
+
amount_ctc_would_increase = (
|
|
62
|
+
ctc_capped_by_increased_tax - ctc_capped_by_tax
|
|
63
|
+
)
|
|
64
|
+
return min_(maximum_refundable_ctc, amount_ctc_would_increase)
|
|
65
|
+
|
|
66
|
+
class reform(Reform):
|
|
67
|
+
def apply(self):
|
|
68
|
+
self.update_variable(ctc_minimum_refundable_amount)
|
|
69
|
+
self.update_variable(refundable_ctc)
|
|
70
|
+
|
|
71
|
+
return reform
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def create_ctc_minimum_refundable_amount_reform(
|
|
75
|
+
parameters, period, bypass: bool = False
|
|
76
|
+
):
|
|
77
|
+
if bypass:
|
|
78
|
+
return create_ctc_minimum_refundable_amount()
|
|
79
|
+
|
|
80
|
+
p = parameters(period).gov.contrib.ctc.minimum_refundable
|
|
81
|
+
|
|
82
|
+
if p.in_effect:
|
|
83
|
+
return create_ctc_minimum_refundable_amount()
|
|
84
|
+
else:
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
ctc_minimum_refundable_amount = create_ctc_minimum_refundable_amount_reform(
|
|
89
|
+
None, None, bypass=True
|
|
90
|
+
)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def create_ctc_per_child_phase_in() -> Reform:
|
|
6
|
+
class ctc_phase_in_relevant_earnings(Variable):
|
|
7
|
+
value_type = float
|
|
8
|
+
entity = TaxUnit
|
|
9
|
+
label = "Relevant earnings for the CTC phase-in"
|
|
10
|
+
unit = USD
|
|
11
|
+
definition_period = YEAR
|
|
12
|
+
reference = "https://www.law.cornell.edu/uscode/text/26/24#d"
|
|
13
|
+
|
|
14
|
+
def formula(tax_unit, period, parameters):
|
|
15
|
+
|
|
16
|
+
ctc = parameters(period).gov.irs.credits.ctc
|
|
17
|
+
|
|
18
|
+
earnings = tax_unit("tax_unit_earned_income", period)
|
|
19
|
+
earnings_over_threshold = max_(
|
|
20
|
+
0, earnings - ctc.refundable.phase_in.threshold
|
|
21
|
+
)
|
|
22
|
+
qualifying_children = tax_unit("ctc_qualifying_children", period)
|
|
23
|
+
phase_in_rate = ctc.refundable.phase_in.rate * qualifying_children
|
|
24
|
+
return earnings_over_threshold * phase_in_rate
|
|
25
|
+
|
|
26
|
+
class reform(Reform):
|
|
27
|
+
def apply(self):
|
|
28
|
+
self.update_variable(ctc_phase_in_relevant_earnings)
|
|
29
|
+
|
|
30
|
+
return reform
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def create_ctc_per_child_phase_in_reform(
|
|
34
|
+
parameters, period, bypass: bool = False
|
|
35
|
+
):
|
|
36
|
+
if bypass:
|
|
37
|
+
return create_ctc_per_child_phase_in()
|
|
38
|
+
|
|
39
|
+
p = parameters(period).gov.contrib.ctc.per_child_phase_out
|
|
40
|
+
|
|
41
|
+
if p.in_effect:
|
|
42
|
+
return create_ctc_per_child_phase_in()
|
|
43
|
+
else:
|
|
44
|
+
return None
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
ctc_per_child_phase_in = create_ctc_per_child_phase_in_reform(
|
|
48
|
+
None, None, bypass=True
|
|
49
|
+
)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def create_ctc_per_child_phase_out() -> Reform:
|
|
6
|
+
class ctc_phase_out(Variable):
|
|
7
|
+
value_type = float
|
|
8
|
+
entity = TaxUnit
|
|
9
|
+
label = "CTC reduction from income"
|
|
10
|
+
unit = USD
|
|
11
|
+
documentation = "Reduction of the total CTC due to income."
|
|
12
|
+
definition_period = YEAR
|
|
13
|
+
|
|
14
|
+
def formula(tax_unit, period, parameters):
|
|
15
|
+
# TCJA's phase-out changes are purely parametric so don't require
|
|
16
|
+
# structural reform.
|
|
17
|
+
|
|
18
|
+
# The ARPA CTC has two phase-outs: the original, and a new phase-out
|
|
19
|
+
# applying before and only to the increase in the maximum CTC under ARPA.
|
|
20
|
+
|
|
21
|
+
# Start with the normal phase-out.
|
|
22
|
+
income = tax_unit("adjusted_gross_income", period)
|
|
23
|
+
p = parameters(period).gov.irs.credits.ctc.phase_out
|
|
24
|
+
phase_out_threshold = tax_unit("ctc_phase_out_threshold", period)
|
|
25
|
+
qualifying_children = tax_unit("ctc_qualifying_children", period)
|
|
26
|
+
excess = max_(0, income - phase_out_threshold)
|
|
27
|
+
increments = np.ceil(excess / p.increment)
|
|
28
|
+
reduction_amount = p.amount * qualifying_children
|
|
29
|
+
return increments * reduction_amount
|
|
30
|
+
|
|
31
|
+
class reform(Reform):
|
|
32
|
+
def apply(self):
|
|
33
|
+
self.update_variable(ctc_phase_out)
|
|
34
|
+
|
|
35
|
+
return reform
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def create_ctc_per_child_phase_out_reform(
|
|
39
|
+
parameters, period, bypass: bool = False
|
|
40
|
+
):
|
|
41
|
+
if bypass:
|
|
42
|
+
return create_ctc_per_child_phase_out()
|
|
43
|
+
|
|
44
|
+
p = parameters(period).gov.contrib.ctc.per_child_phase_out
|
|
45
|
+
|
|
46
|
+
if p.in_effect:
|
|
47
|
+
return create_ctc_per_child_phase_out()
|
|
48
|
+
else:
|
|
49
|
+
return None
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
ctc_per_child_phase_out = create_ctc_per_child_phase_out_reform(
|
|
53
|
+
None, None, bypass=True
|
|
54
|
+
)
|
|
@@ -59,6 +59,9 @@ from .state_dependent_exemptions import (
|
|
|
59
59
|
from .ctc import (
|
|
60
60
|
create_ctc_older_child_supplement_reform,
|
|
61
61
|
create_ctc_additional_bracket_reform,
|
|
62
|
+
create_ctc_per_child_phase_in_reform,
|
|
63
|
+
create_ctc_per_child_phase_out_reform,
|
|
64
|
+
create_ctc_minimum_refundable_amount_reform,
|
|
62
65
|
)
|
|
63
66
|
from .snap import (
|
|
64
67
|
create_abolish_snap_deductions_reform,
|
|
@@ -106,6 +109,7 @@ from .crfb import (
|
|
|
106
109
|
create_senior_deduction_extension_reform,
|
|
107
110
|
)
|
|
108
111
|
|
|
112
|
+
|
|
109
113
|
from policyengine_core.reforms import Reform
|
|
110
114
|
import warnings
|
|
111
115
|
|
|
@@ -235,6 +239,15 @@ def create_structural_reforms_from_parameters(parameters, period):
|
|
|
235
239
|
american_worker_rebate_act = create_american_worker_rebate_act_reform(
|
|
236
240
|
parameters, period
|
|
237
241
|
)
|
|
242
|
+
ctc_per_child_phase_out = create_ctc_per_child_phase_out_reform(
|
|
243
|
+
parameters, period
|
|
244
|
+
)
|
|
245
|
+
ctc_per_child_phase_in = create_ctc_per_child_phase_in_reform(
|
|
246
|
+
parameters, period
|
|
247
|
+
)
|
|
248
|
+
ctc_minimum_refundable_amount = (
|
|
249
|
+
create_ctc_minimum_refundable_amount_reform(parameters, period)
|
|
250
|
+
)
|
|
238
251
|
|
|
239
252
|
reforms = [
|
|
240
253
|
afa_reform,
|
|
@@ -282,6 +295,9 @@ def create_structural_reforms_from_parameters(parameters, period):
|
|
|
282
295
|
mi_surtax,
|
|
283
296
|
additional_tax_bracket,
|
|
284
297
|
american_worker_rebate_act,
|
|
298
|
+
ctc_per_child_phase_out,
|
|
299
|
+
ctc_per_child_phase_in,
|
|
300
|
+
ctc_minimum_refundable_amount,
|
|
285
301
|
]
|
|
286
302
|
reforms = tuple(filter(lambda x: x is not None, reforms))
|
|
287
303
|
|
|
@@ -20,3 +20,26 @@
|
|
|
20
20
|
school_meal_net_subsidy: 180 * ((3.66 + 1.97) - (0.35 + 0.33))
|
|
21
21
|
free_school_meals: 180 * (3.66 + 1.97 - 0.35 - 0.33)
|
|
22
22
|
reduced_price_school_meals: 0
|
|
23
|
+
|
|
24
|
+
# Test 2025 values
|
|
25
|
+
- name: 2025 values test - Contiguous US FREE tier
|
|
26
|
+
period: 2025
|
|
27
|
+
absolute_error_margin: 0.01
|
|
28
|
+
input:
|
|
29
|
+
people:
|
|
30
|
+
parent: {}
|
|
31
|
+
child:
|
|
32
|
+
age: 10
|
|
33
|
+
is_in_k12_school: true
|
|
34
|
+
spm_units:
|
|
35
|
+
spm_unit:
|
|
36
|
+
members: [parent, child]
|
|
37
|
+
school_meal_fpg_ratio: 1.2 # FREE tier
|
|
38
|
+
snap: 0
|
|
39
|
+
households:
|
|
40
|
+
household:
|
|
41
|
+
members: [parent, child]
|
|
42
|
+
state_code: FL
|
|
43
|
+
output:
|
|
44
|
+
school_meal_tier: FREE
|
|
45
|
+
school_meal_daily_subsidy: 7.06 # NSLP 4.60 + SBP 2.46 (2025 rates)
|
|
@@ -11,3 +11,11 @@
|
|
|
11
11
|
school_meal_tier: FREE
|
|
12
12
|
output:
|
|
13
13
|
school_meal_daily_subsidy: 3.66 + 1.97
|
|
14
|
+
|
|
15
|
+
# Test 2025 values (effective January 1, 2025)
|
|
16
|
+
- name: Contiguous US - 2025 FREE tier
|
|
17
|
+
period: 2025
|
|
18
|
+
input:
|
|
19
|
+
school_meal_tier: FREE
|
|
20
|
+
output:
|
|
21
|
+
school_meal_daily_subsidy: 7.06 # NSLP 4.60 + SBP 2.46
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
# Integration tests - With reform applied
|
|
2
|
+
|
|
3
|
+
- name: Integration test - no earnings, minimum amount should apply
|
|
4
|
+
period: 2024
|
|
5
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
6
|
+
input:
|
|
7
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
8
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
9
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
10
|
+
people:
|
|
11
|
+
person1:
|
|
12
|
+
age: 40
|
|
13
|
+
is_tax_unit_head: true
|
|
14
|
+
employment_income: 0
|
|
15
|
+
child1:
|
|
16
|
+
age: 5
|
|
17
|
+
ctc_qualifying_child: true
|
|
18
|
+
tax_units:
|
|
19
|
+
tax_unit:
|
|
20
|
+
members: [person1, child1]
|
|
21
|
+
households:
|
|
22
|
+
household:
|
|
23
|
+
members: [person1, child1]
|
|
24
|
+
output:
|
|
25
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
26
|
+
refundable_ctc: 800
|
|
27
|
+
ctc: 2_000
|
|
28
|
+
ctc_phase_in: 0 # No earnings means no phase-in
|
|
29
|
+
|
|
30
|
+
- name: Integration test - low earnings where minimum exceeds phase-in
|
|
31
|
+
period: 2024
|
|
32
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
33
|
+
input:
|
|
34
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
35
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
36
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
37
|
+
people:
|
|
38
|
+
person1:
|
|
39
|
+
age: 40
|
|
40
|
+
is_tax_unit_head: true
|
|
41
|
+
employment_income: 3_000 # Low earnings
|
|
42
|
+
child1:
|
|
43
|
+
age: 5
|
|
44
|
+
ctc_qualifying_child: true
|
|
45
|
+
tax_units:
|
|
46
|
+
tax_unit:
|
|
47
|
+
members: [person1, child1]
|
|
48
|
+
households:
|
|
49
|
+
household:
|
|
50
|
+
members: [person1, child1]
|
|
51
|
+
output:
|
|
52
|
+
# Phase-in = (3_000 - 2_500) * 0.15 = 75
|
|
53
|
+
# Minimum = 800 (exceeds phase-in)
|
|
54
|
+
# Should use minimum of 800
|
|
55
|
+
ctc_phase_in: 75
|
|
56
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
57
|
+
refundable_ctc: 800
|
|
58
|
+
ctc: 2_000
|
|
59
|
+
|
|
60
|
+
- name: Integration test - earnings where phase-in exceeds minimum (edge case)
|
|
61
|
+
period: 2024
|
|
62
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
63
|
+
input:
|
|
64
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
65
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
66
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
67
|
+
people:
|
|
68
|
+
person1:
|
|
69
|
+
age: 40
|
|
70
|
+
is_tax_unit_head: true
|
|
71
|
+
employment_income: 6_000 # Moderate earnings
|
|
72
|
+
child1:
|
|
73
|
+
age: 5
|
|
74
|
+
ctc_qualifying_child: true
|
|
75
|
+
tax_units:
|
|
76
|
+
tax_unit:
|
|
77
|
+
members: [person1, child1]
|
|
78
|
+
households:
|
|
79
|
+
household:
|
|
80
|
+
members: [person1, child1]
|
|
81
|
+
output:
|
|
82
|
+
# Phase-in = (6_000 - 2_500) * 0.15 = 525
|
|
83
|
+
# Minimum = 800 (exceeds phase-in)
|
|
84
|
+
# Should use minimum of 800, not add minimum on top
|
|
85
|
+
ctc_phase_in: 525
|
|
86
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
87
|
+
refundable_ctc: 800 # Uses max(phase-in, minimum)
|
|
88
|
+
ctc: 2_000
|
|
89
|
+
|
|
90
|
+
- name: Integration test - high earnings where phase-in far exceeds minimum
|
|
91
|
+
period: 2024
|
|
92
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
93
|
+
input:
|
|
94
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
95
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
96
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
97
|
+
people:
|
|
98
|
+
person1:
|
|
99
|
+
age: 40
|
|
100
|
+
is_tax_unit_head: true
|
|
101
|
+
employment_income: 30_000
|
|
102
|
+
child1:
|
|
103
|
+
age: 5
|
|
104
|
+
ctc_qualifying_child: true
|
|
105
|
+
tax_units:
|
|
106
|
+
tax_unit:
|
|
107
|
+
members: [person1, child1]
|
|
108
|
+
households:
|
|
109
|
+
household:
|
|
110
|
+
members: [person1, child1]
|
|
111
|
+
output:
|
|
112
|
+
ctc_refundable_maximum: 1_700
|
|
113
|
+
ctc: 2_000
|
|
114
|
+
ctc_phase_out: 0
|
|
115
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
116
|
+
ctc_phase_in: 4_125 # (30_000 - 2_500) * 0.15
|
|
117
|
+
# Phase-in exceeds minimum, should use phase-in
|
|
118
|
+
# Tax liability is 810, so amount_ctc_would_increase = min(2000, 810+4125) - min(2000, 810) = 2000 - 810 = 1190
|
|
119
|
+
# refundable = min(max_refundable=1700, amount_ctc_would_increase=1190) = 1190
|
|
120
|
+
refundable_ctc: 1_190
|
|
121
|
+
|
|
122
|
+
- name: Integration test - multiple children with different ages
|
|
123
|
+
period: 2024
|
|
124
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
125
|
+
input:
|
|
126
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
127
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800 # Under 6
|
|
128
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500 # 6 and over
|
|
129
|
+
people:
|
|
130
|
+
person1:
|
|
131
|
+
age: 40
|
|
132
|
+
is_tax_unit_head: true
|
|
133
|
+
employment_income: 0 # No earnings
|
|
134
|
+
child1:
|
|
135
|
+
age: 3
|
|
136
|
+
ctc_qualifying_child: true
|
|
137
|
+
child2:
|
|
138
|
+
age: 7
|
|
139
|
+
ctc_qualifying_child: true
|
|
140
|
+
child3:
|
|
141
|
+
age: 10
|
|
142
|
+
ctc_qualifying_child: true
|
|
143
|
+
tax_units:
|
|
144
|
+
tax_unit:
|
|
145
|
+
members: [person1, child1, child2, child3]
|
|
146
|
+
households:
|
|
147
|
+
household:
|
|
148
|
+
members: [person1, child1, child2, child3]
|
|
149
|
+
output:
|
|
150
|
+
ctc_minimum_refundable_amount: [0, 800, 500, 500] # By person
|
|
151
|
+
# Total minimum = 800 + 500 + 500 = 1_800
|
|
152
|
+
refundable_ctc: 1_800
|
|
153
|
+
ctc: 6_000 # 3 children * 2_000
|
|
154
|
+
|
|
155
|
+
# Counterfactual tests - Without reform applied (baseline)
|
|
156
|
+
|
|
157
|
+
- name: Counterfactual - no earnings, no refundable CTC without reform
|
|
158
|
+
period: 2024
|
|
159
|
+
input:
|
|
160
|
+
people:
|
|
161
|
+
person1:
|
|
162
|
+
age: 40
|
|
163
|
+
is_tax_unit_head: true
|
|
164
|
+
employment_income: 0
|
|
165
|
+
child1:
|
|
166
|
+
age: 5
|
|
167
|
+
ctc_qualifying_child: true
|
|
168
|
+
tax_units:
|
|
169
|
+
tax_unit:
|
|
170
|
+
members: [person1, child1]
|
|
171
|
+
households:
|
|
172
|
+
household:
|
|
173
|
+
members: [person1, child1]
|
|
174
|
+
output:
|
|
175
|
+
refundable_ctc: 0 # No refundable CTC without earnings
|
|
176
|
+
ctc: 2_000
|
|
177
|
+
ctc_phase_in: 0
|
|
178
|
+
|
|
179
|
+
- name: Counterfactual - low earnings, limited by phase-in without reform
|
|
180
|
+
period: 2024
|
|
181
|
+
input:
|
|
182
|
+
people:
|
|
183
|
+
person1:
|
|
184
|
+
age: 40
|
|
185
|
+
is_tax_unit_head: true
|
|
186
|
+
employment_income: 3_000
|
|
187
|
+
child1:
|
|
188
|
+
age: 5
|
|
189
|
+
ctc_qualifying_child: true
|
|
190
|
+
tax_units:
|
|
191
|
+
tax_unit:
|
|
192
|
+
members: [person1, child1]
|
|
193
|
+
households:
|
|
194
|
+
household:
|
|
195
|
+
members: [person1, child1]
|
|
196
|
+
output:
|
|
197
|
+
ctc_phase_in: 75 # (3_000 - 2_500) * 0.15 = 75
|
|
198
|
+
refundable_ctc: 75 # Limited by phase-in
|
|
199
|
+
ctc: 2_000
|
|
200
|
+
|
|
201
|
+
- name: Counterfactual - moderate earnings without reform
|
|
202
|
+
period: 2024
|
|
203
|
+
input:
|
|
204
|
+
people:
|
|
205
|
+
person1:
|
|
206
|
+
age: 40
|
|
207
|
+
is_tax_unit_head: true
|
|
208
|
+
employment_income: 6_000
|
|
209
|
+
child1:
|
|
210
|
+
age: 5
|
|
211
|
+
ctc_qualifying_child: true
|
|
212
|
+
tax_units:
|
|
213
|
+
tax_unit:
|
|
214
|
+
members: [person1, child1]
|
|
215
|
+
households:
|
|
216
|
+
household:
|
|
217
|
+
members: [person1, child1]
|
|
218
|
+
output:
|
|
219
|
+
ctc_phase_in: 525 # (6_000 - 2_500) * 0.15
|
|
220
|
+
refundable_ctc: 525 # Uses phase-in
|
|
221
|
+
ctc: 2_000
|
|
222
|
+
|
|
223
|
+
- name: Counterfactual - high earnings without reform
|
|
224
|
+
period: 2024
|
|
225
|
+
input:
|
|
226
|
+
people:
|
|
227
|
+
person1:
|
|
228
|
+
age: 40
|
|
229
|
+
is_tax_unit_head: true
|
|
230
|
+
employment_income: 30_000
|
|
231
|
+
child1:
|
|
232
|
+
age: 5
|
|
233
|
+
ctc_qualifying_child: true
|
|
234
|
+
tax_units:
|
|
235
|
+
tax_unit:
|
|
236
|
+
members: [person1, child1]
|
|
237
|
+
households:
|
|
238
|
+
household:
|
|
239
|
+
members: [person1, child1]
|
|
240
|
+
output:
|
|
241
|
+
ctc_refundable_maximum: 1_700
|
|
242
|
+
ctc: 2_000
|
|
243
|
+
ctc_phase_in: 4_125 # (30_000 - 2_500) * 0.15
|
|
244
|
+
# Tax liability is 810, amount_ctc_would_increase = min(2000, 810+4125) - min(2000, 810) = 1190
|
|
245
|
+
refundable_ctc: 1_190 # Limited by amount CTC would increase
|
|
246
|
+
|
|
247
|
+
# Edge case tests - Ensuring no double attribution
|
|
248
|
+
|
|
249
|
+
- name: Edge case - phase-in approximately equals minimum (no double credit)
|
|
250
|
+
period: 2024
|
|
251
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
252
|
+
input:
|
|
253
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
254
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
255
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
256
|
+
people:
|
|
257
|
+
person1:
|
|
258
|
+
age: 40
|
|
259
|
+
is_tax_unit_head: true
|
|
260
|
+
employment_income: 7_833 # Earnings to get approximately 800 phase-in
|
|
261
|
+
# Phase-in = (7_833 - 2_500) * 0.15 ≈ 799.95
|
|
262
|
+
child1:
|
|
263
|
+
age: 5
|
|
264
|
+
ctc_qualifying_child: true
|
|
265
|
+
tax_units:
|
|
266
|
+
tax_unit:
|
|
267
|
+
members: [person1, child1]
|
|
268
|
+
households:
|
|
269
|
+
household:
|
|
270
|
+
members: [person1, child1]
|
|
271
|
+
output:
|
|
272
|
+
ctc_phase_in: 799.95 # Approximately equals minimum
|
|
273
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
274
|
+
refundable_ctc: 800 # Uses minimum since phase-in < minimum
|
|
275
|
+
ctc: 2_000
|
|
276
|
+
|
|
277
|
+
- name: Edge case - phase-in slightly above minimum (ensures correct calculation)
|
|
278
|
+
period: 2024
|
|
279
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
280
|
+
input:
|
|
281
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
282
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
283
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
284
|
+
people:
|
|
285
|
+
person1:
|
|
286
|
+
age: 40
|
|
287
|
+
is_tax_unit_head: true
|
|
288
|
+
employment_income: 8_000 # Slightly more than needed for 800 phase-in
|
|
289
|
+
child1:
|
|
290
|
+
age: 5
|
|
291
|
+
ctc_qualifying_child: true
|
|
292
|
+
tax_units:
|
|
293
|
+
tax_unit:
|
|
294
|
+
members: [person1, child1]
|
|
295
|
+
households:
|
|
296
|
+
household:
|
|
297
|
+
members: [person1, child1]
|
|
298
|
+
output:
|
|
299
|
+
ctc_phase_in: 825 # (8_000 - 2_500) * 0.15
|
|
300
|
+
ctc_minimum_refundable_amount: [0, 800]
|
|
301
|
+
refundable_ctc: 825 # Uses phase-in since it's higher
|
|
302
|
+
ctc: 2_000
|
|
303
|
+
|
|
304
|
+
- name: Edge case - multiple children ensuring no multiplication of minimum
|
|
305
|
+
period: 2024
|
|
306
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
307
|
+
input:
|
|
308
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
309
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
310
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
311
|
+
people:
|
|
312
|
+
person1:
|
|
313
|
+
age: 40
|
|
314
|
+
is_tax_unit_head: true
|
|
315
|
+
employment_income: 20_000 # Moderate earnings
|
|
316
|
+
child1:
|
|
317
|
+
age: 3
|
|
318
|
+
ctc_qualifying_child: true
|
|
319
|
+
child2:
|
|
320
|
+
age: 7
|
|
321
|
+
ctc_qualifying_child: true
|
|
322
|
+
tax_units:
|
|
323
|
+
tax_unit:
|
|
324
|
+
members: [person1, child1, child2]
|
|
325
|
+
households:
|
|
326
|
+
household:
|
|
327
|
+
members: [person1, child1, child2]
|
|
328
|
+
output:
|
|
329
|
+
ctc_minimum_refundable_amount: [0, 800, 500]
|
|
330
|
+
# Total minimum = 1_300
|
|
331
|
+
ctc_phase_in: 2_625 # (20_000 - 2_500) * 0.15
|
|
332
|
+
# Phase-in exceeds total minimum, so use phase-in
|
|
333
|
+
ctc_refundable_maximum: 3_400 # 2 * 1_700
|
|
334
|
+
refundable_ctc: 2_625 # Uses phase-in, not phase-in + minimum
|
|
335
|
+
ctc: 4_000 # 2 children * 2_000
|
|
336
|
+
|
|
337
|
+
- name: Edge case - very high income with phase-out affecting refundability
|
|
338
|
+
period: 2024
|
|
339
|
+
reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
|
|
340
|
+
input:
|
|
341
|
+
gov.contrib.ctc.minimum_refundable.in_effect: true
|
|
342
|
+
gov.contrib.ctc.minimum_refundable.amount[0].amount: 800
|
|
343
|
+
gov.contrib.ctc.minimum_refundable.amount[1].amount: 500
|
|
344
|
+
people:
|
|
345
|
+
person1:
|
|
346
|
+
age: 40
|
|
347
|
+
is_tax_unit_head: true
|
|
348
|
+
is_tax_unit_spouse: false
|
|
349
|
+
employment_income: 250_000 # High income triggering phase-out
|
|
350
|
+
child1:
|
|
351
|
+
age: 5
|
|
352
|
+
ctc_qualifying_child: true
|
|
353
|
+
tax_units:
|
|
354
|
+
tax_unit:
|
|
355
|
+
members: [person1, child1]
|
|
356
|
+
tax_unit_is_joint: false
|
|
357
|
+
households:
|
|
358
|
+
household:
|
|
359
|
+
members: [person1, child1]
|
|
360
|
+
output:
|
|
361
|
+
# Phase-out starts at 200_000 for single filers
|
|
362
|
+
# Phase-out = (250_000 - 200_000) * 0.05 = 2_500
|
|
363
|
+
ctc_phase_out: 2_500
|
|
364
|
+
ctc: 0 # Fully phased out (2_000 - 2_500 = 0, capped at 0)
|
|
365
|
+
refundable_ctc: 0 # No CTC left to be refundable
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
- name: Earnings below threshold - no phase-in
|
|
2
|
+
period: 2024
|
|
3
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
4
|
+
input:
|
|
5
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
6
|
+
tax_unit_earned_income: 2_000
|
|
7
|
+
ctc_qualifying_children: 2
|
|
8
|
+
output:
|
|
9
|
+
ctc_phase_in_relevant_earnings: 0
|
|
10
|
+
|
|
11
|
+
- name: Earnings exactly at threshold - no phase-in
|
|
12
|
+
period: 2024
|
|
13
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
14
|
+
input:
|
|
15
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
16
|
+
tax_unit_earned_income: 2_500
|
|
17
|
+
ctc_qualifying_children: 1
|
|
18
|
+
output:
|
|
19
|
+
ctc_phase_in_relevant_earnings: 0
|
|
20
|
+
|
|
21
|
+
- name: Single child - earnings $1,000 above threshold
|
|
22
|
+
period: 2024
|
|
23
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
24
|
+
input:
|
|
25
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
26
|
+
tax_unit_earned_income: 3_500
|
|
27
|
+
ctc_qualifying_children: 1
|
|
28
|
+
output:
|
|
29
|
+
ctc_phase_in_relevant_earnings: 150
|
|
30
|
+
|
|
31
|
+
- name: Single child - earnings $5,000 above threshold
|
|
32
|
+
period: 2024
|
|
33
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
34
|
+
input:
|
|
35
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
36
|
+
tax_unit_earned_income: 7_500
|
|
37
|
+
ctc_qualifying_children: 1
|
|
38
|
+
output:
|
|
39
|
+
ctc_phase_in_relevant_earnings: 750
|
|
40
|
+
|
|
41
|
+
- name: Two children - earnings $1,000 above threshold
|
|
42
|
+
period: 2024
|
|
43
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
44
|
+
input:
|
|
45
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
46
|
+
tax_unit_earned_income: 3_500
|
|
47
|
+
ctc_qualifying_children: 2
|
|
48
|
+
output:
|
|
49
|
+
ctc_phase_in_relevant_earnings: 300
|
|
50
|
+
|
|
51
|
+
- name: Two children - earnings $5,000 above threshold
|
|
52
|
+
period: 2024
|
|
53
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
54
|
+
input:
|
|
55
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
56
|
+
tax_unit_earned_income: 7_500
|
|
57
|
+
ctc_qualifying_children: 2
|
|
58
|
+
output:
|
|
59
|
+
ctc_phase_in_relevant_earnings: 1_500
|
|
60
|
+
|
|
61
|
+
- name: Three children - earnings $2,000 above threshold
|
|
62
|
+
period: 2024
|
|
63
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
64
|
+
input:
|
|
65
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
66
|
+
tax_unit_earned_income: 4_500
|
|
67
|
+
ctc_qualifying_children: 3
|
|
68
|
+
output:
|
|
69
|
+
ctc_phase_in_relevant_earnings: 900
|
|
70
|
+
|
|
71
|
+
- name: Four children - high earnings scenario
|
|
72
|
+
period: 2024
|
|
73
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
74
|
+
input:
|
|
75
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
76
|
+
tax_unit_earned_income: 10_000
|
|
77
|
+
ctc_qualifying_children: 4
|
|
78
|
+
output:
|
|
79
|
+
ctc_phase_in_relevant_earnings: 4_500
|
|
80
|
+
|
|
81
|
+
- name: Edge case - earnings $1 above threshold with one child
|
|
82
|
+
period: 2024
|
|
83
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
84
|
+
input:
|
|
85
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
86
|
+
tax_unit_earned_income: 2_501
|
|
87
|
+
ctc_qualifying_children: 1
|
|
88
|
+
output:
|
|
89
|
+
ctc_phase_in_relevant_earnings: 0.15
|
|
90
|
+
|
|
91
|
+
- name: Edge case - earnings $1 above threshold with three children
|
|
92
|
+
period: 2024
|
|
93
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
94
|
+
input:
|
|
95
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
96
|
+
tax_unit_earned_income: 2_501
|
|
97
|
+
ctc_qualifying_children: 3
|
|
98
|
+
output:
|
|
99
|
+
ctc_phase_in_relevant_earnings: 0.45
|
|
100
|
+
|
|
101
|
+
- name: Counterfactual - same scenario without reform active
|
|
102
|
+
period: 2024
|
|
103
|
+
input:
|
|
104
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: false
|
|
105
|
+
tax_unit_earned_income: 3_500
|
|
106
|
+
ctc_qualifying_children: 2
|
|
107
|
+
output:
|
|
108
|
+
ctc_phase_in_relevant_earnings: 150
|
|
109
|
+
|
|
110
|
+
- name: Large earnings scenario - $50,000 with single child
|
|
111
|
+
period: 2024
|
|
112
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
113
|
+
input:
|
|
114
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
115
|
+
tax_unit_earned_income: 50_000
|
|
116
|
+
ctc_qualifying_children: 1
|
|
117
|
+
output:
|
|
118
|
+
ctc_phase_in_relevant_earnings: 7_125
|
|
119
|
+
|
|
120
|
+
- name: Large earnings scenario - $50,000 with two children
|
|
121
|
+
period: 2024
|
|
122
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in
|
|
123
|
+
input:
|
|
124
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
125
|
+
tax_unit_earned_income: 50_000
|
|
126
|
+
ctc_qualifying_children: 2
|
|
127
|
+
output:
|
|
128
|
+
ctc_phase_in_relevant_earnings: 14_250
|
|
129
|
+
|
|
130
|
+
- name: Large earnings scenario - $50,000 with two children, reform not active
|
|
131
|
+
period: 2024
|
|
132
|
+
input:
|
|
133
|
+
tax_unit_earned_income: 50_000
|
|
134
|
+
ctc_qualifying_children: 2
|
|
135
|
+
output:
|
|
136
|
+
ctc_phase_in_relevant_earnings: 7_125
|
|
137
|
+
|
|
138
|
+
- name: Large earnings scenario - $50,000 with one child, reform not active
|
|
139
|
+
period: 2024
|
|
140
|
+
input:
|
|
141
|
+
tax_unit_earned_income: 50_000
|
|
142
|
+
ctc_qualifying_children: 1
|
|
143
|
+
output:
|
|
144
|
+
ctc_phase_in_relevant_earnings: 7_125
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
- name: Adjusted gross income below the threshold
|
|
2
|
+
period: 2024
|
|
3
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
4
|
+
input:
|
|
5
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
6
|
+
adjusted_gross_income: 0
|
|
7
|
+
ctc_phase_out_threshold: 200_000
|
|
8
|
+
ctc_qualifying_children: 3
|
|
9
|
+
output:
|
|
10
|
+
ctc_phase_out: 0
|
|
11
|
+
|
|
12
|
+
- name: Single child - no phase out
|
|
13
|
+
period: 2024
|
|
14
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
15
|
+
input:
|
|
16
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
17
|
+
adjusted_gross_income: 200_000
|
|
18
|
+
ctc_phase_out_threshold: 200_000
|
|
19
|
+
ctc_qualifying_children: 1
|
|
20
|
+
output:
|
|
21
|
+
ctc_phase_out: 0
|
|
22
|
+
|
|
23
|
+
- name: Single child - partial phase out at $1,000 above threshold
|
|
24
|
+
period: 2024
|
|
25
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
26
|
+
input:
|
|
27
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
28
|
+
adjusted_gross_income: 201_000
|
|
29
|
+
ctc_phase_out_threshold: 200_000
|
|
30
|
+
ctc_qualifying_children: 1
|
|
31
|
+
output:
|
|
32
|
+
ctc_phase_out: 50
|
|
33
|
+
|
|
34
|
+
- name: Single child - partial phase out at $1,500 above threshold
|
|
35
|
+
period: 2024
|
|
36
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
37
|
+
input:
|
|
38
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
39
|
+
adjusted_gross_income: 201_500
|
|
40
|
+
ctc_phase_out_threshold: 200_000
|
|
41
|
+
ctc_qualifying_children: 1
|
|
42
|
+
output:
|
|
43
|
+
ctc_phase_out: 100
|
|
44
|
+
|
|
45
|
+
- name: Three children - no phase out at threshold
|
|
46
|
+
period: 2024
|
|
47
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
48
|
+
input:
|
|
49
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
50
|
+
adjusted_gross_income: 200_000
|
|
51
|
+
ctc_phase_out_threshold: 200_000
|
|
52
|
+
ctc_qualifying_children: 3
|
|
53
|
+
output:
|
|
54
|
+
ctc_phase_out: 0
|
|
55
|
+
|
|
56
|
+
- name: Three children - partial phase out at $1,000 above threshold
|
|
57
|
+
period: 2024
|
|
58
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
59
|
+
input:
|
|
60
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
61
|
+
adjusted_gross_income: 201_000
|
|
62
|
+
ctc_phase_out_threshold: 200_000
|
|
63
|
+
ctc_qualifying_children: 3
|
|
64
|
+
output:
|
|
65
|
+
ctc_phase_out: 150
|
|
66
|
+
|
|
67
|
+
- name: Three children - partial phase out at $2,500 above threshold
|
|
68
|
+
period: 2024
|
|
69
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
70
|
+
input:
|
|
71
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
72
|
+
adjusted_gross_income: 202_500
|
|
73
|
+
ctc_phase_out_threshold: 200_000
|
|
74
|
+
ctc_qualifying_children: 3
|
|
75
|
+
output:
|
|
76
|
+
ctc_phase_out: 450
|
|
77
|
+
|
|
78
|
+
- name: Two children - large phase out at $10,000 above threshold
|
|
79
|
+
period: 2024
|
|
80
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
81
|
+
input:
|
|
82
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
83
|
+
adjusted_gross_income: 210_000
|
|
84
|
+
ctc_phase_out_threshold: 200_000
|
|
85
|
+
ctc_qualifying_children: 2
|
|
86
|
+
output:
|
|
87
|
+
ctc_phase_out: 1_000
|
|
88
|
+
|
|
89
|
+
- name: Counterfactual - same scenario without reform active
|
|
90
|
+
period: 2024
|
|
91
|
+
input:
|
|
92
|
+
adjusted_gross_income: 201_000
|
|
93
|
+
ctc_phase_out_threshold: 200_000
|
|
94
|
+
ctc_qualifying_children: 3
|
|
95
|
+
output:
|
|
96
|
+
ctc_phase_out: 50
|
|
97
|
+
|
|
98
|
+
- name: Edge case - exactly at increment boundary
|
|
99
|
+
period: 2024
|
|
100
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
101
|
+
input:
|
|
102
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
103
|
+
adjusted_gross_income: 202_000
|
|
104
|
+
ctc_phase_out_threshold: 200_000
|
|
105
|
+
ctc_qualifying_children: 2
|
|
106
|
+
output:
|
|
107
|
+
ctc_phase_out: 200
|
|
108
|
+
|
|
109
|
+
- name: Edge case - one dollar over increment boundary
|
|
110
|
+
period: 2024
|
|
111
|
+
reforms: policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out
|
|
112
|
+
input:
|
|
113
|
+
gov.contrib.ctc.per_child_phase_out.in_effect: true
|
|
114
|
+
adjusted_gross_income: 202_001
|
|
115
|
+
ctc_phase_out_threshold: 200_000
|
|
116
|
+
ctc_qualifying_children: 2
|
|
117
|
+
output:
|
|
118
|
+
ctc_phase_out: 300
|
|
@@ -193,8 +193,12 @@ policyengine_us/parameters/gov/contrib/crfb/tax_employer_social_security_tax/in_
|
|
|
193
193
|
policyengine_us/parameters/gov/contrib/ctc/additional_bracket/in_effect.yaml,sha256=ye9DVUx50Q5jWNw5m9RFtWHeB7MDwle7qHGX7_wd0Ck,187
|
|
194
194
|
policyengine_us/parameters/gov/contrib/ctc/additional_bracket/amount/actc.yaml,sha256=_Dyd6AWevefbcEc_QNyAy1LHeEiVXoNqqKp5CENKu3U,457
|
|
195
195
|
policyengine_us/parameters/gov/contrib/ctc/additional_bracket/amount/base.yaml,sha256=RUHbKjTNmmIbVnCkbY92r15PuS-YsVKiugQ7WIyZyBc,481
|
|
196
|
+
policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/amount.yaml,sha256=vkK1hshSL-DrspUXMW4DUUB98kpw7Wu0N1YRlUJPQgE,404
|
|
197
|
+
policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/in_effect.yaml,sha256=po9YS0kG2KWs3UUYQ-WV9XRZguIoYmSIHnmNYKpyAR8,190
|
|
196
198
|
policyengine_us/parameters/gov/contrib/ctc/oldest_child_supplement/amount.yaml,sha256=-AtkjP9B6crQ614NPcKC1pENjFG2VAp7sapWA2wj9Fk,213
|
|
197
199
|
policyengine_us/parameters/gov/contrib/ctc/oldest_child_supplement/in_effect.yaml,sha256=pEG7lrB40aoTw8sASIk_FBjdyH8GR0Dke6KsnPZWaFI,228
|
|
200
|
+
policyengine_us/parameters/gov/contrib/ctc/per_child_phase_in/in_effect.yaml,sha256=r-KcWaveg451v-uPGqQex3rubXeXU5EFUMsF_4k7Au8,211
|
|
201
|
+
policyengine_us/parameters/gov/contrib/ctc/per_child_phase_out/in_effect.yaml,sha256=iP6h0bnOU6wZCv86PPXB97TncyvqgWUV2yanR3JRgRU,213
|
|
198
202
|
policyengine_us/parameters/gov/contrib/dc_kccatc/README.md,sha256=T7HWK3KBedbUs698XSGQGObR5KrOmdavdMzx6GyG2MU,76
|
|
199
203
|
policyengine_us/parameters/gov/contrib/dc_kccatc/active.yaml,sha256=pqkV9omZweK_C22ZZ570uQxoiNK932yPatX-Y6M_wX8,181
|
|
200
204
|
policyengine_us/parameters/gov/contrib/dc_kccatc/expenses/max.yaml,sha256=OS040sM47tFcH4ayy13X6OnlTUwxcREdC5AADMl8nF8,164
|
|
@@ -3050,8 +3054,8 @@ policyengine_us/parameters/gov/usda/csfp/fpg_limit.yaml,sha256=CtLqDLOOtBSjDsDO4
|
|
|
3050
3054
|
policyengine_us/parameters/gov/usda/csfp/min_age.yaml,sha256=7ooj6hCVj3xQdGCjKdLTdSkb97-TuI91VJmql1P3z6c,376
|
|
3051
3055
|
policyengine_us/parameters/gov/usda/school_meals/categorical_eligibility.yaml,sha256=SWdC8w6Py32eSnhPT0q23_i_RPTFw0pYryRDQxzmQyI,756
|
|
3052
3056
|
policyengine_us/parameters/gov/usda/school_meals/school_days.yaml,sha256=lb1wHgRMwr2rar9_AenI5rVEqP-dBsyJAVfykfpGdxY,346
|
|
3053
|
-
policyengine_us/parameters/gov/usda/school_meals/amount/nslp.yaml,sha256=
|
|
3054
|
-
policyengine_us/parameters/gov/usda/school_meals/amount/sbp.yaml,sha256=
|
|
3057
|
+
policyengine_us/parameters/gov/usda/school_meals/amount/nslp.yaml,sha256=fOgx9uYZezcNYmIB8RxPEgZTXwSlwmvQ5ElX8Lvpobo,3299
|
|
3058
|
+
policyengine_us/parameters/gov/usda/school_meals/amount/sbp.yaml,sha256=NbhCytCY8TuFd7fclU40drc4wPG8qQLByA43O26Qdlo,3283
|
|
3055
3059
|
policyengine_us/parameters/gov/usda/school_meals/income/limit.yaml,sha256=VeFvZeZ8j0vkMLN60x3AKqjhVwVMt0rMAf_wVVD_-OE,487
|
|
3056
3060
|
policyengine_us/parameters/gov/usda/school_meals/income/sources.yaml,sha256=e8eVM2_5uwFgWP3MusGqBz7ipexbFcJFV5ULpnqTnX8,586
|
|
3057
3061
|
policyengine_us/parameters/gov/usda/snap/README.md,sha256=fA48lyX5pFyLm5yBYS96cBIRyDNAX1pz1m7jbYw6Hds,51
|
|
@@ -3133,7 +3137,7 @@ policyengine_us/params_on_demand/gov/hhs/medicaid/geography/medicaid_rating_area
|
|
|
3133
3137
|
policyengine_us/reforms/__init__.py,sha256=FPV8k2633kzUhbKUK8jC6yJONbnZ5n9zLAq2UL57KH4,113
|
|
3134
3138
|
policyengine_us/reforms/dc_kccatc.py,sha256=LyGMfEKe-0TgQ-2vCYGOD8W-EGEW8_DgIqCQP89qDyg,4283
|
|
3135
3139
|
policyengine_us/reforms/dc_tax_threshold_joint_ratio.py,sha256=G-5E1EJFGZ3VeUl_fuyj82nMIttHRNRdlT-x98koJrk,1633
|
|
3136
|
-
policyengine_us/reforms/reforms.py,sha256=
|
|
3140
|
+
policyengine_us/reforms/reforms.py,sha256=vlmmXymCgkY58URYF-3-Sdcy_SvlScKjG-YF7vco2cU,10453
|
|
3137
3141
|
policyengine_us/reforms/taxsim.py,sha256=bXNFWfjBX5USld1C7fziT6BBmRy-avz00QtL8WmCHy0,5276
|
|
3138
3142
|
policyengine_us/reforms/winship.py,sha256=_q74Af1nkmoh0-M6PZJ2FcJAn6v5zf5sAEgvxjwHwyA,3069
|
|
3139
3143
|
policyengine_us/reforms/additional_tax_bracket/__init__.py,sha256=087GDzojnzkbARUgGTQDMNVWJzjtNZvBGr46jfu1kXc,89
|
|
@@ -3169,9 +3173,12 @@ policyengine_us/reforms/crfb/senior_deduction_extension.py,sha256=Hdg16tmU8bYUa9
|
|
|
3169
3173
|
policyengine_us/reforms/crfb/tax_employer_medicare_tax.py,sha256=Hc2GVwoXn2b_izOyoEpocySLo11BdmzFnyQoEiHJsFI,4236
|
|
3170
3174
|
policyengine_us/reforms/crfb/tax_employer_payroll_tax.py,sha256=-V6vv51aYb0NRuB4mjqfjD6yGNSLqqgbKVhVG455U3I,4678
|
|
3171
3175
|
policyengine_us/reforms/crfb/tax_employer_social_security_tax.py,sha256=hawAdLtwCnY3_7jUVPTM0KpeYRfT7tVk0xqCMhdxP4E,4292
|
|
3172
|
-
policyengine_us/reforms/ctc/__init__.py,sha256=
|
|
3176
|
+
policyengine_us/reforms/ctc/__init__.py,sha256=mXLIEHPIXHe5PyI96pTmP9b3y1jwwTcMoRNOIx808Y4,434
|
|
3173
3177
|
policyengine_us/reforms/ctc/ctc_additional_bracket.py,sha256=KNmEB_OLwpLbvaPo4w0n18VnAmg0u3efirfVVCOrWj4,2391
|
|
3178
|
+
policyengine_us/reforms/ctc/ctc_minimum_refundable_amount.py,sha256=TWMzyJOB1KwGhZ4j8aeCc_GbIcmUqf2I1cetwc7D4y4,3352
|
|
3174
3179
|
policyengine_us/reforms/ctc/ctc_older_child_supplement.py,sha256=eGkehEr_26CYSFo3K4gZ2vJYR_8wDX4r776DIMEaaik,1714
|
|
3180
|
+
policyengine_us/reforms/ctc/ctc_per_child_phase_in.py,sha256=jgfq8YOtYBc8gN-oleE8Fp2zG7h5X0LHLn6At14vFdk,1453
|
|
3181
|
+
policyengine_us/reforms/ctc/ctc_per_child_phase_out.py,sha256=MhcXlTVpDTg1QbGPP-eq-VxKOD6eqnkoKpgbI_lc6_I,1783
|
|
3175
3182
|
policyengine_us/reforms/deductions/salt/__init__.py,sha256=wbfISQikAqCdy0MnLC-oZKmieRksm64MKHnNFbW3Ldw,114
|
|
3176
3183
|
policyengine_us/reforms/deductions/salt/limit_salt_deduction_to_property_taxes.py,sha256=F3KrYmOeR0JdkSxj7iClIdkagpHDcUpGnYLFCIjd7hw,1372
|
|
3177
3184
|
policyengine_us/reforms/eitc/__init__.py,sha256=bHbMSYp45mGa_JeBgHxDeyBh2_cGoc74SGKZ_8NKCCc,100
|
|
@@ -5097,11 +5104,11 @@ policyengine_us/tests/policy/baseline/gov/usda/is_usda_elderly.yaml,sha256=NcQfi
|
|
|
5097
5104
|
policyengine_us/tests/policy/baseline/gov/usda/csfp/commodity_supplemental_food_program.yaml,sha256=5HRzWfGmOmk7baZPGBUSPL5FsU7pKa6yDxWGhA8vTOc,432
|
|
5098
5105
|
policyengine_us/tests/policy/baseline/gov/usda/csfp/integration.yaml,sha256=HrY6IZHAwTtvJbKe3jcqyPdWzX3ucVf2vrT13Wy1lOg,540
|
|
5099
5106
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/free_school_meals.yaml,sha256=5scrkj13rPiGCwbn4j_qo_zVFiFm8qqKueEU46bUu_M,320
|
|
5100
|
-
policyengine_us/tests/policy/baseline/gov/usda/school_meals/integration.yaml,sha256=
|
|
5107
|
+
policyengine_us/tests/policy/baseline/gov/usda/school_meals/integration.yaml,sha256=30mUTMZ0UHI5xxQXJ3FH8PW3yh0hPDkQPToIoR87AoQ,1188
|
|
5101
5108
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/meets_school_meal_categorical_eligibility.yaml,sha256=qdoPOOhUCmXXg9VuW5Ry1FoeieeQVHrZK8qHXlfA1ug,2267
|
|
5102
5109
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/reduced_price_school_meals.yaml,sha256=bssmR8x9haRh62GzlK7MbMXLcRJERc5ATsRAdd24YQg,332
|
|
5103
5110
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_countable_income.yaml,sha256=bAZYn4t3-27uZV3dIyPce7f72DDlzq6C7wA0sIYSrTY,574
|
|
5104
|
-
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_daily_subsidy.yaml,sha256=
|
|
5111
|
+
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_daily_subsidy.yaml,sha256=GKn7piKnwR5xwTmxtGpzQg-2uQ9bIaNtkJibSYILYdo,560
|
|
5105
5112
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_fpg_ratio.yaml,sha256=nhOAnRJ_cpqN9GfXLAxw2oJYrWgep7FIXIhfWO4OvNw,181
|
|
5106
5113
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_net_subsidy.yaml,sha256=tG0qyY9FMP9xzrqCDeM11ERzepd0vziKIaQTmE_Q7JI,330
|
|
5107
5114
|
policyengine_us/tests/policy/baseline/gov/usda/school_meals/school_meal_paid_daily_subsidy.yaml,sha256=6bUsc4xFDAvT7cK1vNB1SSkermTd5gb-qECZHOcOsPk,138
|
|
@@ -5258,7 +5265,10 @@ policyengine_us/tests/policy/contrib/crfb/tax_employer_medicare_tax.yaml,sha256=
|
|
|
5258
5265
|
policyengine_us/tests/policy/contrib/crfb/tax_employer_payroll_tax_percentage.yaml,sha256=N3l6vYyluEGIbd2HfSQFuAYPzg0r4CC0JZujm3-joO8,5510
|
|
5259
5266
|
policyengine_us/tests/policy/contrib/crfb/tax_employer_social_security_tax.yaml,sha256=0boINedj32lA-V2VLztNBoylnOlzRinlwtcg3JIij0g,474
|
|
5260
5267
|
policyengine_us/tests/policy/contrib/ctc/ctc_additional_bracket.yaml,sha256=0vUrhnn91ETd_lkk1YqG5EzGj8wTj2r5mHZ3A-mjwlo,3445
|
|
5268
|
+
policyengine_us/tests/policy/contrib/ctc/ctc_minimum_refundable_amount.yaml,sha256=bIkE1gHCmMTg8NWtGCZju3_teTwGRjQc3g2usM-wBCQ,11324
|
|
5261
5269
|
policyengine_us/tests/policy/contrib/ctc/ctc_older_child_supplement.yaml,sha256=7P67DlafOtTxAcpH2ossYPDInWyz6DJayNf_0Ed7rcQ,2059
|
|
5270
|
+
policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_in.yaml,sha256=uCAlu5Gj4iww2hCWbsqFst7zcT6UvM9_D9cKQyRc5QE,4754
|
|
5271
|
+
policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_out.yaml,sha256=H5k9TyIge7VeZRGxIXVTOQPV5SpqAuX509iV-SXLBI4,3829
|
|
5262
5272
|
policyengine_us/tests/policy/contrib/deductions/salt/limit_salt_deduction_to_property_taxes.yaml,sha256=hm9EmieOGGkIMfWgcNeKegLgAz9QQiGAeZKTlmxpJgU,1453
|
|
5263
5273
|
policyengine_us/tests/policy/contrib/eitc/halve_joint_eitc_phase_out_rate.yaml,sha256=PxlvKGjORZl3BldCdXJMCxTuQ4mcdwPXYWsuSSB9fqw,1605
|
|
5264
5274
|
policyengine_us/tests/policy/contrib/federal/abolish_federal_income_tax.yaml,sha256=mz696NDcL4oiTfj4jCg-PLKDE5p3-nsdAaIUglkz9rs,1600
|
|
@@ -8470,8 +8480,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
|
|
|
8470
8480
|
policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
|
|
8471
8481
|
policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
|
|
8472
8482
|
policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
|
|
8473
|
-
policyengine_us-1.
|
|
8474
|
-
policyengine_us-1.
|
|
8475
|
-
policyengine_us-1.
|
|
8476
|
-
policyengine_us-1.
|
|
8477
|
-
policyengine_us-1.
|
|
8483
|
+
policyengine_us-1.407.0.dist-info/METADATA,sha256=ATkaWtTS25ldD_nciFznndHHCpAjZS4NTMMmlYMvmRQ,1649
|
|
8484
|
+
policyengine_us-1.407.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
8485
|
+
policyengine_us-1.407.0.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
|
|
8486
|
+
policyengine_us-1.407.0.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
|
|
8487
|
+
policyengine_us-1.407.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|