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
@@ -16,53 +16,68 @@ class labor_supply_behavioral_response(Variable):
16
16
  if p.elasticities.income == 0 and p.elasticities.substitution.all == 0:
17
17
  return 0
18
18
 
19
- measurement_branch = simulation.get_branch(
20
- "lsr_measurement", clone_system=True
21
- ) # A branch without LSRs
22
- baseline_branch = simulation.get_branch("baseline").get_branch(
23
- "baseline_lsr_measurement", clone_system=True
24
- ) # Already created by default
25
- baseline_branch.tax_benefit_system.parameters.simulation = (
26
- measurement_branch.tax_benefit_system.parameters.simulation
27
- )
19
+ # Guard against re-entry (prevents recursion when branches calculate variables)
20
+ if (
21
+ hasattr(simulation, "_lsr_calculating")
22
+ and simulation._lsr_calculating
23
+ ):
24
+ return 0
28
25
 
29
- # (system with LSRs) <- (system without LSRs used to calculate LSRs)
30
- # |
31
- # * -(baseline system without LSRs used to calculate LSRs)
26
+ # Mark that we're calculating LSR
27
+ simulation._lsr_calculating = True
32
28
 
33
- for branch in [measurement_branch, baseline_branch]:
34
- branch.tax_benefit_system.neutralize_variable(
35
- "employment_income_behavioral_response"
36
- )
37
- branch.tax_benefit_system.neutralize_variable(
38
- "self_employment_income_behavioral_response"
39
- )
40
- branch.set_input(
41
- "employment_income_before_lsr",
42
- period,
43
- person("employment_income_before_lsr", period),
29
+ try:
30
+ measurement_branch = simulation.get_branch(
31
+ "lsr_measurement", clone_system=True
32
+ ) # A branch without LSRs
33
+ baseline_branch = simulation.get_branch("baseline").get_branch(
34
+ "baseline_lsr_measurement", clone_system=True
35
+ ) # Already created by default
36
+ baseline_branch.tax_benefit_system.parameters.simulation = (
37
+ measurement_branch.tax_benefit_system.parameters.simulation
44
38
  )
45
- branch.set_input(
46
- "self_employment_income_before_lsr",
39
+
40
+ # (system with LSRs) <- (system without LSRs used to calculate LSRs)
41
+ # |
42
+ # * -(baseline system without LSRs used to calculate LSRs)
43
+
44
+ for branch in [measurement_branch, baseline_branch]:
45
+ branch.tax_benefit_system.neutralize_variable(
46
+ "employment_income_behavioral_response"
47
+ )
48
+ branch.tax_benefit_system.neutralize_variable(
49
+ "self_employment_income_behavioral_response"
50
+ )
51
+ branch.set_input(
52
+ "employment_income_before_lsr",
53
+ period,
54
+ person("employment_income_before_lsr", period),
55
+ )
56
+ branch.set_input(
57
+ "self_employment_income_before_lsr",
58
+ period,
59
+ person("self_employment_income_before_lsr", period),
60
+ )
61
+
62
+ response = add(
63
+ person,
47
64
  period,
48
- person("self_employment_income_before_lsr", period),
65
+ [
66
+ "income_elasticity_lsr",
67
+ "substitution_elasticity_lsr",
68
+ ],
49
69
  )
70
+ simulation = person.simulation
71
+ del simulation.branches["baseline"].branches[
72
+ "baseline_lsr_measurement"
73
+ ]
74
+ del simulation.branches["lsr_measurement"]
50
75
 
51
- response = add(
52
- person,
53
- period,
54
- [
55
- "income_elasticity_lsr",
56
- "substitution_elasticity_lsr",
57
- ],
58
- )
59
- simulation = person.simulation
60
- del simulation.branches["baseline"].branches[
61
- "baseline_lsr_measurement"
62
- ]
63
- del simulation.branches["lsr_measurement"]
76
+ simulation.macro_cache_read = False
77
+ simulation.macro_cache_write = False
64
78
 
65
- simulation.macro_cache_read = False
66
- simulation.macro_cache_write = False
79
+ return response
67
80
 
68
- return response
81
+ finally:
82
+ # Clear the re-entry guard
83
+ simulation._lsr_calculating = False
@@ -0,0 +1,31 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class tob_revenue_medicare_hi(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ definition_period = YEAR
8
+ label = "Medicare HI trust fund revenue from SS benefit taxation (tier 2)"
9
+ documentation = "Tax revenue from tier 2 (50-85%) Social Security benefit taxation credited to Medicare HI trust fund"
10
+ unit = USD
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ """
14
+ Calculate Medicare HI trust fund revenue from tier 2 SS taxation.
15
+
16
+ Allocates total TOB revenue to Medicare HI based on tier 2's proportion
17
+ of total taxable SS.
18
+ """
19
+ # Get total TOB revenue
20
+ total_tob = tax_unit("tob_revenue_total", period)
21
+
22
+ # Get tier amounts
23
+ tier1 = tax_unit("taxable_social_security_tier_1", period)
24
+ tier2 = tax_unit("taxable_social_security_tier_2", period)
25
+ total_taxable = tier1 + tier2
26
+
27
+ # Allocate total TOB based on tier 2 proportion
28
+ # Use where to handle division by zero
29
+ medicare_share = where(total_taxable > 0, tier2 / total_taxable, 0)
30
+
31
+ return total_tob * medicare_share
@@ -0,0 +1,31 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class tob_revenue_oasdi(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ definition_period = YEAR
8
+ label = "OASDI trust fund revenue from SS benefit taxation (tier 1)"
9
+ documentation = "Tax revenue from tier 1 (0-50%) Social Security benefit taxation credited to OASDI trust funds"
10
+ unit = USD
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ """
14
+ Calculate OASDI trust fund revenue from tier 1 SS taxation.
15
+
16
+ Allocates total TOB revenue to OASDI based on tier 1's proportion
17
+ of total taxable SS.
18
+ """
19
+ # Get total TOB revenue
20
+ total_tob = tax_unit("tob_revenue_total", period)
21
+
22
+ # Get tier amounts
23
+ tier1 = tax_unit("taxable_social_security_tier_1", period)
24
+ tier2 = tax_unit("taxable_social_security_tier_2", period)
25
+ total_taxable = tier1 + tier2
26
+
27
+ # Allocate total TOB based on tier 1 proportion
28
+ # Use where to handle division by zero
29
+ oasdi_share = where(total_taxable > 0, tier1 / total_taxable, 0)
30
+
31
+ return total_tob * oasdi_share
@@ -0,0 +1,44 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class tob_revenue_total(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ definition_period = YEAR
8
+ label = "Total trust fund revenue from SS benefit taxation"
9
+ documentation = "Tax revenue from taxation of Social Security benefits using branching methodology"
10
+ unit = USD
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ """
14
+ Calculate trust fund revenue using branching + neutralization.
15
+
16
+ This is the CORRECT way to isolate TOB revenue, superior to the
17
+ average effective tax rate approximation.
18
+ """
19
+ sim = tax_unit.simulation
20
+
21
+ # Calculate income tax WITH taxable SS
22
+ income_tax_with_ss = tax_unit("income_tax", period)
23
+
24
+ # Create branch and neutralize taxable SS
25
+ branch = sim.get_branch("tob_calc", clone_system=True)
26
+ branch.tax_benefit_system.neutralize_variable(
27
+ "tax_unit_taxable_social_security"
28
+ )
29
+
30
+ # Delete all calculated variables to force recalculation
31
+ for var_name in list(branch.tax_benefit_system.variables.keys()):
32
+ if var_name not in branch.input_variables:
33
+ try:
34
+ branch.delete_arrays(var_name)
35
+ except:
36
+ pass
37
+
38
+ # Recalculate income tax without taxable SS
39
+ income_tax_without_ss = branch.tax_unit("income_tax", period)
40
+
41
+ # Clean up branch
42
+ del sim.branches["tob_calc"]
43
+
44
+ return income_tax_with_ss - income_tax_without_ss
@@ -0,0 +1,53 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class az_property_tax_credit_agi(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Arizona adjusted gross income for property tax credit"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ documentation = (
11
+ "Adjusted gross income as defined for Arizona property tax credit purposes. "
12
+ "Per ARS 43-1072(H)(6) and ITR 12-1, this starts with Federal AGI and only "
13
+ "excludes items specifically listed in ARS 43-1072(I): Social Security, "
14
+ "railroad retirement, workers compensation, Arizona unemployment, veterans "
15
+ "disability pensions, welfare, and gifts. Unlike regular Arizona income tax, "
16
+ "this does NOT exclude pension income, capital gains, or Arizona exemptions."
17
+ )
18
+ reference = [
19
+ "https://www.azleg.gov/ars/43/01072.htm", # ARS 43-1072
20
+ "https://azdor.gov/sites/default/files/2023-03/RULINGS_INDV_2012_itr12-1.pdf", # ITR 12-1
21
+ ]
22
+ defined_for = StateCode.AZ
23
+
24
+ def formula(tax_unit, period, parameters):
25
+ # Start with Federal AGI
26
+ # Per ITR 12-1, income includes wages, interest, business/farm income,
27
+ # rent/royalty, S-corp/partnership income, alimony, capital gains,
28
+ # pension/annuity income, and other non-excluded income.
29
+ federal_agi = tax_unit("adjusted_gross_income", period)
30
+
31
+ # Per ARS 43-1072(I) and ITR 12-1 "Items Excluded from Income",
32
+ # we ONLY exclude Social Security benefits (and other items like
33
+ # railroad retirement, workers comp, AZ unemployment, veterans
34
+ # disability pensions, welfare, and gifts - but these are typically
35
+ # not in Federal AGI anyway).
36
+ #
37
+ # Federal AGI only includes the TAXABLE portion of Social Security,
38
+ # but for property tax credit, ALL Social Security should be excluded.
39
+ # So we subtract the taxable portion that's in Federal AGI.
40
+ taxable_social_security = tax_unit(
41
+ "tax_unit_taxable_social_security", period
42
+ )
43
+
44
+ # NOTE: We do NOT subtract Arizona's regular subtractions here because:
45
+ # - Pension exclusions (az_public_pension_exclusion,
46
+ # az_military_retirement_subtraction) should be INCLUDED per
47
+ # ITR 12-1 item (9)
48
+ # - Capital gains subtraction (az_long_term_capital_gains_subtraction)
49
+ # should be INCLUDED per ITR 12-1 item (7)
50
+ # - US Government interest should be INCLUDED per ITR 12-1 item (2)
51
+ # - Arizona exemptions (aged, blind) should NOT be subtracted
52
+
53
+ return max_(0, federal_agi - taxable_social_security)
@@ -4,15 +4,36 @@ from policyengine_us.model_api import *
4
4
  class is_ca_medicaid_immigration_status_eligible(Variable):
5
5
  value_type = bool
6
6
  entity = Person
7
- label = "Eligible for California state-funded Medicaid regardless of immigration status"
7
+ label = "Eligible for California Medi-Cal without satisfactory immigration status"
8
8
  definition_period = YEAR
9
- reference = [
9
+ reference = (
10
10
  "https://california.public.law/codes/welfare_and_institutions_code_section_14007.8",
11
- ]
11
+ )
12
+ documentation = """
13
+ California Welfare and Institutions Code Section 14007.8 provides
14
+ state-funded Medi-Cal to individuals without satisfactory immigration
15
+ status based on age brackets. Starting January 1, 2026, new enrollments
16
+ for adults 19+ are frozen, but existing enrollees retain coverage.
17
+ """
12
18
  defined_for = StateCode.CA
13
19
 
14
20
  def formula(person, period, parameters):
15
21
  p = parameters(period).gov.states.ca.chhs
16
22
  age = person("age", period)
17
23
  pregnant = person("is_pregnant", period)
18
- return p.eligible_regardless_of_immigration_status.calc(age) | pregnant
24
+ # Standard eligibility based on age or pregnancy
25
+ standard_eligible = (
26
+ p.eligible_regardless_of_immigration_status.calc(age) | pregnant
27
+ )
28
+ # Continuous coverage only applies after enrollment freeze
29
+ if p.medi_cal_enrollment_freeze.in_effect:
30
+ receives_medicaid = person("receives_medicaid", period)
31
+ # Section 14007.8 is specifically for undocumented immigrants
32
+ immigration_status = person("immigration_status", period)
33
+ undocumented = (
34
+ immigration_status
35
+ == immigration_status.possible_values.UNDOCUMENTED
36
+ )
37
+ continuous_coverage = receives_medicaid & undocumented
38
+ return standard_eligible | continuous_coverage
39
+ return standard_eligible
@@ -18,15 +18,19 @@ class dc_ptc(Variable):
18
18
  retax = add(tax_unit, period, ["real_estate_taxes"])
19
19
  p_dc = parameters(period).gov.states.dc.tax.income.credits
20
20
  ptax = retax + rent * p_dc.ptc.rent_ratio
21
+
21
22
  elderly_age = p_dc.ptc.min_elderly_age
22
23
  head_age = tax_unit("age_head", period)
23
24
  spouse_age = tax_unit("age_spouse", period)
24
25
  is_elderly = (head_age >= elderly_age) | (spouse_age >= elderly_age)
26
+
27
+ # Only positive AGI creates an offset (negative AGI should not reduce offset)
25
28
  us_agi = tax_unit("adjusted_gross_income", period)
26
- ptax_offset = us_agi * where(
29
+ positive_agi = max_(0, us_agi)
30
+ ptax_offset = positive_agi * where(
27
31
  is_elderly,
28
- p_dc.ptc.fraction_elderly.calc(us_agi, right=True),
29
- p_dc.ptc.fraction_nonelderly.calc(us_agi, right=True),
32
+ p_dc.ptc.fraction_elderly.calc(positive_agi, right=True),
33
+ p_dc.ptc.fraction_nonelderly.calc(positive_agi, right=True),
30
34
  )
31
35
  uncapped_ptc = max_(0, ptax - ptax_offset)
32
36
  return min_(p_dc.ptc.max, uncapped_ptc)
@@ -18,6 +18,8 @@ class ia_cdcc(Variable):
18
18
  def formula(tax_unit, period, parameters):
19
19
  # Iowa matches the potential federal credit
20
20
  federal_cdcc = tax_unit("cdcc_potential", period)
21
- netinc = add(tax_unit, period, ["ia_net_income"])
21
+ taxable_income = tax_unit("ia_taxable_income", period)
22
22
  p = parameters(period).gov.states.ia.tax.income
23
- return federal_cdcc * p.credits.child_care.fraction.calc(netinc)
23
+ return federal_cdcc * p.credits.child_care.fraction.calc(
24
+ taxable_income
25
+ )
@@ -18,6 +18,6 @@ class il_aabd_immigration_status_eligible_person(Variable):
18
18
  immigration_status_str = immigration_status.decode_to_str()
19
19
  has_qualifying_status = np.isin(
20
20
  immigration_status_str,
21
- p.qualified_noncitizen_status,
21
+ p.qualified_noncitizen_statuses,
22
22
  )
23
23
  return has_qualifying_status | is_citizen
@@ -6,15 +6,33 @@ class il_aabd_non_financial_eligible_person(Variable):
6
6
  entity = Person
7
7
  definition_period = MONTH
8
8
  label = "Eligible person for Illinois Aid to the Aged, Blind or Disabled (AABD)"
9
- reference = "https://www.law.cornell.edu/regulations/illinois/title-89/part-113/subpart-B"
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/title-89/part-113/subpart-B",
11
+ "https://www.dhs.state.il.us/page.aspx?item=15910",
12
+ )
10
13
  defined_for = StateCode.IL
11
14
 
12
15
  def formula(person, period, parameters):
13
- aged_or_blind_or_disabled = person(
14
- "il_aabd_aged_blind_disabled_person", period
15
- )
16
+ # Per IDHS Policy Manual PM 11-01-00, a person must either:
17
+ # 1. Receive SSI, OR
18
+ # 2. Be ineligible for SSI due to income (but meet all other SSI requirements)
19
+ #
20
+ # Note: The policy manual only mentions "disabled" for under-65 persons
21
+ # who are SSI-ineligible due to income, but 89 Ill. Admin. Code 113.40(b)
22
+ # explicitly states: "The Department will make the determination of
23
+ # blindness when the client has been denied SSI on the basis of too
24
+ # much income." So blind persons are also covered.
25
+ #
26
+ # is_ssi_eligible checks categorical (aged/blind/disabled), resources,
27
+ # and immigration status for SSI. If True, person qualifies for IL AABD
28
+ # regardless of whether they actually receive SSI (income may be too high).
29
+ ssi_status_eligible = person("is_ssi_eligible", period.this_year)
30
+
31
+ # IL AABD has additional qualified noncitizen categories beyond SSI
32
+ # (e.g., abuse victims, trafficking victims, military families per
33
+ # 89 Ill. Admin. Code 113.10), so we check IL-specific immigration.
16
34
  immigration_status_eligible = person(
17
35
  "il_aabd_immigration_status_eligible_person", period
18
36
  )
19
37
 
20
- return aged_or_blind_or_disabled & immigration_status_eligible
38
+ return ssi_status_eligible & immigration_status_eligible
@@ -15,7 +15,7 @@ class il_tanf_immigration_status_eligible_person(Variable):
15
15
  immigration_status_str = immigration_status.decode_to_str()
16
16
  has_qualifying_status = np.isin(
17
17
  immigration_status_str,
18
- p.qualified_noncitizen_status,
18
+ p.qualified_noncitizen_statuses,
19
19
  )
20
20
  is_citizen = (
21
21
  immigration_status == immigration_status.possible_values.CITIZEN
@@ -0,0 +1,15 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_bcc_age_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Persons with Breast or Cervical Cancer age eligible"
8
+ definition_period = YEAR
9
+ reference = ("https://www.dhs.state.il.us/page.aspx?item=33528",)
10
+ defined_for = StateCode.IL
11
+
12
+ def formula(person, period, parameters):
13
+ p = parameters(period).gov.states.il.hfs.bcc.eligibility
14
+ age = person("age", period)
15
+ return age < p.age
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_bcc_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Persons with Breast or Cervical Cancer eligible"
8
+ definition_period = YEAR
9
+ reference = (
10
+ "https://www.dhs.state.il.us/page.aspx?item=33528",
11
+ "https://www.dhs.state.il.us/page.aspx?item=33527",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ is_female = person("is_female", period)
17
+ age_eligible = person("il_bcc_age_eligible", period)
18
+ immigration_eligible = person(
19
+ "il_hfs_immigration_status_eligible", period
20
+ )
21
+ insurance_eligible = person("il_bcc_insurance_eligible", period)
22
+ return (
23
+ is_female
24
+ & age_eligible
25
+ & immigration_eligible
26
+ & insurance_eligible
27
+ )
@@ -0,0 +1,29 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_bcc_insurance_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois BCC insurance eligible"
8
+ definition_period = YEAR
9
+ reference = (
10
+ "https://www.dhs.state.il.us/page.aspx?item=33528",
11
+ "https://www.ilga.gov/legislation/ilcs/documents/030500050K5-2.htm",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ # Per PM 06-20-02, persons are eligible if they are "uninsured".
17
+ # A person is NOT uninsured (thus ineligible) if they have:
18
+ # - Medicaid eligibility through another pathway
19
+ # - Health coverage that would pay for cancer treatment
20
+ #
21
+ # Exceptions that still qualify as "uninsured":
22
+ # - Coverage with limited benefits
23
+ # - Coverage where lifetime cap has been met/exceeded
24
+ # - Coverage that excludes cancer treatment
25
+ # - Indian Health Service coverage only
26
+ on_medicaid = person("receives_medicaid", period)
27
+ has_qualifying_coverage = person("has_bcc_qualifying_coverage", period)
28
+ has_disqualifying_coverage = on_medicaid | has_qualifying_coverage
29
+ return ~has_disqualifying_coverage
@@ -0,0 +1,40 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_fpp_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Family Planning Program eligible"
8
+ definition_period = YEAR
9
+ reference = (
10
+ "https://www.dhs.state.il.us/page.aspx?item=146077",
11
+ "https://hfs.illinois.gov/medicalclients/familyplanning.html",
12
+ "https://www.ilga.gov/agencies/JCAR/EntirePart?titlepart=07700635",
13
+ )
14
+ defined_for = StateCode.IL
15
+
16
+ def formula(person, period, parameters):
17
+ # Note: Illinois has two Family Planning programs:
18
+ # 1. Family Planning Presumptive Eligibility (FPPE) - temporary
19
+ # coverage, does NOT require citizenship/immigration status
20
+ # 2. Ongoing Family Planning Program - 1 year coverage, REQUIRES
21
+ # US citizenship or qualified immigrant status
22
+ # This variable models the ongoing program. The only eligibility
23
+ # difference between the two is the immigration requirement.
24
+
25
+ income_eligible = person("il_fpp_income_eligible", period)
26
+ # Must NOT be pregnant (pregnant individuals should apply for
27
+ # maternal health programs instead)
28
+ not_pregnant = ~person("is_pregnant", period)
29
+ # Use shared IL HFS immigration status check
30
+ immigration_eligible = person(
31
+ "il_hfs_immigration_status_eligible", period
32
+ )
33
+ # Cannot be enrolled in other non-spenddown full medical coverage
34
+ not_on_medicaid = ~person("receives_medicaid", period)
35
+ return (
36
+ income_eligible
37
+ & not_pregnant
38
+ & immigration_eligible
39
+ & not_on_medicaid
40
+ )
@@ -0,0 +1,18 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_fpp_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Family Planning Program income eligible"
8
+ definition_period = YEAR
9
+ reference = (
10
+ "https://www.dhs.state.il.us/page.aspx?item=146077",
11
+ "https://hfs.illinois.gov/medicalclients/familyplanning.html",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ p = parameters(period).gov.states.il.hfs.fpp.eligibility
17
+ income_level = person("il_fpp_income_level", period)
18
+ return income_level <= p.income_limit
@@ -0,0 +1,29 @@
1
+ from policyengine_us.model_api import *
2
+ from policyengine_us.variables.gov.hhs.tax_unit_fpg import fpg
3
+
4
+
5
+ class il_fpp_income_level(Variable):
6
+ value_type = float
7
+ entity = Person
8
+ label = "Illinois Family Planning Program income level"
9
+ unit = "/1"
10
+ definition_period = YEAR
11
+ reference = (
12
+ "https://www.dhs.state.il.us/page.aspx?item=146077",
13
+ "https://hfs.illinois.gov/medicalclients/familyplanning.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ # Only the applicant's income is counted (not household income)
19
+ income = person("adjusted_gross_income_person", period)
20
+
21
+ # Fixed household size of 2 per IL FPP policy
22
+ p = parameters(period).gov.states.il.hfs.fpp.eligibility
23
+
24
+ # Calculate FPG using fixed household size
25
+ state_group = person.household("state_group_str", period)
26
+ fpp_fpg = fpg(p.household_size, state_group, period, parameters)
27
+
28
+ # Return income as fraction of FPL
29
+ return income / fpp_fpg
@@ -13,8 +13,12 @@ class il_hbwd_disability_eligible(Variable):
13
13
  defined_for = StateCode.IL
14
14
 
15
15
  def formula(person, period, parameters):
16
- # Must meet Social Security Administration's definition of disability
17
- is_ssi_disabled = person("is_ssi_disabled", period)
16
+ # Must meet Social Security Administration's definition of disability.
17
+ # Per DB101 Illinois "For HBWD, Social Security's disability
18
+ # rules related to earned income do not apply" - so we use is_disabled
19
+ # (medical definition) instead of is_ssi_disabled (which includes SGA test).
20
+ # See: https://il.db101.org/il/programs/health_coverage/how_health/program2b.htm
21
+ is_disabled = person("is_disabled", period.this_year)
18
22
  # Or currently receiving SSDI
19
23
  receives_ssdi = person("social_security_disability", period) > 0
20
- return is_ssi_disabled | receives_ssdi
24
+ return is_disabled | receives_ssdi
@@ -20,7 +20,7 @@ class il_hbwd_eligible(Variable):
20
20
  income_eligible = person("il_hbwd_income_eligible", period)
21
21
  asset_eligible = person("il_hbwd_asset_eligible", period)
22
22
  immigration_eligible = person(
23
- "il_hbwd_immigration_status_eligible", period
23
+ "il_hfs_immigration_status_eligible", period
24
24
  )
25
25
 
26
26
  return (
@@ -1,19 +1,16 @@
1
1
  from policyengine_us.model_api import *
2
2
 
3
3
 
4
- class il_hbwd_immigration_status_eligible(Variable):
4
+ class il_hfs_immigration_status_eligible(Variable):
5
5
  value_type = bool
6
6
  entity = Person
7
- label = "Illinois Health Benefits for Workers with Disabilities immigration status eligible"
8
- definition_period = MONTH
9
- reference = (
10
- "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.310",
11
- "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
12
- )
7
+ label = "Illinois HFS programs immigration status eligible"
8
+ definition_period = YEAR
9
+ reference = "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.310"
13
10
  defined_for = StateCode.IL
14
11
 
15
12
  def formula(person, period, parameters):
16
- p = parameters(period).gov.states.il.hfs.hbwd.eligibility
13
+ p = parameters(period).gov.states.il.hfs
17
14
  immigration_status = person("immigration_status", period)
18
15
  is_citizen = (
19
16
  immigration_status == immigration_status.possible_values.CITIZEN
@@ -0,0 +1,15 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_mpe_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois MPE income eligible"
8
+ definition_period = MONTH
9
+ reference = "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.66"
10
+ defined_for = StateCode.IL
11
+
12
+ def formula(person, period, parameters):
13
+ p = parameters(period).gov.states.il.hfs.mpe.eligibility
14
+ income_level = person("medicaid_income_level", period.this_year)
15
+ return income_level <= p.income_limit