policyengine-us 1.353.0__py3-none-any.whl → 1.355.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/aca/ineligible_immigration_statuses.yaml +11 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/age_range.yaml +25 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/applies.yaml +13 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/dependent_age_limit.yaml +12 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/work_requirements/monthly_hours_threshold.yaml +12 -0
- 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/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/dependent.yaml +4 -2
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/age_threshold/exempted.yaml +4 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/in_effect.yaml +13 -0
- policyengine_us/parameters/gov/usda/snap/work_requirements/abawd/amended_structure/sunset_provisions_apply.yaml +13 -0
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml +1 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml +1 -1
- policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml +1 -1
- policyengine_us/reforms/reconciliation/__init__.py +0 -36
- policyengine_us/reforms/reforms.py +0 -63
- policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml +88 -0
- 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/tests/policy/baseline/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.yaml +105 -0
- policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py +9 -0
- policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py +57 -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/variables/gov/usda/snap/eligibility/work_requirements/meets_snap_abawd_work_requirements.py +37 -7
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.355.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.355.0.dist-info}/RECORD +109 -118
- policyengine_us/parameters/gov/contrib/reconciliation/aca_ptc_immigration_status/in_effect.yaml +0 -13
- 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/aca_ptc_immigration_status.py +0 -55
- 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_medicaid_work_requirement.py +0 -157
- policyengine_us/reforms/reconciliation/reconciled_pease.py +0 -85
- policyengine_us/reforms/reconciliation/reconciled_qbid.py +0 -78
- policyengine_us/reforms/reconciliation/reconciled_snap_abawd_work_requirement.py +0 -125
- 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/reconciled_snap_abawd_work_requirement.yaml +0 -118
- 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.355.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.355.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.353.0.dist-info → policyengine_us-1.355.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
- name: Two eligible seniors
|
|
2
|
+
period: 2025
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person1:
|
|
6
|
+
age: 65
|
|
7
|
+
is_tax_unit_head_or_spouse: true
|
|
8
|
+
ssn_card_type: CITIZEN
|
|
9
|
+
person2:
|
|
10
|
+
age: 65
|
|
11
|
+
is_tax_unit_head_or_spouse: true
|
|
12
|
+
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
13
|
+
tax_units:
|
|
14
|
+
tax_unit:
|
|
15
|
+
members: [person1, person2]
|
|
16
|
+
output:
|
|
17
|
+
additional_senior_deduction_eligible_person: [true, true]
|
|
18
|
+
|
|
19
|
+
- name: One non-senior
|
|
20
|
+
period: 2025
|
|
21
|
+
input:
|
|
22
|
+
people:
|
|
23
|
+
person1:
|
|
24
|
+
age: 65
|
|
25
|
+
is_tax_unit_head_or_spouse: true
|
|
26
|
+
ssn_card_type: CITIZEN
|
|
27
|
+
person2:
|
|
28
|
+
age: 64
|
|
29
|
+
is_tax_unit_head_or_spouse: true
|
|
30
|
+
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
31
|
+
tax_units:
|
|
32
|
+
tax_unit:
|
|
33
|
+
members: [person1, person2]
|
|
34
|
+
output:
|
|
35
|
+
additional_senior_deduction_eligible_person: [true, false]
|
|
36
|
+
|
|
37
|
+
- name: One senior dependent
|
|
38
|
+
period: 2025
|
|
39
|
+
input:
|
|
40
|
+
people:
|
|
41
|
+
person1:
|
|
42
|
+
age: 65
|
|
43
|
+
is_tax_unit_head_or_spouse: true
|
|
44
|
+
ssn_card_type: CITIZEN
|
|
45
|
+
person2:
|
|
46
|
+
age: 65
|
|
47
|
+
is_tax_unit_head_or_spouse: false
|
|
48
|
+
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
49
|
+
tax_units:
|
|
50
|
+
tax_unit:
|
|
51
|
+
members: [person1, person2]
|
|
52
|
+
output:
|
|
53
|
+
additional_senior_deduction_eligible_person: [true, false]
|
|
54
|
+
|
|
55
|
+
- name: One person without an SSN card
|
|
56
|
+
period: 2025
|
|
57
|
+
input:
|
|
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: NONE
|
|
67
|
+
tax_units:
|
|
68
|
+
tax_unit:
|
|
69
|
+
members: [person1, person2]
|
|
70
|
+
output:
|
|
71
|
+
additional_senior_deduction_eligible_person: [true, false]
|
|
@@ -1,68 +1,6 @@
|
|
|
1
|
-
- name: Tip income is exempt but overtime income is not
|
|
2
|
-
period: 2026
|
|
3
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
4
|
-
input:
|
|
5
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
6
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: false
|
|
7
|
-
tip_income: 200
|
|
8
|
-
fsla_overtime_premium: 300
|
|
9
|
-
standard_deduction: 0
|
|
10
|
-
qualified_business_income_deduction: 0
|
|
11
|
-
charitable_deduction: 0
|
|
12
|
-
interest_deduction: 0
|
|
13
|
-
salt_deduction: 0
|
|
14
|
-
medical_expense_deduction: 0
|
|
15
|
-
casualty_loss_deduction: 0
|
|
16
|
-
misc_deduction: 0
|
|
17
|
-
output:
|
|
18
|
-
taxable_income_deductions_if_itemizing: 200
|
|
19
|
-
taxable_income_deductions_if_not_itemizing: 200
|
|
20
|
-
|
|
21
|
-
- name: Baseline test - no deductions
|
|
22
|
-
period: 2026
|
|
23
|
-
input:
|
|
24
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: false
|
|
25
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: false
|
|
26
|
-
tip_income: 200
|
|
27
|
-
fsla_overtime_premium: 300
|
|
28
|
-
standard_deduction: 0
|
|
29
|
-
qualified_business_income_deduction: 0
|
|
30
|
-
charitable_deduction: 0
|
|
31
|
-
interest_deduction: 0
|
|
32
|
-
salt_deduction: 0
|
|
33
|
-
medical_expense_deduction: 0
|
|
34
|
-
casualty_loss_deduction: 0
|
|
35
|
-
misc_deduction: 0
|
|
36
|
-
output:
|
|
37
|
-
taxable_income_deductions_if_itemizing: 0
|
|
38
|
-
taxable_income_deductions_if_not_itemizing: 0
|
|
39
|
-
|
|
40
|
-
- name: Tip income is not exempt but overtime income is
|
|
41
|
-
period: 2026
|
|
42
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
43
|
-
input:
|
|
44
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: false
|
|
45
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
46
|
-
tip_income: 200
|
|
47
|
-
fsla_overtime_premium: 300
|
|
48
|
-
standard_deduction: 0
|
|
49
|
-
qualified_business_income_deduction: 0
|
|
50
|
-
charitable_deduction: 0
|
|
51
|
-
interest_deduction: 0
|
|
52
|
-
salt_deduction: 0
|
|
53
|
-
medical_expense_deduction: 0
|
|
54
|
-
casualty_loss_deduction: 0
|
|
55
|
-
misc_deduction: 0
|
|
56
|
-
output:
|
|
57
|
-
taxable_income_deductions_if_itemizing: 300
|
|
58
|
-
taxable_income_deductions_if_not_itemizing: 300
|
|
59
|
-
|
|
60
1
|
- name: Tip and overtime income are exempt
|
|
61
2
|
period: 2026
|
|
62
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
63
3
|
input:
|
|
64
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
65
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
66
4
|
tip_income: 200
|
|
67
5
|
fsla_overtime_premium: 300
|
|
68
6
|
standard_deduction: 0
|
|
@@ -77,12 +15,9 @@
|
|
|
77
15
|
taxable_income_deductions_if_itemizing: 500
|
|
78
16
|
taxable_income_deductions_if_not_itemizing: 500
|
|
79
17
|
|
|
80
|
-
- name: Test for SSN card type - head eligible
|
|
18
|
+
- name: Test for SSN card type - head eligible - no deduction allowed
|
|
81
19
|
period: 2026
|
|
82
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
83
20
|
input:
|
|
84
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
85
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
86
21
|
people:
|
|
87
22
|
person1:
|
|
88
23
|
ssn_card_type: CITIZEN
|
|
@@ -104,15 +39,14 @@
|
|
|
104
39
|
casualty_loss_deduction: 0
|
|
105
40
|
misc_deduction: 0
|
|
106
41
|
output:
|
|
107
|
-
|
|
108
|
-
|
|
42
|
+
tip_income_deduction: 0
|
|
43
|
+
overtime_income_deduction: 0
|
|
44
|
+
taxable_income_deductions_if_itemizing: 0
|
|
45
|
+
taxable_income_deductions_if_not_itemizing: 0
|
|
109
46
|
|
|
110
|
-
- name: Test for SSN card type - spouse eligible
|
|
47
|
+
- name: Test for SSN card type - spouse eligible - no deduction allowed
|
|
111
48
|
period: 2026
|
|
112
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
113
49
|
input:
|
|
114
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
115
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
116
50
|
people:
|
|
117
51
|
person1:
|
|
118
52
|
ssn_card_type: NONE
|
|
@@ -134,16 +68,43 @@
|
|
|
134
68
|
casualty_loss_deduction: 0
|
|
135
69
|
misc_deduction: 0
|
|
136
70
|
output:
|
|
137
|
-
|
|
138
|
-
|
|
71
|
+
tip_income_deduction: 0
|
|
72
|
+
overtime_income_deduction: 0
|
|
73
|
+
taxable_income_deductions_if_itemizing: 0
|
|
74
|
+
taxable_income_deductions_if_not_itemizing: 0
|
|
75
|
+
|
|
76
|
+
- name: Test for SSN card type - both eligible
|
|
77
|
+
period: 2026
|
|
78
|
+
input:
|
|
79
|
+
people:
|
|
80
|
+
person1:
|
|
81
|
+
ssn_card_type: CITIZEN
|
|
82
|
+
tip_income: 200
|
|
83
|
+
fsla_overtime_premium: 300
|
|
84
|
+
person2:
|
|
85
|
+
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
86
|
+
tip_income: 600
|
|
87
|
+
fsla_overtime_premium: 900
|
|
88
|
+
tax_units:
|
|
89
|
+
tax_unit:
|
|
90
|
+
members: [person1, person2]
|
|
91
|
+
standard_deduction: 0
|
|
92
|
+
qualified_business_income_deduction: 0
|
|
93
|
+
charitable_deduction: 0
|
|
94
|
+
interest_deduction: 0
|
|
95
|
+
salt_deduction: 0
|
|
96
|
+
medical_expense_deduction: 0
|
|
97
|
+
casualty_loss_deduction: 0
|
|
98
|
+
misc_deduction: 0
|
|
99
|
+
output:
|
|
100
|
+
tip_income_deduction: 800
|
|
101
|
+
overtime_income_deduction: 1_200
|
|
102
|
+
taxable_income_deductions_if_itemizing: 2_000
|
|
103
|
+
taxable_income_deductions_if_not_itemizing: 2_000
|
|
139
104
|
|
|
140
105
|
- name: Phase out structure applies, joint filing status, agi below phase out start
|
|
141
106
|
period: 2026
|
|
142
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
143
107
|
input:
|
|
144
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
145
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
146
|
-
gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies: true
|
|
147
108
|
people:
|
|
148
109
|
person1:
|
|
149
110
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -170,11 +131,7 @@
|
|
|
170
131
|
|
|
171
132
|
- name: Phase out structure applies, joint filing status, agi below phase out start, head not eligible
|
|
172
133
|
period: 2026
|
|
173
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
174
134
|
input:
|
|
175
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
176
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
177
|
-
gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies: true
|
|
178
135
|
people:
|
|
179
136
|
person1:
|
|
180
137
|
ssn_card_type: NONE
|
|
@@ -201,11 +158,7 @@
|
|
|
201
158
|
|
|
202
159
|
- name: Phase out structure applies, joint filing status, agi below phase out start, child without ssn card
|
|
203
160
|
period: 2026
|
|
204
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
205
161
|
input:
|
|
206
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
207
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
208
|
-
gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies: true
|
|
209
162
|
people:
|
|
210
163
|
person1:
|
|
211
164
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -235,11 +188,7 @@
|
|
|
235
188
|
|
|
236
189
|
- name: Phase out structure applies, joint filing status, agi below phase out start, partially phased out
|
|
237
190
|
period: 2026
|
|
238
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
239
191
|
input:
|
|
240
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
241
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
242
|
-
gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies: true
|
|
243
192
|
people:
|
|
244
193
|
person1:
|
|
245
194
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -266,11 +215,7 @@
|
|
|
266
215
|
|
|
267
216
|
- name: Phase out structure applies, joint filing status, agi below phase out start, fully phased out
|
|
268
217
|
period: 2026
|
|
269
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
270
218
|
input:
|
|
271
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
272
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
273
|
-
gov.contrib.reconciliation.overtime_income_exempt.phase_out.applies: true
|
|
274
219
|
people:
|
|
275
220
|
person1:
|
|
276
221
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -297,11 +242,7 @@
|
|
|
297
242
|
|
|
298
243
|
- name: Tip income phase out structure applies, joint filing status, agi below phase out start
|
|
299
244
|
period: 2026
|
|
300
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
301
245
|
input:
|
|
302
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
303
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
304
|
-
gov.contrib.reconciliation.tip_income_exempt.phase_out.applies: true
|
|
305
246
|
people:
|
|
306
247
|
person1:
|
|
307
248
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -328,11 +269,7 @@
|
|
|
328
269
|
|
|
329
270
|
- name: Tip income phase out structure applies, joint filing status, agi below phase out start, head not eligible
|
|
330
271
|
period: 2026
|
|
331
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
332
272
|
input:
|
|
333
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
334
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
335
|
-
gov.contrib.reconciliation.tip_income_exempt.phase_out.applies: true
|
|
336
273
|
people:
|
|
337
274
|
person1:
|
|
338
275
|
ssn_card_type: NONE
|
|
@@ -359,11 +296,7 @@
|
|
|
359
296
|
|
|
360
297
|
- name: Tip income phase out structure applies, joint filing status, agi below phase out start, child without ssn card
|
|
361
298
|
period: 2026
|
|
362
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
363
299
|
input:
|
|
364
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
365
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
366
|
-
gov.contrib.reconciliation.tip_income_exempt.phase_out.applies: true
|
|
367
300
|
people:
|
|
368
301
|
person1:
|
|
369
302
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -393,11 +326,7 @@
|
|
|
393
326
|
|
|
394
327
|
- name: Tip income phase out structure applies, joint filing status, agi below phase out start, partially phased out
|
|
395
328
|
period: 2026
|
|
396
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
397
329
|
input:
|
|
398
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
399
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
400
|
-
gov.contrib.reconciliation.tip_income_exempt.phase_out.applies: true
|
|
401
330
|
people:
|
|
402
331
|
person1:
|
|
403
332
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -424,11 +353,7 @@
|
|
|
424
353
|
|
|
425
354
|
- name: Tip income phase out structure applies, joint filing status, agi below phase out start, fully phased out
|
|
426
355
|
period: 2026
|
|
427
|
-
reforms: policyengine_us.reforms.reconciliation.reconciled_tip_and_overtime_exempt.reconciled_tip_and_overtime_exempt
|
|
428
356
|
input:
|
|
429
|
-
gov.contrib.reconciliation.tip_income_exempt.in_effect: true
|
|
430
|
-
gov.contrib.reconciliation.overtime_income_exempt.in_effect: true
|
|
431
|
-
gov.contrib.reconciliation.tip_income_exempt.phase_out.applies: true
|
|
432
357
|
people:
|
|
433
358
|
person1:
|
|
434
359
|
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
- name: Ineligible cardholder present
|
|
2
|
+
period: 2025
|
|
3
|
+
input:
|
|
4
|
+
tip_income_deduction_ssn_requirement_met: false
|
|
5
|
+
tip_income: 10_000
|
|
6
|
+
adjusted_gross_income: 100_000
|
|
7
|
+
filing_status: JOINT
|
|
8
|
+
output:
|
|
9
|
+
tip_income_deduction: 0
|
|
10
|
+
|
|
11
|
+
- name: AGI below phase out start
|
|
12
|
+
period: 2025
|
|
13
|
+
input:
|
|
14
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
15
|
+
tip_income: 10_000
|
|
16
|
+
adjusted_gross_income: 100_000
|
|
17
|
+
filing_status: JOINT
|
|
18
|
+
output:
|
|
19
|
+
tip_income_deduction: 10_000
|
|
20
|
+
|
|
21
|
+
- name: Fully phased out
|
|
22
|
+
period: 2025
|
|
23
|
+
input:
|
|
24
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
25
|
+
tip_income: 10_000
|
|
26
|
+
adjusted_gross_income: 1_000_000
|
|
27
|
+
filing_status: JOINT
|
|
28
|
+
output:
|
|
29
|
+
tip_income_deduction: 0
|
|
30
|
+
|
|
31
|
+
- name: Partially phased out
|
|
32
|
+
period: 2025
|
|
33
|
+
input:
|
|
34
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
35
|
+
tip_income: 10_000
|
|
36
|
+
adjusted_gross_income: 190_000
|
|
37
|
+
filing_status: JOINT
|
|
38
|
+
output:
|
|
39
|
+
tip_income_deduction: 10_000
|
|
40
|
+
|
|
41
|
+
- name: Ineligible cardholder present
|
|
42
|
+
period: 2025
|
|
43
|
+
input:
|
|
44
|
+
people:
|
|
45
|
+
person1:
|
|
46
|
+
ssn_card_type: CITIZEN
|
|
47
|
+
is_tax_unit_head: true
|
|
48
|
+
is_tax_unit_spouse: false
|
|
49
|
+
tip_income: 1_000
|
|
50
|
+
person2:
|
|
51
|
+
ssn_card_type: OTHER_NON_CITIZEN
|
|
52
|
+
is_tax_unit_head: false
|
|
53
|
+
is_tax_unit_spouse: true
|
|
54
|
+
tax_units:
|
|
55
|
+
tax_unit:
|
|
56
|
+
members: [person1, person2]
|
|
57
|
+
output:
|
|
58
|
+
tip_income_deduction_ssn_requirement_met: false
|
|
59
|
+
tip_income_deduction: 0
|
|
60
|
+
|
|
61
|
+
- name: Ineligible cardholder not present
|
|
62
|
+
period: 2025
|
|
63
|
+
input:
|
|
64
|
+
people:
|
|
65
|
+
person1:
|
|
66
|
+
ssn_card_type: CITIZEN
|
|
67
|
+
is_tax_unit_head: true
|
|
68
|
+
is_tax_unit_spouse: false
|
|
69
|
+
person2:
|
|
70
|
+
ssn_card_type: CITIZEN
|
|
71
|
+
is_tax_unit_head: true
|
|
72
|
+
is_tax_unit_spouse: false
|
|
73
|
+
tip_income: 1_000
|
|
74
|
+
tax_units:
|
|
75
|
+
tax_unit:
|
|
76
|
+
members: [person1, person2]
|
|
77
|
+
output:
|
|
78
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
79
|
+
tip_income_deduction: 1_000
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
- name: Ineligible cardholder present
|
|
2
|
+
period: 2025
|
|
3
|
+
input:
|
|
4
|
+
people:
|
|
5
|
+
person1:
|
|
6
|
+
ssn_card_type: CITIZEN
|
|
7
|
+
is_tax_unit_head: true
|
|
8
|
+
is_tax_unit_spouse: false
|
|
9
|
+
person2:
|
|
10
|
+
ssn_card_type: OTHER_NON_CITIZEN
|
|
11
|
+
is_tax_unit_head: false
|
|
12
|
+
is_tax_unit_spouse: true
|
|
13
|
+
tax_units:
|
|
14
|
+
tax_unit:
|
|
15
|
+
members: [person1, person2]
|
|
16
|
+
output:
|
|
17
|
+
tip_income_deduction_ssn_requirement_met: false
|
|
18
|
+
|
|
19
|
+
- name: Ineligible cardholder present, but not head or spouse
|
|
20
|
+
period: 2025
|
|
21
|
+
input:
|
|
22
|
+
people:
|
|
23
|
+
person1:
|
|
24
|
+
ssn_card_type: CITIZEN
|
|
25
|
+
is_tax_unit_head: true
|
|
26
|
+
is_tax_unit_spouse: false
|
|
27
|
+
person2:
|
|
28
|
+
ssn_card_type: OTHER_NON_CITIZEN
|
|
29
|
+
is_tax_unit_head: false
|
|
30
|
+
is_tax_unit_spouse: false
|
|
31
|
+
tax_units:
|
|
32
|
+
tax_unit:
|
|
33
|
+
members: [person1, person2]
|
|
34
|
+
output:
|
|
35
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
36
|
+
|
|
37
|
+
- name: Ineligible cardholder not present
|
|
38
|
+
period: 2025
|
|
39
|
+
input:
|
|
40
|
+
people:
|
|
41
|
+
person1:
|
|
42
|
+
ssn_card_type: CITIZEN
|
|
43
|
+
is_tax_unit_head: true
|
|
44
|
+
is_tax_unit_spouse: false
|
|
45
|
+
person2:
|
|
46
|
+
ssn_card_type: NON_CITIZEN_VALID_EAD
|
|
47
|
+
is_tax_unit_head: true
|
|
48
|
+
is_tax_unit_spouse: false
|
|
49
|
+
tax_units:
|
|
50
|
+
tax_unit:
|
|
51
|
+
members: [person1, person2]
|
|
52
|
+
output:
|
|
53
|
+
tip_income_deduction_ssn_requirement_met: true
|
|
@@ -84,3 +84,108 @@
|
|
|
84
84
|
members: [person1, person2]
|
|
85
85
|
output:
|
|
86
86
|
meets_snap_abawd_work_requirements: [false, true]
|
|
87
|
+
|
|
88
|
+
- name: Case 1, baseline, age 55 exempted from general work requirement.
|
|
89
|
+
period: 2026
|
|
90
|
+
absolute_error_margin: 0.9
|
|
91
|
+
input:
|
|
92
|
+
age: 55
|
|
93
|
+
weekly_hours_worked: 1
|
|
94
|
+
is_disabled: false
|
|
95
|
+
output:
|
|
96
|
+
meets_snap_abawd_work_requirements: true
|
|
97
|
+
|
|
98
|
+
- name: Case 2, reform, age 55 is not exempted from general work requirement.
|
|
99
|
+
period: 2027
|
|
100
|
+
absolute_error_margin: 0.9
|
|
101
|
+
input:
|
|
102
|
+
age: 55
|
|
103
|
+
weekly_hours_worked: 1
|
|
104
|
+
is_disabled: false
|
|
105
|
+
output:
|
|
106
|
+
meets_snap_abawd_work_requirements: false
|
|
107
|
+
|
|
108
|
+
- name: Case 3, baseline, have a child at age 15.
|
|
109
|
+
period: 2026-01
|
|
110
|
+
absolute_error_margin: 0.9
|
|
111
|
+
input:
|
|
112
|
+
people:
|
|
113
|
+
person1:
|
|
114
|
+
age: 55
|
|
115
|
+
weekly_hours_worked: 1
|
|
116
|
+
is_disabled: false
|
|
117
|
+
is_parent: true
|
|
118
|
+
person2:
|
|
119
|
+
age: 15
|
|
120
|
+
is_disabled: false
|
|
121
|
+
is_tax_unit_dependent: true
|
|
122
|
+
output:
|
|
123
|
+
meets_snap_abawd_work_requirements: [true, true]
|
|
124
|
+
|
|
125
|
+
- name: Case 4, reform, have a child at age 15.
|
|
126
|
+
period: 2027
|
|
127
|
+
absolute_error_margin: 0.9
|
|
128
|
+
input:
|
|
129
|
+
people:
|
|
130
|
+
person1:
|
|
131
|
+
age: 55
|
|
132
|
+
weekly_hours_worked: 1
|
|
133
|
+
is_disabled: false
|
|
134
|
+
is_parent: true
|
|
135
|
+
person2:
|
|
136
|
+
age: 15
|
|
137
|
+
is_disabled: false
|
|
138
|
+
is_tax_unit_dependent: true
|
|
139
|
+
output:
|
|
140
|
+
meets_snap_abawd_work_requirements: [false, true]
|
|
141
|
+
|
|
142
|
+
- name: Case 5, reform, have a child at age 6.
|
|
143
|
+
period: 2027
|
|
144
|
+
absolute_error_margin: 0.9
|
|
145
|
+
input:
|
|
146
|
+
people:
|
|
147
|
+
person1:
|
|
148
|
+
age: 55
|
|
149
|
+
weekly_hours_worked: 1
|
|
150
|
+
is_disabled: false
|
|
151
|
+
is_parent: true
|
|
152
|
+
person2:
|
|
153
|
+
age: 6
|
|
154
|
+
is_disabled: false
|
|
155
|
+
is_tax_unit_dependent: true
|
|
156
|
+
output:
|
|
157
|
+
meets_snap_abawd_work_requirements: [true, true]
|
|
158
|
+
|
|
159
|
+
- name: Case 6, reform, is veteran with a child 15 in 2027.
|
|
160
|
+
period: 2027
|
|
161
|
+
absolute_error_margin: 0.9
|
|
162
|
+
input:
|
|
163
|
+
people:
|
|
164
|
+
person1:
|
|
165
|
+
age: 55
|
|
166
|
+
weekly_hours_worked: 1
|
|
167
|
+
is_disabled: false
|
|
168
|
+
is_veteran: true
|
|
169
|
+
person2:
|
|
170
|
+
age: 15
|
|
171
|
+
is_disabled: false
|
|
172
|
+
is_tax_unit_dependent: true
|
|
173
|
+
output:
|
|
174
|
+
meets_snap_abawd_work_requirements: [true, true]
|
|
175
|
+
|
|
176
|
+
- name: Case 7, reform, is veteran with a child 15 in 2031, sunset provision in effect.
|
|
177
|
+
period: 2031
|
|
178
|
+
absolute_error_margin: 0.9
|
|
179
|
+
input:
|
|
180
|
+
people:
|
|
181
|
+
person1:
|
|
182
|
+
age: 55
|
|
183
|
+
weekly_hours_worked: 1
|
|
184
|
+
is_disabled: false
|
|
185
|
+
is_veteran: true
|
|
186
|
+
person2:
|
|
187
|
+
age: 15
|
|
188
|
+
is_disabled: false
|
|
189
|
+
is_tax_unit_dependent: true
|
|
190
|
+
output:
|
|
191
|
+
meets_snap_abawd_work_requirements: [false, true]
|
|
@@ -25,6 +25,15 @@ class is_medicaid_eligible(Variable):
|
|
|
25
25
|
~undocumented | undocumented & state_covers_undocumented
|
|
26
26
|
)
|
|
27
27
|
ca_ffyp_eligible = person("ca_ffyp_eligible", period)
|
|
28
|
+
if p.work_requirements.applies:
|
|
29
|
+
work_requirement_eligible = person(
|
|
30
|
+
"medicaid_work_requirement_eligible", period
|
|
31
|
+
)
|
|
32
|
+
return (
|
|
33
|
+
categorically_eligible
|
|
34
|
+
& immigration_status_eligible
|
|
35
|
+
& work_requirement_eligible
|
|
36
|
+
) | ca_ffyp_eligible
|
|
28
37
|
return (
|
|
29
38
|
categorically_eligible & immigration_status_eligible
|
|
30
39
|
) | ca_ffyp_eligible
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class medicaid_work_requirement_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Eligible person for Medicaid via work requirement"
|
|
8
|
+
definition_period = YEAR
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.congress.gov/bill/119th-congress/house-bill/1/text"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
def formula(person, period, parameters):
|
|
14
|
+
p = parameters(period).gov.hhs.medicaid.eligibility.work_requirements
|
|
15
|
+
# Works no less than 80 hours p.680 (2)(A)
|
|
16
|
+
monthly_hours_worked = person("monthly_hours_worked", period)
|
|
17
|
+
meets_monthly_work_hours = (
|
|
18
|
+
monthly_hours_worked >= p.monthly_hours_threshold
|
|
19
|
+
)
|
|
20
|
+
# The individual is enrolled in an educational program at least half-time. p.680 (2)(D)
|
|
21
|
+
is_full_time_student = person("is_full_time_student", period)
|
|
22
|
+
# pregnant or postpartum medical assistance p.681 (3)(A)(i)(II)(bb)
|
|
23
|
+
is_pregnant = person("is_pregnant", period)
|
|
24
|
+
# Has attained age of 19 and is under 65 is require to work p.693 (bb)
|
|
25
|
+
age = person("age", period)
|
|
26
|
+
work_required_age = p.age_range.calc(age)
|
|
27
|
+
# parent, guardian, caretaker of a disabled person
|
|
28
|
+
is_dependent = person("is_tax_unit_dependent", period)
|
|
29
|
+
is_disabled = person("is_disabled", period)
|
|
30
|
+
has_disabled = person.tax_unit.any(is_dependent & is_disabled)
|
|
31
|
+
# veteran and is_permanently_and_totally_disabled p.694 (IV)
|
|
32
|
+
is_veteran = person("is_veteran", period)
|
|
33
|
+
is_permanently_and_totally_disabled = person(
|
|
34
|
+
"is_permanently_and_totally_disabled", period
|
|
35
|
+
)
|
|
36
|
+
eligible_veteran = is_veteran & is_permanently_and_totally_disabled
|
|
37
|
+
# blind or disabled or is_incapable_of_self_care p.694 (V)
|
|
38
|
+
is_blind = person("is_blind", period)
|
|
39
|
+
is_incapable_of_self_care = person("is_incapable_of_self_care", period)
|
|
40
|
+
eligible_disabled = is_blind | is_disabled | is_incapable_of_self_care
|
|
41
|
+
# parent, guardian, caretaker of a dependent child 13 years of age or under p.694 (III)
|
|
42
|
+
child_age_eligible = age <= p.dependent_age_limit
|
|
43
|
+
has_eligible_dependent_child = person.tax_unit.any(
|
|
44
|
+
is_dependent & child_age_eligible
|
|
45
|
+
)
|
|
46
|
+
exempted_from_work = (
|
|
47
|
+
is_full_time_student
|
|
48
|
+
| is_pregnant
|
|
49
|
+
| has_disabled
|
|
50
|
+
| eligible_veteran
|
|
51
|
+
| eligible_disabled
|
|
52
|
+
)
|
|
53
|
+
meets_base_requirement = meets_monthly_work_hours | exempted_from_work
|
|
54
|
+
meets_conditions = (
|
|
55
|
+
meets_base_requirement | has_eligible_dependent_child
|
|
56
|
+
)
|
|
57
|
+
return where(work_required_age, meets_conditions, True)
|
|
@@ -25,4 +25,22 @@ class cdcc_rate(Variable):
|
|
|
25
25
|
second_excess_agi = max_(0, agi - p.phase_out.second_start)
|
|
26
26
|
second_increments = np.ceil(second_excess_agi / p.phase_out.increment)
|
|
27
27
|
second_percentage_reduction = second_increments * p.phase_out.rate
|
|
28
|
+
if p.phase_out.amended_structure.applies:
|
|
29
|
+
# Second phase-out is amended post 2025
|
|
30
|
+
filing_status = tax_unit("filing_status", period)
|
|
31
|
+
second_phase_out_start = (
|
|
32
|
+
p.phase_out.amended_structure.second_start[filing_status]
|
|
33
|
+
)
|
|
34
|
+
second_excess_agi = max_(0, agi - second_phase_out_start)
|
|
35
|
+
second_phase_out_increment = (
|
|
36
|
+
p.phase_out.amended_structure.second_increment[filing_status]
|
|
37
|
+
)
|
|
38
|
+
second_increments = np.ceil(
|
|
39
|
+
second_excess_agi / second_phase_out_increment
|
|
40
|
+
)
|
|
41
|
+
second_percentage_reduction = second_increments * p.phase_out.rate
|
|
42
|
+
return max_(
|
|
43
|
+
p.phase_out.amended_structure.second_min,
|
|
44
|
+
phased_out_rate - second_percentage_reduction,
|
|
45
|
+
)
|
|
28
46
|
return max_(0, phased_out_rate - second_percentage_reduction)
|
|
@@ -8,6 +8,7 @@ class ctc(Variable):
|
|
|
8
8
|
unit = USD
|
|
9
9
|
documentation = "Total value of the non-refundable and refundable portions of the Child Tax Credit."
|
|
10
10
|
definition_period = YEAR
|
|
11
|
+
defined_for = "filer_meets_ctc_identification_requirements"
|
|
11
12
|
reference = "https://www.law.cornell.edu/uscode/text/26/24#a"
|
|
12
13
|
|
|
13
14
|
def formula(tax_unit, period, parameters):
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class filer_meets_ctc_identification_requirements(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
definition_period = YEAR
|
|
8
|
+
label = "Filer meets CTC identification requirements"
|
|
9
|
+
|
|
10
|
+
def formula(tax_unit, period, parameters):
|
|
11
|
+
# Both head and spouse in the tax unit must have valid SSN card type to be eligible for the CTC
|
|
12
|
+
p = parameters(period).gov.irs.credits.ctc
|
|
13
|
+
if p.adult_ssn_requirement_applies:
|
|
14
|
+
person = tax_unit.members
|
|
15
|
+
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
|
|
16
|
+
eligible_ssn_card_type = person(
|
|
17
|
+
"meets_ctc_identification_requirements", period
|
|
18
|
+
)
|
|
19
|
+
return tax_unit.any(head_or_spouse & eligible_ssn_card_type)
|
|
20
|
+
return True
|