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.
Files changed (306) hide show
  1. policyengine_us/parameters/gov/contrib/aca/ptc_700_fpl_cliff/brackets.yaml +52 -0
  2. policyengine_us/parameters/gov/contrib/aca/ptc_700_fpl_cliff/in_effect.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/aca/ptc_700_fpl_cliff/income_eligibility.yaml +27 -0
  4. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/in_effect.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/threshold.yaml +9 -0
  6. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/amount.yaml +9 -0
  7. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/in_effect.yaml +9 -0
  8. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/rate.yaml +9 -0
  9. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/threshold.yaml +23 -0
  10. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/applies.yaml +115 -0
  11. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/couple.yaml +14 -0
  12. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/asset/individual.yaml +14 -0
  13. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/qi/fpl_limit.yaml +14 -0
  14. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/qmb/fpl_limit.yaml +18 -0
  15. policyengine_us/parameters/gov/hhs/medicare/savings_programs/eligibility/income/slmb/fpl_limit.yaml +15 -0
  16. policyengine_us/parameters/gov/irs/deductions/qbi/max/reit_ptp_rate.yaml +13 -0
  17. policyengine_us/parameters/gov/states/az/tax/income/credits/property_tax/income_sources.yaml +17 -9
  18. policyengine_us/parameters/gov/states/ca/chhs/medi_cal_enrollment_freeze/in_effect.yaml +12 -0
  19. policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/head_of_household.yaml +1 -1
  20. policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/joint.yaml +1 -1
  21. policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/separate.yaml +1 -1
  22. policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/single.yaml +1 -1
  23. policyengine_us/parameters/gov/states/hi/tax/income/credits/food_excise_tax/amount/surviving_spouse.yaml +1 -1
  24. policyengine_us/parameters/gov/states/ia/tax/income/credits/child_care/fraction.yaml +1 -1
  25. policyengine_us/parameters/gov/states/il/dhs/aabd/asset/sources.yaml +0 -1
  26. policyengine_us/parameters/gov/states/il/dhs/aabd/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +3 -5
  27. policyengine_us/parameters/gov/states/il/dhs/tanf/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +2 -2
  28. policyengine_us/parameters/gov/states/il/hfs/bcc/eligibility/age.yaml +12 -0
  29. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/household_size.yaml +14 -0
  30. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/income_limit.yaml +15 -0
  31. policyengine_us/parameters/gov/states/il/hfs/mpe/eligibility/income_limit.yaml +13 -0
  32. policyengine_us/parameters/gov/states/il/hfs/qualified_noncitizen_statuses.yaml +17 -0
  33. policyengine_us/parameters/gov/states/mi/tax/income/household_resources.yaml +1 -1
  34. policyengine_us/parameters/gov/states/mo/dss/tanf/child_care_deduction/amount.yaml +27 -0
  35. policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/amount.yaml +14 -0
  36. policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_only/amount.yaml +14 -0
  37. policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_plus_one_third/flat_amount.yaml +14 -0
  38. policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/thirty_plus_one_third/percentage.yaml +14 -0
  39. policyengine_us/parameters/gov/states/mo/dss/tanf/earned_income_disregard/two_thirds_disregard/percentage.yaml +14 -0
  40. policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit/max_table_size.yaml +12 -0
  41. policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit/rate.yaml +14 -0
  42. policyengine_us/parameters/gov/states/mo/dss/tanf/maximum_benefit/percentage.yaml +14 -0
  43. policyengine_us/parameters/gov/states/mo/dss/tanf/minimum_payment.yaml +12 -0
  44. policyengine_us/parameters/gov/states/mo/dss/tanf/resource_limit/amount.yaml +14 -0
  45. policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/additional_person_increment.yaml +12 -0
  46. policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/amount.yaml +38 -0
  47. policyengine_us/parameters/gov/states/mo/dss/tanf/standard_of_need/base_table_max_size.yaml +12 -0
  48. policyengine_us/parameters/gov/states/nj/tax/income/additions.yaml +12 -0
  49. policyengine_us/parameters/gov/states/nj/tax/income/gross_income_sources.yaml +32 -0
  50. policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_1.yaml +19 -0
  51. policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_2.yaml +44 -0
  52. policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_3.yaml +31 -0
  53. policyengine_us/parameters/gov/states/pa/dhs/tanf/county_group/group_4.yaml +29 -0
  54. policyengine_us/parameters/gov/states/pa/dhs/tanf/family_size_allowance/additional_person.yaml +14 -0
  55. policyengine_us/parameters/gov/states/pa/dhs/tanf/family_size_allowance/amount.yaml +69 -0
  56. policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/earned_income_disregard/percentage.yaml +14 -0
  57. policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/work_expense/additional.yaml +15 -0
  58. policyengine_us/parameters/gov/states/pa/dhs/tanf/income/deductions/work_expense/initial.yaml +14 -0
  59. policyengine_us/parameters/gov/states/pa/dhs/tanf/max_family_size_in_table.yaml +12 -0
  60. policyengine_us/parameters/gov/states/pa/dhs/tanf/resource_limit.yaml +7 -6
  61. policyengine_us/parameters/gov/states/pa/dhs/tanf/standard_of_need/additional_person.yaml +14 -0
  62. policyengine_us/parameters/gov/states/pa/dhs/tanf/standard_of_need/amount.yaml +69 -0
  63. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/amount.yaml +4 -0
  64. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_agi.yaml +6 -2
  65. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_child_age.yaml +6 -2
  66. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/parent_max_earnings.yaml +6 -2
  67. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/amount.yaml +4 -0
  68. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/child_age_threshold.yaml +4 -0
  69. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/rate.yaml +4 -0
  70. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/start.yaml +4 -0
  71. policyengine_us/parameters/gov/states/ut/tax/income/credits/earned_income/rate.yaml +4 -0
  72. policyengine_us/parameters/gov/states/ut/tax/income/credits/military_retirement/rate.yaml +26 -0
  73. policyengine_us/parameters/gov/states/ut/tax/income/credits/non_refundable.yaml +5 -0
  74. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/birth_year.yaml +4 -0
  75. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/max.yaml +4 -0
  76. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/rate.yaml +4 -0
  77. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/threshold.yaml +4 -0
  78. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/rate.yaml +4 -0
  79. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/threshold.yaml +4 -0
  80. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/in_effect.yaml +2 -0
  81. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/personal_exemption.yaml +5 -0
  82. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/rate.yaml +5 -1
  83. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/threshold.yaml +9 -0
  84. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/rate.yaml +4 -0
  85. policyengine_us/parameters/gov/states/ut/tax/income/rate.yaml +3 -0
  86. policyengine_us/parameters/gov/states/wi/dcf/README.md +1 -0
  87. policyengine_us/parameters/gov/states/wi/dcf/works/README.md +1 -0
  88. policyengine_us/parameters/gov/states/wi/dcf/works/asset/limit.yaml +16 -0
  89. policyengine_us/parameters/gov/states/wi/dcf/works/asset/vehicle_exclusion.yaml +14 -0
  90. policyengine_us/parameters/gov/states/wi/dcf/works/income_limit/rate.yaml +16 -0
  91. policyengine_us/parameters/gov/states/wi/dcf/works/placement/amount.yaml +30 -0
  92. policyengine_us/parameters/gov/states/wi/dcf/works/placement/arp_pregnancy_month_threshold.yaml +14 -0
  93. policyengine_us/parameters/gov/states/wi/dcf/works/placement/cmc_infant_age_limit.yaml +15 -0
  94. policyengine_us/reforms/aca/__init__.py +3 -0
  95. policyengine_us/reforms/aca/aca_ptc_700_fpl_cliff.py +125 -0
  96. policyengine_us/reforms/reforms.py +12 -0
  97. policyengine_us/reforms/state_dependent_exemptions/repeal_state_dependent_exemptions.py +1 -1
  98. policyengine_us/reforms/states/de/__init__.py +3 -0
  99. policyengine_us/reforms/states/de/dependent_credit/de_dependent_credit_reform.py +165 -0
  100. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/medicaid_enrolled.yaml +105 -0
  101. policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/category/msp_category.yaml +69 -0
  102. policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/eligibility/msp_eligible.yaml +62 -0
  103. policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/income/msp_fpg.yaml +22 -0
  104. policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/integration.yaml +84 -0
  105. policyengine_us/tests/policy/baseline/gov/hhs/medicare/savings_programs/msp_benefit_value.yaml +62 -0
  106. 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
  107. 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
  108. policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/qbid/qbid_amount.yaml +75 -3
  109. policyengine_us/tests/policy/baseline/gov/local/ca/la/general_relief/eligible/immigration/la_general_relief_immigration_status_eligible_person.yaml +2 -2
  110. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_medicare_hi.yaml +105 -0
  111. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_oasdi.yaml +86 -0
  112. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_revenue_total.yaml +19 -0
  113. policyengine_us/tests/policy/baseline/gov/ssa/revenue/tob_tier_split.yaml +90 -0
  114. policyengine_us/tests/policy/baseline/gov/states/az/tax/income/az_property_tax_credit_agi.yaml +58 -0
  115. policyengine_us/tests/policy/baseline/gov/states/az/tax/income/integration.yaml +28 -0
  116. policyengine_us/tests/policy/baseline/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.yaml +59 -5
  117. policyengine_us/tests/policy/baseline/gov/states/dc/tax/income/dc_ptc.yaml +27 -0
  118. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/food_excise/hi_food_excise_credit.yaml +29 -1
  119. policyengine_us/tests/policy/baseline/gov/states/ia/tax/income/ia_cdcc.yaml +3 -3
  120. policyengine_us/tests/policy/baseline/gov/states/ia/tax/income/ia_integration.yaml +31 -1
  121. policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/eligibility/il_aabd_non_financial_eligible_person.yaml +6 -6
  122. policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.yaml +2 -10
  123. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.yaml +39 -0
  124. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.yaml +95 -0
  125. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.yaml +35 -0
  126. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_eligible.yaml +35 -0
  127. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_level.yaml +27 -0
  128. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/integration.yaml +116 -0
  129. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +18 -5
  130. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +5 -5
  131. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +8 -8
  132. policyengine_us/tests/policy/baseline/gov/states/il/hfs/il_hfs_immigration_status_eligible.yaml +47 -0
  133. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml +39 -0
  134. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_income_eligible.yaml +23 -0
  135. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml +138 -0
  136. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/eligibility/il_smib_eligible.yaml +88 -0
  137. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/integration.yaml +73 -0
  138. policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/credits/family_size_tax_credit/ky_family_size_tax_credit_rate.yaml +8 -8
  139. policyengine_us/tests/policy/baseline/gov/states/ma/tax/income/gross_income/integration.yaml +28 -0
  140. policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/integration.yaml +87 -0
  141. policyengine_us/tests/policy/baseline/gov/states/me/tax/income/credits/me_dependent_exemption_credit_amount_person.yaml +3 -2
  142. policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/mi_home_heating_credit.yaml +87 -0
  143. policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/mi_household_resources.yaml +57 -0
  144. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/integration.yaml +275 -0
  145. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf.yaml +60 -0
  146. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_child_care_deduction.yaml +187 -0
  147. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_countable_income.yaml +49 -0
  148. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_earned_income_deductions.yaml +53 -0
  149. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_eligible.yaml +59 -0
  150. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_gross_income_eligible.yaml +29 -0
  151. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_income_eligible.yaml +49 -0
  152. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_maximum_benefit.yaml +47 -0
  153. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_percentage_of_need_test.yaml +53 -0
  154. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_resources_eligible.yaml +23 -0
  155. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_standard_of_need.yaml +71 -0
  156. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_standard_of_need_test.yaml +44 -0
  157. policyengine_us/tests/policy/baseline/gov/states/mt/tax/income/integration.yaml +29 -0
  158. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/eitc/nj_eitc.yaml +8 -3
  159. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integration.yaml +137 -0
  160. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/taxable_income/nj_agi.yaml +7 -8
  161. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_disregard_eligible.yaml +114 -0
  162. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_eligible.yaml +65 -0
  163. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_income_eligible.yaml +62 -0
  164. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/eligibility/pa_tanf_resources_eligible.yaml +47 -0
  165. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/income/pa_tanf_earned_income_after_deductions_person.yaml +81 -0
  166. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/integration.yaml +386 -0
  167. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf.yaml +53 -0
  168. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_county_group.yaml +63 -0
  169. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_maximum_benefit.yaml +92 -0
  170. policyengine_us/tests/policy/baseline/gov/states/pa/dhs/tanf/pa_tanf_standard_of_need.yaml +73 -0
  171. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +1 -1
  172. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.yaml +89 -0
  173. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.yaml +50 -0
  174. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/integration.yaml +282 -0
  175. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works.yaml +50 -0
  176. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_countable_income.yaml +49 -0
  177. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_countable_resources.yaml +54 -0
  178. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_eligible.yaml +61 -0
  179. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_income_eligible.yaml +43 -0
  180. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_placement.yaml +111 -0
  181. policyengine_us/tests/policy/baseline/gov/states/wi/dcf/works/wi_works_resources_eligible.yaml +38 -0
  182. policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit.yaml +31 -0
  183. policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.yaml +10 -6
  184. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +1 -1
  185. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +1 -1
  186. policyengine_us/tests/policy/baseline/gov/usda/snap/snap_min_allotment.yaml +3 -3
  187. policyengine_us/tests/policy/baseline/household/expense/health/has_bcc_qualifying_coverage.yaml +12 -0
  188. policyengine_us/tests/policy/contrib/aca/ptc_700_fpl_cliff.yaml +136 -0
  189. policyengine_us/tests/policy/contrib/state_dependent_exemptions/repeal_state_dependent_exemptions.yaml +25 -1
  190. policyengine_us/tests/policy/contrib/states/de/dependent_credit_reform_test.yaml +210 -0
  191. policyengine_us/tests/test_batched.py +39 -68
  192. policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_group.py +2 -2
  193. policyengine_us/variables/gov/hhs/medicaid/receives_medicaid.py +17 -0
  194. policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_qi_eligible.py +33 -0
  195. policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_qmb_eligible.py +28 -0
  196. policyengine_us/variables/gov/hhs/medicare/savings_programs/category/is_slmb_eligible.py +33 -0
  197. policyengine_us/variables/gov/hhs/medicare/savings_programs/category/msp_category.py +33 -0
  198. policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_asset_eligible.py +26 -0
  199. policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_eligible.py +20 -0
  200. policyengine_us/variables/gov/hhs/medicare/savings_programs/eligibility/msp_income_eligible.py +26 -0
  201. policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_countable_income.py +35 -0
  202. policyengine_us/variables/gov/hhs/medicare/savings_programs/income/msp_fpg.py +40 -0
  203. policyengine_us/variables/gov/hhs/medicare/savings_programs/msp.py +15 -0
  204. policyengine_us/variables/gov/hhs/medicare/savings_programs/msp_benefit_value.py +37 -0
  205. policyengine_us/variables/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_1.py +58 -0
  206. policyengine_us/variables/gov/irs/income/taxable_income/adjusted_gross_income/irs_gross_income/social_security/taxable_social_security_tier_2.py +17 -0
  207. policyengine_us/variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qbid_amount.py +16 -6
  208. policyengine_us/variables/gov/simulation/labor_supply_response/labor_supply_behavioral_response.py +57 -42
  209. policyengine_us/variables/gov/ssa/revenue/tob_revenue_medicare_hi.py +31 -0
  210. policyengine_us/variables/gov/ssa/revenue/tob_revenue_oasdi.py +31 -0
  211. policyengine_us/variables/gov/ssa/revenue/tob_revenue_total.py +44 -0
  212. policyengine_us/variables/gov/states/az/tax/income/credits/property_tax_credit/az_property_tax_credit_agi.py +53 -0
  213. policyengine_us/variables/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.py +25 -4
  214. policyengine_us/variables/gov/states/dc/tax/income/credits/dc_ptc.py +7 -3
  215. policyengine_us/variables/gov/states/ia/tax/income/credits/ia_cdcc.py +4 -2
  216. policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_immigration_status_eligible_person.py +1 -1
  217. policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_non_financial_eligible_person.py +23 -5
  218. policyengine_us/variables/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.py +1 -1
  219. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.py +15 -0
  220. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.py +27 -0
  221. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.py +29 -0
  222. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_eligible.py +40 -0
  223. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_income_eligible.py +18 -0
  224. policyengine_us/variables/gov/states/il/hfs/fpp/il_fpp_income_level.py +29 -0
  225. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +7 -3
  226. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +1 -1
  227. policyengine_us/variables/gov/states/il/hfs/{hbwd/eligibility/il_hbwd_immigration_status_eligible.py → il_hfs_immigration_status_eligible.py} +5 -8
  228. policyengine_us/variables/gov/states/il/hfs/mpe/eligibility/il_mpe_income_eligible.py +15 -0
  229. policyengine_us/variables/gov/states/il/hfs/mpe/il_mpe_eligible.py +15 -0
  230. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_categorical_eligible.py +26 -0
  231. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_eligible.py +28 -0
  232. policyengine_us/variables/gov/states/il/hfs/smib/il_smib.py +21 -0
  233. policyengine_us/variables/gov/states/il/hfs/smib/il_smib_person.py +24 -0
  234. policyengine_us/variables/gov/states/ky/tax/income/credits/family_size_credit/ky_family_size_tax_credit_rate.py +1 -1
  235. policyengine_us/variables/gov/states/ma/tax/income/gross_income/ma_part_c_gross_income.py +7 -1
  236. policyengine_us/variables/gov/states/me/tax/income/credits/dependent_exemption/me_dependent_exemption_credit_amount_person.py +1 -1
  237. policyengine_us/variables/gov/states/mi/tax/income/mi_household_resources.py +34 -5
  238. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_eligible.py +23 -0
  239. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_gross_income_eligible.py +24 -0
  240. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_income_eligible.py +18 -0
  241. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_percentage_of_need_test.py +20 -0
  242. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_resources_eligible.py +18 -0
  243. policyengine_us/variables/gov/states/mo/dss/tanf/eligibility/mo_tanf_standard_of_need_test.py +17 -0
  244. policyengine_us/variables/gov/states/mo/dss/tanf/income/deductions/mo_tanf_child_care_deduction.py +24 -0
  245. policyengine_us/variables/gov/states/mo/dss/tanf/income/deductions/mo_tanf_earned_income_deductions.py +36 -0
  246. policyengine_us/variables/gov/states/mo/dss/tanf/income/mo_tanf_countable_income.py +21 -0
  247. policyengine_us/variables/gov/states/mo/dss/tanf/income/mo_tanf_income_for_need_test.py +23 -0
  248. policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf.py +21 -0
  249. policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_maximum_benefit.py +19 -0
  250. policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_standard_of_need.py +23 -0
  251. policyengine_us/variables/gov/states/mt/tax/income/capital_gains/mt_capital_gains_tax_indiv.py +3 -1
  252. policyengine_us/variables/gov/states/mt/tax/income/capital_gains/mt_capital_gains_tax_joint.py +3 -1
  253. policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_regular_income_tax_indiv.py +3 -0
  254. policyengine_us/variables/gov/states/mt/tax/income/tax_calculation/mt_regular_income_tax_joint.py +3 -0
  255. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_additions.py +8 -3
  256. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_gross_income.py +17 -0
  257. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_total_income.py +12 -6
  258. policyengine_us/variables/gov/states/nj/tax/income/credits/eitc/nj_eitc.py +7 -1
  259. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_disregard_eligible.py +31 -0
  260. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_eligible.py +29 -0
  261. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_income_eligible.py +16 -0
  262. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_resources_eligible.py +7 -5
  263. policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_countable_earned_income.py +15 -0
  264. policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_countable_income.py +16 -0
  265. policyengine_us/variables/gov/states/pa/dhs/tanf/income/pa_tanf_earned_income_after_deductions_person.py +27 -0
  266. policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf.py +19 -0
  267. policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_county_group.py +38 -0
  268. policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_maximum_benefit.py +30 -0
  269. policyengine_us/variables/gov/states/pa/dhs/tanf/pa_tanf_standard_of_need.py +30 -0
  270. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.py +20 -0
  271. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.py +22 -0
  272. policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_eligible.py +22 -0
  273. policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_income_eligible.py +20 -0
  274. policyengine_us/variables/gov/states/wi/dcf/works/eligibility/wi_works_resources_eligible.py +18 -0
  275. policyengine_us/variables/gov/states/wi/dcf/works/income/wi_works_countable_income.py +18 -0
  276. policyengine_us/variables/gov/states/wi/dcf/works/resources/wi_works_countable_resources.py +21 -0
  277. policyengine_us/variables/gov/states/wi/dcf/works/wi_works.py +19 -0
  278. policyengine_us/variables/gov/states/wi/dcf/works/wi_works_placement.py +45 -0
  279. policyengine_us/variables/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit.py +3 -3
  280. policyengine_us/variables/gov/states/wv/tax/income/credits/heptc/wv_homestead_excess_property_tax_credit_eligible.py +5 -2
  281. policyengine_us/variables/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.py +1 -1
  282. policyengine_us/variables/household/expense/health/has_bcc_qualifying_coverage.py +16 -0
  283. policyengine_us/variables/household/income/person/dividends/qualified_reit_and_ptp_income.py +1 -1
  284. policyengine_us/variables/household/income/spm_unit/spm_unit_tenure_type.py +17 -0
  285. {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/METADATA +2 -2
  286. {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/RECORD +289 -114
  287. policyengine_us/parameters/gov/states/il/dhs/aabd/aged_age_threshold.yaml +0 -11
  288. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +0 -21
  289. policyengine_us/parameters/gov/states/mo/dss/tanf/income_limit.yaml +0 -26
  290. policyengine_us/parameters/gov/states/pa/dhs/tanf/cash_assistance/age_limit.yaml +0 -11
  291. policyengine_us/parameters/gov/states/pa/dhs/tanf/pregnancy_eligibility/age_limit.yaml +0 -9
  292. policyengine_us/tests/policy/baseline/gov/states/il/dhs/aabd/eligibility/il_aabd_aged_blind_disabled_person.yaml +0 -39
  293. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +0 -47
  294. policyengine_us/tests/policy/baseline/gov/states/mo/dss/tanf/mo_tanf_income_limit.yaml +0 -23
  295. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +0 -57
  296. policyengine_us/tests/policy/baseline/gov/states/pa/tanf/cash_assistance/pa_tanf_age_eligible.yaml +0 -44
  297. policyengine_us/tests/policy/baseline/gov/states/pa/tanf/pregnancy_eligibility/pa_tanf_pregnancy_eligibility.yaml +0 -59
  298. policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/dhs/tanf/eligibility/pa_tanf_resources_eligible.yaml +0 -24
  299. policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_aged_blind_disabled_person.py +0 -22
  300. policyengine_us/variables/gov/states/mo/dss/tanf/mo_tanf_income_limit.py +0 -18
  301. policyengine_us/variables/gov/states/pa/dhs/tanf/cash_assistance/pa_tanf_age_eligible.py +0 -22
  302. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pa_tanf_countable_resources.py +0 -10
  303. policyengine_us/variables/gov/states/pa/dhs/tanf/eligibility/pregnancy_eligibility/age_eligibility.py +0 -22
  304. {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/WHEEL +0 -0
  305. {policyengine_us-1.449.6.dist-info → policyengine_us-1.465.0.dist-info}/entry_points.txt +0 -0
  306. {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]
@@ -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]
@@ -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