policyengine-us 1.439.0__py3-none-any.whl → 1.458.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 (314) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/in_effect.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/age_limit/threshold.yaml +9 -0
  4. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/amount.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/in_effect.yaml +9 -0
  6. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/rate.yaml +9 -0
  7. policyengine_us/parameters/gov/contrib/states/de/dependent_credit/phaseout/threshold.yaml +23 -0
  8. policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml +9 -0
  9. policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
  10. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
  11. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  14. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  15. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  16. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  17. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  18. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  19. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  20. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  21. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  22. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  23. policyengine_us/parameters/gov/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
  24. policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
  25. policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
  26. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
  27. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
  28. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
  29. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
  30. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
  31. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
  32. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
  33. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  34. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
  35. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
  36. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
  37. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
  38. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
  39. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
  40. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
  41. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
  42. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
  43. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  44. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
  45. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
  46. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
  47. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
  48. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
  49. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
  50. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
  51. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
  52. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
  53. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
  54. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
  55. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
  56. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
  57. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
  58. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
  59. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
  60. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
  61. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
  62. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
  63. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
  64. policyengine_us/parameters/gov/irs/deductions/qbi/max/reit_ptp_rate.yaml +13 -0
  65. policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
  66. policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
  67. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  68. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  69. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  70. policyengine_us/parameters/gov/states/ca/chhs/medi_cal_enrollment_freeze/in_effect.yaml +12 -0
  71. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/{single.yaml → non_joint.yaml} +2 -2
  72. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/{single.yaml → non_joint.yaml} +2 -2
  73. policyengine_us/parameters/gov/states/il/dhs/aabd/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +3 -5
  74. policyengine_us/parameters/gov/states/il/dhs/tanf/{qualified_noncitizen_status.yaml → qualified_noncitizen_statuses.yaml} +2 -2
  75. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  76. policyengine_us/parameters/gov/states/il/hfs/bcc/eligibility/age.yaml +12 -0
  77. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/household_size.yaml +14 -0
  78. policyengine_us/parameters/gov/states/il/hfs/fpp/eligibility/income_limit.yaml +15 -0
  79. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  80. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  81. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  82. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  83. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  84. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  85. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  86. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  87. policyengine_us/parameters/gov/states/il/hfs/mpe/eligibility/income_limit.yaml +13 -0
  88. policyengine_us/parameters/gov/states/il/hfs/qualified_noncitizen_statuses.yaml +17 -0
  89. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  90. policyengine_us/parameters/gov/states/nj/tax/income/additions.yaml +12 -0
  91. policyengine_us/parameters/gov/states/nj/tax/income/gross_income_sources.yaml +32 -0
  92. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/amount.yaml +4 -0
  93. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_agi.yaml +6 -2
  94. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/max_child_age.yaml +6 -2
  95. policyengine_us/parameters/gov/states/ut/tax/income/credits/at_home_parent/parent_max_earnings.yaml +6 -2
  96. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/amount.yaml +4 -0
  97. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/child_age_threshold.yaml +4 -0
  98. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/rate.yaml +4 -0
  99. policyengine_us/parameters/gov/states/ut/tax/income/credits/ctc/reduction/start.yaml +4 -0
  100. policyengine_us/parameters/gov/states/ut/tax/income/credits/earned_income/rate.yaml +4 -0
  101. policyengine_us/parameters/gov/states/ut/tax/income/credits/military_retirement/rate.yaml +26 -0
  102. policyengine_us/parameters/gov/states/ut/tax/income/credits/non_refundable.yaml +5 -0
  103. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/birth_year.yaml +4 -0
  104. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/max.yaml +4 -0
  105. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/rate.yaml +4 -0
  106. policyengine_us/parameters/gov/states/ut/tax/income/credits/retirement/phase_out/threshold.yaml +4 -0
  107. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/rate.yaml +4 -0
  108. policyengine_us/parameters/gov/states/ut/tax/income/credits/ss_benefits/phase_out/threshold.yaml +4 -0
  109. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/in_effect.yaml +2 -0
  110. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/personal_exemption.yaml +5 -0
  111. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/rate.yaml +5 -1
  112. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/phase_out/threshold.yaml +9 -0
  113. policyengine_us/parameters/gov/states/ut/tax/income/credits/taxpayer/rate.yaml +4 -0
  114. policyengine_us/parameters/gov/states/ut/tax/income/rate.yaml +3 -0
  115. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  116. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  117. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  118. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  119. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  120. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  121. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  122. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  123. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  124. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  125. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  126. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  127. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  128. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  129. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
  130. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -0
  131. policyengine_us/parameters/simulation/disabled_programs.yaml +0 -1
  132. policyengine_us/reforms/local/ny/__init__.py +4 -0
  133. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  134. policyengine_us/reforms/reforms.py +21 -0
  135. policyengine_us/reforms/state_dependent_exemptions/repeal_state_dependent_exemptions.py +1 -1
  136. policyengine_us/reforms/states/de/__init__.py +3 -0
  137. policyengine_us/reforms/states/de/dependent_credit/de_dependent_credit_reform.py +165 -0
  138. policyengine_us/reforms/states/ut/__init__.py +3 -0
  139. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
  140. policyengine_us/tests/policy/baseline/gov/hhs/medicaid/medicaid_enrolled.yaml +105 -0
  141. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  142. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  143. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  144. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  145. policyengine_us/tests/policy/baseline/gov/irs/income/taxable_income/deductions/qbid/qbid_amount.yaml +75 -3
  146. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
  147. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -0
  148. policyengine_us/tests/policy/baseline/gov/local/ca/la/general_relief/eligible/immigration/la_general_relief_immigration_status_eligible_person.yaml +2 -2
  149. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  150. policyengine_us/tests/policy/baseline/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.yaml +59 -5
  151. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  152. policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.yaml +2 -10
  153. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.yaml +39 -0
  154. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.yaml +95 -0
  155. policyengine_us/tests/policy/baseline/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.yaml +35 -0
  156. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_eligible.yaml +35 -0
  157. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/il_fpp_income_level.yaml +27 -0
  158. policyengine_us/tests/policy/baseline/gov/states/il/hfs/fpp/integration.yaml +116 -0
  159. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  160. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  161. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  162. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  163. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  164. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  165. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  166. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  167. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  168. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  169. policyengine_us/tests/policy/baseline/gov/states/il/hfs/il_hfs_immigration_status_eligible.yaml +47 -0
  170. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_eligible.yaml +39 -0
  171. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/il_mpe_income_eligible.yaml +23 -0
  172. policyengine_us/tests/policy/baseline/gov/states/il/hfs/mpe/integration.yaml +138 -0
  173. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/eligibility/il_smib_eligible.yaml +88 -0
  174. policyengine_us/tests/policy/baseline/gov/states/il/hfs/smib/integration.yaml +73 -0
  175. policyengine_us/tests/policy/baseline/gov/states/ky/tax/income/credits/family_size_tax_credit/ky_family_size_tax_credit_rate.yaml +8 -8
  176. policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
  177. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  178. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_a.yaml +2 -2
  179. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_b.yaml +1 -1
  180. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_pension_and_ss_or_ssd_deduction/mo_pension_and_ss_or_ssd_deduction_section_c.yaml +1 -1
  181. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  182. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/eitc/nj_eitc.yaml +8 -3
  183. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integration.yaml +137 -0
  184. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/taxable_income/nj_agi.yaml +7 -8
  185. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  186. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +82 -0
  187. policyengine_us/tests/policy/baseline/gov/states/tx/tanf/assistance_unit/tx_tanf_categorically_eligible_person.yaml +1 -1
  188. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.yaml +89 -0
  189. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.yaml +50 -0
  190. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  191. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  192. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  193. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  194. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  195. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  196. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  197. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  198. policyengine_us/tests/policy/baseline/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.yaml +10 -6
  199. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  200. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  201. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  202. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  203. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  204. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  205. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
  206. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
  207. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
  208. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
  209. policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
  210. policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
  211. policyengine_us/tests/policy/baseline/gov/usda/snap/snap_min_allotment.yaml +3 -3
  212. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  213. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  214. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  215. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  216. policyengine_us/tests/policy/baseline/household/expense/health/has_bcc_qualifying_coverage.yaml +12 -0
  217. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  218. policyengine_us/tests/policy/contrib/state_dependent_exemptions/repeal_state_dependent_exemptions.yaml +25 -1
  219. policyengine_us/tests/policy/contrib/states/de/dependent_credit_reform_test.yaml +210 -0
  220. policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
  221. policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
  222. policyengine_us/variables/gov/hhs/medicaid/costs/medicaid_group.py +2 -2
  223. policyengine_us/variables/gov/hhs/medicaid/receives_medicaid.py +17 -0
  224. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  225. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  226. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  227. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  228. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  229. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  230. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  231. policyengine_us/variables/gov/irs/income/taxable_income/deductions/qualified_business_income_deduction/qbid_amount.py +16 -6
  232. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
  233. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
  234. policyengine_us/variables/gov/states/ca/chhs/is_ca_medicaid_immigration_status_eligible.py +25 -4
  235. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  236. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  237. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +1 -1
  238. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +1 -1
  239. policyengine_us/variables/gov/states/il/dhs/aabd/eligibility/il_aabd_immigration_status_eligible_person.py +1 -1
  240. policyengine_us/variables/gov/states/il/dhs/tanf/eligibility/il_tanf_immigration_status_eligible_person.py +1 -1
  241. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_age_eligible.py +15 -0
  242. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_eligible.py +27 -0
  243. policyengine_us/variables/gov/states/il/hfs/bcc/eligibility/il_bcc_insurance_eligible.py +29 -0
  244. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_eligible.py +40 -0
  245. policyengine_us/variables/gov/states/il/hfs/fpp/eligibility/il_fpp_income_eligible.py +18 -0
  246. policyengine_us/variables/gov/states/il/hfs/fpp/il_fpp_income_level.py +29 -0
  247. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  248. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  249. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  250. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  251. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  252. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  253. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  254. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  255. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  256. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  257. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  258. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  259. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  260. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  261. policyengine_us/variables/gov/states/il/hfs/il_hfs_immigration_status_eligible.py +23 -0
  262. policyengine_us/variables/gov/states/il/hfs/mpe/eligibility/il_mpe_income_eligible.py +15 -0
  263. policyengine_us/variables/gov/states/il/hfs/mpe/il_mpe_eligible.py +15 -0
  264. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_categorical_eligible.py +26 -0
  265. policyengine_us/variables/gov/states/il/hfs/smib/eligibility/il_smib_eligible.py +28 -0
  266. policyengine_us/variables/gov/states/il/hfs/smib/il_smib.py +21 -0
  267. policyengine_us/variables/gov/states/il/hfs/smib/il_smib_person.py +24 -0
  268. policyengine_us/variables/gov/states/ky/tax/income/credits/family_size_credit/ky_family_size_tax_credit_rate.py +1 -1
  269. policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
  270. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  271. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_additions.py +8 -3
  272. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_gross_income.py +17 -0
  273. policyengine_us/variables/gov/states/nj/tax/income/adjusted_gross_income/nj_total_income.py +12 -6
  274. policyengine_us/variables/gov/states/nj/tax/income/credits/eitc/nj_eitc.py +7 -1
  275. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  276. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit.py +20 -0
  277. policyengine_us/variables/gov/states/ut/tax/income/credits/military_retirement_credit/ut_military_retirement_credit_eligible.py +22 -0
  278. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  279. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  280. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  281. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  282. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  283. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  284. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  285. policyengine_us/variables/gov/states/wv/tax/income/credits/liftc/wv_low_income_family_tax_credit_fpg.py +1 -1
  286. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  287. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  288. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  289. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  290. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +9 -0
  291. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  292. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  293. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +6 -0
  294. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
  295. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
  296. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
  297. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
  298. policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
  299. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  300. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  301. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  302. policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
  303. policyengine_us/variables/household/expense/health/has_bcc_qualifying_coverage.py +16 -0
  304. policyengine_us/variables/household/income/person/dividends/qualified_reit_and_ptp_income.py +1 -1
  305. policyengine_us/variables/household/income/spm_unit/spm_unit_tenure_type.py +17 -0
  306. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/METADATA +2 -2
  307. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/RECORD +312 -138
  308. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/WHEEL +1 -1
  309. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  310. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +0 -57
  311. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  312. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  313. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/entry_points.txt +0 -0
  314. {policyengine_us-1.439.0.dist-info → policyengine_us-1.458.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,14 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicare_enrolled(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Medicare enrolled"
8
+ documentation = (
9
+ "Whether the person is enrolled in Medicare (Part A and/or Part B)"
10
+ )
11
+ definition_period = YEAR
12
+ reference = "https://www.cms.gov/medicare"
13
+ defined_for = "is_medicare_eligible"
14
+ default_value = True # Most Medicare-eligible people are enrolled
@@ -0,0 +1,32 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class base_part_a_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part A Base Premium"
8
+ unit = USD
9
+ documentation = (
10
+ "Annual Medicare Part A premium. Most people (99%) qualify for "
11
+ "premium-free Part A with 40+ quarters of Medicare-covered employment. "
12
+ "Those with 30-39 quarters pay a reduced premium, and those with "
13
+ "fewer than 30 quarters pay the full premium."
14
+ )
15
+ definition_period = YEAR
16
+ reference = "https://www.cms.gov/newsroom/fact-sheets/2025-medicare-parts-b-premiums-and-deductibles"
17
+ defined_for = "is_medicare_eligible"
18
+
19
+ def formula(person, period, parameters):
20
+ p = parameters(period).gov.hhs.medicare.part_a
21
+ quarters_covered = person("medicare_quarters_of_coverage", period)
22
+
23
+ premium_free_part_a = person("is_premium_free_part_a", period)
24
+ quarters_above_reduced_premium_threshold = (
25
+ quarters_covered >= p.reduced_premium_quarters_threshold
26
+ )
27
+ premium_amount = where(
28
+ quarters_above_reduced_premium_threshold,
29
+ p.reduced_premium,
30
+ p.full_premium,
31
+ )
32
+ return where(premium_free_part_a, 0, premium_amount) * MONTHS_IN_YEAR
@@ -0,0 +1,22 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class is_premium_free_part_a(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Qualifies for premium-free Part A"
8
+ documentation = (
9
+ "Whether the person qualifies for premium-free Medicare Part A "
10
+ "based on having 40 or more quarters of Medicare-covered employment. "
11
+ "Approximately 99% of Medicare beneficiaries qualify for premium-free Part A."
12
+ )
13
+ definition_period = YEAR
14
+ reference = (
15
+ "https://www.medicare.gov/basics/costs/medicare-costs/part-a-costs"
16
+ )
17
+ defined_for = "is_medicare_eligible"
18
+
19
+ def formula(person, period, parameters):
20
+ p = parameters(period).gov.hhs.medicare.part_a
21
+ quarters = person("medicare_quarters_of_coverage", period)
22
+ return quarters >= p.premium_free_quarters_threshold
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class medicare_quarters_of_coverage(Variable):
5
+ value_type = int
6
+ entity = Person
7
+ label = "Medicare quarters of coverage"
8
+ documentation = (
9
+ "Number of quarters of Medicare-covered employment. Most people have "
10
+ "40+ quarters and qualify for premium-free Part A. Those with 30-39 "
11
+ "quarters pay a reduced premium, and those with fewer than 30 quarters "
12
+ "pay the full premium."
13
+ )
14
+ definition_period = YEAR
15
+
16
+ adds = "gov.hhs.medicare.part_a.default_quarters_of_coverage"
@@ -0,0 +1,16 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class base_part_b_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part B Base Premium"
8
+ unit = USD
9
+ documentation = "Medicare Part B Premium."
10
+ definition_period = YEAR
11
+ defined_for = "is_medicare_eligible"
12
+
13
+ def formula(person, period, parameters):
14
+ p = parameters(period).gov.hhs.medicare.part_b
15
+ # base_premium is a monthly amount, multiply by MONTHS_IN_YEAR for annual
16
+ return p.base_premium * MONTHS_IN_YEAR
@@ -0,0 +1,55 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class income_adjusted_part_b_premium(Variable):
5
+ value_type = float
6
+ entity = Person
7
+ label = "Medicare Part B premium (income-adjusted)"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ defined_for = "is_medicare_eligible"
11
+ reference = "https://www.medicare.gov/your-medicare-costs/part-b-costs"
12
+ documentation = "Medicare Part B premium adjusted for income (IRMAA). Based on modified adjusted gross income from 2 years prior."
13
+
14
+ def formula(person, period, parameters):
15
+
16
+ tax_unit = person.tax_unit
17
+ filing_status = tax_unit("filing_status", period)
18
+ # Medicare Part B IRMAA is based on MAGI from 2 years prior
19
+ # MAGI = AGI + tax-exempt interest
20
+ prior_period = period.offset(-2, "year")
21
+ agi = tax_unit("adjusted_gross_income", prior_period)
22
+ tax_exempt_interest = tax_unit(
23
+ "tax_exempt_interest_income", prior_period
24
+ )
25
+ magi = agi + tax_exempt_interest
26
+ base = person("base_part_b_premium", period)
27
+
28
+ # Build boolean masks for each status
29
+ status = filing_status.possible_values
30
+ statuses = [
31
+ status.SINGLE,
32
+ status.JOINT,
33
+ status.HEAD_OF_HOUSEHOLD,
34
+ status.SURVIVING_SPOUSE,
35
+ status.SEPARATE,
36
+ ]
37
+ in_status = [filing_status == s for s in statuses]
38
+
39
+ p = parameters(period).gov.hhs.medicare.part_b.irmaa
40
+
41
+ irmaa_amount = select(
42
+ in_status,
43
+ [
44
+ p.single.calc(magi),
45
+ p.joint.calc(magi),
46
+ p.head_of_household.calc(magi),
47
+ p.surviving_spouse.calc(magi),
48
+ p.separate.calc(magi),
49
+ ],
50
+ )
51
+
52
+ # IRMAA amounts are monthly, multiply by MONTHS_IN_YEAR to get annual
53
+ # Base is already annual
54
+ annual_irmaa = irmaa_amount * MONTHS_IN_YEAR
55
+ return base + annual_irmaa
@@ -4,14 +4,13 @@ from policyengine_us.model_api import *
4
4
  class qbid_amount(Variable):
5
5
  value_type = float
6
6
  entity = Person
7
- label = (
8
- "Per-cap qualified business income deduction amount for each person"
9
- )
7
+ label = "Per-person qualified business income deduction amount"
10
8
  unit = USD
11
9
  definition_period = YEAR
12
10
  reference = (
13
- "https://www.law.cornell.edu/uscode/text/26/199A#b_1"
14
- "https://www.irs.gov/pub/irs-prior/p535--2018.pdf"
11
+ "https://www.law.cornell.edu/uscode/text/26/199A#b_1",
12
+ "https://www.irs.gov/pub/irs-prior/p535--2018.pdf",
13
+ "https://www.irs.gov/pub/irs-pdf/f8995.pdf",
15
14
  )
16
15
 
17
16
  def formula(person, period, parameters):
@@ -53,4 +52,15 @@ class qbid_amount(Variable):
53
52
  )
54
53
  line26 = max_(0, adj_qbid_max - reduction)
55
54
  line12 = where(adj_cap < adj_qbid_max, line26, 0)
56
- return max_(line11, line12) # Worksheet 12-A, line 13
55
+ # QBI component (Worksheet 12-A, line 13 / Form 8995 Line 5)
56
+ qbi_component = max_(line11, line12)
57
+
58
+ # REIT/PTP component (Form 8995 Lines 6-9)
59
+ # Per §199A(b)(1)(B), qualified REIT dividends and qualified PTP income
60
+ # receive a 20% deduction WITHOUT W-2 wage or UBIA limitations
61
+ reit_ptp_income = person("qualified_reit_and_ptp_income", period)
62
+ reit_ptp_component = p.max.reit_ptp_rate * max_(0, reit_ptp_income)
63
+
64
+ # Total QBID = QBI component + REIT/PTP component
65
+ # (Form 8995 Line 10: Add lines 5 and 9)
66
+ return qbi_component + reit_ptp_component
@@ -0,0 +1,47 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class amt_exemption(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ definition_period = YEAR
8
+ label = "Alternative Minimum Tax exemption"
9
+ unit = USD
10
+ documentation = (
11
+ "AMT exemption amount after phase-out and kiddie tax adjustments. "
12
+ "Form 6251, Line 5."
13
+ )
14
+ reference = [
15
+ "https://www.law.cornell.edu/uscode/text/26/55#d", # 26 U.S.C. § 55(d)
16
+ "https://www.irs.gov/instructions/i6251",
17
+ ]
18
+
19
+ def formula(tax_unit, period, parameters):
20
+ p = parameters(period).gov.irs.income.amt
21
+ phase_out = p.exemption.phase_out
22
+ filing_status = tax_unit("filing_status", period)
23
+ amt_income = tax_unit("amt_income", period)
24
+
25
+ # Base exemption amount based on filing status
26
+ base_exemption_amount = p.exemption.amount[filing_status]
27
+
28
+ # Phase-out at higher income levels
29
+ income_excess = max_(0, amt_income - phase_out.start[filing_status])
30
+ exemption_phase_out = phase_out.rate * income_excess
31
+ reduced_exemption_amount = max_(
32
+ 0,
33
+ base_exemption_amount - exemption_phase_out,
34
+ )
35
+
36
+ # A reduced exemption amount is applied to kiddie tax filers
37
+ kiddie_tax_applies = tax_unit("amt_kiddie_tax_applies", period)
38
+ adj_earnings = tax_unit("filer_adjusted_earnings", period)
39
+ child_amount = p.exemption.child.amount
40
+
41
+ exemption_cap = where(
42
+ kiddie_tax_applies,
43
+ adj_earnings + child_amount,
44
+ np.inf,
45
+ )
46
+
47
+ return min_(reduced_exemption_amount, exemption_cap)
@@ -17,28 +17,10 @@ class amt_income_less_exemptions(Variable):
17
17
  taxable_income = tax_unit("taxable_income", period)
18
18
  kiddie_tax_applies = tax_unit("amt_kiddie_tax_applies", period)
19
19
  applied_income = where(kiddie_tax_applies, taxable_income, amt_income)
20
+
20
21
  # Form 6251, Part II top
21
- p = parameters(period).gov.irs.income.amt
22
- phase_out = p.exemption.phase_out
23
- filing_status = tax_unit("filing_status", period)
24
- # Line 5 the exemption amount is based on filing status and
25
- # is phased-out at higher income
26
- base_exemption_amount = p.exemption.amount[filing_status]
27
- income_excess = max_(0, amt_income - phase_out.start[filing_status])
28
- exemption_phase_out = phase_out.rate * income_excess
29
- reduced_exemption_amount = max_(
30
- 0,
31
- (base_exemption_amount - exemption_phase_out),
32
- )
33
- # A reduced exemption amount is applied to kiddie tax filers
34
- adj_earnings = tax_unit("filer_adjusted_earnings", period)
35
- child_amount = p.exemption.child.amount
22
+ # Line 5
23
+ amt_exemption = tax_unit("amt_exemption", period)
36
24
 
37
- exemption_cap = where(
38
- kiddie_tax_applies,
39
- adj_earnings + child_amount,
40
- np.inf,
41
- )
42
- capped_exemption_amount = min_(reduced_exemption_amount, exemption_cap)
43
25
  # Line 6
44
- return max_(0, applied_income - capped_exemption_amount)
26
+ return max_(0, applied_income - amt_exemption)
@@ -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
@@ -29,10 +29,12 @@ class ca_amt_exemption(Variable):
29
29
  reduced_amti_rate = reduced_amti * p_irs.phase_out.rate
30
30
  # Line 6
31
31
  adult_exemption = max_(exemption_max_amount - reduced_amti_rate, 0)
32
- # Eligible children receive an increased exemption amount
32
+ # Eligible children receive an increased exemption amount.
33
+ # This applies when the HEAD of the tax unit is a child dependent.
33
34
  person = tax_unit.members
34
35
  eligible_child = person("is_child_dependent", period)
35
- head_is_eligible_child = tax_unit.any(eligible_child)
36
+ is_head = person("is_tax_unit_head", period)
37
+ head_is_eligible_child = tax_unit.any(eligible_child & is_head)
36
38
  # Line 7
37
39
  exemption_amount_child = p_irs.child.amount
38
40
  # Line 8
@@ -12,6 +12,7 @@ class ca_income_tax(Variable):
12
12
 
13
13
  adds = [
14
14
  "ca_income_tax_before_refundable_credits",
15
+ "ca_amt",
15
16
  "ca_mental_health_services_tax",
16
17
  "ca_use_tax",
17
18
  ]
@@ -22,5 +22,5 @@ class co_care_worker_credit(Variable):
22
22
  return where(
23
23
  joint_with_two_eligible_care_workers,
24
24
  p.amount.joint,
25
- p.amount.single,
25
+ p.amount.non_joint,
26
26
  )
@@ -15,7 +15,7 @@ class co_care_worker_credit_eligible(Variable):
15
15
  joint = tax_unit("tax_unit_is_joint", period)
16
16
  agi = tax_unit("adjusted_gross_income", period)
17
17
  income_limit = where(
18
- joint, p.income_limit.joint, p.income_limit.single
18
+ joint, p.income_limit.joint, p.income_limit.non_joint
19
19
  )
20
20
  income_eligible = agi <= income_limit
21
21
  eligible_care_worker_present = (
@@ -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
@@ -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("is_medicaid_eligible", 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
@@ -0,0 +1,34 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_countable_assets(Variable):
5
+ value_type = float
6
+ unit = USD
7
+ entity = Person
8
+ label = "Illinois Health Benefits for Workers with Disabilities countable assets"
9
+ definition_period = MONTH
10
+ reference = (
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.381",
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ # HBWD exempt assets per § 120.381:
19
+ # - Primary residence (homestead)
20
+ # - Personal effects and household goods
21
+ # - One vehicle (full exemption if essential, $4,500 if not)
22
+ # - Life insurance ≤$1,500
23
+ # - Burial resources
24
+ # - Retirement accounts inaccessible before age 59.5
25
+ # - Medical savings accounts (26 USC 220)
26
+ # Currently only implementing vehicle exemption
27
+ # § 120.381 and § 113.141 have identical vehicle exemption rules,
28
+ # so using AABD vehicle calculation
29
+ cash_assets = person.spm_unit("spm_unit_cash_assets", period.this_year)
30
+ vehicle_value = person.spm_unit(
31
+ "il_aabd_countable_vehicle_value", period
32
+ )
33
+ # TODO: Implement homestead, retirement account, burial, and other exemptions
34
+ return cash_assets + vehicle_value
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_age_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = (
8
+ "Illinois Health Benefits for Workers with Disabilities age eligible"
9
+ )
10
+ definition_period = MONTH
11
+ reference = (
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
19
+ age = person("monthly_age", period)
20
+ return p.age.calc(age)
@@ -0,0 +1,21 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_asset_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = (
8
+ "Illinois Health Benefits for Workers with Disabilities asset eligible"
9
+ )
10
+ definition_period = MONTH
11
+ reference = (
12
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
13
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
14
+ )
15
+ defined_for = StateCode.IL
16
+
17
+ def formula(person, period, parameters):
18
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
19
+ # Check countable assets against $25,000 limit
20
+ countable_assets = person("il_hbwd_countable_assets", period)
21
+ return countable_assets <= p.asset.limit
@@ -0,0 +1,20 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_disability_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities disability eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
11
+ "https://hfs.illinois.gov/medicalprograms/hbwd/eligibility.html",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ # Must meet Social Security Administration's definition of disability
17
+ is_ssi_disabled = person("is_ssi_disabled", period)
18
+ # Or currently receiving SSDI
19
+ receives_ssdi = person("social_security_disability", period) > 0
20
+ return is_ssi_disabled | receives_ssdi