policyengine-us 1.407.2__py3-none-any.whl → 1.407.4__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.

@@ -16,4 +16,3 @@ brackets:
16
16
  2024-01-01: 6
17
17
  amount:
18
18
  2024-01-01: 0
19
-
@@ -14,6 +14,9 @@ values:
14
14
  - pension_income
15
15
  - rental_income
16
16
  - capital_gains
17
+ - partnership_s_corp_income
18
+ - farm_income
19
+ - farm_rent_income
17
20
 
18
21
  metadata:
19
22
  unit: list
@@ -38,37 +38,69 @@ def create_ctc_minimum_refundable_amount() -> Reform:
38
38
  # This is the full CTC. This is then limited to the maximum refundable amount per child as per the
39
39
  # TCJA provision.
40
40
 
41
- ctc = parameters(period).gov.irs.credits.ctc
42
-
43
41
  maximum_amount = tax_unit("ctc_refundable_maximum", period)
44
-
45
42
  total_ctc = tax_unit("ctc", period)
46
43
 
47
- if ctc.refundable.fully_refundable:
48
- reduction = tax_unit("ctc_phase_out", period)
49
- reduced_max_amount = max_(0, maximum_amount - reduction)
50
- return min_(reduced_max_amount, total_ctc)
51
-
52
44
  maximum_refundable_ctc = min_(maximum_amount, total_ctc)
53
45
  minimum_refundable_ctc = add(
54
46
  tax_unit, period, ["ctc_minimum_refundable_amount"]
55
47
  )
56
48
  phase_in = tax_unit("ctc_phase_in", period)
57
- phase_in_with_minimum = max_(phase_in, minimum_refundable_ctc)
58
- limiting_tax = tax_unit("ctc_limiting_tax_liability", period)
59
- ctc_capped_by_tax = min_(total_ctc, limiting_tax)
49
+
50
+ phase_in_with_minimum = phase_in + minimum_refundable_ctc
60
51
  ctc_capped_by_increased_tax = min_(
61
- total_ctc, limiting_tax + phase_in_with_minimum
52
+ total_ctc, phase_in_with_minimum
62
53
  )
63
- amount_ctc_would_increase = (
64
- ctc_capped_by_increased_tax - ctc_capped_by_tax
54
+
55
+ return min_(maximum_refundable_ctc, ctc_capped_by_increased_tax)
56
+
57
+ class ctc_refundable_maximum(Variable):
58
+ value_type = float
59
+ entity = TaxUnit
60
+ label = "Maximum refundable CTC"
61
+ unit = USD
62
+ documentation = "The maximum refundable CTC for this person."
63
+ definition_period = YEAR
64
+ reference = (
65
+ "https://www.law.cornell.edu/uscode/text/26/24#a",
66
+ "https://www.law.cornell.edu/uscode/text/26/24#h",
67
+ "https://www.law.cornell.edu/uscode/text/26/24#i",
68
+ "https://www.irs.gov/pub/irs-prior/f1040--2021.pdf",
69
+ "https://www.irs.gov/pub/irs-prior/f1040s8--2021.pdf",
70
+ )
71
+
72
+ def formula(tax_unit, period, parameters):
73
+ person = tax_unit.members
74
+ # Use either normal or ARPA CTC maximums.
75
+ individual_max = person("ctc_child_individual_maximum", period)
76
+ arpa_max = person("ctc_child_individual_maximum_arpa", period)
77
+ child_amount = individual_max + arpa_max
78
+ ctc = parameters(period).gov.irs.credits.ctc
79
+ qualifying_children = tax_unit("ctc_qualifying_children", period)
80
+ refundable_max = (
81
+ ctc.refundable.individual_max * qualifying_children
65
82
  )
66
- return min_(maximum_refundable_ctc, amount_ctc_would_increase)
83
+ return tax_unit.sum(min_(child_amount, refundable_max))
84
+
85
+ class non_refundable_ctc(Variable):
86
+ value_type = float
87
+ entity = TaxUnit
88
+ label = "non-refundable CTC"
89
+ unit = USD
90
+ documentation = (
91
+ "The portion of the Child Tax Credit that is not refundable."
92
+ )
93
+ definition_period = YEAR
94
+
95
+ def formula(tax_unit, period, parameters):
96
+ return 0
67
97
 
68
98
  class reform(Reform):
69
99
  def apply(self):
70
100
  self.update_variable(ctc_minimum_refundable_amount)
71
101
  self.update_variable(refundable_ctc)
102
+ self.update_variable(ctc_refundable_maximum)
103
+ self.update_variable(non_refundable_ctc)
72
104
 
73
105
  return reform
74
106
 
@@ -37,7 +37,7 @@ def create_ctc_per_child_phase_in_reform(
37
37
  if bypass:
38
38
  return create_ctc_per_child_phase_in()
39
39
 
40
- p = parameters.gov.contrib.ctc.per_child_phase_out
40
+ p = parameters.gov.contrib.ctc.per_child_phase_in
41
41
 
42
42
  reform_active = False
43
43
  current_period = period_(period)
@@ -2,6 +2,7 @@ from policyengine_us.model_api import *
2
2
  import numpy as np
3
3
  from policyengine_core.periods import period as period_
4
4
  from policyengine_core.periods import instant
5
+ import numpy as np
5
6
 
6
7
 
7
8
  def create_ctc_per_child_phase_out() -> Reform:
@@ -30,9 +31,34 @@ def create_ctc_per_child_phase_out() -> Reform:
30
31
  reduction_amount = p.amount * qualifying_children
31
32
  return increments * reduction_amount
32
33
 
34
+ class ctc_arpa_uncapped_phase_out(Variable):
35
+ value_type = float
36
+ entity = TaxUnit
37
+ label = "Uncapped phase-out of ARPA CTC increase"
38
+ unit = USD
39
+ definition_period = YEAR
40
+
41
+ def formula(tax_unit, period, parameters):
42
+ # Logic sequence follows the form, which is clearer than the IRC.
43
+ p = parameters(period).gov.irs.credits.ctc.phase_out.arpa
44
+ # defined_for didn't work.
45
+ if not p.in_effect:
46
+ return 0
47
+ # The ARPA CTC has two phase-outs: the original, and a new phase-out
48
+ # applying before and only to the increase in the maximum CTC under ARPA.
49
+ # Calculate the income used to assess the new phase-out.
50
+ threshold = tax_unit("ctc_arpa_phase_out_threshold", period)
51
+ agi = tax_unit("adjusted_gross_income", period)
52
+ excess = max_(0, agi - threshold)
53
+ increments = np.ceil(excess / p.increment)
54
+ qualifying_children = tax_unit("ctc_qualifying_children", period)
55
+ reduction_amount = p.amount * qualifying_children
56
+ return increments * reduction_amount
57
+
33
58
  class reform(Reform):
34
59
  def apply(self):
35
60
  self.update_variable(ctc_phase_out)
61
+ self.update_variable(ctc_arpa_uncapped_phase_out)
36
62
 
37
63
  return reform
38
64
 
@@ -54,70 +54,9 @@
54
54
  # Should use minimum of 800
55
55
  ctc_phase_in: 75
56
56
  ctc_minimum_refundable_amount: [0, 800]
57
- refundable_ctc: 800
57
+ refundable_ctc: 875
58
58
  ctc: 2_000
59
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
60
 
122
61
  - name: Integration test - multiple children with different ages
123
62
  period: 2024
@@ -244,64 +183,7 @@
244
183
  # Tax liability is 810, amount_ctc_would_increase = min(2000, 810+4125) - min(2000, 810) = 1190
245
184
  refundable_ctc: 1_190 # Limited by amount CTC would increase
246
185
 
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
186
+ - name: Edge case - multiple children ensuring, multiplication of refundable maximum
305
187
  period: 2024
306
188
  reforms: policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount
307
189
  input:
@@ -330,8 +212,8 @@
330
212
  # Total minimum = 1_300
331
213
  ctc_phase_in: 2_625 # (20_000 - 2_500) * 0.15
332
214
  # 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
215
+ ctc_refundable_maximum: 4_000 # 2 * 2_000
216
+ refundable_ctc: 3_925 # Uses phase-in + minimum
335
217
  ctc: 4_000 # 2 children * 2_000
336
218
 
337
219
  - name: Edge case - very high income with phase-out affecting refundability
@@ -0,0 +1,310 @@
1
+ - name: HoH filer with 2 kids, 5k earnings
2
+ period: 2025
3
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
4
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
5
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
6
+ input:
7
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
8
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
9
+ gov.contrib.ctc.minimum_refundable.in_effect: true
10
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
11
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
12
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
13
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
14
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
15
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
16
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
17
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
18
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
19
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
20
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
21
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
22
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
23
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
24
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
25
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
26
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
27
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
28
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
29
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
30
+ gov.irs.credits.ctc.phase_out.amount: 25
31
+ people:
32
+ person1:
33
+ age: 40
34
+ employment_income: 5_000
35
+ person2:
36
+ age: 10
37
+ person3:
38
+ age: 10
39
+ tax_units:
40
+ tax_unit:
41
+ members: [person1, person2, person3]
42
+ households:
43
+ household:
44
+ members: [person1, person2, person3]
45
+ state_code: TX
46
+ output:
47
+ ctc_arpa_phase_out: 0
48
+ ctc_arpa_max_addition: 5_200
49
+ refundable_ctc: 6_800
50
+ non_refundable_ctc: 0
51
+
52
+ - name: HoH filer with 2 kids, 20k earnings
53
+ period: 2025
54
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
55
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
56
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
57
+ input:
58
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
59
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
60
+ gov.contrib.ctc.minimum_refundable.in_effect: true
61
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
62
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
63
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
64
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
65
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
66
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
67
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
68
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
69
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
70
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
71
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
72
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
73
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
74
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
75
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
76
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
77
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
78
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
79
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
80
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
81
+ gov.irs.credits.ctc.phase_out.amount: 25
82
+ people:
83
+ person1:
84
+ age: 40
85
+ employment_income: 20_000
86
+ person2:
87
+ age: 10
88
+ person3:
89
+ age: 10
90
+ tax_units:
91
+ tax_unit:
92
+ members: [person1, person2, person3]
93
+ households:
94
+ household:
95
+ members: [person1, person2, person3]
96
+ state_code: TX
97
+ output:
98
+ refundable_ctc: 9_600
99
+ non_refundable_ctc: 0
100
+
101
+ - name: HoH filer with 2 kids, 75k earnings
102
+ period: 2025
103
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
104
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
105
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
106
+ input:
107
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
108
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
109
+ gov.contrib.ctc.minimum_refundable.in_effect: true
110
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
111
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
112
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
113
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
114
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
115
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
116
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
117
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
118
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
119
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
120
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
121
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
122
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
123
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
124
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
125
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
126
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
127
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
128
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
129
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
130
+ gov.irs.credits.ctc.phase_out.amount: 25
131
+ people:
132
+ person1:
133
+ age: 40
134
+ employment_income: 75_000
135
+ person2:
136
+ age: 10
137
+ person3:
138
+ age: 10
139
+ tax_units:
140
+ tax_unit:
141
+ members: [person1, person2, person3]
142
+ households:
143
+ household:
144
+ members: [person1, person2, person3]
145
+ state_code: TX
146
+ output:
147
+ ctc_phase_out: 0
148
+ ctc_arpa_max_addition: 5_200
149
+ ctc_arpa_phase_out: 2_500
150
+ refundable_ctc: 7_100
151
+ non_refundable_ctc: 0
152
+
153
+ - name: Joint filer with 3 kids, 5k income
154
+ period: 2025
155
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
156
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
157
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
158
+ input:
159
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
160
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
161
+ gov.contrib.ctc.minimum_refundable.in_effect: true
162
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
163
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
164
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
165
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
166
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
167
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
168
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
169
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
170
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
171
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
172
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
173
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
174
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
175
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
176
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
177
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
178
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
179
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
180
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
181
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
182
+ gov.irs.credits.ctc.phase_out.amount: 25
183
+ people:
184
+ person1:
185
+ age: 40
186
+ employment_income: 5_000
187
+ person2:
188
+ age: 40
189
+ person3:
190
+ age: 10
191
+ person4:
192
+ age: 10
193
+ person5:
194
+ age: 10
195
+ tax_units:
196
+ tax_unit:
197
+ members: [person1, person2, person3, person4, person5]
198
+ households:
199
+ household:
200
+ members: [person1, person2, person3, person4, person5]
201
+ state_code: TX
202
+ output:
203
+ refundable_ctc: 10_200
204
+ non_refundable_ctc: 0
205
+
206
+ - name: Joint filer with 3 kids, 75k income
207
+ period: 2025
208
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
209
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
210
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
211
+ input:
212
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
213
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
214
+ gov.contrib.ctc.minimum_refundable.in_effect: true
215
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
216
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
217
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
218
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
219
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
220
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
221
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
222
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
223
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
224
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
225
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
226
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
227
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
228
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
229
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
230
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
231
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
232
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
233
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
234
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
235
+ gov.irs.credits.ctc.phase_out.amount: 25
236
+ people:
237
+ person1:
238
+ age: 40
239
+ employment_income: 75_000
240
+ person2:
241
+ age: 40
242
+ person3:
243
+ age: 10
244
+ person4:
245
+ age: 10
246
+ person5:
247
+ age: 10
248
+ tax_units:
249
+ tax_unit:
250
+ members: [person1, person2, person3, person4, person5]
251
+ households:
252
+ household:
253
+ members: [person1, person2, person3, person4, person5]
254
+ state_code: TX
255
+ output:
256
+ refundable_ctc: 11_400
257
+ non_refundable_ctc: 0
258
+
259
+ - name: Joint filer with 3 kids, 250k income
260
+ period: 2025
261
+ reforms: [policyengine_us.reforms.ctc.ctc_per_child_phase_in.ctc_per_child_phase_in,
262
+ policyengine_us.reforms.ctc.ctc_minimum_refundable_amount.ctc_minimum_refundable_amount,
263
+ policyengine_us.reforms.ctc.ctc_per_child_phase_out.ctc_per_child_phase_out]
264
+ input:
265
+ gov.contrib.ctc.per_child_phase_out.in_effect: true
266
+ gov.contrib.ctc.per_child_phase_in.in_effect: true
267
+ gov.contrib.ctc.minimum_refundable.in_effect: true
268
+ gov.contrib.ctc.minimum_refundable.amount[0].amount: 2_400
269
+ gov.contrib.ctc.minimum_refundable.amount[1].amount: 2_400
270
+ gov.irs.credits.ctc.refundable.individual_max: 4_800
271
+ gov.irs.credits.ctc.refundable.phase_in.threshold: 0
272
+ gov.irs.credits.ctc.refundable.phase_in.rate: 0.2
273
+ gov.irs.credits.ctc.amount.base[0].amount: 2_200
274
+ gov.irs.credits.ctc.amount.arpa[0].amount: 4_800
275
+ gov.irs.credits.ctc.amount.arpa[1].amount: 4_800
276
+ gov.irs.credits.ctc.phase_out.arpa.in_effect: true
277
+ gov.irs.credits.ctc.phase_out.arpa.threshold.JOINT: 35_000
278
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SINGLE: 25_000
279
+ gov.irs.credits.ctc.phase_out.arpa.threshold.HEAD_OF_HOUSEHOLD: 25_000
280
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SURVIVING_SPOUSE: 25_000
281
+ gov.irs.credits.ctc.phase_out.arpa.threshold.SEPARATE: 25_000
282
+ gov.irs.credits.ctc.phase_out.threshold.JOINT: 200_000
283
+ gov.irs.credits.ctc.phase_out.threshold.SINGLE: 100_000
284
+ gov.irs.credits.ctc.phase_out.threshold.HEAD_OF_HOUSEHOLD: 100_000
285
+ gov.irs.credits.ctc.phase_out.threshold.SURVIVING_SPOUSE: 100_000
286
+ gov.irs.credits.ctc.phase_out.threshold.SEPARATE: 100_000
287
+ gov.irs.credits.ctc.phase_out.arpa.amount: 25
288
+ gov.irs.credits.ctc.phase_out.amount: 25
289
+ people:
290
+ person1:
291
+ age: 40
292
+ employment_income: 250_000
293
+ person2:
294
+ age: 40
295
+ person3:
296
+ age: 10
297
+ person4:
298
+ age: 10
299
+ person5:
300
+ age: 10
301
+ tax_units:
302
+ tax_unit:
303
+ members: [person1, person2, person3, person4, person5]
304
+ households:
305
+ household:
306
+ members: [person1, person2, person3, person4, person5]
307
+ state_code: TX
308
+ output:
309
+ refundable_ctc: 2_850
310
+ non_refundable_ctc: 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: policyengine-us
3
- Version: 1.407.2
3
+ Version: 1.407.4
4
4
  Summary: Add your description here.
5
5
  Author-email: PolicyEngine <hello@policyengine.org>
6
6
  License-File: LICENSE
@@ -193,7 +193,7 @@ 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
196
+ policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/amount.yaml,sha256=N-CdleZoKvaiccSvOuJxXUpAIaqQ-_L7AzJZJiwDNzs,401
197
197
  policyengine_us/parameters/gov/contrib/ctc/minimum_refundable/in_effect.yaml,sha256=po9YS0kG2KWs3UUYQ-WV9XRZguIoYmSIHnmNYKpyAR8,190
198
198
  policyengine_us/parameters/gov/contrib/ctc/oldest_child_supplement/amount.yaml,sha256=-AtkjP9B6crQ614NPcKC1pENjFG2VAp7sapWA2wj9Fk,213
199
199
  policyengine_us/parameters/gov/contrib/ctc/oldest_child_supplement/in_effect.yaml,sha256=pEG7lrB40aoTw8sASIk_FBjdyH8GR0Dke6KsnPZWaFI,228
@@ -908,7 +908,7 @@ policyengine_us/parameters/gov/states/ak/dor/energy_relief.yaml,sha256=6T0AXhAjF
908
908
  policyengine_us/parameters/gov/states/ak/dor/permanent_fund_dividend.yaml,sha256=cGueJnlem2sK01bVhLjs512GHpOEMuN-CTGOv3qr9JE,651
909
909
  policyengine_us/parameters/gov/states/al/README.md,sha256=mrumWoBPgq0zXtNCUBb1U49ECXV-lvAAdJGCdBVshoc,10
910
910
  policyengine_us/parameters/gov/states/al/tax/income/agi/deductions.yaml,sha256=p-38SoM33HVvL0DJX72dJiBybQ1Z2RtDkb_9OVz4UOg,1497
911
- policyengine_us/parameters/gov/states/al/tax/income/agi/gross_income_sources.yaml,sha256=v0wWg4JGRByE7viRAJPZQl0SMErwsn1Jd0SRbHn99mU,1407
911
+ policyengine_us/parameters/gov/states/al/tax/income/agi/gross_income_sources.yaml,sha256=XIT5bVIIO1EjmObY-zb47mPbuJHeV3lv8LE1iWTluJ4,1480
912
912
  policyengine_us/parameters/gov/states/al/tax/income/deductions/federal_tax/credits.yaml,sha256=ncIfbcpLlqYTx7IPMpaQlvphV7oitGMxE11s1H5vT0w,1068
913
913
  policyengine_us/parameters/gov/states/al/tax/income/deductions/itemized/sources.yaml,sha256=U-qze5dA2ORbwrdVX8uGJuOLYM_qZctCM342Hgn2YyU,1599
914
914
  policyengine_us/parameters/gov/states/al/tax/income/deductions/itemized/work_related_expense_rate.yaml,sha256=yc_humRGPbZ8-vBZ8Y5RiWT-JKgqFbOFO6fpf49-8yA,1071
@@ -3175,10 +3175,10 @@ policyengine_us/reforms/crfb/tax_employer_payroll_tax.py,sha256=-V6vv51aYb0NRuB4
3175
3175
  policyengine_us/reforms/crfb/tax_employer_social_security_tax.py,sha256=hawAdLtwCnY3_7jUVPTM0KpeYRfT7tVk0xqCMhdxP4E,4292
3176
3176
  policyengine_us/reforms/ctc/__init__.py,sha256=mXLIEHPIXHe5PyI96pTmP9b3y1jwwTcMoRNOIx808Y4,434
3177
3177
  policyengine_us/reforms/ctc/ctc_additional_bracket.py,sha256=KNmEB_OLwpLbvaPo4w0n18VnAmg0u3efirfVVCOrWj4,2391
3178
- policyengine_us/reforms/ctc/ctc_minimum_refundable_amount.py,sha256=_IoPTVQ0bW-PtM1bfhuIPET87afksgahXszST8TZ_k4,3684
3178
+ policyengine_us/reforms/ctc/ctc_minimum_refundable_amount.py,sha256=Enge7PcmzrG8UhJWi1Y-b7s5PkJfK0Yt5a-Xmp3KYb4,4862
3179
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=MD1wBu3Y5pe5VYsbwdmuTH36_TEhCJhwKswTEX_mJ7k,1766
3181
- policyengine_us/reforms/ctc/ctc_per_child_phase_out.py,sha256=d6MN9TKAx6WpNVoH3ZY1u98zrByI1BFmvU5o5pv96zo,2115
3180
+ policyengine_us/reforms/ctc/ctc_per_child_phase_in.py,sha256=9URwoFEFvP7W-N_rmEG9_N1LTUEEvOS_jX7z8qT6PAQ,1765
3181
+ policyengine_us/reforms/ctc/ctc_per_child_phase_out.py,sha256=6Z55YKtB5K_Wl21O_6HpohPEp4nJ0PUCAtkt_T2nYY8,3363
3182
3182
  policyengine_us/reforms/deductions/salt/__init__.py,sha256=wbfISQikAqCdy0MnLC-oZKmieRksm64MKHnNFbW3Ldw,114
3183
3183
  policyengine_us/reforms/deductions/salt/limit_salt_deduction_to_property_taxes.py,sha256=F3KrYmOeR0JdkSxj7iClIdkagpHDcUpGnYLFCIjd7hw,1372
3184
3184
  policyengine_us/reforms/eitc/__init__.py,sha256=bHbMSYp45mGa_JeBgHxDeyBh2_cGoc74SGKZ_8NKCCc,100
@@ -5265,10 +5265,11 @@ policyengine_us/tests/policy/contrib/crfb/tax_employer_medicare_tax.yaml,sha256=
5265
5265
  policyengine_us/tests/policy/contrib/crfb/tax_employer_payroll_tax_percentage.yaml,sha256=N3l6vYyluEGIbd2HfSQFuAYPzg0r4CC0JZujm3-joO8,5510
5266
5266
  policyengine_us/tests/policy/contrib/crfb/tax_employer_social_security_tax.yaml,sha256=0boINedj32lA-V2VLztNBoylnOlzRinlwtcg3JIij0g,474
5267
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
5268
+ policyengine_us/tests/policy/contrib/ctc/ctc_minimum_refundable_amount.yaml,sha256=Q5WTmiU2PusZvwo1zfMmRAMwOSGtgYMR0jqrMZcZe84,7255
5269
5269
  policyengine_us/tests/policy/contrib/ctc/ctc_older_child_supplement.yaml,sha256=7P67DlafOtTxAcpH2ossYPDInWyz6DJayNf_0Ed7rcQ,2059
5270
5270
  policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_in.yaml,sha256=uCAlu5Gj4iww2hCWbsqFst7zcT6UvM9_D9cKQyRc5QE,4754
5271
5271
  policyengine_us/tests/policy/contrib/ctc/ctc_per_child_phase_out.yaml,sha256=H5k9TyIge7VeZRGxIXVTOQPV5SpqAuX509iV-SXLBI4,3829
5272
+ policyengine_us/tests/policy/contrib/ctc/integration.yaml,sha256=AXSMGiunYvGYxnz8DWAF90w_2dytjOReofBOD51a7_g,13300
5272
5273
  policyengine_us/tests/policy/contrib/deductions/salt/limit_salt_deduction_to_property_taxes.yaml,sha256=hm9EmieOGGkIMfWgcNeKegLgAz9QQiGAeZKTlmxpJgU,1453
5273
5274
  policyengine_us/tests/policy/contrib/eitc/halve_joint_eitc_phase_out_rate.yaml,sha256=PxlvKGjORZl3BldCdXJMCxTuQ4mcdwPXYWsuSSB9fqw,1605
5274
5275
  policyengine_us/tests/policy/contrib/federal/abolish_federal_income_tax.yaml,sha256=mz696NDcL4oiTfj4jCg-PLKDE5p3-nsdAaIUglkz9rs,1600
@@ -8480,8 +8481,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
8480
8481
  policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
8481
8482
  policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
8482
8483
  policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
8483
- policyengine_us-1.407.2.dist-info/METADATA,sha256=mDkgKQDsdKSG9lgOsT8kfBaZYJcuNY6WBbkSyjVw3Vw,1649
8484
- policyengine_us-1.407.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8485
- policyengine_us-1.407.2.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8486
- policyengine_us-1.407.2.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8487
- policyengine_us-1.407.2.dist-info/RECORD,,
8484
+ policyengine_us-1.407.4.dist-info/METADATA,sha256=MGMx0Q5pmoMd5UER2TpATMjqSUJk6qHK3yUxXblQR3Q,1649
8485
+ policyengine_us-1.407.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
8486
+ policyengine_us-1.407.4.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
8487
+ policyengine_us-1.407.4.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
8488
+ policyengine_us-1.407.4.dist-info/RECORD,,