policyengine-us 1.426.0__py3-none-any.whl → 1.449.6__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/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
- 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/contrib/states/ut/eitc/in_effect.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
- policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
- 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/medicare/part_a/deductible.yaml +13 -0
- policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
- policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
- policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
- policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
- policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
- policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
- 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/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
- policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
- policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
- policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
- policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
- policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -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/ar/tax/income/rates/main/reduction.yaml +30 -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/non_joint.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/non_joint.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/il/hfs/README.md +1 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +21 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
- policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
- policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
- 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/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
- policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/credits/refundable.yaml +2 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/tax_rate/amount.yaml +35 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
- policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
- policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
- policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -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/parameters/simulation/disabled_programs.yaml +0 -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/local/ny/__init__.py +4 -0
- policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
- policyengine_us/reforms/reforms.py +19 -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/reforms/states/ut/__init__.py +3 -0
- policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
- policyengine_us/tests/policy/baseline/gov/ed/pell_grant/pell_grant_simplified_formula_applies.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
- policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_fpg.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
- policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -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/ar/tax/income/integration.yaml +35 -0
- policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
- 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/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
- policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
- policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_a.yaml +2 -2
- policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_b.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_c.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
- 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/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -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 +141 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/credits/pa_eitc.yaml +26 -0
- policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
- policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_normal_tax.yaml +31 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
- policyengine_us/tests/policy/baseline/gov/test_categorical_eligibility_vectorization.yaml +41 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
- policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
- policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
- policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
- policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
- policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -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/local/ny/nyc_mamdani_income_tax.yaml +51 -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/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
- policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
- 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/medicare/costs/medicare_cost.py +30 -0
- policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
- policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
- policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
- policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
- policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
- policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
- 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/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
- policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
- policyengine_us/variables/gov/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/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
- policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
- 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/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.py +26 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
- policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
- policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
- policyengine_us/variables/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.py +2 -2
- policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
- 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/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
- policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
- policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
- policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
- policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
- policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
- 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 +20 -0
- policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
- policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
- policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +17 -0
- policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
- policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
- policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
- policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
- policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
- policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
- policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
- policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
- policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/METADATA +1 -1
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/RECORD +300 -161
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/WHEEL +1 -1
- 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/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
- 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/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
- /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/licenses/LICENSE +0 -0
|
@@ -7,18 +7,12 @@ class substitution_elasticity(Variable):
|
|
|
7
7
|
label = "substitution elasticity of labor supply"
|
|
8
8
|
unit = "/1"
|
|
9
9
|
definition_period = YEAR
|
|
10
|
-
reference = [
|
|
11
|
-
"https://www.cbo.gov/publication/43675",
|
|
12
|
-
"https://www.cbo.gov/publication/43676",
|
|
13
|
-
"https://academic.oup.com/restud/article-abstract/72/2/395/1558553",
|
|
14
|
-
]
|
|
15
10
|
|
|
16
11
|
def formula(person, period, parameters):
|
|
17
12
|
p = parameters(
|
|
18
13
|
period
|
|
19
14
|
).gov.simulation.labor_supply_responses.elasticities.substitution
|
|
20
15
|
|
|
21
|
-
# Check for global override
|
|
22
16
|
if p.all != 0:
|
|
23
17
|
return p.all
|
|
24
18
|
|
|
@@ -36,7 +30,6 @@ class substitution_elasticity(Variable):
|
|
|
36
30
|
1_726e3,
|
|
37
31
|
]
|
|
38
32
|
|
|
39
|
-
# Calculate earnings
|
|
40
33
|
raw_earnings = add(
|
|
41
34
|
person,
|
|
42
35
|
period,
|
|
@@ -45,59 +38,41 @@ class substitution_elasticity(Variable):
|
|
|
45
38
|
"self_employment_income_before_lsr",
|
|
46
39
|
],
|
|
47
40
|
)
|
|
48
|
-
# Use max_ to prevent negative earnings from causing issues
|
|
49
41
|
earnings = max_(raw_earnings, 0)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
earnings_decile = np.searchsorted(
|
|
53
|
-
EARNINGS_DECILE_MARKERS, earnings, side="right"
|
|
42
|
+
earnings_decile = (
|
|
43
|
+
np.searchsorted(EARNINGS_DECILE_MARKERS, earnings) + 1
|
|
54
44
|
)
|
|
55
45
|
|
|
56
|
-
# Determine if primary earner (highest earner in tax unit)
|
|
57
46
|
tax_unit = person.tax_unit
|
|
47
|
+
# Primary earner == highest earner in tax unit
|
|
58
48
|
max_earnings_in_unit = tax_unit.max(earnings)
|
|
59
49
|
is_primary_earner = earnings == max_earnings_in_unit
|
|
60
50
|
|
|
61
|
-
|
|
62
|
-
base_elasticity = np.zeros_like(earnings, dtype=float)
|
|
51
|
+
elasticities = np.zeros_like(earnings)
|
|
63
52
|
|
|
64
53
|
# Handle zero earnings first
|
|
65
54
|
zero_earnings = earnings == 0
|
|
66
|
-
|
|
55
|
+
elasticities[zero_earnings] = 0
|
|
67
56
|
|
|
68
|
-
# For non-zero earnings, assign
|
|
57
|
+
# For non-zero earnings, assign elasticities
|
|
69
58
|
non_zero_earnings = earnings > 0
|
|
70
59
|
|
|
71
60
|
if np.any(non_zero_earnings):
|
|
72
|
-
#
|
|
73
|
-
|
|
74
|
-
|
|
61
|
+
# First assign primary earner elasticities by decile
|
|
62
|
+
decile_elasticities = [
|
|
63
|
+
p.by_position_and_decile.primary._children[str(i + 1)]
|
|
64
|
+
for i in range(10)
|
|
65
|
+
]
|
|
66
|
+
for i in range(10):
|
|
75
67
|
mask = (
|
|
76
68
|
non_zero_earnings
|
|
77
|
-
& (earnings_decile ==
|
|
69
|
+
& (earnings_decile == i + 1)
|
|
78
70
|
& is_primary_earner
|
|
79
71
|
)
|
|
80
|
-
|
|
81
|
-
# Access parameter using getattr to handle both normal and test scenarios
|
|
82
|
-
decile_param = getattr(
|
|
83
|
-
p.by_position_and_decile.primary, str(decile_num)
|
|
84
|
-
)
|
|
85
|
-
# Handle both Parameter objects and raw values (when overridden in tests)
|
|
86
|
-
param_value = (
|
|
87
|
-
decile_param(period)
|
|
88
|
-
if callable(decile_param)
|
|
89
|
-
else decile_param
|
|
90
|
-
)
|
|
91
|
-
base_elasticity[mask] = param_value
|
|
72
|
+
elasticities[mask] = decile_elasticities[i]
|
|
92
73
|
|
|
93
|
-
#
|
|
74
|
+
# Then assign secondary earner elasticity where applicable
|
|
75
|
+
secondary_mask = non_zero_earnings & ~is_primary_earner
|
|
76
|
+
elasticities[secondary_mask] = p.by_position_and_decile.secondary
|
|
94
77
|
|
|
95
|
-
|
|
96
|
-
age = person("age", period.this_year)
|
|
97
|
-
age_multiplier = where(
|
|
98
|
-
age >= p.age_threshold,
|
|
99
|
-
p.age_multiplier_over_threshold,
|
|
100
|
-
1.0, # No multiplier for under threshold
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
return base_elasticity * age_multiplier
|
|
78
|
+
return elasticities
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class is_ssi_spousal_deeming_applies(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "SSI spousal deeming applies"
|
|
8
|
+
definition_period = YEAR
|
|
9
|
+
reference = "https://www.law.cornell.edu/cfr/text/20/416.1163"
|
|
10
|
+
defined_for = "is_ssi_eligible_individual"
|
|
11
|
+
documentation = """
|
|
12
|
+
Returns True when spousal deeming applies according to 20 CFR §416.1163.
|
|
13
|
+
|
|
14
|
+
Spousal deeming applies when:
|
|
15
|
+
1. Person is an eligible individual (not part of an eligible couple)
|
|
16
|
+
2. Spouse is ineligible (not aged/blind/disabled)
|
|
17
|
+
3. Spouse's leftover income (after child allocations) exceeds the difference
|
|
18
|
+
between couple FBR and individual FBR
|
|
19
|
+
|
|
20
|
+
When deeming applies, the benefit calculation uses the couple FBR instead
|
|
21
|
+
of the individual FBR, recognizing that two people have higher expenses.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def formula(person, period, parameters):
|
|
25
|
+
# Get spouse's deemed income (after child allocations)
|
|
26
|
+
spouse_deemed_income = add(
|
|
27
|
+
person,
|
|
28
|
+
period,
|
|
29
|
+
[
|
|
30
|
+
"ssi_earned_income_deemed_from_ineligible_spouse",
|
|
31
|
+
"ssi_unearned_income_deemed_from_ineligible_spouse",
|
|
32
|
+
],
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
# Compare to FBR differential (couple rate - individual rate)
|
|
36
|
+
p = parameters(period).gov.ssa.ssi.amount
|
|
37
|
+
diff = (p.couple - p.individual) * MONTHS_IN_YEAR
|
|
38
|
+
|
|
39
|
+
# Deeming applies when spouse's deemed income exceeds the differential
|
|
40
|
+
# Note: regulation says "not more than" means ≤, so we use > for deeming
|
|
41
|
+
return spouse_deemed_income > diff
|
|
@@ -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
|
)
|
|
@@ -29,10 +29,12 @@ class ca_amt_exemption(Variable):
|
|
|
29
29
|
reduced_amti_rate = reduced_amti * p_irs.phase_out.rate
|
|
30
30
|
# Line 6
|
|
31
31
|
adult_exemption = max_(exemption_max_amount - reduced_amti_rate, 0)
|
|
32
|
-
# Eligible children receive an increased exemption amount
|
|
32
|
+
# Eligible children receive an increased exemption amount.
|
|
33
|
+
# This applies when the HEAD of the tax unit is a child dependent.
|
|
33
34
|
person = tax_unit.members
|
|
34
35
|
eligible_child = person("is_child_dependent", period)
|
|
35
|
-
|
|
36
|
+
is_head = person("is_tax_unit_head", period)
|
|
37
|
+
head_is_eligible_child = tax_unit.any(eligible_child & is_head)
|
|
36
38
|
# Line 7
|
|
37
39
|
exemption_amount_child = p_irs.child.amount
|
|
38
40
|
# Line 8
|
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.non_joint,
|
|
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.non_joint
|
|
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
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_countable_assets(Variable):
|
|
5
|
+
value_type = float
|
|
6
|
+
unit = USD
|
|
7
|
+
entity = Person
|
|
8
|
+
label = "Illinois Health Benefits for Workers with Disabilities countable assets"
|
|
9
|
+
definition_period = MONTH
|
|
10
|
+
reference = (
|
|
11
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.381",
|
|
12
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
13
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
14
|
+
)
|
|
15
|
+
defined_for = StateCode.IL
|
|
16
|
+
|
|
17
|
+
def formula(person, period, parameters):
|
|
18
|
+
# HBWD exempt assets per § 120.381:
|
|
19
|
+
# - Primary residence (homestead)
|
|
20
|
+
# - Personal effects and household goods
|
|
21
|
+
# - One vehicle (full exemption if essential, $4,500 if not)
|
|
22
|
+
# - Life insurance ≤$1,500
|
|
23
|
+
# - Burial resources
|
|
24
|
+
# - Retirement accounts inaccessible before age 59.5
|
|
25
|
+
# - Medical savings accounts (26 USC 220)
|
|
26
|
+
# Currently only implementing vehicle exemption
|
|
27
|
+
# § 120.381 and § 113.141 have identical vehicle exemption rules,
|
|
28
|
+
# so using AABD vehicle calculation
|
|
29
|
+
cash_assets = person.spm_unit("spm_unit_cash_assets", period.this_year)
|
|
30
|
+
vehicle_value = person.spm_unit(
|
|
31
|
+
"il_aabd_countable_vehicle_value", period
|
|
32
|
+
)
|
|
33
|
+
# TODO: Implement homestead, retirement account, burial, and other exemptions
|
|
34
|
+
return cash_assets + vehicle_value
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_age_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = (
|
|
8
|
+
"Illinois Health Benefits for Workers with Disabilities age eligible"
|
|
9
|
+
)
|
|
10
|
+
definition_period = MONTH
|
|
11
|
+
reference = (
|
|
12
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
13
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
14
|
+
)
|
|
15
|
+
defined_for = StateCode.IL
|
|
16
|
+
|
|
17
|
+
def formula(person, period, parameters):
|
|
18
|
+
p = parameters(period).gov.states.il.hfs.hbwd.eligibility
|
|
19
|
+
age = person("monthly_age", period)
|
|
20
|
+
return p.age.calc(age)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_asset_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = (
|
|
8
|
+
"Illinois Health Benefits for Workers with Disabilities asset eligible"
|
|
9
|
+
)
|
|
10
|
+
definition_period = MONTH
|
|
11
|
+
reference = (
|
|
12
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
13
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
14
|
+
)
|
|
15
|
+
defined_for = StateCode.IL
|
|
16
|
+
|
|
17
|
+
def formula(person, period, parameters):
|
|
18
|
+
p = parameters(period).gov.states.il.hfs.hbwd.eligibility
|
|
19
|
+
# Check countable assets against $25,000 limit
|
|
20
|
+
countable_assets = person("il_hbwd_countable_assets", period)
|
|
21
|
+
return countable_assets <= p.asset.limit
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_disability_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Illinois Health Benefits for Workers with Disabilities disability eligible"
|
|
8
|
+
definition_period = MONTH
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
11
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
12
|
+
)
|
|
13
|
+
defined_for = StateCode.IL
|
|
14
|
+
|
|
15
|
+
def formula(person, period, parameters):
|
|
16
|
+
# Must meet Social Security Administration's definition of disability
|
|
17
|
+
is_ssi_disabled = person("is_ssi_disabled", period)
|
|
18
|
+
# Or currently receiving SSDI
|
|
19
|
+
receives_ssdi = person("social_security_disability", period) > 0
|
|
20
|
+
return is_ssi_disabled | receives_ssdi
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Illinois Health Benefits for Workers with Disabilities eligible"
|
|
8
|
+
definition_period = MONTH
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
11
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
12
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd.html",
|
|
13
|
+
)
|
|
14
|
+
defined_for = StateCode.IL
|
|
15
|
+
|
|
16
|
+
def formula(person, period, parameters):
|
|
17
|
+
age_eligible = person("il_hbwd_age_eligible", period)
|
|
18
|
+
disability_eligible = person("il_hbwd_disability_eligible", period)
|
|
19
|
+
employment_eligible = person("il_hbwd_employment_eligible", period)
|
|
20
|
+
income_eligible = person("il_hbwd_income_eligible", period)
|
|
21
|
+
asset_eligible = person("il_hbwd_asset_eligible", period)
|
|
22
|
+
immigration_eligible = person(
|
|
23
|
+
"il_hbwd_immigration_status_eligible", period
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
age_eligible
|
|
28
|
+
& disability_eligible
|
|
29
|
+
& employment_eligible
|
|
30
|
+
& income_eligible
|
|
31
|
+
& asset_eligible
|
|
32
|
+
& immigration_eligible
|
|
33
|
+
)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_employment_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Illinois Health Benefits for Workers with Disabilities employment eligible"
|
|
8
|
+
definition_period = MONTH
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
11
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
12
|
+
)
|
|
13
|
+
defined_for = StateCode.IL
|
|
14
|
+
|
|
15
|
+
def formula(person, period, parameters):
|
|
16
|
+
# Per § 120.510(l)(1), employment is verified by current payment
|
|
17
|
+
# under FICA or IMRF. We use earned income as a proxy for
|
|
18
|
+
# employment with FICA contributions.
|
|
19
|
+
#
|
|
20
|
+
# Not currently modeled:
|
|
21
|
+
# - § 120.510(l)(2)(A): Future employment exception (60 days)
|
|
22
|
+
# - § 120.510(l)(2)(B): Medical inability grace period (90 days)
|
|
23
|
+
# - § 120.510(l)(2)(C): Job loss grace period (30 days)
|
|
24
|
+
earned_income = person("il_hbwd_gross_earned_income", period)
|
|
25
|
+
return earned_income > 0
|
policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.py
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_immigration_status_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Illinois Health Benefits for Workers with Disabilities immigration status eligible"
|
|
8
|
+
definition_period = MONTH
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.310",
|
|
11
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
12
|
+
)
|
|
13
|
+
defined_for = StateCode.IL
|
|
14
|
+
|
|
15
|
+
def formula(person, period, parameters):
|
|
16
|
+
p = parameters(period).gov.states.il.hfs.hbwd.eligibility
|
|
17
|
+
immigration_status = person("immigration_status", period)
|
|
18
|
+
is_citizen = (
|
|
19
|
+
immigration_status == immigration_status.possible_values.CITIZEN
|
|
20
|
+
)
|
|
21
|
+
immigration_status_str = immigration_status.decode_to_str()
|
|
22
|
+
has_qualifying_status = np.isin(
|
|
23
|
+
immigration_status_str,
|
|
24
|
+
p.qualified_noncitizen_statuses,
|
|
25
|
+
)
|
|
26
|
+
return has_qualifying_status | is_citizen
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class il_hbwd_income_eligible(Variable):
|
|
5
|
+
value_type = bool
|
|
6
|
+
entity = Person
|
|
7
|
+
label = "Illinois Health Benefits for Workers with Disabilities income eligible"
|
|
8
|
+
definition_period = MONTH
|
|
9
|
+
reference = (
|
|
10
|
+
"https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
|
|
11
|
+
"https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
|
|
12
|
+
)
|
|
13
|
+
defined_for = StateCode.IL
|
|
14
|
+
|
|
15
|
+
def formula(person, period, parameters):
|
|
16
|
+
p = parameters(period).gov.states.il.hfs.hbwd.eligibility
|
|
17
|
+
# Income limit is 350% of FPL
|
|
18
|
+
fpg = person.spm_unit("spm_unit_fpg", period)
|
|
19
|
+
income_limit = fpg * p.income.limit
|
|
20
|
+
# Check household countable income against limit
|
|
21
|
+
# Per § 120.510(f), counts individual + spouse income
|
|
22
|
+
countable_income = person.spm_unit("il_hbwd_countable_income", period)
|
|
23
|
+
return countable_income <= income_limit
|