policyengine-us 1.441.0__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/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -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/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
- {policyengine_us-1.441.0.dist-info → policyengine_us-1.441.2.dist-info}/METADATA +1 -1
- {policyengine_us-1.441.0.dist-info → policyengine_us-1.441.2.dist-info}/RECORD +10 -8
- {policyengine_us-1.441.0.dist-info → policyengine_us-1.441.2.dist-info}/WHEEL +0 -0
- {policyengine_us-1.441.0.dist-info → policyengine_us-1.441.2.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.441.0.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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
- name: Single person.
|
|
2
2
|
period: 2022
|
|
3
3
|
input:
|
|
4
|
+
state_code: MA
|
|
4
5
|
is_ssi_aged_blind_disabled: true
|
|
5
6
|
uncapped_ssi: -100
|
|
6
7
|
ma_maximum_state_supplement: 300
|
|
@@ -11,6 +12,7 @@
|
|
|
11
12
|
- name: Single person fails resource test.
|
|
12
13
|
period: 2022
|
|
13
14
|
input:
|
|
15
|
+
state_code: MA
|
|
14
16
|
is_ssi_aged_blind_disabled: true
|
|
15
17
|
uncapped_ssi: -100
|
|
16
18
|
ma_maximum_state_supplement: 300
|
|
@@ -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)
|
|
@@ -6,6 +6,7 @@ class ma_state_supplement(Variable):
|
|
|
6
6
|
entity = Person
|
|
7
7
|
label = "Massachusetts State Supplement payment amount"
|
|
8
8
|
definition_period = YEAR
|
|
9
|
+
defined_for = StateCode.MA
|
|
9
10
|
exhaustive_parameter_dependencies = "gov.states.ma.dta.ssp"
|
|
10
11
|
reference = (
|
|
11
12
|
"https://www.law.cornell.edu/regulations/massachusetts/106-CMR-327-330"
|
|
@@ -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
|
|
@@ -4492,7 +4493,7 @@ policyengine_us/tests/policy/baseline/gov/states/ma/dot/mbta/senior_charlie_card
|
|
|
4492
4493
|
policyengine_us/tests/policy/baseline/gov/states/ma/dot/mbta/tap_charlie_card/ma_mbta_tap_charlie_card_eligible.yaml,sha256=esTUzQWNrbY9v2yZo_NuQM0NXg3hN65-SSCyUM-2FhU,585
|
|
4493
4494
|
policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/integration.yaml,sha256=3yZRo9rNao7CSGXoPsEKtEL8MfvLALBizNzaP6R4Vvo,857
|
|
4494
4495
|
policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_maximum_state_supplement.yaml,sha256=iPzVkpYsgKfFEDGI7I7bTgfQaHrvsMLttxQFaPDukFM,3358
|
|
4495
|
-
policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml,sha256=
|
|
4496
|
+
policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml,sha256=PhQOncLFm5egsOvHHN751NhszfA6QHm95_wfD2U0W8Y,492
|
|
4496
4497
|
policyengine_us/tests/policy/baseline/gov/states/ma/dta/tcap/eaedc/ma_eaedc.yaml,sha256=Pm3aGhZZVOpVuTI91xcXaiSnSkIGSPycQ_hw8p6AzGo,6480
|
|
4497
4498
|
policyengine_us/tests/policy/baseline/gov/states/ma/dta/tcap/eaedc/ma_eaedc_if_tafdc_claimed.yaml,sha256=3dZ2KzQs9fPEMLDe5EunS0_KPPqNSqZU_xaDXHkTEqo,410
|
|
4498
4499
|
policyengine_us/tests/policy/baseline/gov/states/ma/dta/tcap/eaedc/dependent_care_deduction/ma_eaedc_dependent_care_deduction.yaml,sha256=Lc4ceUm8k88hrDPJMcPgP6iBR7RKhRXohbAwyZ71F4c,3079
|
|
@@ -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
|
|
@@ -7158,7 +7160,7 @@ policyengine_us/variables/gov/states/ma/dot/mbta/senior_charlie_card/ma_mbta_sen
|
|
|
7158
7160
|
policyengine_us/variables/gov/states/ma/dot/mbta/tap_charlie_card/ma_mbta_tap_charlie_card_eligible.py,sha256=TffXLhMlTtwUEuwr20PdRYtHmykP9vURibely1h9fIE,609
|
|
7159
7161
|
policyengine_us/variables/gov/states/ma/dta/ssp/ma_maximum_state_supplement.py,sha256=6d3V8gOSyrf0nr8WvEsPm3v9DwmnsDcRPwcZtvXKip4,4674
|
|
7160
7162
|
policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_living_arrangement.py,sha256=ciBLkfQ58VW1dan_CjVreisKfzAvS-ZPqfWw7PMOPzI,731
|
|
7161
|
-
policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py,sha256=
|
|
7163
|
+
policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py,sha256=Kj7HIKLQ5Qj7FwGVA0uyS17WH1ESrsgIiljJV9IcTWA,1091
|
|
7162
7164
|
policyengine_us/variables/gov/states/ma/dta/tcap/ma_tafdc_exceeds_eaedc.py,sha256=VhNZCM3P_muids3zeCjwoZWnSL-MD40UrI4ZLuaFWWU,566
|
|
7163
7165
|
policyengine_us/variables/gov/states/ma/dta/tcap/ma_tcap_gross_earned_income.py,sha256=K6rtlFgCXlvHDL111B-9xAuy95zAIsSEZ1-lrHe-5jA,459
|
|
7164
7166
|
policyengine_us/variables/gov/states/ma/dta/tcap/ma_tcap_gross_unearned_income.py,sha256=OiXL5zWtm06CityLzgEUjrtbwCJ-D7eVkpaZFmClVrQ,465
|
|
@@ -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
|