policyengine-us 1.449.6__py3-none-any.whl → 1.465.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/contrib/aca/ptc_700_fpl_cliff/brackets.yaml +52 -0
- policyengine_us/parameters/gov/contrib/aca/ptc_700_fpl_cliff/in_effect.yaml +9 -0
- policyengine_us/parameters/gov/contrib/aca/ptc_700_fpl_cliff/income_eligibility.yaml +27 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/in_effect.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/threshold.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/amount.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/in_effect.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/rate.yaml +9 -0
- policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/threshold.yaml +23 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +115 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/couple.yaml +14 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/individual.yaml +14 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/qi/fpl_limit.yaml +14 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/qmb/fpl_limit.yaml +18 -0
- policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/slmb/fpl_limit.yaml +15 -0
- policyengine_us/parameters/gov/irs/deductions/qbi/max/reit_ptp_rate.yaml +13 -0
- policyengine_us/parameters/gov/states/az/tax/income/credits/property_tax/income_sources.yaml +17 -9
- policyengine_us/parameters/gov/states/ca/chhs/medi_cal_enrollment_freeze/in_effect.yaml +12 -0
- policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/head_of_household.yaml +1 -1
- policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/joint.yaml +1 -1
- policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/separate.yaml +1 -1
- policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/single.yaml +1 -1
- policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/surviving_spouse.yaml +1 -1
- policyengine_us/parameters/gov/states/ia/tax/income/credits/child_care/fraction.yaml +1 -1
- policyengine_us/parameters/gov/states/il/dhs/aabd/asset/sources.yaml +0 -1
- policyengine_us/parameters/gov/states/il/dhs/aabd/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +3 -5
- policyengine_us/parameters/gov/states/il/dhs/tanf/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +2 -2
- policyengine_us/parameters/gov/states/il/hfs/bcc/eligibility/age.yaml +12 -0
- policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/household_size.yaml +14 -0
- policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/income_limit.yaml +15 -0
- policyengine_us/parameters/gov/states/il/hfs/mpe/eligibility/income_limit.yaml +13 -0
- policyengine_us/parameters/gov/states/il/hfs/qualified_noncitizen_statuses.yaml +17 -0
- policyengine_us/parameters/gov/states/mi/tax/income/household_resources.yaml +1 -1
- policyengine_us/parameters/gov/states/mo/dss/tanf/child_care_deduction/amount.yaml +27 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/amount.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_only/amount.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_plus_one_third/flat_amount.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_plus_one_third/percentage.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/two_thirds_disregard/percentage.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit/max_table_size.yaml +12 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit/rate.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/maximum_benefit/percentage.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/minimum_payment.yaml +12 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/resource_limit/amount.yaml +14 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/additional_person_increment.yaml +12 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/amount.yaml +38 -0
- policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/base_table_max_size.yaml +12 -0
- policyengine_us/parameters/gov/states/nj/tax/income/additions.yaml +12 -0
- policyengine_us/parameters/gov/states/nj/tax/income/gross_income_sources.yaml +32 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_1.yaml +19 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_2.yaml +44 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_3.yaml +31 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_4.yaml +29 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/family_size_allowance/additional_person.yaml +14 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/family_size_allowance/amount.yaml +69 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/earned_income_disregard/percentage.yaml +14 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/work_expense/additional.yaml +15 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/work_expense/initial.yaml +14 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/max_family_size_in_table.yaml +12 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/resource_limit.yaml +7 -6
- policyengine_us/parameters/gov/states/pa/dhs/tanf/standard_of_need/additional_person.yaml +14 -0
- policyengine_us/parameters/gov/states/pa/dhs/tanf/standard_of_need/amount.yaml +69 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/amount.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_agi.yaml +6 -2
- policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_child_age.yaml +6 -2
- policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/parent_max_earnings.yaml +6 -2
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/amount.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/child_age_threshold.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/rate.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/start.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/earned_income/rate.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/military_retirement/rate.yaml +26 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/non_refundable.yaml +5 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/birth_year.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/max.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/rate.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/threshold.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/rate.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/threshold.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/in_effect.yaml +2 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/personal_exemption.yaml +5 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/rate.yaml +5 -1
- policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/threshold.yaml +9 -0
- policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/rate.yaml +4 -0
- policyengine_us/parameters/gov/states/ut/tax/income/rate.yaml +3 -0
- policyengine_us/parameters/gov/states/wi/dcf/README.md +1 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/README.md +1 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/asset/limit.yaml +16 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/asset/vehicle_exclusion.yaml +14 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/income_limit/rate.yaml +16 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/placement/amount.yaml +30 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/placement/arp_pregnancy_month_threshold.yaml +14 -0
- policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml +15 -0
- policyengine_us/reforms/aca/__init__.py +3 -0
- policyengine_us/reforms/aca/aca_ptc_700_fpl_cliff.py +125 -0
- policyengine_us/reforms/reforms.py +12 -0
- policyengine_us/reforms/state_dependent_exemptions/repeal_state_dependent_exemptions.py +1 -1
- policyengine_us/reforms/states/de/__init__.py +3 -0
- policyengine_us/reforms/states/de/dependent_credit/de_dependent_credit_reform.py +165 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicaid/medicaid_enrolled.yaml +105 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/category/msp_category.yaml +69 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_eligible.yaml +62 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_fpg.yaml +22 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/integration.yaml +84 -0
- policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/msp_benefit_value.yaml +62 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_1.yaml +157 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_2.yaml +106 -0
- policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/qbid/qbid_amount.yaml +75 -3
- policyengine_us/tests/policy/baseline/gov/local/ca/la/general_relief/eligible/immigration/la_general_relief_immigration_status_eligible_person.yaml +2 -2
- policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_medicare_hi.yaml +105 -0
- policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_oasdi.yaml +86 -0
- policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_total.yaml +19 -0
- policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_tier_split.yaml +90 -0
- policyengine_us/tests/policy/baseline/gov/states/az/tax/income/az_property_tax_credit_agi.yaml +58 -0
- policyengine_us/tests/policy/baseline/gov/states/az/tax/income/integration.yaml +28 -0
- policyengine_us/tests/policy/baseline/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.yaml +59 -5
- policyengine_us/tests/policy/baseline/gov/states/dc/tax/income/dc_ptc.yaml +27 -0
- policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/food_excise/hi_food_excise_credit.yaml +29 -1
- policyengine_us/tests/policy/baseline/gov/states/ia/tax/income/ia_cdcc.yaml +3 -3
- policyengine_us/tests/policy/baseline/gov/states/ia/tax/income/ia_integration.yaml +31 -1
- policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/eligibility/il_aabd_non_financial_eligible_person.yaml +6 -6
- policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.yaml +2 -10
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.yaml +95 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.yaml +35 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_eligible.yaml +35 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_level.yaml +27 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/integration.yaml +116 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +18 -5
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +5 -5
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +8 -8
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/il_hfs_immigration_status_eligible.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml +39 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_income_eligible.yaml +23 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml +138 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/eligibility/il_smib_eligible.yaml +88 -0
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/integration.yaml +73 -0
- policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/credits/family_size_tax_credit/ky_family_size_tax_credit_rate.yaml +8 -8
- policyengine_us/tests/policy/baseline/gov/states/ma/tax/income/gross_income/integration.yaml +28 -0
- policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/integration.yaml +87 -0
- policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_dependent_exemption_credit_amount_person.yaml +3 -2
- policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/mi_home_heating_credit.yaml +87 -0
- policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/mi_household_resources.yaml +57 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/integration.yaml +275 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf.yaml +60 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_child_care_deduction.yaml +187 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_countable_income.yaml +49 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_earned_income_deductions.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_eligible.yaml +59 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_gross_income_eligible.yaml +29 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_income_eligible.yaml +49 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_maximum_benefit.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_percentage_of_need_test.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_resources_eligible.yaml +23 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_standard_of_need.yaml +71 -0
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_standard_of_need_test.yaml +44 -0
- policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/integration.yaml +29 -0
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/eitc/nj_eitc.yaml +8 -3
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integration.yaml +137 -0
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/taxable_income/nj_agi.yaml +7 -8
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_disregard_eligible.yaml +114 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_eligible.yaml +65 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_income_eligible.yaml +62 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_resources_eligible.yaml +47 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/income/pa_tanf_earned_income_after_deductions_person.yaml +81 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/integration.yaml +386 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf.yaml +53 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_county_group.yaml +63 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_maximum_benefit.yaml +92 -0
- policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_standard_of_need.yaml +73 -0
- policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.yaml +89 -0
- policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.yaml +50 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml +282 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works.yaml +50 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_countable_income.yaml +49 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_countable_resources.yaml +54 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_eligible.yaml +61 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_income_eligible.yaml +43 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml +111 -0
- policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_resources_eligible.yaml +38 -0
- policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit.yaml +31 -0
- policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.yaml +10 -6
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +1 -1
- policyengine_us/tests/policy/baseline/gov/usda/snap/snap_min_allotment.yaml +3 -3
- policyengine_us/tests/policy/baseline/household/expense/health/has_bcc_qualifying_coverage.yaml +12 -0
- policyengine_us/tests/policy/contrib/aca/ptc_700_fpl_cliff.yaml +136 -0
- policyengine_us/tests/policy/contrib/state_dependent_exemptions/repeal_state_dependent_exemptions.yaml +25 -1
- policyengine_us/tests/policy/contrib/states/de/dependent_credit_reform_test.yaml +210 -0
- policyengine_us/tests/test_batched.py +39 -68
- policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_group.py +2 -2
- policyengine_us/variables/gov/hhs/medicaid/receives_medicaid.py +17 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_qi_eligible.py +33 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_qmb_eligible.py +28 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_slmb_eligible.py +33 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/category/msp_category.py +33 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py +26 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_eligible.py +20 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_income_eligible.py +26 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +35 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_fpg.py +40 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/msp.py +15 -0
- policyengine_us/variables/gov/hhs/medicare/savings_programs/msp_benefit_value.py +37 -0
- policyengine_us/variables/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_1.py +58 -0
- policyengine_us/variables/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_2.py +17 -0
- policyengine_us/variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qbid_amount.py +16 -6
- policyengine_us/variables/gov/simulation/labor_supply_response/labor_supply_behavioral_response.py +57 -42
- policyengine_us/variables/gov/ssa/revenue/tob_revenue_medicare_hi.py +31 -0
- policyengine_us/variables/gov/ssa/revenue/tob_revenue_oasdi.py +31 -0
- policyengine_us/variables/gov/ssa/revenue/tob_revenue_total.py +44 -0
- policyengine_us/variables/gov/states/az/tax/income/credits/property_tax_credit/az_property_tax_credit_agi.py +53 -0
- policyengine_us/variables/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.py +25 -4
- policyengine_us/variables/gov/states/dc/tax/income/credits/dc_ptc.py +7 -3
- policyengine_us/variables/gov/states/ia/tax/income/credits/ia_cdcc.py +4 -2
- policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_immigration_status_eligible_person.py +1 -1
- policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_non_financial_eligible_person.py +23 -5
- policyengine_us/variables/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.py +1 -1
- policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.py +15 -0
- policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.py +27 -0
- policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.py +29 -0
- policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_eligible.py +40 -0
- policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_income_eligible.py +18 -0
- policyengine_us/variables/gov/states/il/hfs/fpp/il_fpp_income_level.py +29 -0
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +7 -3
- policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +1 -1
- policyengine_us/variables/gov/states/il/hfs/{hbwd/eligibility/il_hbwd_immigration_status_eligible.py → il_hfs_immigration_status_eligible.py} +5 -8
- policyengine_us/variables/gov/states/il/hfs/mpe/eligibility/il_mpe_income_eligible.py +15 -0
- policyengine_us/variables/gov/states/il/hfs/mpe/il_mpe_eligible.py +15 -0
- policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_categorical_eligible.py +26 -0
- policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_eligible.py +28 -0
- policyengine_us/variables/gov/states/il/hfs/smib/il_smib.py +21 -0
- policyengine_us/variables/gov/states/il/hfs/smib/il_smib_person.py +24 -0
- policyengine_us/variables/gov/states/ky/tax/income/credits/family_size_credit/ky_family_size_tax_credit_rate.py +1 -1
- policyengine_us/variables/gov/states/ma/tax/income/gross_income/ma_part_c_gross_income.py +7 -1
- policyengine_us/variables/gov/states/me/tax/income/credits/dependent_exemption/me_dependent_exemption_credit_amount_person.py +1 -1
- policyengine_us/variables/gov/states/mi/tax/income/mi_household_resources.py +34 -5
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_eligible.py +23 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_gross_income_eligible.py +24 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_income_eligible.py +18 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_percentage_of_need_test.py +20 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_resources_eligible.py +18 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_standard_of_need_test.py +17 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/income/deductions/mo_tanf_child_care_deduction.py +24 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/income/deductions/mo_tanf_earned_income_deductions.py +36 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/income/mo_tanf_countable_income.py +21 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/income/mo_tanf_income_for_need_test.py +23 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf.py +21 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_maximum_benefit.py +19 -0
- policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_standard_of_need.py +23 -0
- policyengine_us/variables/gov/states/mt/tax/income/capital_gains/mt_capital_gains_tax_indiv.py +3 -1
- policyengine_us/variables/gov/states/mt/tax/income/capital_gains/mt_capital_gains_tax_joint.py +3 -1
- policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_regular_income_tax_indiv.py +3 -0
- policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_regular_income_tax_joint.py +3 -0
- policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_additions.py +8 -3
- policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_gross_income.py +17 -0
- policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_total_income.py +12 -6
- policyengine_us/variables/gov/states/nj/tax/income/credits/eitc/nj_eitc.py +7 -1
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_disregard_eligible.py +31 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_eligible.py +29 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_income_eligible.py +16 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_resources_eligible.py +7 -5
- policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_countable_earned_income.py +15 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_countable_income.py +16 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_earned_income_after_deductions_person.py +27 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf.py +19 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_county_group.py +38 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_maximum_benefit.py +30 -0
- policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_standard_of_need.py +30 -0
- policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.py +20 -0
- policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.py +22 -0
- policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_eligible.py +22 -0
- policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_income_eligible.py +20 -0
- policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_resources_eligible.py +18 -0
- policyengine_us/variables/gov/states/wi/dcf/works/income/wi_works_countable_income.py +18 -0
- policyengine_us/variables/gov/states/wi/dcf/works/resources/wi_works_countable_resources.py +21 -0
- policyengine_us/variables/gov/states/wi/dcf/works/wi_works.py +19 -0
- policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py +45 -0
- policyengine_us/variables/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit.py +3 -3
- policyengine_us/variables/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit_eligible.py +5 -2
- policyengine_us/variables/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.py +1 -1
- policyengine_us/variables/household/expense/health/has_bcc_qualifying_coverage.py +16 -0
- policyengine_us/variables/household/income/person/dividends/qualified_reit_and_ptp_income.py +1 -1
- policyengine_us/variables/household/income/spm_unit/spm_unit_tenure_type.py +17 -0
- {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/METADATA +2 -2
- {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/RECORD +289 -114
- policyengine_us/parameters/gov/states/il/dhs/aabd/aged_age_threshold.yaml +0 -11
- policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +0 -21
- policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit.yaml +0 -26
- policyengine_us/parameters/gov/states/pa/dhs/tanf/cash_assistance/age_limit.yaml +0 -11
- policyengine_us/parameters/gov/states/pa/dhs/tanf/pregnancy_eligibility/age_limit.yaml +0 -9
- policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/eligibility/il_aabd_aged_blind_disabled_person.yaml +0 -39
- policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +0 -47
- policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_income_limit.yaml +0 -23
- policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +0 -57
- policyengine_us/tests/policy/baseline/gov/states/pa/tanf/cash_assistance/pa_tanf_age_eligible.yaml +0 -44
- policyengine_us/tests/policy/baseline/gov/states/pa/tanf/pregnancy_eligibility/pa_tanf_pregnancy_eligibility.yaml +0 -59
- policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/dhs/tanf/eligibility/pa_tanf_resources_eligible.yaml +0 -24
- policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_aged_blind_disabled_person.py +0 -22
- policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_income_limit.py +0 -18
- policyengine_us/variables/gov/states/pa/dhs/tanf/cash_assistance/pa_tanf_age_eligible.py +0 -22
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_countable_resources.py +0 -10
- policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pregnancy_eligibility/age_eligibility.py +0 -22
- {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/WHEEL +0 -0
- {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/entry_points.txt +0 -0
- {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
from policyengine_us.model_api import *
|
|
2
|
+
from policyengine_core.periods import period as period_
|
|
3
|
+
from policyengine_core.periods import instant
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def create_de_dependent_credit_reform() -> Reform:
|
|
7
|
+
class de_eligible_dependents_count(Variable):
|
|
8
|
+
value_type = int
|
|
9
|
+
entity = TaxUnit
|
|
10
|
+
label = "Delaware eligible dependents count"
|
|
11
|
+
definition_period = YEAR
|
|
12
|
+
defined_for = StateCode.DE
|
|
13
|
+
|
|
14
|
+
def formula(tax_unit, period, parameters):
|
|
15
|
+
p = parameters(period).gov.contrib.states.de.dependent_credit
|
|
16
|
+
|
|
17
|
+
person = tax_unit.members
|
|
18
|
+
age = person("age", period)
|
|
19
|
+
is_dependent = person("is_tax_unit_dependent", period)
|
|
20
|
+
|
|
21
|
+
# Apply age limit if in effect
|
|
22
|
+
if p.age_limit.in_effect:
|
|
23
|
+
age_threshold = p.age_limit.threshold
|
|
24
|
+
eligible_dependents = is_dependent & (age < age_threshold)
|
|
25
|
+
else:
|
|
26
|
+
eligible_dependents = is_dependent
|
|
27
|
+
|
|
28
|
+
return tax_unit.sum(eligible_dependents)
|
|
29
|
+
|
|
30
|
+
class de_dependent_credit_maximum(Variable):
|
|
31
|
+
value_type = float
|
|
32
|
+
entity = TaxUnit
|
|
33
|
+
label = "Delaware dependent credit maximum before phaseout"
|
|
34
|
+
unit = USD
|
|
35
|
+
definition_period = YEAR
|
|
36
|
+
defined_for = StateCode.DE
|
|
37
|
+
|
|
38
|
+
def formula(tax_unit, period, parameters):
|
|
39
|
+
p = parameters(period).gov.contrib.states.de.dependent_credit
|
|
40
|
+
|
|
41
|
+
dependents_count = tax_unit("de_eligible_dependents_count", period)
|
|
42
|
+
return dependents_count * p.amount
|
|
43
|
+
|
|
44
|
+
class de_dependent_credit_phaseout(Variable):
|
|
45
|
+
value_type = float
|
|
46
|
+
entity = TaxUnit
|
|
47
|
+
label = "Delaware dependent credit phaseout amount"
|
|
48
|
+
unit = USD
|
|
49
|
+
definition_period = YEAR
|
|
50
|
+
defined_for = StateCode.DE
|
|
51
|
+
|
|
52
|
+
def formula(tax_unit, period, parameters):
|
|
53
|
+
p = parameters(period).gov.contrib.states.de.dependent_credit
|
|
54
|
+
|
|
55
|
+
filing_status = tax_unit("filing_status", period)
|
|
56
|
+
files_separately = tax_unit("de_files_separately", period)
|
|
57
|
+
agi_indiv = add(tax_unit, period, ["de_agi_indiv"])
|
|
58
|
+
agi_joint = add(tax_unit, period, ["de_agi_joint"])
|
|
59
|
+
agi = where(files_separately, agi_indiv, agi_joint)
|
|
60
|
+
|
|
61
|
+
threshold = p.phaseout.threshold[filing_status]
|
|
62
|
+
excess_income = max_(agi - threshold, 0)
|
|
63
|
+
return excess_income * p.phaseout.rate
|
|
64
|
+
|
|
65
|
+
class de_dependent_credit(Variable):
|
|
66
|
+
value_type = float
|
|
67
|
+
entity = TaxUnit
|
|
68
|
+
label = "Delaware dependent credit"
|
|
69
|
+
unit = USD
|
|
70
|
+
definition_period = YEAR
|
|
71
|
+
defined_for = StateCode.DE
|
|
72
|
+
|
|
73
|
+
def formula(tax_unit, period, parameters):
|
|
74
|
+
|
|
75
|
+
maximum = tax_unit("de_dependent_credit_maximum", period)
|
|
76
|
+
phaseout = tax_unit("de_dependent_credit_phaseout", period)
|
|
77
|
+
|
|
78
|
+
return max_(maximum - phaseout, 0)
|
|
79
|
+
|
|
80
|
+
class de_older_dependents_count(Variable):
|
|
81
|
+
value_type = float
|
|
82
|
+
entity = TaxUnit
|
|
83
|
+
label = "Delaware older dependents count"
|
|
84
|
+
unit = USD
|
|
85
|
+
definition_period = YEAR
|
|
86
|
+
defined_for = StateCode.DE
|
|
87
|
+
|
|
88
|
+
def formula(tax_unit, period, parameters):
|
|
89
|
+
person = tax_unit.members
|
|
90
|
+
is_dependent = person("is_tax_unit_dependent", period)
|
|
91
|
+
total_dependents = tax_unit.sum(is_dependent)
|
|
92
|
+
eligible_dependent_credit = tax_unit(
|
|
93
|
+
"de_eligible_dependents_count", period
|
|
94
|
+
)
|
|
95
|
+
return max_(0, total_dependents - eligible_dependent_credit)
|
|
96
|
+
|
|
97
|
+
class de_personal_credit(Variable):
|
|
98
|
+
value_type = float
|
|
99
|
+
entity = TaxUnit
|
|
100
|
+
label = "Delaware personal credit"
|
|
101
|
+
unit = USD
|
|
102
|
+
definition_period = YEAR
|
|
103
|
+
defined_for = StateCode.DE
|
|
104
|
+
|
|
105
|
+
def formula(tax_unit, period, parameters):
|
|
106
|
+
p_base = parameters(
|
|
107
|
+
period
|
|
108
|
+
).gov.states.de.tax.income.credits.personal_credits
|
|
109
|
+
|
|
110
|
+
# Calculate personal credit base amount (head + spouse + older dependents)
|
|
111
|
+
filing_status = tax_unit("filing_status", period)
|
|
112
|
+
older_dependents = tax_unit("de_older_dependents_count", period)
|
|
113
|
+
personal_count = (
|
|
114
|
+
where(
|
|
115
|
+
filing_status == filing_status.possible_values.JOINT,
|
|
116
|
+
2,
|
|
117
|
+
1,
|
|
118
|
+
)
|
|
119
|
+
+ older_dependents
|
|
120
|
+
)
|
|
121
|
+
personal_credit_amount = personal_count * p_base.personal
|
|
122
|
+
|
|
123
|
+
# Add dependent credit (has its own phase-out logic)
|
|
124
|
+
dependent_credit_amount = tax_unit("de_dependent_credit", period)
|
|
125
|
+
|
|
126
|
+
return personal_credit_amount + dependent_credit_amount
|
|
127
|
+
|
|
128
|
+
class reform(Reform):
|
|
129
|
+
def apply(self):
|
|
130
|
+
self.update_variable(de_eligible_dependents_count)
|
|
131
|
+
self.update_variable(de_dependent_credit_maximum)
|
|
132
|
+
self.update_variable(de_dependent_credit_phaseout)
|
|
133
|
+
self.update_variable(de_dependent_credit)
|
|
134
|
+
self.update_variable(de_older_dependents_count)
|
|
135
|
+
self.update_variable(de_personal_credit)
|
|
136
|
+
|
|
137
|
+
return reform
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def create_de_dependent_credit_reform_fn(
|
|
141
|
+
parameters, period, bypass: bool = False
|
|
142
|
+
):
|
|
143
|
+
if bypass:
|
|
144
|
+
return create_de_dependent_credit_reform()
|
|
145
|
+
|
|
146
|
+
p = parameters.gov.contrib.states.de.dependent_credit
|
|
147
|
+
|
|
148
|
+
reform_active = False
|
|
149
|
+
current_period = period_(period)
|
|
150
|
+
|
|
151
|
+
for i in range(5):
|
|
152
|
+
if p(current_period).in_effect:
|
|
153
|
+
reform_active = True
|
|
154
|
+
break
|
|
155
|
+
current_period = current_period.offset(1, "year")
|
|
156
|
+
|
|
157
|
+
if reform_active:
|
|
158
|
+
return create_de_dependent_credit_reform()
|
|
159
|
+
else:
|
|
160
|
+
return None
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
de_dependent_credit_reform = create_de_dependent_credit_reform_fn(
|
|
164
|
+
None, None, bypass=True
|
|
165
|
+
)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Integration tests for medicaid_enrolled variable
|
|
2
|
+
# Tests compare CA undocumented immigrant eligibility before/after 2026 rule change
|
|
3
|
+
# Existing enrollees retain coverage by setting receives_medicaid: true as input
|
|
4
|
+
|
|
5
|
+
- name: Case 1, undocumented adult in CA 2026 existing enrollee retains coverage.
|
|
6
|
+
period: 2026
|
|
7
|
+
input:
|
|
8
|
+
people:
|
|
9
|
+
person1:
|
|
10
|
+
age: 35
|
|
11
|
+
employment_income: 15_000
|
|
12
|
+
immigration_status: UNDOCUMENTED
|
|
13
|
+
receives_medicaid: true
|
|
14
|
+
tax_units:
|
|
15
|
+
tax_unit:
|
|
16
|
+
members: [person1]
|
|
17
|
+
spm_units:
|
|
18
|
+
spm_unit:
|
|
19
|
+
members: [person1]
|
|
20
|
+
households:
|
|
21
|
+
household:
|
|
22
|
+
members: [person1]
|
|
23
|
+
state_code: CA
|
|
24
|
+
output:
|
|
25
|
+
# Existing enrollees retain coverage via continuous coverage provision
|
|
26
|
+
# receives_medicaid: true signals this person was enrolled before the freeze
|
|
27
|
+
receives_medicaid: [true]
|
|
28
|
+
is_ca_medicaid_immigration_status_eligible: [true]
|
|
29
|
+
is_medicaid_eligible: [true]
|
|
30
|
+
medicaid_enrolled: [true]
|
|
31
|
+
medicaid: [6_439.11]
|
|
32
|
+
|
|
33
|
+
- name: Case 2, undocumented adult in CA 2024 enrolled and eligible.
|
|
34
|
+
period: 2024
|
|
35
|
+
input:
|
|
36
|
+
people:
|
|
37
|
+
person1:
|
|
38
|
+
age: 35
|
|
39
|
+
employment_income: 15_000
|
|
40
|
+
immigration_status: UNDOCUMENTED
|
|
41
|
+
receives_medicaid: true
|
|
42
|
+
tax_units:
|
|
43
|
+
tax_unit:
|
|
44
|
+
members: [person1]
|
|
45
|
+
spm_units:
|
|
46
|
+
spm_unit:
|
|
47
|
+
members: [person1]
|
|
48
|
+
households:
|
|
49
|
+
household:
|
|
50
|
+
members: [person1]
|
|
51
|
+
state_code: CA
|
|
52
|
+
output:
|
|
53
|
+
# In 2024, undocumented adults age 26-49 are eligible in CA
|
|
54
|
+
is_medicaid_eligible: [true]
|
|
55
|
+
|
|
56
|
+
- name: Case 3, undocumented adult in CA 2026 not existing enrollee.
|
|
57
|
+
period: 2026
|
|
58
|
+
input:
|
|
59
|
+
people:
|
|
60
|
+
person1:
|
|
61
|
+
age: 35
|
|
62
|
+
employment_income: 15_000
|
|
63
|
+
immigration_status: UNDOCUMENTED
|
|
64
|
+
# receives_medicaid defaults to false - new applicant blocked by freeze
|
|
65
|
+
tax_units:
|
|
66
|
+
tax_unit:
|
|
67
|
+
members: [person1]
|
|
68
|
+
spm_units:
|
|
69
|
+
spm_unit:
|
|
70
|
+
members: [person1]
|
|
71
|
+
households:
|
|
72
|
+
household:
|
|
73
|
+
members: [person1]
|
|
74
|
+
state_code: CA
|
|
75
|
+
output:
|
|
76
|
+
# New applicants are blocked by the 2026 enrollment freeze
|
|
77
|
+
receives_medicaid: [false]
|
|
78
|
+
is_ca_medicaid_immigration_status_eligible: [false]
|
|
79
|
+
is_medicaid_eligible: [false]
|
|
80
|
+
medicaid_enrolled: [false]
|
|
81
|
+
|
|
82
|
+
- name: Case 4, undocumented adult in CA 2025 computed enrollment.
|
|
83
|
+
period: 2025
|
|
84
|
+
input:
|
|
85
|
+
people:
|
|
86
|
+
person1:
|
|
87
|
+
age: 35
|
|
88
|
+
employment_income: 15_000
|
|
89
|
+
immigration_status: UNDOCUMENTED
|
|
90
|
+
# receives_medicaid not set - using computed enrollment
|
|
91
|
+
tax_units:
|
|
92
|
+
tax_unit:
|
|
93
|
+
members: [person1]
|
|
94
|
+
spm_units:
|
|
95
|
+
spm_unit:
|
|
96
|
+
members: [person1]
|
|
97
|
+
households:
|
|
98
|
+
household:
|
|
99
|
+
members: [person1]
|
|
100
|
+
state_code: CA
|
|
101
|
+
output:
|
|
102
|
+
# In 2025, undocumented adults are still eligible in CA
|
|
103
|
+
is_medicaid_eligible: [true]
|
|
104
|
+
medicaid_enrolled: [true]
|
|
105
|
+
takes_up_medicaid_if_eligible: [true]
|
policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/category/msp_category.yaml
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# MSP uses SSI income methodology per 42 U.S.C. 1396d(p)(1)(B):
|
|
2
|
+
# Countable = unearned - $20 (or earned - $85 - 50% remaining)
|
|
3
|
+
# For 2024 individual FPL = $15,060:
|
|
4
|
+
# QMB: <= 100% = $1,255/month countable
|
|
5
|
+
# SLMB: 100-120% = $1,255.01-$1,506/month countable
|
|
6
|
+
# QI: 120-135% = $1,506.01-$1,694.25/month countable
|
|
7
|
+
|
|
8
|
+
- name: MSP category - QMB (income at 100% FPL)
|
|
9
|
+
period: 2024-01
|
|
10
|
+
input:
|
|
11
|
+
age: 67
|
|
12
|
+
is_medicare_eligible: true
|
|
13
|
+
# $12,000 unearned -> ($1,000 - $20) = $980/month countable
|
|
14
|
+
# $980 < $1,255 (100% FPL) -> QMB
|
|
15
|
+
ssi_unearned_income: 12_000
|
|
16
|
+
spm_unit_cash_assets: 5_000
|
|
17
|
+
spm_unit_is_married: false
|
|
18
|
+
output:
|
|
19
|
+
msp_category: QMB
|
|
20
|
+
|
|
21
|
+
- name: MSP category - SLMB (income between 100-120% FPL)
|
|
22
|
+
period: 2024-01
|
|
23
|
+
input:
|
|
24
|
+
age: 67
|
|
25
|
+
is_medicare_eligible: true
|
|
26
|
+
# $16,500 unearned -> ($1,375 - $20) = $1,355/month countable
|
|
27
|
+
# $1,255 < $1,355 < $1,506 (100-120% FPL) -> SLMB
|
|
28
|
+
ssi_unearned_income: 16_500
|
|
29
|
+
spm_unit_cash_assets: 5_000
|
|
30
|
+
spm_unit_is_married: false
|
|
31
|
+
output:
|
|
32
|
+
msp_category: SLMB
|
|
33
|
+
|
|
34
|
+
- name: MSP category - QI (income between 120-135% FPL)
|
|
35
|
+
period: 2024-01
|
|
36
|
+
input:
|
|
37
|
+
age: 67
|
|
38
|
+
is_medicare_eligible: true
|
|
39
|
+
# $19,440 unearned -> ($1,620 - $20) = $1,600/month countable
|
|
40
|
+
# $1,506 < $1,600 < $1,694.25 (120-135% FPL) -> QI
|
|
41
|
+
ssi_unearned_income: 19_440
|
|
42
|
+
spm_unit_cash_assets: 5_000
|
|
43
|
+
spm_unit_is_married: false
|
|
44
|
+
output:
|
|
45
|
+
msp_category: QI
|
|
46
|
+
|
|
47
|
+
- name: MSP category - NONE (income above 135% FPL)
|
|
48
|
+
period: 2024-01
|
|
49
|
+
input:
|
|
50
|
+
age: 67
|
|
51
|
+
is_medicare_eligible: true
|
|
52
|
+
# $21_840 unearned -> ($1,820 - $20) = $1,800/month countable
|
|
53
|
+
# $1,800 > $1,694.25 (135% FPL) -> NONE
|
|
54
|
+
ssi_unearned_income: 21_840
|
|
55
|
+
spm_unit_cash_assets: 5_000
|
|
56
|
+
spm_unit_is_married: false
|
|
57
|
+
output:
|
|
58
|
+
msp_category: NONE
|
|
59
|
+
|
|
60
|
+
- name: MSP category - NONE (not Medicare eligible)
|
|
61
|
+
period: 2024-01
|
|
62
|
+
input:
|
|
63
|
+
age: 60
|
|
64
|
+
is_medicare_eligible: false
|
|
65
|
+
ssi_unearned_income: 10_000
|
|
66
|
+
spm_unit_cash_assets: 5_000
|
|
67
|
+
spm_unit_is_married: false
|
|
68
|
+
output:
|
|
69
|
+
msp_category: NONE
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# MSP uses SSI income methodology per 42 U.S.C. 1396d(p)(1)(B)
|
|
2
|
+
|
|
3
|
+
- name: MSP eligible - QMB level (65+, low income, low assets)
|
|
4
|
+
period: 2024-01
|
|
5
|
+
input:
|
|
6
|
+
age: 67
|
|
7
|
+
is_medicare_eligible: true
|
|
8
|
+
# $10,000 unearned -> ($833.33 - $20) = $813.33/month countable
|
|
9
|
+
ssi_unearned_income: 10_000
|
|
10
|
+
spm_unit_cash_assets: 5_000
|
|
11
|
+
spm_unit_is_married: false
|
|
12
|
+
output:
|
|
13
|
+
msp_eligible: true
|
|
14
|
+
|
|
15
|
+
- name: MSP eligible - QI level (65+, moderate income, low assets)
|
|
16
|
+
period: 2024-01
|
|
17
|
+
input:
|
|
18
|
+
age: 68
|
|
19
|
+
is_medicare_eligible: true
|
|
20
|
+
# $19_200 unearned -> ($1,600 - $20) = $1,580/month countable
|
|
21
|
+
# $1,580 is between 120% ($1,506) and 135% ($1,694.25) FPL -> QI eligible
|
|
22
|
+
ssi_unearned_income: 19_200
|
|
23
|
+
spm_unit_cash_assets: 8_000
|
|
24
|
+
spm_unit_is_married: false
|
|
25
|
+
output:
|
|
26
|
+
msp_eligible: true
|
|
27
|
+
|
|
28
|
+
- name: MSP not eligible - income too high
|
|
29
|
+
period: 2024-01
|
|
30
|
+
input:
|
|
31
|
+
age: 67
|
|
32
|
+
is_medicare_eligible: true
|
|
33
|
+
# $24_000 unearned -> ($2,000 - $20) = $1,980/month countable
|
|
34
|
+
# $1,980 > $1,694.25 (135% FPL) -> not eligible
|
|
35
|
+
ssi_unearned_income: 24_000
|
|
36
|
+
spm_unit_cash_assets: 5_000
|
|
37
|
+
spm_unit_is_married: false
|
|
38
|
+
output:
|
|
39
|
+
msp_eligible: false
|
|
40
|
+
|
|
41
|
+
- name: MSP not eligible - assets too high
|
|
42
|
+
period: 2024-01
|
|
43
|
+
input:
|
|
44
|
+
age: 67
|
|
45
|
+
is_medicare_eligible: true
|
|
46
|
+
ssi_unearned_income: 10_000
|
|
47
|
+
spm_unit_cash_assets: 15_000 # Over $9,430 limit
|
|
48
|
+
spm_unit_is_married: false
|
|
49
|
+
state_code: TX # Use a state with asset test
|
|
50
|
+
output:
|
|
51
|
+
msp_eligible: false
|
|
52
|
+
|
|
53
|
+
- name: MSP not eligible - not Medicare eligible
|
|
54
|
+
period: 2024-01
|
|
55
|
+
input:
|
|
56
|
+
age: 60 # Under 65
|
|
57
|
+
is_medicare_eligible: false
|
|
58
|
+
ssi_unearned_income: 10_000
|
|
59
|
+
spm_unit_cash_assets: 5_000
|
|
60
|
+
spm_unit_is_married: false
|
|
61
|
+
output:
|
|
62
|
+
msp_eligible: false
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# MSP uses individual (1 person) or couple (2 persons) FPL,
|
|
2
|
+
# not the full SPM unit size per 42 U.S.C. 1396d(p)
|
|
3
|
+
# 2024 FPL: individual = $15,060, couple = $20,440
|
|
4
|
+
# Note: Published limits are $20 higher (FPL + $20 exclusion built in)
|
|
5
|
+
# Our implementation applies $20 exclusion to income instead - mathematically equivalent
|
|
6
|
+
|
|
7
|
+
- name: Case 1, single person gets individual FPL.
|
|
8
|
+
period: 2024-01
|
|
9
|
+
input:
|
|
10
|
+
spm_unit_is_married: false
|
|
11
|
+
output:
|
|
12
|
+
# Individual FPL = $15,060/year, monthly = $1,255
|
|
13
|
+
msp_fpg: 1_255
|
|
14
|
+
|
|
15
|
+
- name: Case 2, married couple gets couple FPL.
|
|
16
|
+
period: 2024-01
|
|
17
|
+
absolute_error_margin: 0.01
|
|
18
|
+
input:
|
|
19
|
+
spm_unit_is_married: true
|
|
20
|
+
output:
|
|
21
|
+
# Couple FPL = $20,440/year, monthly = $1,703.33
|
|
22
|
+
msp_fpg: 1_703.33
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# MSP uses SSI income methodology per 42 U.S.C. 1396d(p)(1)(B)
|
|
2
|
+
# For married couples, MSP uses couple FPL = $20,440 for 2024
|
|
3
|
+
|
|
4
|
+
- name: MSP integration - married couple, both QMB eligible
|
|
5
|
+
period: 2024-01
|
|
6
|
+
input:
|
|
7
|
+
people:
|
|
8
|
+
spouse1:
|
|
9
|
+
age: 68
|
|
10
|
+
is_medicare_eligible: true
|
|
11
|
+
# $9,000 unearned each -> ($750 - $20) = $730/month countable each
|
|
12
|
+
ssi_unearned_income: 9_000
|
|
13
|
+
spouse2:
|
|
14
|
+
age: 66
|
|
15
|
+
is_medicare_eligible: true
|
|
16
|
+
ssi_unearned_income: 9_000
|
|
17
|
+
spm_units:
|
|
18
|
+
spm_unit:
|
|
19
|
+
members: [spouse1, spouse2]
|
|
20
|
+
spm_unit_is_married: true
|
|
21
|
+
spm_unit_cash_assets: 10_000 # Under $14,130 couple limit
|
|
22
|
+
tax_units:
|
|
23
|
+
tax_unit:
|
|
24
|
+
members: [spouse1, spouse2]
|
|
25
|
+
households:
|
|
26
|
+
household:
|
|
27
|
+
members: [spouse1, spouse2]
|
|
28
|
+
output:
|
|
29
|
+
msp_eligible: [true, true]
|
|
30
|
+
msp_category: [QMB, QMB]
|
|
31
|
+
|
|
32
|
+
- name: MSP integration - single senior, SLMB level
|
|
33
|
+
period: 2024-01
|
|
34
|
+
input:
|
|
35
|
+
people:
|
|
36
|
+
person1:
|
|
37
|
+
age: 70
|
|
38
|
+
is_medicare_eligible: true
|
|
39
|
+
base_part_a_premium: 0
|
|
40
|
+
base_part_b_premium: 2_096.40 # $174.70 * 12
|
|
41
|
+
# $16_500 unearned -> ($1,375 - $20) = $1,355/month countable
|
|
42
|
+
# $1,255 < $1,355 < $1,506 (100-120% FPL) -> SLMB
|
|
43
|
+
ssi_unearned_income: 16_500
|
|
44
|
+
spm_units:
|
|
45
|
+
spm_unit:
|
|
46
|
+
members: [person1]
|
|
47
|
+
spm_unit_is_married: false
|
|
48
|
+
spm_unit_cash_assets: 8_000
|
|
49
|
+
tax_units:
|
|
50
|
+
tax_unit:
|
|
51
|
+
members: [person1]
|
|
52
|
+
households:
|
|
53
|
+
household:
|
|
54
|
+
members: [person1]
|
|
55
|
+
output:
|
|
56
|
+
msp_eligible: [true]
|
|
57
|
+
msp_category: [SLMB]
|
|
58
|
+
msp_benefit_value: [174.70]
|
|
59
|
+
msp: [174.70]
|
|
60
|
+
|
|
61
|
+
- name: MSP integration - not eligible, assets over limit
|
|
62
|
+
period: 2024-01
|
|
63
|
+
input:
|
|
64
|
+
people:
|
|
65
|
+
person1:
|
|
66
|
+
age: 67
|
|
67
|
+
is_medicare_eligible: true
|
|
68
|
+
ssi_unearned_income: 10_000
|
|
69
|
+
spm_units:
|
|
70
|
+
spm_unit:
|
|
71
|
+
members: [person1]
|
|
72
|
+
spm_unit_is_married: false
|
|
73
|
+
spm_unit_cash_assets: 12_000 # Over $9,430 individual limit
|
|
74
|
+
tax_units:
|
|
75
|
+
tax_unit:
|
|
76
|
+
members: [person1]
|
|
77
|
+
households:
|
|
78
|
+
household:
|
|
79
|
+
members: [person1]
|
|
80
|
+
state_code: TX # Use a state with asset test
|
|
81
|
+
output:
|
|
82
|
+
msp_eligible: [false]
|
|
83
|
+
msp_category: [NONE]
|
|
84
|
+
msp: [0]
|
policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/msp_benefit_value.yaml
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# MSP uses SSI income methodology per 42 U.S.C. 1396d(p)(1)(B)
|
|
2
|
+
|
|
3
|
+
- name: MSP benefit - QMB (Part A + Part B premiums)
|
|
4
|
+
period: 2024-01
|
|
5
|
+
input:
|
|
6
|
+
age: 67
|
|
7
|
+
is_medicare_eligible: true
|
|
8
|
+
# $12,000 unearned -> ($1,000 - $20) = $980/month countable
|
|
9
|
+
# $980 < $1,255 (100% FPL) -> QMB
|
|
10
|
+
ssi_unearned_income: 12_000
|
|
11
|
+
spm_unit_cash_assets: 5_000
|
|
12
|
+
spm_unit_is_married: false
|
|
13
|
+
base_part_a_premium: 6_060 # Annual Part A premium ($505/month * 12)
|
|
14
|
+
base_part_b_premium: 2_096.40 # Annual Part B premium ($174.70/month * 12)
|
|
15
|
+
output:
|
|
16
|
+
# (505 + 174.70) = 679.70/month
|
|
17
|
+
msp_benefit_value: 679.70
|
|
18
|
+
|
|
19
|
+
- name: MSP benefit - SLMB (Part B premium only)
|
|
20
|
+
period: 2024-01
|
|
21
|
+
input:
|
|
22
|
+
age: 67
|
|
23
|
+
is_medicare_eligible: true
|
|
24
|
+
# $16,500 unearned -> ($1,375 - $20) = $1,355/month countable
|
|
25
|
+
# $1,255 < $1,355 < $1,506 (100-120% FPL) -> SLMB
|
|
26
|
+
ssi_unearned_income: 16_500
|
|
27
|
+
spm_unit_cash_assets: 5_000
|
|
28
|
+
spm_unit_is_married: false
|
|
29
|
+
base_part_a_premium: 0 # Assume premium-free Part A
|
|
30
|
+
base_part_b_premium: 2_096.40
|
|
31
|
+
output:
|
|
32
|
+
msp_benefit_value: 174.70
|
|
33
|
+
|
|
34
|
+
- name: MSP benefit - QI (Part B premium only)
|
|
35
|
+
period: 2024-01
|
|
36
|
+
input:
|
|
37
|
+
age: 67
|
|
38
|
+
is_medicare_eligible: true
|
|
39
|
+
# $19,440 unearned -> ($1,620 - $20) = $1,600/month countable
|
|
40
|
+
# $1,506 < $1,600 < $1,694.25 (120-135% FPL) -> QI
|
|
41
|
+
ssi_unearned_income: 19_440
|
|
42
|
+
spm_unit_cash_assets: 5_000
|
|
43
|
+
spm_unit_is_married: false
|
|
44
|
+
base_part_a_premium: 0
|
|
45
|
+
base_part_b_premium: 2_096.40
|
|
46
|
+
output:
|
|
47
|
+
msp_benefit_value: 174.70
|
|
48
|
+
|
|
49
|
+
- name: MSP benefit - not eligible (zero benefit)
|
|
50
|
+
period: 2024-01
|
|
51
|
+
input:
|
|
52
|
+
age: 67
|
|
53
|
+
is_medicare_eligible: true
|
|
54
|
+
# $24_000 unearned -> ($2,000 - $20) = $1,980/month countable
|
|
55
|
+
# $1,980 > $1,694.25 (135% FPL) -> not eligible
|
|
56
|
+
ssi_unearned_income: 24_000
|
|
57
|
+
spm_unit_cash_assets: 5_000
|
|
58
|
+
spm_unit_is_married: false
|
|
59
|
+
base_part_a_premium: 0
|
|
60
|
+
base_part_b_premium: 2_096.40
|
|
61
|
+
output:
|
|
62
|
+
msp_benefit_value: 0
|