policyengine-us 1.426.0__py3-none-any.whl → 1.439.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.
- policyengine_us/parameters/gov/aca/state_rating_area_cost.yaml +511 -12
- policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/min_age.yaml +1 -1
- policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/age_limit.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/amount.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/amount.yaml +2 -2
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml +60 -51
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml +60 -51
- policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/earned.yaml +13 -0
- policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/unearned.yaml +23 -0
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/README.md +1 -206
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/{income/all.yaml → income.yaml} +1 -1
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution.yaml +70 -0
- policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/joint.yaml +10 -0
- policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/single.yaml +10 -0
- policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/joint.yaml +10 -0
- policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/single.yaml +10 -0
- policyengine_us/parameters/gov/states/co/tax/income/credits/refundable.yaml +10 -0
- policyengine_us/parameters/gov/states/ga/tax/income/credits/itemizer/amount.yaml +14 -0
- policyengine_us/parameters/gov/states/ga/tax/income/credits/non_refundable.yaml +9 -0
- policyengine_us/parameters/gov/states/hi/tax/income/alternative_tax/availability.yaml +2 -3
- policyengine_us/parameters/gov/states/pa/tax/income/credits/eitc/match.yaml +10 -0
- policyengine_us/parameters/gov/states/pa/tax/income/credits/refundable.yaml +6 -0
- policyengine_us/parameters/gov/states/va/tax/income/credits/non_refundable.yaml +1 -1
- policyengine_us/parameters/gov/territories/pr/tax/income/credits/refundable.yaml +2 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/tax_rate/amount.yaml +35 -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/congress/tlaib/__init__.py +4 -3
- policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/__init__.py +9 -0
- policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.py +237 -0
- policyengine_us/reforms/reforms.py +5 -4
- policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py +32 -1
- policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py +26 -5
- policyengine_us/tests/policy/baseline/gov/ed/pell_grant/pell_grant_simplified_formula_applies.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_fpg.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/income_elasticity.yaml +6 -12
- policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/labor_supply_behavioral_response.yaml +24 -2
- policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/substitution_elasticity.yaml +35 -10
- policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration_tests.yaml +150 -4
- policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.yaml +64 -0
- policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.yaml +122 -0
- policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/states/ga/tax/income/credits/ga_itemizer_credit.yaml +44 -0
- policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/alternative_tax/hi_alternative_tax_on_capital_gains_eligible.yaml +0 -8
- policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.yaml +4 -0
- policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.yaml +15 -0
- policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/integration.yaml +96 -0
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.yaml +8 -8
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +57 -0
- policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/oh_cdcc.yaml +4 -4
- policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +59 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/credits/pa_eitc.yaml +26 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_normal_tax.yaml +31 -0
- policyengine_us/tests/policy/baseline/gov/test_categorical_eligibility_vectorization.yaml +41 -0
- policyengine_us/tests/policy/contrib/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.yaml +198 -0
- policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml +144 -0
- policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml +2 -2
- policyengine_us/variables/gov/ed/pell_grant/efc/pell_grant_simplified_formula_applies.py +1 -2
- policyengine_us/variables/gov/fcc/lifeline/is_lifeline_eligible.py +2 -2
- policyengine_us/variables/gov/hhs/head_start/early_head_start.py +2 -1
- policyengine_us/variables/gov/hhs/head_start/head_start.py +2 -1
- policyengine_us/variables/gov/hhs/head_start/is_head_start_categorically_eligible.py +1 -3
- policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_earned_income.py +13 -0
- policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_unearned_income.py +13 -0
- policyengine_us/variables/gov/hhs/tanf/tanf_fpg.py +28 -0
- policyengine_us/variables/gov/simulation/labor_supply_response/income_elasticity.py +1 -27
- policyengine_us/variables/gov/simulation/labor_supply_response/substitution_elasticity.py +18 -43
- policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/is_ssi_spousal_deeming_applies.py +41 -0
- policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.py +20 -20
- policyengine_us/variables/gov/ssa/ssi/ssi.py +22 -1
- policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py +26 -4
- policyengine_us/variables/gov/states/ca/cpuc/care/eligibility/ca_care_categorically_eligible.py +2 -2
- policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +26 -0
- policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +27 -0
- policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker.py +10 -0
- policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.py +18 -0
- policyengine_us/variables/gov/states/ga/tax/income/credits/ga_itemizer_credit.py +19 -0
- policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.py +1 -1
- policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.py +14 -0
- policyengine_us/variables/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.py +2 -2
- policyengine_us/variables/gov/states/oh/tax/income/credits/oh_cdcc.py +2 -2
- policyengine_us/variables/gov/states/pa/tax/income/credits/pa_eitc.py +16 -0
- policyengine_us/variables/gov/territories/pr/tax/income/pr_income_tax.py +14 -0
- policyengine_us/variables/gov/territories/pr/tax/income/pr_normal_tax.py +16 -0
- policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +11 -0
- policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +11 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/METADATA +1 -1
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/RECORD +100 -84
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/age_limit.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/amount.yaml +0 -13
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/in_effect.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/min_birth_year.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/amount.yaml +0 -13
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/in_effect.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/max_age.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/min_age.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/rate.yaml +0 -8
- policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/threshold.yaml +0 -24
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_multiplier_over_threshold.yaml +0 -11
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_threshold.yaml +0 -9
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/base.yaml +0 -11
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_multiplier_over_threshold.yaml +0 -11
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_threshold.yaml +0 -9
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/all.yaml +0 -6
- policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/by_position_and_decile.yaml +0 -71
- policyengine_us/reforms/congress/tlaib/income_security_package/__init__.py +0 -17
- policyengine_us/reforms/congress/tlaib/income_security_package/income_security_package.py +0 -402
- policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/integration.yaml +0 -45
- policyengine_us/tests/policy/contrib/congress/tlaib/income_security/integration.yaml +0 -154
- policyengine_us/tests/policy/contrib/congress/tlaib/income_security/state_integration.yaml +0 -110
- policyengine_us/tests/policy/contrib/congress/tlaib/income_security/test_individual_acts.yaml +0 -149
- policyengine_us/tests/policy/contrib/congress/tlaib/income_security/unit_tests.yaml +0 -272
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/amount.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/child_benefit/age_limit.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/amount.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/max_age.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/min_age.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/rate.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/start.yaml +0 -0
- /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/in_effect.yaml +0 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.439.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -22,37 +22,37 @@ class ssi_income_deemed_from_ineligible_spouse(Variable):
|
|
|
22
22
|
unit = USD
|
|
23
23
|
|
|
24
24
|
def formula(person, period, parameters):
|
|
25
|
-
# 1.
|
|
25
|
+
# 1. Check if spousal deeming applies (avoids duplicating threshold logic)
|
|
26
|
+
deeming_applies = person("is_ssi_spousal_deeming_applies", period)
|
|
27
|
+
|
|
28
|
+
# 2. If deeming applies, calculate deemed amount using "difference" approach:
|
|
29
|
+
# (couple combined countable) - (individual alone countable)
|
|
30
|
+
|
|
31
|
+
# Get spouse's leftover income (post-child allocations)
|
|
26
32
|
spouse_earned = person(
|
|
27
33
|
"ssi_earned_income_deemed_from_ineligible_spouse", period
|
|
28
34
|
)
|
|
29
35
|
spouse_unearned = person(
|
|
30
36
|
"ssi_unearned_income_deemed_from_ineligible_spouse", period
|
|
31
37
|
)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
# 3. If leftover <= diff => no deeming
|
|
40
|
-
# If leftover > diff => difference of incomes approach
|
|
41
|
-
# (couple combined) - (individual alone).
|
|
42
|
-
# (a) individual's own income
|
|
43
|
-
indiv_earned = person("ssi_earned_income", period)
|
|
44
|
-
indiv_unearned = person("ssi_unearned_income", period)
|
|
38
|
+
|
|
39
|
+
# Get individual's own income
|
|
40
|
+
individual_earned = person("ssi_earned_income", period)
|
|
41
|
+
individual_unearned = person("ssi_unearned_income", period)
|
|
42
|
+
|
|
43
|
+
# Calculate individual's countable income (alone)
|
|
45
44
|
alone_countable = _apply_ssi_exclusions(
|
|
46
|
-
|
|
45
|
+
individual_earned, individual_unearned, parameters, period
|
|
47
46
|
)
|
|
48
47
|
|
|
49
|
-
#
|
|
48
|
+
# Calculate couple's combined countable income
|
|
50
49
|
couple_countable = _apply_ssi_exclusions(
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
individual_earned + spouse_earned,
|
|
51
|
+
individual_unearned + spouse_unearned,
|
|
53
52
|
parameters,
|
|
54
53
|
period,
|
|
55
54
|
)
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
# Deemed amount is the difference (only when deeming applies)
|
|
57
|
+
deemed_amount = max_(0, couple_countable - alone_countable)
|
|
58
|
+
return deeming_applies * deemed_amount
|
|
@@ -13,4 +13,25 @@ class ssi(Variable):
|
|
|
13
13
|
def formula(person, period, parameters):
|
|
14
14
|
if parameters(period).gov.ssa.ssi.abolish_ssi:
|
|
15
15
|
return 0
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
uncapped = person("uncapped_ssi", period)
|
|
18
|
+
|
|
19
|
+
# Apply floor: SSI cannot be negative
|
|
20
|
+
benefit = max_(0, uncapped)
|
|
21
|
+
|
|
22
|
+
# Apply cap when spousal deeming: cannot exceed individual FBR
|
|
23
|
+
# per 20 CFR §416.1163
|
|
24
|
+
# This cap is necessary when spouse's gross income is just above $483:
|
|
25
|
+
# - Deeming applies (uses couple FBR)
|
|
26
|
+
# - After exclusions, countable may be low
|
|
27
|
+
# - Benefit could exceed individual FBR without this cap
|
|
28
|
+
deeming_applies = person("is_ssi_spousal_deeming_applies", period)
|
|
29
|
+
p = parameters(period).gov.ssa.ssi.amount
|
|
30
|
+
individual_max = p.individual * MONTHS_IN_YEAR
|
|
31
|
+
capped_benefit = min_(benefit, individual_max)
|
|
32
|
+
|
|
33
|
+
return where(
|
|
34
|
+
deeming_applies,
|
|
35
|
+
capped_benefit,
|
|
36
|
+
benefit,
|
|
37
|
+
)
|
|
@@ -12,12 +12,34 @@ class ssi_amount_if_eligible(Variable):
|
|
|
12
12
|
def formula(person, period, parameters):
|
|
13
13
|
p = parameters(period).gov.ssa.ssi.amount
|
|
14
14
|
is_dependent = person("is_tax_unit_dependent", period)
|
|
15
|
+
|
|
16
|
+
# Three scenarios for adults:
|
|
17
|
+
# 1. Both spouses eligible (joint claim) → couple rate / 2
|
|
18
|
+
# 2. One eligible, no deeming → individual rate
|
|
19
|
+
# 3. One eligible, deeming applies → couple rate (capped in ssi)
|
|
20
|
+
#
|
|
21
|
+
# Note: In scenario 3, deeming applies when spouse's GROSS income > $483.
|
|
22
|
+
# Income exclusions are applied to the COMBINED income afterwards.
|
|
23
|
+
# This means countable income can be much lower than $483, and the
|
|
24
|
+
# benefit can exceed individual FBR, requiring the cap in ssi.
|
|
25
|
+
|
|
26
|
+
is_joint_claim = person("ssi_claim_is_joint", period)
|
|
27
|
+
deeming_applies = person("is_ssi_spousal_deeming_applies", period)
|
|
28
|
+
|
|
29
|
+
# Determine FBR to use based on scenario
|
|
30
|
+
individual_or_deeming_amount = where(
|
|
31
|
+
deeming_applies,
|
|
32
|
+
p.couple, # Scenario 3: Deeming applies - use couple rate!
|
|
33
|
+
p.individual, # Scenario 2: No deeming
|
|
34
|
+
)
|
|
35
|
+
|
|
15
36
|
head_or_spouse_amount = where(
|
|
16
|
-
|
|
17
|
-
p.couple / 2,
|
|
18
|
-
|
|
37
|
+
is_joint_claim,
|
|
38
|
+
p.couple / 2, # Scenario 1: Both eligible
|
|
39
|
+
individual_or_deeming_amount,
|
|
19
40
|
)
|
|
20
|
-
|
|
41
|
+
|
|
42
|
+
# Adults amount is based on scenario (see above)
|
|
21
43
|
# Dependents always use individual amount.
|
|
22
44
|
ssi_per_month = where(
|
|
23
45
|
is_dependent, p.individual, head_or_spouse_amount
|
policyengine_us/variables/gov/states/ca/cpuc/care/eligibility/ca_care_categorically_eligible.py
CHANGED
|
@@ -17,6 +17,6 @@ class ca_care_categorically_eligible(Variable):
|
|
|
17
17
|
tribal_lifeline_programs = add(household, period, p.tribal_categorical)
|
|
18
18
|
return np.where(
|
|
19
19
|
is_on_tribal_land,
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
tribal_lifeline_programs > 0,
|
|
21
|
+
non_tribal_lifeline_programs > 0,
|
|
22
22
|
)
|
policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class co_care_worker_credit(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Colorado Care Worker Tax Credit"
|
|
8
|
+
defined_for = "co_care_worker_credit_eligible"
|
|
9
|
+
unit = USD
|
|
10
|
+
definition_period = YEAR
|
|
11
|
+
reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
|
|
12
|
+
|
|
13
|
+
def formula(tax_unit, period, parameters):
|
|
14
|
+
p = parameters(period).gov.states.co.tax.income.credits.care_worker
|
|
15
|
+
joint = tax_unit("tax_unit_is_joint", period)
|
|
16
|
+
eligible_care_worker_count = tax_unit(
|
|
17
|
+
"co_care_worker_credit_eligible_care_worker_count", period
|
|
18
|
+
)
|
|
19
|
+
joint_with_two_eligible_care_workers = joint & (
|
|
20
|
+
eligible_care_worker_count == 2
|
|
21
|
+
)
|
|
22
|
+
return where(
|
|
23
|
+
joint_with_two_eligible_care_workers,
|
|
24
|
+
p.amount.joint,
|
|
25
|
+
p.amount.single,
|
|
26
|
+
)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class co_care_worker_credit_eligible(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Colorado Care Worker Tax Credit eligible"
|
|
8
|
+
defined_for = StateCode.CO
|
|
9
|
+
unit = USD
|
|
10
|
+
definition_period = YEAR
|
|
11
|
+
reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
|
|
12
|
+
|
|
13
|
+
def formula(tax_unit, period, parameters):
|
|
14
|
+
p = parameters(period).gov.states.co.tax.income.credits.care_worker
|
|
15
|
+
joint = tax_unit("tax_unit_is_joint", period)
|
|
16
|
+
agi = tax_unit("adjusted_gross_income", period)
|
|
17
|
+
income_limit = where(
|
|
18
|
+
joint, p.income_limit.joint, p.income_limit.single
|
|
19
|
+
)
|
|
20
|
+
income_eligible = agi <= income_limit
|
|
21
|
+
eligible_care_worker_present = (
|
|
22
|
+
tax_unit(
|
|
23
|
+
"co_care_worker_credit_eligible_care_worker_count", period
|
|
24
|
+
)
|
|
25
|
+
> 0
|
|
26
|
+
)
|
|
27
|
+
return income_eligible & eligible_care_worker_present
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class co_care_worker_credit_eligible_care_worker(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Eligible Care Worker for the Colorado Care Worker Tax Credit"
|
|
8
|
+
defined_for = StateCode.CO
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class co_care_worker_credit_eligible_care_worker_count(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Number of eligible Care Workers for the Colorado Care Worker Tax Credit"
|
|
8
|
+
defined_for = StateCode.CO
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
|
|
11
|
+
|
|
12
|
+
def formula(tax_unit, period, parameters):
|
|
13
|
+
person = tax_unit.members
|
|
14
|
+
care_worker = person(
|
|
15
|
+
"co_care_worker_credit_eligible_care_worker", period
|
|
16
|
+
)
|
|
17
|
+
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
|
|
18
|
+
return tax_unit.sum(care_worker & head_or_spouse)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ga_itemizer_credit(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Georgia itemizer tax credit"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
reference = "https://law.justia.com/codes/georgia/2022/title-48/chapter-7/article-2/section-48-7-29-23/"
|
|
11
|
+
defined_for = StateCode.GA
|
|
12
|
+
|
|
13
|
+
def formula(tax_unit, period, parameters):
|
|
14
|
+
# Full-year and part-year residents who itemize their deductions
|
|
15
|
+
# are entitled to a credit up to $300 per taxpayer
|
|
16
|
+
itemizes = tax_unit("tax_unit_itemizes", period)
|
|
17
|
+
taxpayer_count = tax_unit("head_spouse_count", period)
|
|
18
|
+
p = parameters(period).gov.states.ga.tax.income.credits.itemizer
|
|
19
|
+
return where(itemizes, p.amount * taxpayer_count, 0)
|
|
@@ -5,7 +5,7 @@ class hi_cdcc(Variable):
|
|
|
5
5
|
value_type = float
|
|
6
6
|
entity = TaxUnit
|
|
7
7
|
label = "Hawaii child and dependent care credit"
|
|
8
|
-
defined_for =
|
|
8
|
+
defined_for = "hi_cdcc_eligible"
|
|
9
9
|
unit = USD
|
|
10
10
|
definition_period = YEAR
|
|
11
11
|
reference = "https://files.hawaii.gov/tax/legal/hrs/hrs_235.pdf#page=40"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class hi_cdcc_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Hawaii child and dependent care credit eligible"
|
|
8
|
+
defined_for = StateCode.HI
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
reference = "https://law.justia.com/codes/hawaii/title-14/chapter-235/section-235-55-6/"
|
|
11
|
+
|
|
12
|
+
def formula(tax_unit, period, parameters):
|
|
13
|
+
count_cdcc_eligible = tax_unit("count_cdcc_eligible", period)
|
|
14
|
+
return count_cdcc_eligible > 0
|
|
@@ -19,8 +19,8 @@ class nj_cdcc(Variable):
|
|
|
19
19
|
taxable_income = tax_unit("nj_taxable_income", period)
|
|
20
20
|
|
|
21
21
|
# Get federal CDCC
|
|
22
|
-
# New Jersey matches the
|
|
23
|
-
federal_cdcc = tax_unit("
|
|
22
|
+
# New Jersey matches the actual federal credit value
|
|
23
|
+
federal_cdcc = tax_unit("cdcc", period)
|
|
24
24
|
|
|
25
25
|
# Calculate NJ CDCC
|
|
26
26
|
rate = p.calc(taxable_income, right=True)
|
|
@@ -16,8 +16,8 @@ class oh_cdcc(Variable):
|
|
|
16
16
|
p = parameters(period).gov.states.oh.tax.income.credits.cdcc
|
|
17
17
|
|
|
18
18
|
agi = tax_unit("oh_modified_agi", period)
|
|
19
|
-
# Ohio matches the federal credit
|
|
20
|
-
us_cdcc = tax_unit("
|
|
19
|
+
# Ohio matches the potential federal credit
|
|
20
|
+
us_cdcc = tax_unit("cdcc_potential", period)
|
|
21
21
|
|
|
22
22
|
rate = p.match.calc(agi)
|
|
23
23
|
# qualify for full CDCC amount when AGI < 20_000
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class pa_eitc(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Pennsylvania Working Pennsylvanians Tax Credit"
|
|
8
|
+
defined_for = StateCode.PA
|
|
9
|
+
unit = USD
|
|
10
|
+
definition_period = YEAR
|
|
11
|
+
reference = "https://www.palegis.us/legislation/bills/text/PDF/2025/0/HB0416/PN2576#page=50" # Article XVI-W.2
|
|
12
|
+
|
|
13
|
+
def formula(tax_unit, period, parameters):
|
|
14
|
+
federal_eitc = tax_unit("eitc", period)
|
|
15
|
+
p = parameters(period).gov.states.pa.tax.income.credits.eitc
|
|
16
|
+
return federal_eitc * p.match
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class pr_income_tax(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
unit = USD
|
|
7
|
+
entity = TaxUnit
|
|
8
|
+
label = "Puerto Rico income tax"
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=3"
|
|
11
|
+
defined_for = StateCode.PR
|
|
12
|
+
|
|
13
|
+
adds = ["pr_regular_tax_before_credits"]
|
|
14
|
+
subtracts = ["pr_refundable_credits"]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class pr_normal_tax(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Puerto Rico normal tax"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
defined_for = StateCode.PR
|
|
11
|
+
reference = "https://law.justia.com/codes/puerto-rico/title-thirteen/subtitle-17/part-ii/chapter-1004/subchapter-a/30061/"
|
|
12
|
+
|
|
13
|
+
def formula(tax_unit, period, parameters):
|
|
14
|
+
p = parameters(period).gov.territories.pr.tax.income.tax_rate
|
|
15
|
+
net_income = tax_unit("pr_net_taxable_income", period)
|
|
16
|
+
return p.amount.calc(net_income)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class pr_regular_tax_before_credits(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Puerto Rico regular tax before credits"
|
|
8
|
+
unit = USD
|
|
9
|
+
definition_period = YEAR
|
|
10
|
+
defined_for = StateCode.PR
|
|
11
|
+
reference = "https://hacienda.pr.gov/sites/default/files/inst_individuals_2023.pdf#page=19"
|
policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class pr_net_taxable_income(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
entity = TaxUnit
|
|
7
|
+
label = "Puerto Rico net taxable income"
|
|
8
|
+
reference = "https://hacienda.pr.gov/sites/default/files/individuals_2024_rev._jul_12_24_9-30-24_informative.pdf#page=2"
|
|
9
|
+
unit = USD
|
|
10
|
+
definition_period = YEAR
|
|
11
|
+
defined_for = StateCode.PR
|