policyengine-us 1.353.0__py3-none-any.whl → 1.354.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/irs/credits/cdcc/phase_out/amended_structure/applies.yaml +13 -0
- policyengine_us/parameters/gov/irs/credits/cdcc/phase_out/amended_structure/second_increment.yaml +19 -0
- policyengine_us/parameters/gov/irs/credits/cdcc/phase_out/amended_structure/second_min.yaml +11 -0
- policyengine_us/parameters/gov/irs/credits/cdcc/phase_out/amended_structure/second_start.yaml +21 -0
- policyengine_us/parameters/gov/irs/credits/cdcc/phase_out/max.yaml +2 -0
- policyengine_us/parameters/gov/irs/credits/cdcc/phase_out/min.yaml +2 -0
- policyengine_us/parameters/gov/irs/credits/ctc/adult_ssn_requirement_applies.yaml +11 -0
- policyengine_us/parameters/gov/irs/credits/ctc/child_ssn_requirement_applies.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/ctc/eligible_ssn_card_type.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/auto_loan_interest/cap.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/auto_loan_interest/phase_out/increment.yaml +11 -0
- policyengine_us/parameters/gov/irs/deductions/auto_loan_interest/phase_out/start.yaml +21 -0
- policyengine_us/parameters/gov/irs/deductions/auto_loan_interest/phase_out/step.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/deductions_if_itemizing.yaml +14 -0
- policyengine_us/parameters/gov/irs/deductions/deductions_if_not_itemizing.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/casualty/active.yaml +0 -1
- policyengine_us/parameters/gov/irs/deductions/itemized/charity/ceiling/all.yaml +0 -1
- policyengine_us/parameters/gov/irs/deductions/itemized/charity/ceiling/non_cash.yaml +2 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/charity/floor/amount.yaml +11 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/charity/floor/applies.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/charity/non_itemizers_amount.yaml +8 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/interest/mortgage/cap.yaml +0 -5
- policyengine_us/parameters/gov/irs/deductions/itemized/misc/applies.yaml +0 -1
- policyengine_us/parameters/gov/irs/deductions/itemized/reduction/amended_structure/applies.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/reduction/amended_structure/rate.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/cap.yaml +30 -5
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/phase_out/floor/amount.yaml +21 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/phase_out/floor/applies.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/phase_out/in_effect.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/phase_out/rate.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/itemized/salt_and_real_estate/phase_out/threshold.yaml +41 -0
- policyengine_us/parameters/gov/irs/deductions/overtime_income/cap.yaml +22 -0
- policyengine_us/parameters/gov/irs/deductions/overtime_income/eligible_ssn_card_type.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/overtime_income/phase_out/rate.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/overtime_income/phase_out/start.yaml +22 -0
- policyengine_us/parameters/gov/irs/deductions/qbi/deduction_floor/amount.yaml +21 -0
- policyengine_us/parameters/gov/irs/deductions/qbi/deduction_floor/in_effect.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/qbi/max/business_property/rate.yaml +1 -6
- policyengine_us/parameters/gov/irs/deductions/qbi/max/rate.yaml +1 -2
- policyengine_us/parameters/gov/irs/deductions/qbi/max/w2_wages/alt_rate.yaml +1 -6
- policyengine_us/parameters/gov/irs/deductions/qbi/max/w2_wages/rate.yaml +1 -6
- policyengine_us/parameters/gov/irs/deductions/qbi/phase_out/length.yaml +12 -10
- policyengine_us/parameters/gov/irs/deductions/qbi/phase_out/start.yaml +7 -5
- policyengine_us/parameters/gov/irs/deductions/senior_deduction/amount.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/senior_deduction/eligible_ssn_card_type.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/senior_deduction/phase_out_rate/joint.yaml +20 -0
- policyengine_us/parameters/gov/irs/deductions/senior_deduction/phase_out_rate/other.yaml +20 -0
- policyengine_us/parameters/gov/irs/deductions/tip_income/cap.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/tip_income/eligible_ssn_card_type.yaml +13 -0
- policyengine_us/parameters/gov/irs/deductions/tip_income/phase_out/rate.yaml +12 -0
- policyengine_us/parameters/gov/irs/deductions/tip_income/phase_out/start.yaml +22 -0
- policyengine_us/reforms/reconciliation/__init__.py +0 -27
- policyengine_us/reforms/reforms.py +0 -45
- policyengine_us/tests/policy/baseline/gov/irs/credits/cdcc/cdcc_rate.yaml +40 -0
- policyengine_us/tests/policy/baseline/gov/irs/credits/ctc/maximum/individual/filer_meets_ctc_identification_requirements.yaml +51 -0
- policyengine_us/tests/policy/baseline/gov/irs/credits/ctc/maximum/individual/meets_ctc_child_identification_requirements.yaml +2 -2
- policyengine_us/tests/policy/baseline/gov/irs/deductions/itemized/salt_and_real_estate/reported_salt.yaml +2 -4
- policyengine_us/tests/policy/baseline/gov/irs/deductions/itemized/salt_and_real_estate/salt_deduction.yaml +78 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/auto_loan_interest_deduction.yaml +26 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/itemizing/charitable_deduction.yaml +42 -6
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/itemizing/itemized_taxable_income_deductions_reduction.yaml +18 -5
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/itemizing/misc_deduction.yaml +0 -18
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/overtime_income/overtime_income_deduction.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/overtime_income/overtime_income_deduction_ssn_requirement_met.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/qbid/qualified_business_income_deduction.yaml +33 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/senior_deduction/integration.yaml +107 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/senior_deduction/meets_additional_senior_deduction_identification_requirements.yaml +71 -0
- policyengine_us/tests/policy/{contrib/reconciliation/reconciled_tip_and_overtime_exempt.yaml → baseline/gov/irs/income/taxable_income/deductions/tip_and_overtime_income_deduction.yaml} +39 -114
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.yaml +79 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_ineligible_cardholder_present.yaml +53 -0
- policyengine_us/variables/gov/irs/credits/cdcc/cdcc_rate.py +18 -0
- policyengine_us/variables/gov/irs/credits/ctc/ctc.py +1 -0
- policyengine_us/variables/gov/irs/credits/ctc/maximum/individual/filer_meets_ctc_identification_requirements.py +20 -0
- policyengine_us/variables/gov/irs/credits/ctc/maximum/individual/meets_ctc_child_identification_requirements.py +3 -6
- policyengine_us/variables/gov/irs/credits/ctc/maximum/individual/meets_ctc_identification_requirements.py +17 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/auto_loan_interest/auto_loan_interest_deduction.py +30 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/charitable_deduction.py +18 -3
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/itemized_taxable_income_deductions_reduction.py +18 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/salt_cap.py +12 -2
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/overtime_income/overtime_income_deduction.py +24 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/overtime_income/overtime_income_deduction_ssn_requirement_met.py +25 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qualified_business_income_deduction.py +10 -3
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/senior_deduction/additional_senior_deduction.py +31 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/senior_deduction/additional_senior_deduction_eligible_person.py +24 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/tax_unit_itemizes.py +0 -1
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction.py +23 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/tip_income/tip_income_deduction_ssn_requirement_met.py +25 -0
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.354.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.354.0.dist-info}/RECORD +92 -104
- policyengine_us/parameters/gov/contrib/reconciliation/additional_senior_standard_deduction/amount.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/additional_senior_standard_deduction/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/additional_senior_standard_deduction/rate/joint.yaml +0 -20
- policyengine_us/parameters/gov/contrib/reconciliation/additional_senior_standard_deduction/rate/other.yaml +0 -20
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/cap.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/in_effect.yaml +0 -13
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/phase_out/increment.yaml +0 -11
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/phase_out/start.yaml +0 -21
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/phase_out/step.yaml +0 -11
- policyengine_us/parameters/gov/contrib/reconciliation/auto_loan_interest_ald/senate_version/applies.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/cdcc/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/cdcc/phase_out/second_increment.yaml +0 -19
- policyengine_us/parameters/gov/contrib/reconciliation/cdcc/phase_out/second_min.yaml +0 -11
- policyengine_us/parameters/gov/contrib/reconciliation/cdcc/phase_out/second_start.yaml +0 -19
- policyengine_us/parameters/gov/contrib/reconciliation/charitable_donations/floor.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/charitable_donations/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/ctc/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/ctc/one_person_ssn_req.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/overtime_income_exempt/cap.yaml +0 -22
- policyengine_us/parameters/gov/contrib/reconciliation/overtime_income_exempt/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/overtime_income_exempt/phase_out/applies.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/overtime_income_exempt/phase_out/rate.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/overtime_income_exempt/phase_out/start.yaml +0 -24
- policyengine_us/parameters/gov/contrib/reconciliation/pease/amended_structure/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/pease/amended_structure/salt_rate.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/pease/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/pease/rate.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/qbid/deduction_floor/amount.yaml +0 -21
- policyengine_us/parameters/gov/contrib/reconciliation/qbid/deduction_floor/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/qbid/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/qbid/phase_out_rate.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/qbid/use_bdc_income.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/tip_income_exempt/cap.yaml +0 -22
- policyengine_us/parameters/gov/contrib/reconciliation/tip_income_exempt/in_effect.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/tip_income_exempt/phase_out/applies.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/tip_income_exempt/phase_out/rate.yaml +0 -12
- policyengine_us/parameters/gov/contrib/reconciliation/tip_income_exempt/phase_out/start.yaml +0 -23
- policyengine_us/parameters/gov/contrib/salt_phase_out/floor/amount.yaml +0 -21
- policyengine_us/parameters/gov/contrib/salt_phase_out/floor/applies.yaml +0 -11
- policyengine_us/parameters/gov/contrib/salt_phase_out/in_effect.yaml +0 -8
- policyengine_us/parameters/gov/contrib/salt_phase_out/rate.yaml +0 -13
- policyengine_us/parameters/gov/contrib/salt_phase_out/threshold.yaml +0 -21
- policyengine_us/reforms/reconciliation/ctc_ssn.py +0 -86
- policyengine_us/reforms/reconciliation/reconciled_additional_senior_standard_deduction.py +0 -151
- policyengine_us/reforms/reconciliation/reconciled_auto_loan_interest_ald.py +0 -153
- policyengine_us/reforms/reconciliation/reconciled_pease.py +0 -85
- policyengine_us/reforms/reconciliation/reconciled_qbid.py +0 -78
- policyengine_us/reforms/reconciliation/reconciled_tip_and_overtime_exempt.py +0 -177
- policyengine_us/reforms/reconciliation/reconciliation_cdcc.py +0 -78
- policyengine_us/reforms/reconciliation/reconciliation_charitable_deduction.py +0 -78
- policyengine_us/reforms/reconciliation/reconciliation_qbid_with_floor.py +0 -72
- policyengine_us/reforms/salt_phase_out/__init__.py +0 -3
- policyengine_us/reforms/salt_phase_out/salt_phase_out_reform.py +0 -59
- policyengine_us/tests/policy/contrib/reconciliation/ctc_ssn.yaml +0 -150
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_additional_senior_standard_deduction.yaml +0 -173
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_auto_loan_interest_ald.yaml +0 -96
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_pease.yaml +0 -85
- policyengine_us/tests/policy/contrib/reconciliation/reconciled_qbid.yaml +0 -31
- policyengine_us/tests/policy/contrib/reconciliation/reconciliation_cdcc.yaml +0 -59
- policyengine_us/tests/policy/contrib/reconciliation/reconciliation_charitable_deduction.yaml +0 -58
- policyengine_us/tests/policy/contrib/reconciliation/reconciliation_qbid_with_floor.yaml +0 -38
- policyengine_us/tests/policy/contrib/salt_phase_out/salt_phase_out_reform.yaml +0 -118
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.354.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.354.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.354.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
from policyengine_us.model_api import *
|
|
2
|
-
from policyengine_core.periods import period as period_
|
|
3
|
-
from policyengine_core.periods import instant
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def create_reconciliation_cdcc() -> Reform:
|
|
7
|
-
class cdcc_rate(Variable):
|
|
8
|
-
value_type = float
|
|
9
|
-
entity = TaxUnit
|
|
10
|
-
label = "CDCC credit rate"
|
|
11
|
-
unit = USD
|
|
12
|
-
definition_period = YEAR
|
|
13
|
-
reference = "https://www.law.cornell.edu/uscode/text/26/21#a_2"
|
|
14
|
-
|
|
15
|
-
def formula(tax_unit, period, parameters):
|
|
16
|
-
p = parameters(period).gov.irs.credits.cdcc
|
|
17
|
-
agi = tax_unit("adjusted_gross_income", period)
|
|
18
|
-
|
|
19
|
-
# First phase-out
|
|
20
|
-
excess_agi = max_(0, agi - p.phase_out.start)
|
|
21
|
-
increments = np.ceil(excess_agi / p.phase_out.increment)
|
|
22
|
-
percentage_reduction = increments * p.phase_out.rate
|
|
23
|
-
phased_out_rate = max_(
|
|
24
|
-
p.phase_out.min, p.phase_out.max - percentage_reduction
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
# Second phase-out
|
|
28
|
-
p_ref = parameters(period).gov.contrib.reconciliation.cdcc
|
|
29
|
-
filing_status = tax_unit("filing_status", period)
|
|
30
|
-
second_phase_out_start = p_ref.phase_out.second_start[
|
|
31
|
-
filing_status
|
|
32
|
-
]
|
|
33
|
-
second_excess_agi = max_(0, agi - second_phase_out_start)
|
|
34
|
-
second_phase_out_increment = p_ref.phase_out.second_increment[
|
|
35
|
-
filing_status
|
|
36
|
-
]
|
|
37
|
-
second_increments = np.ceil(
|
|
38
|
-
second_excess_agi / second_phase_out_increment
|
|
39
|
-
)
|
|
40
|
-
second_percentage_reduction = second_increments * p.phase_out.rate
|
|
41
|
-
return max_(
|
|
42
|
-
p_ref.phase_out.second_min,
|
|
43
|
-
phased_out_rate - second_percentage_reduction,
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
class reform(Reform):
|
|
47
|
-
def apply(self):
|
|
48
|
-
self.update_variable(cdcc_rate)
|
|
49
|
-
|
|
50
|
-
return reform
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def create_reconciliation_cdcc_reform(
|
|
54
|
-
parameters, period, bypass: bool = False
|
|
55
|
-
):
|
|
56
|
-
if bypass:
|
|
57
|
-
return create_reconciliation_cdcc()
|
|
58
|
-
|
|
59
|
-
p = parameters.gov.contrib.reconciliation.cdcc
|
|
60
|
-
|
|
61
|
-
reform_active = False
|
|
62
|
-
current_period = period_(period)
|
|
63
|
-
|
|
64
|
-
for i in range(5):
|
|
65
|
-
if p(current_period).in_effect:
|
|
66
|
-
reform_active = True
|
|
67
|
-
break
|
|
68
|
-
current_period = current_period.offset(1, "year")
|
|
69
|
-
|
|
70
|
-
if reform_active:
|
|
71
|
-
return create_reconciliation_cdcc()
|
|
72
|
-
else:
|
|
73
|
-
return None
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
reconciliation_cdcc = create_reconciliation_cdcc_reform(
|
|
77
|
-
None, None, bypass=True
|
|
78
|
-
)
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
from policyengine_us.model_api import *
|
|
2
|
-
from policyengine_core.periods import period as period_
|
|
3
|
-
from policyengine_core.periods import instant
|
|
4
|
-
import numpy as np
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def create_reconciled_charitable_deduction() -> Reform:
|
|
8
|
-
class charitable_deduction(Variable):
|
|
9
|
-
value_type = float
|
|
10
|
-
entity = TaxUnit
|
|
11
|
-
label = "Charitable deduction"
|
|
12
|
-
unit = USD
|
|
13
|
-
documentation = (
|
|
14
|
-
"Deduction from taxable income for charitable donations."
|
|
15
|
-
)
|
|
16
|
-
definition_period = YEAR
|
|
17
|
-
reference = "https://www.law.cornell.edu/uscode/text/26/170"
|
|
18
|
-
|
|
19
|
-
def formula(tax_unit, period, parameters):
|
|
20
|
-
cash_donations = add(
|
|
21
|
-
tax_unit, period, ["charitable_cash_donations"]
|
|
22
|
-
)
|
|
23
|
-
non_cash_donations = add(
|
|
24
|
-
tax_unit, period, ["charitable_non_cash_donations"]
|
|
25
|
-
)
|
|
26
|
-
positive_agi = tax_unit("positive_agi", period)
|
|
27
|
-
p = parameters(period).gov.irs.deductions.itemized.charity.ceiling
|
|
28
|
-
p_ref = parameters(
|
|
29
|
-
period
|
|
30
|
-
).gov.contrib.reconciliation.charitable_donations
|
|
31
|
-
deduction_floor = p_ref.floor * positive_agi
|
|
32
|
-
reduced_non_cash_donations = max_(
|
|
33
|
-
non_cash_donations - deduction_floor, 0
|
|
34
|
-
)
|
|
35
|
-
capped_non_cash_donations = min_(
|
|
36
|
-
reduced_non_cash_donations, p.non_cash * positive_agi
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
total_cap = p.all * positive_agi
|
|
40
|
-
remaining_floor = max_(deduction_floor - non_cash_donations, 0)
|
|
41
|
-
reduced_cash_donations = max_(cash_donations - remaining_floor, 0)
|
|
42
|
-
return min_(
|
|
43
|
-
capped_non_cash_donations + reduced_cash_donations, total_cap
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
class reform(Reform):
|
|
47
|
-
def apply(self):
|
|
48
|
-
self.update_variable(charitable_deduction)
|
|
49
|
-
|
|
50
|
-
return reform
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def create_reconciled_charitable_deduction_reform(
|
|
54
|
-
parameters, period, bypass: bool = False
|
|
55
|
-
):
|
|
56
|
-
if bypass:
|
|
57
|
-
return create_reconciled_charitable_deduction()
|
|
58
|
-
|
|
59
|
-
p = parameters.gov.contrib.reconciliation.charitable_donations
|
|
60
|
-
|
|
61
|
-
reform_active = False
|
|
62
|
-
current_period = period_(period)
|
|
63
|
-
|
|
64
|
-
for i in range(5):
|
|
65
|
-
if p(current_period).in_effect:
|
|
66
|
-
reform_active = True
|
|
67
|
-
break
|
|
68
|
-
current_period = current_period.offset(1, "year")
|
|
69
|
-
|
|
70
|
-
if reform_active:
|
|
71
|
-
return create_reconciled_charitable_deduction()
|
|
72
|
-
else:
|
|
73
|
-
return None
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
reconciliation_charitable_deduction = (
|
|
77
|
-
create_reconciled_charitable_deduction_reform(None, None, bypass=True)
|
|
78
|
-
)
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
from policyengine_us.model_api import *
|
|
2
|
-
from policyengine_core.periods import period as period_
|
|
3
|
-
from policyengine_core.periods import instant
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def create_reconciliation_qbid_with_floor() -> Reform:
|
|
7
|
-
class qualified_business_income_deduction(Variable):
|
|
8
|
-
value_type = float
|
|
9
|
-
entity = TaxUnit
|
|
10
|
-
label = "Qualified business income deduction for tax unit"
|
|
11
|
-
unit = USD
|
|
12
|
-
definition_period = YEAR
|
|
13
|
-
reference = (
|
|
14
|
-
"https://www.law.cornell.edu/uscode/text/26/199A#b_1"
|
|
15
|
-
"https://www.irs.gov/pub/irs-prior/p535--2018.pdf"
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
def formula(tax_unit, period, parameters):
|
|
19
|
-
# compute sum of QBID amounts for each person in TaxUnit following
|
|
20
|
-
# logic in 2018 IRS Publication 535, Worksheet 12-A, line 16
|
|
21
|
-
person = tax_unit.members
|
|
22
|
-
qbid_amt = person("qbid_amount", period)
|
|
23
|
-
uncapped_qbid = tax_unit.sum(qbid_amt)
|
|
24
|
-
# apply taxinc cap at the TaxUnit level following logic
|
|
25
|
-
# in 2018 IRS Publication 535, Worksheet 12-A, lines 32-37
|
|
26
|
-
taxinc_less_qbid = tax_unit("taxable_income_less_qbid", period)
|
|
27
|
-
netcg_qdiv = tax_unit("adjusted_net_capital_gain", period)
|
|
28
|
-
p = parameters(period).gov.irs.deductions.qbi.max
|
|
29
|
-
taxinc_cap = p.rate * max_(0, taxinc_less_qbid - netcg_qdiv)
|
|
30
|
-
pre_floor_qbid = min_(uncapped_qbid, taxinc_cap)
|
|
31
|
-
p_ref = parameters(
|
|
32
|
-
period
|
|
33
|
-
).gov.contrib.reconciliation.qbid.deduction_floor
|
|
34
|
-
qualified_business_income = tax_unit(
|
|
35
|
-
"qualified_business_income", period
|
|
36
|
-
)
|
|
37
|
-
floor = p_ref.amount.calc(qualified_business_income)
|
|
38
|
-
return max_(pre_floor_qbid, floor)
|
|
39
|
-
|
|
40
|
-
class reform(Reform):
|
|
41
|
-
def apply(self):
|
|
42
|
-
self.update_variable(qualified_business_income_deduction)
|
|
43
|
-
|
|
44
|
-
return reform
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def create_reconciliation_qbid_with_floor_reform(
|
|
48
|
-
parameters, period, bypass: bool = False
|
|
49
|
-
):
|
|
50
|
-
if bypass:
|
|
51
|
-
return create_reconciliation_qbid_with_floor()
|
|
52
|
-
|
|
53
|
-
p = parameters.gov.contrib.reconciliation.qbid.deduction_floor
|
|
54
|
-
|
|
55
|
-
reform_active = False
|
|
56
|
-
current_period = period_(period)
|
|
57
|
-
|
|
58
|
-
for i in range(5):
|
|
59
|
-
if p(current_period).in_effect:
|
|
60
|
-
reform_active = True
|
|
61
|
-
break
|
|
62
|
-
current_period = current_period.offset(1, "year")
|
|
63
|
-
|
|
64
|
-
if reform_active:
|
|
65
|
-
return create_reconciliation_qbid_with_floor()
|
|
66
|
-
else:
|
|
67
|
-
return None
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
reconciliation_qbid_with_floor = create_reconciliation_qbid_with_floor_reform(
|
|
71
|
-
None, None, bypass=True
|
|
72
|
-
)
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
from policyengine_us.model_api import *
|
|
2
|
-
from policyengine_core.periods import period as period_
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
def create_salt_phase_out() -> Reform:
|
|
6
|
-
|
|
7
|
-
class salt_cap(Variable):
|
|
8
|
-
value_type = float
|
|
9
|
-
entity = TaxUnit
|
|
10
|
-
label = "SALT cap"
|
|
11
|
-
unit = USD
|
|
12
|
-
definition_period = YEAR
|
|
13
|
-
reference = "https://www.law.cornell.edu/uscode/text/26/164"
|
|
14
|
-
|
|
15
|
-
def formula(tax_unit, period, parameters):
|
|
16
|
-
filing_status = tax_unit("filing_status", period)
|
|
17
|
-
p = parameters(
|
|
18
|
-
period
|
|
19
|
-
).gov.irs.deductions.itemized.salt_and_real_estate
|
|
20
|
-
max_cap = p.cap[filing_status]
|
|
21
|
-
p_ref = parameters(period).gov.contrib.salt_phase_out
|
|
22
|
-
agi = tax_unit("adjusted_gross_income", period)
|
|
23
|
-
agi_excess = max_(0, agi - p_ref.threshold[filing_status])
|
|
24
|
-
phase_out = p_ref.rate * agi_excess
|
|
25
|
-
phased_out_cap = max_(0, max_cap - phase_out)
|
|
26
|
-
if p_ref.floor.applies:
|
|
27
|
-
floor = p_ref.floor.amount[filing_status]
|
|
28
|
-
return max_(phased_out_cap, floor)
|
|
29
|
-
return phased_out_cap
|
|
30
|
-
|
|
31
|
-
class reform(Reform):
|
|
32
|
-
def apply(self):
|
|
33
|
-
self.update_variable(salt_cap)
|
|
34
|
-
|
|
35
|
-
return reform
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def create_salt_phase_out_reform(parameters, period, bypass: bool = False):
|
|
39
|
-
if bypass:
|
|
40
|
-
return create_salt_phase_out()
|
|
41
|
-
|
|
42
|
-
p = parameters.gov.contrib.salt_phase_out
|
|
43
|
-
|
|
44
|
-
reform_active = False
|
|
45
|
-
current_period = period_(period)
|
|
46
|
-
|
|
47
|
-
for i in range(5):
|
|
48
|
-
if p(current_period).in_effect:
|
|
49
|
-
reform_active = True
|
|
50
|
-
break
|
|
51
|
-
current_period = current_period.offset(1, "year")
|
|
52
|
-
|
|
53
|
-
if reform_active:
|
|
54
|
-
return create_salt_phase_out()
|
|
55
|
-
else:
|
|
56
|
-
return None
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
salt_phase_out_reform = create_salt_phase_out_reform(None, None, bypass=True)
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
- name: Case 1, CTC higher than 0.
|
|
2
|
-
period: 2026
|
|
3
|
-
absolute_error_margin: 0.9
|
|
4
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
5
|
-
input:
|
|
6
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
7
|
-
ctc_maximum_with_arpa_addition: 100
|
|
8
|
-
ctc_phase_out: 80
|
|
9
|
-
filer_meets_ctc_identification_requirements: true
|
|
10
|
-
output:
|
|
11
|
-
ctc: 20
|
|
12
|
-
|
|
13
|
-
- name: Case 2, CTC capped at 0.
|
|
14
|
-
period: 2026
|
|
15
|
-
absolute_error_margin: 0.9
|
|
16
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
17
|
-
input:
|
|
18
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
19
|
-
ctc_maximum_with_arpa_addition: 80
|
|
20
|
-
ctc_phase_out: 100
|
|
21
|
-
filer_meets_ctc_identification_requirements: true
|
|
22
|
-
output:
|
|
23
|
-
ctc: 0
|
|
24
|
-
|
|
25
|
-
- name: Case 3, don't have valid SSN card type, CTC is 0.
|
|
26
|
-
period: 2026
|
|
27
|
-
absolute_error_margin: 0.9
|
|
28
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
29
|
-
input:
|
|
30
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
31
|
-
ctc_maximum_with_arpa_addition: 100
|
|
32
|
-
ctc_phase_out: 80
|
|
33
|
-
filer_meets_ctc_identification_requirements: false
|
|
34
|
-
output:
|
|
35
|
-
ctc: 0
|
|
36
|
-
|
|
37
|
-
- name: One person has a valid SSN card type, the other does not
|
|
38
|
-
period: 2026
|
|
39
|
-
absolute_error_margin: 0.9
|
|
40
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
41
|
-
input:
|
|
42
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
43
|
-
people:
|
|
44
|
-
person1:
|
|
45
|
-
ssn_card_type: CITIZEN
|
|
46
|
-
person2:
|
|
47
|
-
ssn_card_type: NONE
|
|
48
|
-
output:
|
|
49
|
-
meets_ctc_identification_requirements: [true, false]
|
|
50
|
-
filer_meets_ctc_identification_requirements: false
|
|
51
|
-
|
|
52
|
-
- name: Both people are eligible
|
|
53
|
-
period: 2026
|
|
54
|
-
absolute_error_margin: 0.9
|
|
55
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
56
|
-
input:
|
|
57
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
58
|
-
people:
|
|
59
|
-
person1:
|
|
60
|
-
ssn_card_type: CITIZEN
|
|
61
|
-
person2:
|
|
62
|
-
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
63
|
-
output:
|
|
64
|
-
meets_ctc_identification_requirements: [true, true]
|
|
65
|
-
filer_meets_ctc_identification_requirements: true
|
|
66
|
-
|
|
67
|
-
- name: One of three children eligible
|
|
68
|
-
period: 2026
|
|
69
|
-
absolute_error_margin: 0.9
|
|
70
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
71
|
-
input:
|
|
72
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
73
|
-
people:
|
|
74
|
-
person1:
|
|
75
|
-
ssn_card_type: CITIZEN
|
|
76
|
-
person2:
|
|
77
|
-
ctc_qualifying_child: true
|
|
78
|
-
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
79
|
-
person3:
|
|
80
|
-
age: 5
|
|
81
|
-
ssn_card_type: NONE
|
|
82
|
-
person4:
|
|
83
|
-
age: 5
|
|
84
|
-
ssn_card_type: CITIZEN
|
|
85
|
-
output:
|
|
86
|
-
ctc_qualifying_children: 1
|
|
87
|
-
|
|
88
|
-
- name: One person has a valid SSN card type, the other does not, senate finance rules
|
|
89
|
-
period: 2026
|
|
90
|
-
absolute_error_margin: 0.9
|
|
91
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
92
|
-
input:
|
|
93
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
94
|
-
gov.contrib.reconciliation.ctc.one_person_ssn_req: true
|
|
95
|
-
people:
|
|
96
|
-
person1:
|
|
97
|
-
ssn_card_type: CITIZEN
|
|
98
|
-
person2:
|
|
99
|
-
ssn_card_type: NONE
|
|
100
|
-
output:
|
|
101
|
-
meets_ctc_identification_requirements: [true, false]
|
|
102
|
-
filer_meets_ctc_identification_requirements: true
|
|
103
|
-
|
|
104
|
-
- name: One person has a valid SSN card type, the other does not, senate finance rules, child status irrelevant
|
|
105
|
-
period: 2026
|
|
106
|
-
absolute_error_margin: 0.9
|
|
107
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
108
|
-
input:
|
|
109
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
110
|
-
gov.contrib.reconciliation.ctc.one_person_ssn_req: true
|
|
111
|
-
people:
|
|
112
|
-
person1:
|
|
113
|
-
ssn_card_type: CITIZEN
|
|
114
|
-
person2:
|
|
115
|
-
ssn_card_type: NONE
|
|
116
|
-
person3:
|
|
117
|
-
age: 5
|
|
118
|
-
is_tax_unit_dependent: true
|
|
119
|
-
ssn_card_type: NONE
|
|
120
|
-
output:
|
|
121
|
-
meets_ctc_identification_requirements: [true, false, false]
|
|
122
|
-
filer_meets_ctc_identification_requirements: true
|
|
123
|
-
|
|
124
|
-
- name: Single person eligible
|
|
125
|
-
period: 2026
|
|
126
|
-
absolute_error_margin: 0.9
|
|
127
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
128
|
-
input:
|
|
129
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
130
|
-
gov.contrib.reconciliation.ctc.one_person_ssn_req: true
|
|
131
|
-
people:
|
|
132
|
-
person1:
|
|
133
|
-
ssn_card_type: CITIZEN
|
|
134
|
-
output:
|
|
135
|
-
meets_ctc_identification_requirements: [true]
|
|
136
|
-
filer_meets_ctc_identification_requirements: true
|
|
137
|
-
|
|
138
|
-
- name: Single person ineligible
|
|
139
|
-
period: 2026
|
|
140
|
-
absolute_error_margin: 0.9
|
|
141
|
-
reforms: policyengine_us.reforms.reconciliation.ctc_ssn.ctc_ssn
|
|
142
|
-
input:
|
|
143
|
-
gov.contrib.reconciliation.ctc.in_effect: true
|
|
144
|
-
gov.contrib.reconciliation.ctc.one_person_ssn_req: true
|
|
145
|
-
people:
|
|
146
|
-
person1:
|
|
147
|
-
ssn_card_type: NONE
|
|
148
|
-
output:
|
|
149
|
-
meets_ctc_identification_requirements: [false]
|
|
150
|
-
filer_meets_ctc_identification_requirements: false
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
- name: Two eligible seniors with income below the phase-out
|
|
2
|
-
period: 2026
|
|
3
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction
|
|
4
|
-
input:
|
|
5
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
6
|
-
people:
|
|
7
|
-
person1:
|
|
8
|
-
age: 65
|
|
9
|
-
is_tax_unit_head_or_spouse: true
|
|
10
|
-
ssn_card_type: CITIZEN
|
|
11
|
-
person2:
|
|
12
|
-
age: 65
|
|
13
|
-
is_tax_unit_head_or_spouse: true
|
|
14
|
-
ssn_card_type: CITIZEN
|
|
15
|
-
tax_units:
|
|
16
|
-
tax_unit:
|
|
17
|
-
members: [person1, person2]
|
|
18
|
-
filing_status: JOINT
|
|
19
|
-
adjusted_gross_income: 100_000
|
|
20
|
-
salt_deduction: 0
|
|
21
|
-
standard_deduction: 0
|
|
22
|
-
output:
|
|
23
|
-
additional_senior_standard_deduction: 8_000
|
|
24
|
-
taxable_income_deductions_if_itemizing: 8_000
|
|
25
|
-
taxable_income_deductions_if_not_itemizing: 8_000
|
|
26
|
-
|
|
27
|
-
- name: One eligible senior, no additional SD
|
|
28
|
-
period: 2026
|
|
29
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction
|
|
30
|
-
input:
|
|
31
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
32
|
-
people:
|
|
33
|
-
person1:
|
|
34
|
-
age: 65
|
|
35
|
-
is_tax_unit_head_or_spouse: true
|
|
36
|
-
ssn_card_type: CITIZEN
|
|
37
|
-
person2:
|
|
38
|
-
age: 65
|
|
39
|
-
is_tax_unit_head_or_spouse: true
|
|
40
|
-
ssn_card_type: NONE
|
|
41
|
-
tax_units:
|
|
42
|
-
tax_unit:
|
|
43
|
-
members: [person1, person2]
|
|
44
|
-
filing_status: JOINT
|
|
45
|
-
adjusted_gross_income: 100_000
|
|
46
|
-
salt_deduction: 0
|
|
47
|
-
standard_deduction: 0
|
|
48
|
-
output:
|
|
49
|
-
additional_senior_standard_deduction: 0
|
|
50
|
-
taxable_income_deductions_if_itemizing: 0
|
|
51
|
-
taxable_income_deductions_if_not_itemizing: 0
|
|
52
|
-
|
|
53
|
-
- name: Two eligible seniors, income above the phase-out
|
|
54
|
-
period: 2026
|
|
55
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction
|
|
56
|
-
input:
|
|
57
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
58
|
-
people:
|
|
59
|
-
person1:
|
|
60
|
-
age: 65
|
|
61
|
-
is_tax_unit_head_or_spouse: true
|
|
62
|
-
ssn_card_type: CITIZEN
|
|
63
|
-
person2:
|
|
64
|
-
age: 65
|
|
65
|
-
is_tax_unit_head_or_spouse: true
|
|
66
|
-
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
67
|
-
tax_units:
|
|
68
|
-
tax_unit:
|
|
69
|
-
members: [person1, person2]
|
|
70
|
-
filing_status: JOINT
|
|
71
|
-
adjusted_gross_income: 200_000
|
|
72
|
-
salt_deduction: 0
|
|
73
|
-
standard_deduction: 0
|
|
74
|
-
output:
|
|
75
|
-
additional_senior_standard_deduction: 6_000
|
|
76
|
-
taxable_income_deductions_if_itemizing: 6_000
|
|
77
|
-
taxable_income_deductions_if_not_itemizing: 6_000
|
|
78
|
-
|
|
79
|
-
- name: Single senior, income above the phase-out, 2025
|
|
80
|
-
period: 2025
|
|
81
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction
|
|
82
|
-
input:
|
|
83
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
84
|
-
people:
|
|
85
|
-
person1:
|
|
86
|
-
age: 65
|
|
87
|
-
is_tax_unit_head_or_spouse: true
|
|
88
|
-
ssn_card_type: CITIZEN
|
|
89
|
-
tax_units:
|
|
90
|
-
tax_unit:
|
|
91
|
-
members: [person1]
|
|
92
|
-
adjusted_gross_income: 90_000
|
|
93
|
-
salt_deduction: 0
|
|
94
|
-
standard_deduction: 0
|
|
95
|
-
output:
|
|
96
|
-
additional_senior_standard_deduction: 3_400
|
|
97
|
-
taxable_income_deductions_if_itemizing: 3_400
|
|
98
|
-
taxable_income_deductions_if_not_itemizing: 3_400
|
|
99
|
-
|
|
100
|
-
- name: Single non-senior, income above the phase-out
|
|
101
|
-
period: 2026
|
|
102
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction
|
|
103
|
-
input:
|
|
104
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
105
|
-
people:
|
|
106
|
-
person1:
|
|
107
|
-
age: 64
|
|
108
|
-
is_tax_unit_head_or_spouse: true
|
|
109
|
-
ssn_card_type: CITIZEN
|
|
110
|
-
tax_units:
|
|
111
|
-
tax_unit:
|
|
112
|
-
members: [person1]
|
|
113
|
-
adjusted_gross_income: 90_000
|
|
114
|
-
salt_deduction: 0
|
|
115
|
-
standard_deduction: 0
|
|
116
|
-
output:
|
|
117
|
-
additional_senior_standard_deduction: 0
|
|
118
|
-
taxable_income_deductions_if_itemizing: 0
|
|
119
|
-
taxable_income_deductions_if_not_itemizing: 0
|
|
120
|
-
|
|
121
|
-
- name: Test with two structural reforms, tips, overtime and the SD are added
|
|
122
|
-
period: 2026
|
|
123
|
-
reforms: [policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt, policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction]
|
|
124
|
-
input:
|
|
125
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
126
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
127
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
128
|
-
people:
|
|
129
|
-
person1:
|
|
130
|
-
age: 65
|
|
131
|
-
is_tax_unit_head_or_spouse: true
|
|
132
|
-
ssn_card_type: CITIZEN
|
|
133
|
-
tip_income: 1_000
|
|
134
|
-
fsla_overtime_premium: 2_000
|
|
135
|
-
tax_units:
|
|
136
|
-
tax_unit:
|
|
137
|
-
members: [person1]
|
|
138
|
-
adjusted_gross_income: 90_000
|
|
139
|
-
salt_deduction: 0
|
|
140
|
-
standard_deduction: 0
|
|
141
|
-
output:
|
|
142
|
-
additional_senior_standard_deduction: 3_400
|
|
143
|
-
overtime_income_deduction: 2_000
|
|
144
|
-
tip_income_deduction: 1_000
|
|
145
|
-
taxable_income_deductions_if_itemizing: 6_400
|
|
146
|
-
taxable_income_deductions_if_not_itemizing: 6_400
|
|
147
|
-
|
|
148
|
-
- name: Testing when reforms are initialized in another order
|
|
149
|
-
period: 2026
|
|
150
|
-
reforms: [policyengine_us.reforms.reconciliation.reconciled_additional_senior_standard_deduction.reconciled_additional_senior_standard_deduction, policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt]
|
|
151
|
-
input:
|
|
152
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
153
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
154
|
-
gov.contrib.reconciliation.additional_senior_standard_deduction.in_effect: true
|
|
155
|
-
people:
|
|
156
|
-
person1:
|
|
157
|
-
age: 65
|
|
158
|
-
is_tax_unit_head_or_spouse: true
|
|
159
|
-
ssn_card_type: CITIZEN
|
|
160
|
-
tip_income: 1_000
|
|
161
|
-
fsla_overtime_premium: 2_000
|
|
162
|
-
tax_units:
|
|
163
|
-
tax_unit:
|
|
164
|
-
members: [person1]
|
|
165
|
-
adjusted_gross_income: 90_000
|
|
166
|
-
salt_deduction: 0
|
|
167
|
-
standard_deduction: 0
|
|
168
|
-
output:
|
|
169
|
-
additional_senior_standard_deduction: 3_400
|
|
170
|
-
overtime_income_deduction: 2_000
|
|
171
|
-
tip_income_deduction: 1_000
|
|
172
|
-
taxable_income_deductions_if_itemizing: 6_400
|
|
173
|
-
taxable_income_deductions_if_not_itemizing: 6_400
|