policyengine-us 1.439.0__py3-none-any.whl → 1.449.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml +9 -0
  3. policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
  4. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
  5. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  6. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  7. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  8. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  9. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  10. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  11. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  12. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  14. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  15. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  16. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  17. policyengine_us/parameters/gov/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
  18. policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
  19. policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
  20. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
  21. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
  22. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
  23. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
  24. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
  25. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
  26. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
  27. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  28. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
  29. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
  30. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
  31. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
  32. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
  33. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
  34. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
  35. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
  36. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
  37. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  38. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
  39. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
  40. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
  41. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
  42. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
  43. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
  44. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
  45. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
  46. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
  47. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
  48. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
  49. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
  50. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
  51. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
  52. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
  53. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
  54. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
  55. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
  56. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
  57. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
  58. policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
  59. policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
  60. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  61. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  62. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  63. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/{single.yaml → non_joint.yaml} +2 -2
  64. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/{single.yaml → non_joint.yaml} +2 -2
  65. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  66. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  67. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  68. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  69. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  70. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  71. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  72. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +21 -0
  73. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  74. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  75. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  76. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  77. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  78. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  79. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  80. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  81. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  82. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  83. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  84. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  85. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  86. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  87. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  88. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  89. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  90. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
  91. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -0
  92. policyengine_us/parameters/simulation/disabled_programs.yaml +0 -1
  93. policyengine_us/reforms/local/ny/__init__.py +4 -0
  94. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  95. policyengine_us/reforms/reforms.py +14 -0
  96. policyengine_us/reforms/states/ut/__init__.py +3 -0
  97. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
  98. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  99. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  100. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  101. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  102. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
  103. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -0
  104. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  105. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  106. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  107. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  108. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  109. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  110. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  111. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  112. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +47 -0
  113. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  114. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  115. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  116. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  117. policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
  118. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  119. 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
  120. 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
  121. 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
  122. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  123. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  124. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +82 -0
  125. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  126. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  127. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  128. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  129. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  130. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  131. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  132. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  133. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  134. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  135. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  136. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  137. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  138. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  139. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
  140. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
  141. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
  142. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
  143. policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
  144. policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
  145. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  146. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  147. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  148. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  149. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  150. policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
  151. policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
  152. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  153. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  154. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  155. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  156. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  157. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  158. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  159. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
  160. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
  161. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  162. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  163. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +1 -1
  164. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +1 -1
  165. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  166. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  167. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  168. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  169. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  170. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  171. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.py +26 -0
  172. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  173. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  174. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  175. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  176. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  177. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  178. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  179. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  180. policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
  181. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  182. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  183. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  184. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  185. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  186. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  187. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  188. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  189. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  190. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  191. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  192. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  193. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  194. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +9 -0
  195. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  196. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  197. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +6 -0
  198. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
  199. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
  200. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
  201. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
  202. policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
  203. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  204. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  205. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  206. policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
  207. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/METADATA +1 -1
  208. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/RECORD +213 -90
  209. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/WHEEL +1 -1
  210. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  211. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  212. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  213. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/entry_points.txt +0 -0
  214. {policyengine_us-1.439.0.dist-info → policyengine_us-1.449.6.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,77 @@
1
+ - name: unit test 1 - surviving spouse, no extra premium
2
+ period: 2025
3
+ input:
4
+ age: 65
5
+ filing_status: SURVIVING_SPOUSE
6
+ adjusted_gross_income:
7
+ 2023: 80_000 # IRMAA uses income from 2 years prior
8
+ tax_exempt_interest_income:
9
+ 2023: 0
10
+ is_medicare_eligible: true
11
+ output:
12
+ income_adjusted_part_b_premium: 2_220 # $185 * 12 months
13
+
14
+ - name: unit test 2 - married, extra premium
15
+ period: 2025
16
+ input:
17
+ age: 65
18
+ filing_status: JOINT
19
+ adjusted_gross_income:
20
+ 2023: 266_001 # IRMAA uses income from 2 years prior
21
+ tax_exempt_interest_income:
22
+ 2023: 0
23
+ is_medicare_eligible: true
24
+ output:
25
+ income_adjusted_part_b_premium: 4_440 # $370 * 12 months
26
+
27
+ - name: unit test 3 - single, extra premium
28
+ period: 2025
29
+ input:
30
+ age: 65
31
+ filing_status: SINGLE
32
+ adjusted_gross_income:
33
+ 2023: 500_000 # IRMAA uses income from 2 years prior
34
+ tax_exempt_interest_income:
35
+ 2023: 0
36
+ is_medicare_eligible: true
37
+ output:
38
+ income_adjusted_part_b_premium: 7_546.8 # $628.90 * 12 months
39
+
40
+ - name: unit test 4 - HOH, extra premium
41
+ period: 2025
42
+ input:
43
+ age: 65
44
+ filing_status: SURVIVING_SPOUSE
45
+ adjusted_gross_income:
46
+ 2023: 106_002 # IRMAA uses income from 2 years prior
47
+ tax_exempt_interest_income:
48
+ 2023: 0
49
+ is_medicare_eligible: true
50
+ output:
51
+ income_adjusted_part_b_premium: 3_108 # $259 * 12 months
52
+
53
+ - name: unit test 5 - married, no extra premium
54
+ period: 2025
55
+ input:
56
+ age: 65
57
+ filing_status: JOINT
58
+ adjusted_gross_income:
59
+ 2023: 200_000 # IRMAA uses income from 2 years prior
60
+ tax_exempt_interest_income:
61
+ 2023: 0
62
+ is_medicare_eligible: true
63
+ output:
64
+ income_adjusted_part_b_premium: 2_220 # $185 * 12 months
65
+
66
+ - name: unit test 6 - married, extra premium, rich
67
+ period: 2025
68
+ input:
69
+ age: 65
70
+ filing_status: JOINT
71
+ adjusted_gross_income:
72
+ 2023: 1_000_000 # IRMAA uses income from 2 years prior
73
+ tax_exempt_interest_income:
74
+ 2023: 0
75
+ is_medicare_eligible: true
76
+ output:
77
+ income_adjusted_part_b_premium: 7_546.8 # $628.90 * 12 months
@@ -0,0 +1,68 @@
1
+ - name: No phase-out, no kiddie tax
2
+ period: 2022
3
+ input:
4
+ amt_income: 200_000
5
+ amt_kiddie_tax_applies: false
6
+ filer_adjusted_earnings: 400_000
7
+ filing_status: SINGLE
8
+ output:
9
+ # Base exemption for SINGLE in 2022 is 75,900
10
+ # income_excess = max(0, 200,000 - 539,900) = 0
11
+ # No phase-out, full exemption of 75,900
12
+ amt_exemption: 75_900
13
+
14
+ - name: No phase-out, kiddie tax applies with low earnings
15
+ period: 2022
16
+ input:
17
+ amt_income: 200_000
18
+ amt_kiddie_tax_applies: true
19
+ filer_adjusted_earnings: 10_000
20
+ filing_status: SINGLE
21
+ output:
22
+ # Base exemption for SINGLE in 2022 is 75,900
23
+ # reduced_exemption = 75,900 (no phase-out)
24
+ # exemption_cap = 10,000 + 8,200 (child amount) = 18,200
25
+ # amt_exemption = min(75,900, 18,200) = 18,200
26
+ amt_exemption: 18_200
27
+
28
+ - name: Full phase-out at high income
29
+ period: 2022
30
+ input:
31
+ amt_income: 1_000_000
32
+ amt_kiddie_tax_applies: false
33
+ filer_adjusted_earnings: 400_000
34
+ filing_status: SINGLE
35
+ output:
36
+ # Base exemption for SINGLE in 2022 is 75,900
37
+ # income_excess = max(0, 1,000,000 - 539,900) = 460,100
38
+ # exemption_phase_out = 0.25 * 460,100 = 115,025
39
+ # reduced_exemption = max(0, 75,900 - 115,025) = 0
40
+ amt_exemption: 0
41
+
42
+ - name: Partial phase-out
43
+ period: 2022
44
+ input:
45
+ amt_income: 600_000
46
+ amt_kiddie_tax_applies: false
47
+ filer_adjusted_earnings: 400_000
48
+ filing_status: SINGLE
49
+ output:
50
+ # Base exemption for SINGLE in 2022 is 75,900
51
+ # income_excess = max(0, 600,000 - 539,900) = 60,100
52
+ # exemption_phase_out = 0.25 * 60,100 = 15,025
53
+ # reduced_exemption = max(0, 75,900 - 15,025) = 60,875
54
+ amt_exemption: 60_875
55
+
56
+ - name: Joint filers, no phase-out
57
+ period: 2022
58
+ input:
59
+ amt_income: 500_000
60
+ amt_kiddie_tax_applies: false
61
+ filer_adjusted_earnings: 400_000
62
+ filing_status: JOINT
63
+ output:
64
+ # Base exemption for JOINT in 2022 is 118,100
65
+ # Phase-out starts at 1,079,800
66
+ # income_excess = max(0, 500,000 - 1,079,800) = 0
67
+ # Full exemption of 118,100
68
+ amt_exemption: 118_100
@@ -0,0 +1,26 @@
1
+ # Integration test from GitHub issue #1279
2
+ # Validates AMT calculation against TAXSIM35
3
+ - name: Issue 1279 - Joint filers with employment income and capital gains
4
+ period: 2021
5
+ absolute_error_margin: 1
6
+ input:
7
+ people:
8
+ person1:
9
+ age: 55
10
+ employment_income: 177_000
11
+ long_term_capital_gains: 100_000
12
+ person2:
13
+ age: 58
14
+ employment_income: 176_000
15
+ tax_units:
16
+ tax_unit:
17
+ members: [person1, person2]
18
+ households:
19
+ household:
20
+ members: [person1, person2]
21
+ state_code: TX
22
+ output:
23
+ # TAXSIM35 and USI-Tax-Analyzer both produce zero AMT for this case
24
+ alternative_minimum_tax: 0
25
+ # Expected income tax from TAXSIM35
26
+ income_tax: 85_538
@@ -197,3 +197,38 @@
197
197
  state_fips: 5
198
198
  output:
199
199
  ar_income_tax: 1_085
200
+
201
+ - name: 3864-AR.yaml
202
+ absolute_error_margin: 2
203
+ period: 2024
204
+ input:
205
+ people:
206
+ person1:
207
+ age: 40
208
+ employment_income: 93904.383
209
+ ssi: 0
210
+ wic: 0
211
+ head_start: 0
212
+ early_head_start: 0
213
+ commodity_supplemental_food_program: 0
214
+ taxable_interest_income: 2514.2869
215
+ is_tax_unit_head: true
216
+ tax_units:
217
+ tax_unit:
218
+ members: [person1]
219
+ premium_tax_credit: 0
220
+ local_income_tax: 0
221
+ state_sales_tax: 0
222
+ spm_units:
223
+ spm_unit:
224
+ members: [person1]
225
+ snap: 0
226
+ tanf: 0
227
+ free_school_meals: 0
228
+ reduced_price_school_meals: 0
229
+ households:
230
+ household:
231
+ members: [person1]
232
+ state_fips: 5
233
+ output:
234
+ ar_income_tax: 3_410
@@ -203,7 +203,7 @@
203
203
  input:
204
204
  state_code: CO
205
205
  co_federal_deduction_addback_required: true
206
- filing_status: HEAD_OF_HOUSE_HOLD
206
+ filing_status: HEAD_OF_HOUSEHOLD
207
207
  itemized_taxable_income_deductions: 40_000
208
208
  output:
209
209
  co_federal_deduction_addback: 10_000
@@ -304,7 +304,7 @@
304
304
  input:
305
305
  state_code: CO
306
306
  co_federal_deduction_addback_required: true
307
- filing_status: HEAD_OF_HOUSE_HOLD
307
+ filing_status: HEAD_OF_HOUSEHOLD
308
308
  taxable_income_deductions: 32_000
309
309
  output:
310
310
  co_federal_deduction_addback: 20_000
@@ -0,0 +1,23 @@
1
+ - name: Case 1, countable assets for single person.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ spm_unit_cash_assets: 15_000
6
+ output:
7
+ il_hbwd_countable_assets: 15_000
8
+
9
+ - name: Case 2, countable assets at limit.
10
+ period: 2024-01
11
+ input:
12
+ state_code: IL
13
+ spm_unit_cash_assets: 25_000
14
+ output:
15
+ il_hbwd_countable_assets: 25_000
16
+
17
+ - name: Case 3, countable assets with zero.
18
+ period: 2024-01
19
+ input:
20
+ state_code: IL
21
+ spm_unit_cash_assets: 0
22
+ output:
23
+ il_hbwd_countable_assets: 0
@@ -0,0 +1,39 @@
1
+ - name: Case 1, age eligible at 16.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ age: 16
6
+ output:
7
+ il_hbwd_age_eligible: true
8
+
9
+ - name: Case 2, age eligible at 30.
10
+ period: 2024-01
11
+ input:
12
+ state_code: IL
13
+ age: 30
14
+ output:
15
+ il_hbwd_age_eligible: true
16
+
17
+ - name: Case 3, age eligible at 64.
18
+ period: 2024-01
19
+ input:
20
+ state_code: IL
21
+ age: 64
22
+ output:
23
+ il_hbwd_age_eligible: true
24
+
25
+ - name: Case 4, age ineligible at 15.
26
+ period: 2024-01
27
+ input:
28
+ state_code: IL
29
+ age: 15
30
+ output:
31
+ il_hbwd_age_eligible: false
32
+
33
+ - name: Case 5, age ineligible at 65.
34
+ period: 2024-01
35
+ input:
36
+ state_code: IL
37
+ age: 65
38
+ output:
39
+ il_hbwd_age_eligible: false
@@ -0,0 +1,31 @@
1
+ - name: Case 1, asset eligible below limit.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ spm_unit_cash_assets: 20_000
6
+ output:
7
+ il_hbwd_asset_eligible: true
8
+
9
+ - name: Case 2, asset eligible at limit.
10
+ period: 2024-01
11
+ input:
12
+ state_code: IL
13
+ spm_unit_cash_assets: 25_000
14
+ output:
15
+ il_hbwd_asset_eligible: true
16
+
17
+ - name: Case 3, asset ineligible above limit.
18
+ period: 2024-01
19
+ input:
20
+ state_code: IL
21
+ spm_unit_cash_assets: 25_001
22
+ output:
23
+ il_hbwd_asset_eligible: false
24
+
25
+ - name: Case 4, asset eligible with zero assets.
26
+ period: 2024-01
27
+ input:
28
+ state_code: IL
29
+ spm_unit_cash_assets: 0
30
+ output:
31
+ il_hbwd_asset_eligible: true
@@ -0,0 +1,35 @@
1
+ - name: Case 1, disability eligible via SSI disability.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ is_ssi_disabled: true
6
+ social_security_disability: 0
7
+ output:
8
+ il_hbwd_disability_eligible: true
9
+
10
+ - name: Case 2, disability eligible via SSDI receipt.
11
+ period: 2024-01
12
+ input:
13
+ state_code: IL
14
+ is_ssi_disabled: false
15
+ social_security_disability: 14_400 # $1,200/month
16
+ output:
17
+ il_hbwd_disability_eligible: true
18
+
19
+ - name: Case 3, disability eligible via both.
20
+ period: 2024-01
21
+ input:
22
+ state_code: IL
23
+ is_ssi_disabled: true
24
+ social_security_disability: 14_400 # $1,200/month
25
+ output:
26
+ il_hbwd_disability_eligible: true
27
+
28
+ - name: Case 4, disability ineligible.
29
+ period: 2024-01
30
+ input:
31
+ state_code: IL
32
+ is_ssi_disabled: false
33
+ social_security_disability: 0
34
+ output:
35
+ il_hbwd_disability_eligible: false
@@ -0,0 +1,65 @@
1
+ - name: Case 1, eligible working disabled person.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ age: 35
6
+ is_ssi_disabled: true
7
+ employment_income: 30_000 # $2,500/month
8
+ spm_unit_cash_assets: 10_000
9
+ output:
10
+ il_hbwd_eligible: true
11
+
12
+ - name: Case 2, eligible SSDI recipient with job.
13
+ period: 2024-01
14
+ input:
15
+ state_code: IL
16
+ age: 50
17
+ social_security_disability: 14_400 # $1,200/month
18
+ employment_income: 21_600 # $1,800/month
19
+ spm_unit_cash_assets: 20_000
20
+ output:
21
+ il_hbwd_eligible: true
22
+
23
+ - name: Case 3, ineligible due to age.
24
+ period: 2024-01
25
+ input:
26
+ state_code: IL
27
+ age: 70
28
+ is_ssi_disabled: true
29
+ employment_income: 24_000 # $2,000/month
30
+ spm_unit_cash_assets: 5_000
31
+ output:
32
+ il_hbwd_eligible: false
33
+
34
+ - name: Case 4, ineligible due to no employment.
35
+ period: 2024-01
36
+ input:
37
+ state_code: IL
38
+ age: 40
39
+ is_ssi_disabled: true
40
+ social_security_disability: 18_000 # $1,500/month
41
+ spm_unit_cash_assets: 5_000
42
+ output:
43
+ il_hbwd_eligible: false
44
+
45
+ - name: Case 5, ineligible due to high income.
46
+ period: 2024-01
47
+ input:
48
+ state_code: IL
49
+ age: 45
50
+ is_ssi_disabled: true
51
+ employment_income: 72_000 # $6,000/month
52
+ spm_unit_cash_assets: 5_000
53
+ output:
54
+ il_hbwd_eligible: false
55
+
56
+ - name: Case 6, ineligible due to high assets.
57
+ period: 2024-01
58
+ input:
59
+ state_code: IL
60
+ age: 30
61
+ is_ssi_disabled: true
62
+ employment_income: 24_000 # $2,000/month
63
+ spm_unit_cash_assets: 30_000
64
+ output:
65
+ il_hbwd_eligible: false
@@ -0,0 +1,34 @@
1
+ - name: Case 1, employment eligible with employment income.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ employment_income: 24_000 # $2,000/month
6
+ output:
7
+ il_hbwd_employment_eligible: true
8
+
9
+ - name: Case 2, employment eligible with self-employment income.
10
+ period: 2024-01
11
+ input:
12
+ state_code: IL
13
+ self_employment_income: 18_000 # $1,500/month
14
+ output:
15
+ il_hbwd_employment_eligible: true
16
+
17
+ - name: Case 3, employment eligible with both.
18
+ period: 2024-01
19
+ input:
20
+ state_code: IL
21
+ employment_income: 12_000 # $1,000/month
22
+ self_employment_income: 6_000 # $500/month
23
+ output:
24
+ il_hbwd_employment_eligible: true
25
+
26
+ - name: Case 4, employment ineligible with no earned income.
27
+ period: 2024-01
28
+ input:
29
+ state_code: IL
30
+ employment_income: 0
31
+ self_employment_income: 0
32
+ social_security: 12_000 # $1,000/month
33
+ output:
34
+ il_hbwd_employment_eligible: false
@@ -0,0 +1,47 @@
1
+ - name: Case 1, citizen eligible.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ immigration_status: CITIZEN
6
+ output:
7
+ il_hbwd_immigration_status_eligible: true
8
+
9
+ - name: Case 2, legal permanent resident eligible.
10
+ period: 2024-01
11
+ input:
12
+ state_code: IL
13
+ immigration_status: LEGAL_PERMANENT_RESIDENT
14
+ output:
15
+ il_hbwd_immigration_status_eligible: true
16
+
17
+ - name: Case 3, refugee eligible.
18
+ period: 2024-01
19
+ input:
20
+ state_code: IL
21
+ immigration_status: REFUGEE
22
+ output:
23
+ il_hbwd_immigration_status_eligible: true
24
+
25
+ - name: Case 4, asylee eligible.
26
+ period: 2024-01
27
+ input:
28
+ state_code: IL
29
+ immigration_status: ASYLEE
30
+ output:
31
+ il_hbwd_immigration_status_eligible: true
32
+
33
+ - name: Case 5, undocumented ineligible.
34
+ period: 2024-01
35
+ input:
36
+ state_code: IL
37
+ immigration_status: UNDOCUMENTED
38
+ output:
39
+ il_hbwd_immigration_status_eligible: false
40
+
41
+ - name: Case 6, DACA ineligible.
42
+ period: 2024-01
43
+ input:
44
+ state_code: IL
45
+ immigration_status: DACA
46
+ output:
47
+ il_hbwd_immigration_status_eligible: false
@@ -0,0 +1,25 @@
1
+ - name: Case 1, income eligible single person below limit.
2
+ period: 2024-01
3
+ input:
4
+ state_code: IL
5
+ employment_income: 36_000 # $3,000/month
6
+ social_security: 12_000 # $1,000/month
7
+ output:
8
+ il_hbwd_income_eligible: true
9
+
10
+ - name: Case 2, income eligible at exactly 350% FPL for single.
11
+ period: 2024-01
12
+ input:
13
+ state_code: IL
14
+ employment_income: 52_716 # $4,393/month
15
+ output:
16
+ il_hbwd_income_eligible: true
17
+
18
+ - name: Case 3, income eligible after exemptions.
19
+ period: 2024-01
20
+ input:
21
+ state_code: IL
22
+ employment_income: 60_000 # $5,000/month
23
+ output:
24
+ il_hbwd_income_eligible: true
25
+ # Gross $5,000, after expenses and exemptions becomes eligible
@@ -0,0 +1,34 @@
1
+ - name: Case 1, HBWD person with premium.
2
+ period: 2024-01
3
+ absolute_error_margin: 0.01
4
+ input:
5
+ state_code: IL
6
+ il_hbwd_eligible: true
7
+ il_hbwd_countable_earned_income: 1_000
8
+ il_hbwd_countable_unearned_income: 1_200
9
+ output:
10
+ il_hbwd_person: -100
11
+ # Premium: $100 (earned $25 + unearned $75)
12
+ # Earned $1,000 → bracket 4 → $25
13
+ # Unearned $1,200 → bracket 4 → $75
14
+ # Benefit: -$100 (cost to individual)
15
+
16
+ - name: Case 2, HBWD person not eligible.
17
+ period: 2024-01
18
+ input:
19
+ state_code: IL
20
+ il_hbwd_eligible: false
21
+ output:
22
+ il_hbwd_person: 0
23
+ # Not eligible → no premium → no cost
24
+
25
+ - name: Case 3, HBWD person with zero premium.
26
+ period: 2024-01
27
+ input:
28
+ state_code: IL
29
+ il_hbwd_eligible: true
30
+ il_hbwd_countable_earned_income: 100
31
+ il_hbwd_countable_unearned_income: 0
32
+ output:
33
+ il_hbwd_person: 0
34
+ # Both income in first bracket → $0 premium
@@ -0,0 +1,84 @@
1
+ - name: Case 1, premium with only earned income.
2
+ period: 2024-01
3
+ absolute_error_margin: 0.01
4
+ input:
5
+ state_code: IL
6
+ il_hbwd_eligible: true
7
+ il_hbwd_countable_earned_income: 2_000
8
+ il_hbwd_countable_unearned_income: 0
9
+ output:
10
+ il_hbwd_premium: 50
11
+ # Earned $2,000 → bracket 8 (2001-2250) → $50
12
+ # Unearned $0 → bracket 0 → $0
13
+ # Total: $50
14
+
15
+ - name: Case 2, premium with earned and unearned.
16
+ period: 2024-01
17
+ absolute_error_margin: 0.01
18
+ input:
19
+ state_code: IL
20
+ il_hbwd_eligible: true
21
+ il_hbwd_countable_earned_income: 1_000
22
+ il_hbwd_countable_unearned_income: 1_200
23
+ output:
24
+ il_hbwd_premium: 100
25
+ # Earned $1,000 → bracket 4 (1001-1250) → $25
26
+ # Unearned $1,200 → bracket 4 (1001-1250) → $75
27
+ # Total: $25 + $75 = $100
28
+
29
+ - name: Case 3, premium with higher income.
30
+ period: 2024-01
31
+ absolute_error_margin: 0.01
32
+ input:
33
+ state_code: IL
34
+ il_hbwd_eligible: true
35
+ il_hbwd_countable_earned_income: 3_000
36
+ il_hbwd_countable_unearned_income: 2_000
37
+ output:
38
+ il_hbwd_premium: 225
39
+ # Earned $3,000 → bracket 12 (3001-3250) → $75
40
+ # Unearned $2,000 → bracket 8 (2001-2250) → $150
41
+ # Total: $75 + $150 = $225
42
+
43
+ - name: Case 4, premium capped at $500.
44
+ period: 2024-01
45
+ absolute_error_margin: 0.01
46
+ input:
47
+ state_code: IL
48
+ il_hbwd_eligible: true
49
+ il_hbwd_countable_earned_income: 5_000
50
+ il_hbwd_countable_unearned_income: 5_000
51
+ output:
52
+ il_hbwd_premium: 500
53
+ # Earned $5,000+ → bracket 20 → $125
54
+ # Unearned $5,000+ → bracket 20 → $375
55
+ # Uncapped: $500
56
+ # Capped: $500
57
+
58
+ - name: Case 5, no premium in first bracket.
59
+ period: 2024-01
60
+ absolute_error_margin: 0.01
61
+ input:
62
+ state_code: IL
63
+ il_hbwd_eligible: true
64
+ il_hbwd_countable_earned_income: 200
65
+ il_hbwd_countable_unearned_income: 0
66
+ output:
67
+ il_hbwd_premium: 0
68
+ # Earned $200 → bracket 0 (0-250) → $0
69
+ # Unearned $0 → bracket 0 → $0
70
+ # Total: $0
71
+
72
+ - name: Case 6, verify bracket boundary at $250.
73
+ period: 2024-01
74
+ absolute_error_margin: 0.01
75
+ input:
76
+ state_code: IL
77
+ il_hbwd_eligible: true
78
+ il_hbwd_countable_earned_income: 250
79
+ il_hbwd_countable_unearned_income: 250
80
+ output:
81
+ il_hbwd_premium: 25
82
+ # Earned $250 → bracket 1 (251-500) → $6
83
+ # Unearned $250 → bracket 1 (251-500) → $19
84
+ # Total: $6 + $19 = $25