policyengine-us 1.441.1__py3-none-any.whl → 1.441.2__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.
- policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
- policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
- policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
- {policyengine_us-1.441.1.dist-info → policyengine_us-1.441.2.dist-info}/METADATA +1 -1
- {policyengine_us-1.441.1.dist-info → policyengine_us-1.441.2.dist-info}/RECORD +8 -6
- {policyengine_us-1.441.1.dist-info → policyengine_us-1.441.2.dist-info}/WHEEL +0 -0
- {policyengine_us-1.441.1.dist-info → policyengine_us-1.441.2.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.441.1.dist-info → policyengine_us-1.441.2.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
- name: No phase-out, no kiddie tax
|
|
2
|
+
period: 2022
|
|
3
|
+
input:
|
|
4
|
+
amt_income: 200_000
|
|
5
|
+
amt_kiddie_tax_applies: false
|
|
6
|
+
filer_adjusted_earnings: 400_000
|
|
7
|
+
filing_status: SINGLE
|
|
8
|
+
output:
|
|
9
|
+
# Base exemption for SINGLE in 2022 is 75,900
|
|
10
|
+
# income_excess = max(0, 200,000 - 539,900) = 0
|
|
11
|
+
# No phase-out, full exemption of 75,900
|
|
12
|
+
amt_exemption: 75_900
|
|
13
|
+
|
|
14
|
+
- name: No phase-out, kiddie tax applies with low earnings
|
|
15
|
+
period: 2022
|
|
16
|
+
input:
|
|
17
|
+
amt_income: 200_000
|
|
18
|
+
amt_kiddie_tax_applies: true
|
|
19
|
+
filer_adjusted_earnings: 10_000
|
|
20
|
+
filing_status: SINGLE
|
|
21
|
+
output:
|
|
22
|
+
# Base exemption for SINGLE in 2022 is 75,900
|
|
23
|
+
# reduced_exemption = 75,900 (no phase-out)
|
|
24
|
+
# exemption_cap = 10,000 + 8,200 (child amount) = 18,200
|
|
25
|
+
# amt_exemption = min(75,900, 18,200) = 18,200
|
|
26
|
+
amt_exemption: 18_200
|
|
27
|
+
|
|
28
|
+
- name: Full phase-out at high income
|
|
29
|
+
period: 2022
|
|
30
|
+
input:
|
|
31
|
+
amt_income: 1_000_000
|
|
32
|
+
amt_kiddie_tax_applies: false
|
|
33
|
+
filer_adjusted_earnings: 400_000
|
|
34
|
+
filing_status: SINGLE
|
|
35
|
+
output:
|
|
36
|
+
# Base exemption for SINGLE in 2022 is 75,900
|
|
37
|
+
# income_excess = max(0, 1,000,000 - 539,900) = 460,100
|
|
38
|
+
# exemption_phase_out = 0.25 * 460,100 = 115,025
|
|
39
|
+
# reduced_exemption = max(0, 75,900 - 115,025) = 0
|
|
40
|
+
amt_exemption: 0
|
|
41
|
+
|
|
42
|
+
- name: Partial phase-out
|
|
43
|
+
period: 2022
|
|
44
|
+
input:
|
|
45
|
+
amt_income: 600_000
|
|
46
|
+
amt_kiddie_tax_applies: false
|
|
47
|
+
filer_adjusted_earnings: 400_000
|
|
48
|
+
filing_status: SINGLE
|
|
49
|
+
output:
|
|
50
|
+
# Base exemption for SINGLE in 2022 is 75,900
|
|
51
|
+
# income_excess = max(0, 600,000 - 539,900) = 60,100
|
|
52
|
+
# exemption_phase_out = 0.25 * 60,100 = 15,025
|
|
53
|
+
# reduced_exemption = max(0, 75,900 - 15,025) = 60,875
|
|
54
|
+
amt_exemption: 60_875
|
|
55
|
+
|
|
56
|
+
- name: Joint filers, no phase-out
|
|
57
|
+
period: 2022
|
|
58
|
+
input:
|
|
59
|
+
amt_income: 500_000
|
|
60
|
+
amt_kiddie_tax_applies: false
|
|
61
|
+
filer_adjusted_earnings: 400_000
|
|
62
|
+
filing_status: JOINT
|
|
63
|
+
output:
|
|
64
|
+
# Base exemption for JOINT in 2022 is 118,100
|
|
65
|
+
# Phase-out starts at 1,079,800
|
|
66
|
+
# income_excess = max(0, 500,000 - 1,079,800) = 0
|
|
67
|
+
# Full exemption of 118,100
|
|
68
|
+
amt_exemption: 118_100
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class amt_exemption(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
definition_period = YEAR
|
|
8
|
+
label = "Alternative Minimum Tax exemption"
|
|
9
|
+
unit = USD
|
|
10
|
+
documentation = (
|
|
11
|
+
"AMT exemption amount after phase-out and kiddie tax adjustments. "
|
|
12
|
+
"Form 6251, Line 5."
|
|
13
|
+
)
|
|
14
|
+
reference = [
|
|
15
|
+
"https://www.law.cornell.edu/uscode/text/26/55#d", # 26 U.S.C. § 55(d)
|
|
16
|
+
"https://www.irs.gov/instructions/i6251",
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
def formula(tax_unit, period, parameters):
|
|
20
|
+
p = parameters(period).gov.irs.income.amt
|
|
21
|
+
phase_out = p.exemption.phase_out
|
|
22
|
+
filing_status = tax_unit("filing_status", period)
|
|
23
|
+
amt_income = tax_unit("amt_income", period)
|
|
24
|
+
|
|
25
|
+
# Base exemption amount based on filing status
|
|
26
|
+
base_exemption_amount = p.exemption.amount[filing_status]
|
|
27
|
+
|
|
28
|
+
# Phase-out at higher income levels
|
|
29
|
+
income_excess = max_(0, amt_income - phase_out.start[filing_status])
|
|
30
|
+
exemption_phase_out = phase_out.rate * income_excess
|
|
31
|
+
reduced_exemption_amount = max_(
|
|
32
|
+
0,
|
|
33
|
+
base_exemption_amount - exemption_phase_out,
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# A reduced exemption amount is applied to kiddie tax filers
|
|
37
|
+
kiddie_tax_applies = tax_unit("amt_kiddie_tax_applies", period)
|
|
38
|
+
adj_earnings = tax_unit("filer_adjusted_earnings", period)
|
|
39
|
+
child_amount = p.exemption.child.amount
|
|
40
|
+
|
|
41
|
+
exemption_cap = where(
|
|
42
|
+
kiddie_tax_applies,
|
|
43
|
+
adj_earnings + child_amount,
|
|
44
|
+
np.inf,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
return min_(reduced_exemption_amount, exemption_cap)
|
|
@@ -17,28 +17,10 @@ class amt_income_less_exemptions(Variable):
|
|
|
17
17
|
taxable_income = tax_unit("taxable_income", period)
|
|
18
18
|
kiddie_tax_applies = tax_unit("amt_kiddie_tax_applies", period)
|
|
19
19
|
applied_income = where(kiddie_tax_applies, taxable_income, amt_income)
|
|
20
|
+
|
|
20
21
|
# Form 6251, Part II top
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
filing_status = tax_unit("filing_status", period)
|
|
24
|
-
# Line 5 the exemption amount is based on filing status and
|
|
25
|
-
# is phased-out at higher income
|
|
26
|
-
base_exemption_amount = p.exemption.amount[filing_status]
|
|
27
|
-
income_excess = max_(0, amt_income - phase_out.start[filing_status])
|
|
28
|
-
exemption_phase_out = phase_out.rate * income_excess
|
|
29
|
-
reduced_exemption_amount = max_(
|
|
30
|
-
0,
|
|
31
|
-
(base_exemption_amount - exemption_phase_out),
|
|
32
|
-
)
|
|
33
|
-
# A reduced exemption amount is applied to kiddie tax filers
|
|
34
|
-
adj_earnings = tax_unit("filer_adjusted_earnings", period)
|
|
35
|
-
child_amount = p.exemption.child.amount
|
|
22
|
+
# Line 5
|
|
23
|
+
amt_exemption = tax_unit("amt_exemption", period)
|
|
36
24
|
|
|
37
|
-
exemption_cap = where(
|
|
38
|
-
kiddie_tax_applies,
|
|
39
|
-
adj_earnings + child_amount,
|
|
40
|
-
np.inf,
|
|
41
|
-
)
|
|
42
|
-
capped_exemption_amount = min_(reduced_exemption_amount, exemption_cap)
|
|
43
25
|
# Line 6
|
|
44
|
-
return max_(0, applied_income -
|
|
26
|
+
return max_(0, applied_income - amt_exemption)
|
|
@@ -3709,6 +3709,7 @@ policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_min
|
|
|
3709
3709
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_base_tax.yaml,sha256=SXdsIDBaCdOyYvRwtStZfl3GKynf0EjGU8H8bG2OUjs,457
|
|
3710
3710
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_higher_base_tax.yaml,sha256=nvJD0yK_3HHqTGPEWYLhpYFM3xvmOP9q-aerHFOhsxY,488
|
|
3711
3711
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_lower_base_tax.yaml,sha256=6hIYLFWVlvc97ZP0dCagPIGEVNblercTEzwUoxo9s-4,475
|
|
3712
|
+
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml,sha256=q2q_EpzliOp0gVzQLH0MC5MfqVIof2ztfHUHITNAnvQ,2062
|
|
3712
3713
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_excluded_deductions.yaml,sha256=TzOqHwdeqP_Hgb7pQmRzIeOEHlzPM1o7uHdx1HUmHzk,1037
|
|
3713
3714
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income.yaml,sha256=afFV4CTgYBIMvLZZBLy6D9e8lDVVVB4i6ihNH7_r6ko,1103
|
|
3714
3715
|
policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.yaml,sha256=SJUu7xmDLojXjkx1C8JvDV8XKEsOasurOOsbZ2A5KEs,1108
|
|
@@ -6082,9 +6083,10 @@ policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/reg
|
|
|
6082
6083
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_base_tax.py,sha256=4yYT2wf3SHjQuFALh_tmklKdlXRvkm1G30X31TMKPmw,448
|
|
6083
6084
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_higher_base_tax.py,sha256=OiFFFTCJgkOoBoB1gy6BE6CuKg2l0hU7EzNcF_pSFJ8,878
|
|
6084
6085
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/base_tax/amt_lower_base_tax.py,sha256=FN7x9iFA5g1R4VTzIsq8CX54lK8uTTqKWFkh_CTqyqU,869
|
|
6086
|
+
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py,sha256=1hSL12Xg0ikKjzF0c_TFG2QuiRKgw7Vz2Xnpc2Cyoqw,1629
|
|
6085
6087
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_excluded_deductions.py,sha256=0QgcutGxblZdZjvIxGK2Nr9-Thhcc54TT5hyQDU7eWo,735
|
|
6086
6088
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income.py,sha256=8pynvFT8URaSMlkIkPGlXlP37Ope550_xVO4AD62X3M,391
|
|
6087
|
-
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py,sha256=
|
|
6089
|
+
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py,sha256=kj5aaS0HAlYtIQd8OKCHxO_Ru2aH469WEjKRNphUi8g,930
|
|
6088
6090
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_separate_addition.py,sha256=Hz_ffYTqDz4BCQWj9ksLoB7zJEYKYtdshNFFcvIL3UI,1023
|
|
6089
6091
|
policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/kiddie_tax/amt_kiddie_tax_applies.py,sha256=kNMlkpgKXiapLN0UDEoT5Y_qeA2DjrvIUrF97zTpBow,629
|
|
6090
6092
|
policyengine_us/variables/gov/irs/tax/federal_income/before_credits/income_tax_before_credits.py,sha256=FIHI5BXMxRRITDIzwhb_jZCtMELOE4vl2Ui5zPNefy4,410
|
|
@@ -8881,8 +8883,8 @@ policyengine_us/variables/input/farm_income.py,sha256=BEKxYmHNNnWJAAvULl5qZJigy5
|
|
|
8881
8883
|
policyengine_us/variables/input/geography.py,sha256=Ux0ueAf0rhZaflyEqz81UuXP3xKCKBDvoO3CrKhiQEc,5421
|
|
8882
8884
|
policyengine_us/variables/input/self_employment_income.py,sha256=PwsGz8R4lRikKWUYOhsC0qosNNLXq4f5SQmfw4S3mk8,511
|
|
8883
8885
|
policyengine_us/variables/input/self_employment_income_before_lsr.py,sha256=E8fcX9Nlyqz8dziHhQv_euutdmoIwFMMWePUwbbwv_w,379
|
|
8884
|
-
policyengine_us-1.441.
|
|
8885
|
-
policyengine_us-1.441.
|
|
8886
|
-
policyengine_us-1.441.
|
|
8887
|
-
policyengine_us-1.441.
|
|
8888
|
-
policyengine_us-1.441.
|
|
8886
|
+
policyengine_us-1.441.2.dist-info/METADATA,sha256=AjgzaOgQ6Gm2zv-apDpi4AHAZR33eKyfi8u_0g_vucA,1649
|
|
8887
|
+
policyengine_us-1.441.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
8888
|
+
policyengine_us-1.441.2.dist-info/entry_points.txt,sha256=MLaqNyNTbReALyKNkde85VkuFFpdPWAcy8VRG1mjczc,57
|
|
8889
|
+
policyengine_us-1.441.2.dist-info/licenses/LICENSE,sha256=2N5ReRelkdqkR9a-KP-y-shmcD5P62XoYiG-miLTAzo,34519
|
|
8890
|
+
policyengine_us-1.441.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|