policyengine-us 1.426.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 (325) hide show
  1. policyengine_us/parameters/calibration/gov/hhs/medicare/per_capita_cost.yaml +12 -0
  2. policyengine_us/parameters/gov/aca/state_rating_area_cost.yaml +511 -12
  3. policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/min_age.yaml +1 -1
  4. policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/age_limit.yaml +9 -0
  5. policyengine_us/parameters/gov/contrib/states/ri/ctc/young_child_boost/amount.yaml +9 -0
  6. policyengine_us/parameters/gov/contrib/states/ri/dependent_exemption/amount.yaml +2 -2
  7. policyengine_us/parameters/gov/contrib/states/ut/eitc/in_effect.yaml +9 -0
  8. policyengine_us/parameters/gov/contrib/states/ut/eitc/max_age.yaml +9 -0
  9. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/medically_needy/categories/child/child.yaml +0 -1
  10. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml +60 -51
  11. policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml +60 -51
  12. policyengine_us/parameters/gov/hhs/medicare/part_a/deductible.yaml +13 -0
  13. policyengine_us/parameters/gov/hhs/medicare/part_a/default_quarters_of_coverage.yaml +10 -0
  14. policyengine_us/parameters/gov/hhs/medicare/part_a/full_premium.yaml +13 -0
  15. policyengine_us/parameters/gov/hhs/medicare/part_a/premium_free_quarters_threshold.yaml +10 -0
  16. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium.yaml +13 -0
  17. policyengine_us/parameters/gov/hhs/medicare/part_a/reduced_premium_quarters_threshold.yaml +10 -0
  18. policyengine_us/parameters/gov/hhs/medicare/part_b/base_premium.yaml +16 -0
  19. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/head_of_household.yaml +50 -0
  20. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/joint.yaml +49 -0
  21. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/separate.yaml +30 -0
  22. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/single.yaml +50 -0
  23. policyengine_us/parameters/gov/hhs/medicare/part_b/irmaa/surviving_spouse.yaml +49 -0
  24. policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/earned.yaml +13 -0
  25. policyengine_us/parameters/gov/hhs/tanf/cash/income/sources/unearned.yaml +23 -0
  26. policyengine_us/parameters/gov/irs/credits/cdcc/eligibility/child_age.yaml +0 -1
  27. policyengine_us/parameters/gov/irs/credits/clean_vehicle/new/eligibility/min_kwh.yaml +0 -1
  28. policyengine_us/parameters/gov/irs/credits/clean_vehicle/used/eligibility/sale_price_limit.yaml +0 -1
  29. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/abolition.yaml +0 -1
  30. policyengine_us/parameters/gov/irs/credits/education/american_opportunity_credit/refundability.yaml +0 -1
  31. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/abolition.yaml +0 -1
  32. policyengine_us/parameters/gov/irs/credits/education/lifetime_learning_credit/expense_limit.yaml +0 -1
  33. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/advanced_main_air_circulating_fan.yaml +0 -1
  34. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/door.yaml +0 -1
  35. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/energy_efficient_central_air_conditioner.yaml +0 -1
  36. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  37. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/home_energy_audit.yaml +0 -1
  38. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/qualified_furnace_or_hot_water_boiler.yaml +0 -1
  39. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/roof.yaml +0 -1
  40. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/total.yaml +0 -1
  41. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/annual/window.yaml +0 -1
  42. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/total.yaml +0 -1
  43. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/cap/lifetime/window.yaml +0 -1
  44. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/in_effect.yaml +0 -1
  45. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/credits.yaml +0 -1
  46. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/qualified_expenditures/heat_pump_heat_pump_water_heater_biomass_stove_boiler.yaml +0 -1
  47. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/home_energy_audit.yaml +0 -1
  48. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/improvements.yaml +0 -1
  49. policyengine_us/parameters/gov/irs/credits/energy_efficient_home_improvement/rates/property.yaml +0 -1
  50. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/ending_rate.yaml +0 -1
  51. policyengine_us/parameters/gov/irs/credits/premium_tax_credit/phase_out/starting_rate.yaml +0 -1
  52. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/adult.yaml +0 -1
  53. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/max/dependent.yaml +0 -1
  54. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/length.yaml +0 -1
  55. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/arpa/phase_out/threshold.yaml +0 -1
  56. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/adult.yaml +0 -1
  57. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/max/child.yaml +0 -1
  58. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/rate.yaml +0 -1
  59. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/caa/phase_out/threshold.yaml +0 -1
  60. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/adult.yaml +0 -1
  61. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/max/child.yaml +0 -1
  62. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/rate.yaml +0 -1
  63. policyengine_us/parameters/gov/irs/credits/recovery_rebate_credit/cares/phase_out/threshold.yaml +0 -1
  64. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/applicable_percentage.yaml +0 -1
  65. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/elements.yaml +0 -1
  66. policyengine_us/parameters/gov/irs/credits/residential_clean_energy/fuel_cell_cap_per_kw.yaml +0 -1
  67. policyengine_us/parameters/gov/irs/deductions/standard/aged_or_blind/age_threshold.yaml +0 -1
  68. policyengine_us/parameters/gov/irs/payroll/medicare/additional/exclusion.yaml +0 -1
  69. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/in_effect.yaml +10 -0
  70. policyengine_us/parameters/gov/local/ny/mamdani_income_tax/rate.yaml +18 -0
  71. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/README.md +1 -206
  72. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/{income/all.yaml → income.yaml} +1 -1
  73. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution.yaml +70 -0
  74. policyengine_us/parameters/gov/states/ar/tax/income/rates/main/reduction.yaml +30 -0
  75. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/joint.yaml +10 -0
  76. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/amount/non_joint.yaml +10 -0
  77. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/joint.yaml +10 -0
  78. policyengine_us/parameters/gov/states/co/tax/income/credits/care_worker/income_limit/non_joint.yaml +10 -0
  79. policyengine_us/parameters/gov/states/co/tax/income/credits/refundable.yaml +10 -0
  80. policyengine_us/parameters/gov/states/ga/tax/income/credits/itemizer/amount.yaml +14 -0
  81. policyengine_us/parameters/gov/states/ga/tax/income/credits/non_refundable.yaml +9 -0
  82. policyengine_us/parameters/gov/states/hi/tax/income/alternative_tax/availability.yaml +2 -3
  83. policyengine_us/parameters/gov/states/il/hfs/README.md +1 -0
  84. policyengine_us/parameters/gov/states/il/hfs/hbwd/README.md +1 -0
  85. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/age.yaml +25 -0
  86. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/asset/limit.yaml +15 -0
  87. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/limit.yaml +15 -0
  88. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/earned.yaml +13 -0
  89. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/income/sources/unearned.yaml +25 -0
  90. policyengine_us/parameters/gov/states/il/hfs/hbwd/eligibility/qualified_noncitizen_statuses.yaml +21 -0
  91. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/earned.yaml +96 -0
  92. policyengine_us/parameters/gov/states/il/hfs/hbwd/premium/unearned.yaml +96 -0
  93. policyengine_us/parameters/gov/states/mt/tax/income/deductions/itemized/spouse_allocation_rate.yaml +13 -0
  94. policyengine_us/parameters/gov/states/pa/tax/income/credits/eitc/match.yaml +10 -0
  95. policyengine_us/parameters/gov/states/pa/tax/income/credits/refundable.yaml +6 -0
  96. policyengine_us/parameters/gov/states/va/tax/income/credits/non_refundable.yaml +1 -1
  97. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/amount.yaml +14 -0
  98. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/deductions/earned_income_disregard/percentage_disregarded.yaml +14 -0
  99. policyengine_us/parameters/gov/states/wa/dshs/tanf/income/limit.yaml +36 -0
  100. policyengine_us/parameters/gov/states/wa/dshs/tanf/maximum_family_size.yaml +14 -0
  101. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/amount.yaml +32 -0
  102. policyengine_us/parameters/gov/states/wa/dshs/tanf/payment_standard/maximum_amount.yaml +12 -0
  103. policyengine_us/parameters/gov/states/wa/dshs/tanf/resource_limit.yaml +15 -0
  104. policyengine_us/parameters/gov/territories/pr/tax/income/credits/refundable.yaml +2 -0
  105. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/adjustment_limit_basis.yaml +12 -0
  106. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/exemption_rate.yaml +13 -0
  107. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/rate.yaml +12 -0
  108. policyengine_us/parameters/gov/territories/pr/tax/income/gradual_adjustment/threshold.yaml +13 -0
  109. policyengine_us/parameters/gov/territories/pr/tax/income/regular_tax/percentage.yaml +21 -0
  110. policyengine_us/parameters/gov/territories/pr/tax/income/tax_rate/amount.yaml +35 -0
  111. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/deductions/sources.yaml +18 -0
  112. policyengine_us/parameters/gov/territories/pr/tax/income/taxable_income/exemptions/sources.yaml +15 -0
  113. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/single_parent.yaml +12 -0
  114. policyengine_us/parameters/gov/usda/snap/student/child_age_limit/two_parent.yaml +12 -0
  115. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/caring_dependent_child.yaml +1 -1
  116. policyengine_us/parameters/gov/usda/snap/work_requirements/general/age_threshold/exempted.yaml +1 -1
  117. policyengine_us/parameters/gov/usda/snap/work_requirements/general/weekly_hours_threshold.yaml +1 -1
  118. policyengine_us/parameters/simulation/disabled_programs.yaml +0 -1
  119. policyengine_us/reforms/congress/tlaib/__init__.py +4 -3
  120. policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/__init__.py +9 -0
  121. policyengine_us/reforms/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.py +237 -0
  122. policyengine_us/reforms/local/ny/__init__.py +4 -0
  123. policyengine_us/reforms/local/ny/mamdani_income_tax.py +84 -0
  124. policyengine_us/reforms/reforms.py +19 -4
  125. policyengine_us/reforms/states/ri/ctc/ri_ctc_reform.py +32 -1
  126. policyengine_us/reforms/states/ri/exemption/ri_exemption_reform.py +26 -5
  127. policyengine_us/reforms/states/ut/__init__.py +3 -0
  128. policyengine_us/reforms/states/ut/ut_refundable_eitc.py +118 -0
  129. policyengine_us/tests/policy/baseline/gov/ed/pell_grant/pell_grant_simplified_formula_applies.yaml +1 -1
  130. policyengine_us/tests/policy/baseline/gov/hhs/medicare/costs/medicare_cost.yaml +65 -0
  131. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_a_premium.yaml +35 -0
  132. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/base_part_b_premium.yaml +15 -0
  133. policyengine_us/tests/policy/baseline/gov/hhs/medicare/eligibility/income_adjusted_part_b_premium.yaml +77 -0
  134. policyengine_us/tests/policy/baseline/gov/hhs/tanf/tanf_fpg.yaml +53 -0
  135. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.yaml +68 -0
  136. policyengine_us/tests/policy/baseline/gov/irs/tax/federal_income/alternative_minimum_tax/integration.yaml +26 -0
  137. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/income_elasticity.yaml +6 -12
  138. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/labor_supply_behavioral_response.yaml +24 -2
  139. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/substitution_elasticity.yaml +35 -10
  140. policyengine_us/tests/policy/baseline/gov/ssa/ssi/integration_tests.yaml +150 -4
  141. policyengine_us/tests/policy/baseline/gov/states/ar/tax/income/integration.yaml +35 -0
  142. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/additions/federal_deduction/co_federal_deduction_addback.yaml +2 -2
  143. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.yaml +64 -0
  144. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.yaml +122 -0
  145. policyengine_us/tests/policy/baseline/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.yaml +65 -0
  146. policyengine_us/tests/policy/baseline/gov/states/ga/tax/income/credits/ga_itemizer_credit.yaml +44 -0
  147. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/alternative_tax/hi_alternative_tax_on_capital_gains_eligible.yaml +0 -8
  148. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.yaml +4 -0
  149. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.yaml +15 -0
  150. policyengine_us/tests/policy/baseline/gov/states/hi/tax/income/integration.yaml +96 -0
  151. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.yaml +23 -0
  152. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.yaml +39 -0
  153. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.yaml +31 -0
  154. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.yaml +35 -0
  155. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.yaml +65 -0
  156. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.yaml +34 -0
  157. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.yaml +47 -0
  158. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.yaml +25 -0
  159. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_person.yaml +34 -0
  160. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/il_hbwd_premium.yaml +84 -0
  161. policyengine_us/tests/policy/baseline/gov/states/il/hfs/hbwd/integration.yaml +183 -0
  162. policyengine_us/tests/policy/baseline/gov/states/ma/dta/ssp/ma_state_supplement.yaml +2 -0
  163. policyengine_us/tests/policy/baseline/gov/states/mo/tax/income/deductions/mo_federal_income_tax_deduction.yaml +2 -14
  164. 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
  165. 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
  166. 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
  167. policyengine_us/tests/policy/baseline/gov/states/nc/tax/income/deductions/nc_itemized_deductions.yaml +2 -2
  168. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.yaml +8 -8
  169. policyengine_us/tests/policy/baseline/gov/states/nj/tax/income/integation.yaml +57 -0
  170. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.yaml +29 -0
  171. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/credits/oh_cdcc.yaml +4 -4
  172. policyengine_us/tests/policy/baseline/gov/states/oh/tax/income/integration.yaml +141 -0
  173. policyengine_us/tests/policy/baseline/gov/states/pa/tax/income/credits/pa_eitc.yaml +26 -0
  174. policyengine_us/tests/policy/baseline/gov/states/ut/tax/income/credits/ss_benefits_credit/ut_ss_benefits_credit_max.yaml +5 -5
  175. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.yaml +48 -0
  176. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.yaml +65 -0
  177. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.yaml +96 -0
  178. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.yaml +70 -0
  179. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/integration.yaml +676 -0
  180. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf.yaml +102 -0
  181. policyengine_us/tests/policy/baseline/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.yaml +6 -7
  182. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.yaml +29 -0
  183. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.yaml +15 -0
  184. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi.yaml +17 -0
  185. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_agi_person.yaml +17 -0
  186. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_normal_tax.yaml +31 -0
  187. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/pr_tax_before_credits.yaml +19 -0
  188. policyengine_us/tests/policy/baseline/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.yaml +26 -0
  189. policyengine_us/tests/policy/baseline/gov/test_categorical_eligibility_vectorization.yaml +41 -0
  190. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.yaml +23 -0
  191. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml +75 -4
  192. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_parent_exception.yaml +345 -0
  193. policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/meets_snap_work_exception.yaml +47 -0
  194. policyengine_us/tests/policy/baseline/gov/usda/snap/income/federal_work_study_income_exclusion.yaml +24 -0
  195. policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_countable_earner.yaml +25 -0
  196. policyengine_us/tests/policy/baseline/gov/usda/wic/integration.yaml +181 -0
  197. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_at_nutritional_risk.yaml +33 -0
  198. policyengine_us/tests/policy/baseline/gov/usda/wic/is_wic_eligible.yaml +28 -15
  199. policyengine_us/tests/policy/baseline/household/demographic/geographic/state_group.yaml +21 -0
  200. policyengine_us/tests/policy/contrib/congress/tlaib/economic_dignity_for_all_agenda/edaa_end_child_poverty_act.yaml +198 -0
  201. policyengine_us/tests/policy/contrib/local/ny/nyc_mamdani_income_tax.yaml +51 -0
  202. policyengine_us/tests/policy/contrib/states/ri/ctc_reform_test.yaml +144 -0
  203. policyengine_us/tests/policy/contrib/states/ri/exemption_reform_test.yaml +2 -2
  204. policyengine_us/tests/policy/contrib/states/ut/ut_refundable_eitc.yaml +214 -0
  205. policyengine_us/variables/gov/ed/is_federal_work_study_participant.py +9 -0
  206. policyengine_us/variables/gov/ed/pell_grant/efc/pell_grant_simplified_formula_applies.py +1 -2
  207. policyengine_us/variables/gov/fcc/lifeline/is_lifeline_eligible.py +2 -2
  208. policyengine_us/variables/gov/hhs/head_start/early_head_start.py +2 -1
  209. policyengine_us/variables/gov/hhs/head_start/head_start.py +2 -1
  210. policyengine_us/variables/gov/hhs/head_start/is_head_start_categorically_eligible.py +1 -3
  211. policyengine_us/variables/gov/hhs/medicare/costs/medicare_cost.py +30 -0
  212. policyengine_us/variables/gov/hhs/medicare/costs/medicare_enrolled.py +14 -0
  213. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/base_part_a_premium.py +32 -0
  214. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/is_premium_free_part_a.py +22 -0
  215. policyengine_us/variables/gov/hhs/medicare/eligibility/part_a/medicare_quarters_of_coverage.py +16 -0
  216. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/base_part_b_premium.py +16 -0
  217. policyengine_us/variables/gov/hhs/medicare/eligibility/part_b/income_adjusted_part_b_premium.py +55 -0
  218. policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_earned_income.py +13 -0
  219. policyengine_us/variables/gov/hhs/tanf/cash/income/tanf_gross_unearned_income.py +13 -0
  220. policyengine_us/variables/gov/hhs/tanf/tanf_fpg.py +28 -0
  221. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/exemption/amt_exemption.py +47 -0
  222. policyengine_us/variables/gov/irs/tax/federal_income/alternative_minimum_tax/income/amt_income_less_exemptions.py +4 -22
  223. policyengine_us/variables/gov/simulation/labor_supply_response/income_elasticity.py +1 -27
  224. policyengine_us/variables/gov/simulation/labor_supply_response/substitution_elasticity.py +18 -43
  225. policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/is_ssi_spousal_deeming_applies.py +41 -0
  226. policyengine_us/variables/gov/ssa/ssi/eligibility/income/deemed/from_ineligible_spouse/ssi_income_deemed_from_ineligible_spouse.py +20 -20
  227. policyengine_us/variables/gov/ssa/ssi/ssi.py +22 -1
  228. policyengine_us/variables/gov/ssa/ssi/ssi_amount_if_eligible.py +26 -4
  229. policyengine_us/variables/gov/states/ca/cpuc/care/eligibility/ca_care_categorically_eligible.py +2 -2
  230. policyengine_us/variables/gov/states/ca/tax/income/alternative_minimum_tax/exemption/ca_amt_exemption.py +4 -2
  231. policyengine_us/variables/gov/states/ca/tax/income/ca_income_tax.py +1 -0
  232. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit.py +26 -0
  233. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible.py +27 -0
  234. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker.py +10 -0
  235. policyengine_us/variables/gov/states/co/tax/income/credits/care_worker/co_care_worker_credit_eligible_care_worker_count.py +18 -0
  236. policyengine_us/variables/gov/states/ga/tax/income/credits/ga_itemizer_credit.py +19 -0
  237. policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc.py +1 -1
  238. policyengine_us/variables/gov/states/hi/tax/income/credits/cdcc/hi_cdcc_eligible.py +14 -0
  239. policyengine_us/variables/gov/states/il/hfs/hbwd/asset/il_hbwd_countable_assets.py +34 -0
  240. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_age_eligible.py +20 -0
  241. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_asset_eligible.py +21 -0
  242. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_disability_eligible.py +20 -0
  243. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_eligible.py +33 -0
  244. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_employment_eligible.py +25 -0
  245. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_immigration_status_eligible.py +26 -0
  246. policyengine_us/variables/gov/states/il/hfs/hbwd/eligibility/il_hbwd_income_eligible.py +23 -0
  247. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd.py +17 -0
  248. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_person.py +24 -0
  249. policyengine_us/variables/gov/states/il/hfs/hbwd/il_hbwd_premium.py +23 -0
  250. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_countable_earned_income.py +24 -0
  251. policyengine_us/variables/gov/states/il/hfs/hbwd/income/earned/il_hbwd_gross_earned_income.py +16 -0
  252. policyengine_us/variables/gov/states/il/hfs/hbwd/income/il_hbwd_countable_income.py +21 -0
  253. policyengine_us/variables/gov/states/il/hfs/hbwd/income/unearned/il_hbwd_countable_unearned_income.py +16 -0
  254. policyengine_us/variables/gov/states/ma/dta/ssp/ma_state_supplement.py +1 -0
  255. policyengine_us/variables/gov/states/mt/tax/income/deductions/itemized/general/mt_itemized_deductions_indiv.py +3 -2
  256. policyengine_us/variables/gov/states/nj/tax/income/credits/cdcc/nj_cdcc.py +2 -2
  257. policyengine_us/variables/gov/states/oh/tax/income/credits/joint_filing_credit/oh_joint_filing_credit_qualifying_income.py +7 -3
  258. policyengine_us/variables/gov/states/oh/tax/income/credits/oh_cdcc.py +2 -2
  259. policyengine_us/variables/gov/states/pa/tax/income/credits/pa_eitc.py +16 -0
  260. policyengine_us/variables/gov/states/wa/dshs/tanf/benefit/wa_tanf_payment_standard.py +22 -0
  261. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_eligible.py +42 -0
  262. policyengine_us/variables/gov/states/wa/dshs/tanf/eligibility/wa_tanf_income_eligible.py +31 -0
  263. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_earned_income.py +33 -0
  264. policyengine_us/variables/gov/states/wa/dshs/tanf/income/wa_tanf_countable_income.py +16 -0
  265. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf.py +34 -0
  266. policyengine_us/variables/gov/states/wa/dshs/tanf/wa_tanf_resources_eligible.py +3 -2
  267. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_amount.py +23 -0
  268. policyengine_us/variables/gov/territories/pr/tax/income/gradual_adjustment/pr_gradual_adjustment_eligible.py +16 -0
  269. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi.py +11 -1
  270. policyengine_us/variables/gov/territories/pr/tax/income/pr_agi_person.py +11 -1
  271. policyengine_us/variables/gov/territories/pr/tax/income/pr_income_tax.py +14 -0
  272. policyengine_us/variables/gov/territories/pr/tax/income/pr_normal_tax.py +16 -0
  273. policyengine_us/variables/gov/territories/pr/tax/income/pr_regular_tax_before_credits.py +20 -0
  274. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/deductions/pr_deductions.py +13 -0
  275. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/exemptions/pr_exemptions.py +13 -0
  276. policyengine_us/variables/gov/territories/pr/tax/income/taxable_income/pr_net_taxable_income.py +17 -0
  277. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_higher_ed_student.py +17 -0
  278. policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py +47 -15
  279. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_parent_exception.py +42 -0
  280. policyengine_us/variables/gov/usda/snap/eligibility/student/meets_snap_work_exception.py +22 -0
  281. policyengine_us/variables/gov/usda/snap/income/snap_countable_earner.py +13 -2
  282. policyengine_us/variables/gov/usda/wic/is_wic_at_nutritional_risk.py +3 -10
  283. policyengine_us/variables/gov/usda/wic/is_wic_eligible.py +10 -1
  284. policyengine_us/variables/household/demographic/geographic/state_group.py +8 -5
  285. policyengine_us/variables/household/demographic/person/is_part_time_college_student.py +9 -0
  286. {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/METADATA +1 -1
  287. {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/RECORD +300 -161
  288. {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/WHEEL +1 -1
  289. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/age_limit.yaml +0 -8
  290. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/amount.yaml +0 -13
  291. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/in_effect.yaml +0 -8
  292. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/baby_bonus_act/min_birth_year.yaml +0 -8
  293. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/amount.yaml +0 -13
  294. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/in_effect.yaml +0 -8
  295. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/max_age.yaml +0 -8
  296. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/min_age.yaml +0 -8
  297. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/rate.yaml +0 -8
  298. policyengine_us/parameters/gov/contrib/congress/tlaib/income_security_package/boost_act/tax/threshold.yaml +0 -24
  299. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_multiplier_over_threshold.yaml +0 -11
  300. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/age_threshold.yaml +0 -9
  301. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/income/base.yaml +0 -11
  302. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_multiplier_over_threshold.yaml +0 -11
  303. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/age_threshold.yaml +0 -9
  304. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/all.yaml +0 -6
  305. policyengine_us/parameters/gov/simulation/labor_supply_responses/elasticities/substitution/by_position_and_decile.yaml +0 -71
  306. policyengine_us/parameters/gov/states/wa/dshs/tanf/eligibility/resources/limit.yaml +0 -11
  307. policyengine_us/reforms/congress/tlaib/income_security_package/__init__.py +0 -17
  308. policyengine_us/reforms/congress/tlaib/income_security_package/income_security_package.py +0 -402
  309. policyengine_us/tests/policy/baseline/gov/simulation/labor_supply_response/integration.yaml +0 -45
  310. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/integration.yaml +0 -154
  311. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/state_integration.yaml +0 -110
  312. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/test_individual_acts.yaml +0 -149
  313. policyengine_us/tests/policy/contrib/congress/tlaib/income_security/unit_tests.yaml +0 -272
  314. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/adult_dependent_credit/amount.yaml +0 -0
  315. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/child_benefit/age_limit.yaml +0 -0
  316. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/amount.yaml +0 -0
  317. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/max_age.yaml +0 -0
  318. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/eligibility/min_age.yaml +0 -0
  319. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/rate.yaml +0 -0
  320. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/filer_credit/phase_out/start.yaml +0 -0
  321. /policyengine_us/parameters/gov/contrib/congress/tlaib/{income_security_package → economic_dignity_for_all_agenda}/end_child_poverty_act/in_effect.yaml +0 -0
  322. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement.py +0 -0
  323. /policyengine_us/variables/gov/states/co/ssa/{state_suplement → state_supplement}/co_state_supplement_eligible.py +0 -0
  324. {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/entry_points.txt +0 -0
  325. {policyengine_us-1.426.0.dist-info → policyengine_us-1.449.6.dist-info}/licenses/LICENSE +0 -0
@@ -7,18 +7,12 @@ class substitution_elasticity(Variable):
7
7
  label = "substitution elasticity of labor supply"
8
8
  unit = "/1"
9
9
  definition_period = YEAR
10
- reference = [
11
- "https://www.cbo.gov/publication/43675",
12
- "https://www.cbo.gov/publication/43676",
13
- "https://academic.oup.com/restud/article-abstract/72/2/395/1558553",
14
- ]
15
10
 
16
11
  def formula(person, period, parameters):
17
12
  p = parameters(
18
13
  period
19
14
  ).gov.simulation.labor_supply_responses.elasticities.substitution
20
15
 
21
- # Check for global override
22
16
  if p.all != 0:
23
17
  return p.all
24
18
 
@@ -36,7 +30,6 @@ class substitution_elasticity(Variable):
36
30
  1_726e3,
37
31
  ]
38
32
 
39
- # Calculate earnings
40
33
  raw_earnings = add(
41
34
  person,
42
35
  period,
@@ -45,59 +38,41 @@ class substitution_elasticity(Variable):
45
38
  "self_employment_income_before_lsr",
46
39
  ],
47
40
  )
48
- # Use max_ to prevent negative earnings from causing issues
49
41
  earnings = max_(raw_earnings, 0)
50
- # Use searchsorted with side='right' to bin earnings into deciles
51
- # This gives decile numbers 1-10 directly without needing to add 1
52
- earnings_decile = np.searchsorted(
53
- EARNINGS_DECILE_MARKERS, earnings, side="right"
42
+ earnings_decile = (
43
+ np.searchsorted(EARNINGS_DECILE_MARKERS, earnings) + 1
54
44
  )
55
45
 
56
- # Determine if primary earner (highest earner in tax unit)
57
46
  tax_unit = person.tax_unit
47
+ # Primary earner == highest earner in tax unit
58
48
  max_earnings_in_unit = tax_unit.max(earnings)
59
49
  is_primary_earner = earnings == max_earnings_in_unit
60
50
 
61
- # Get base elasticity from position and decile
62
- base_elasticity = np.zeros_like(earnings, dtype=float)
51
+ elasticities = np.zeros_like(earnings)
63
52
 
64
53
  # Handle zero earnings first
65
54
  zero_earnings = earnings == 0
66
- base_elasticity[zero_earnings] = 0
55
+ elasticities[zero_earnings] = 0
67
56
 
68
- # For non-zero earnings, assign base elasticities
57
+ # For non-zero earnings, assign elasticities
69
58
  non_zero_earnings = earnings > 0
70
59
 
71
60
  if np.any(non_zero_earnings):
72
- # Primary earners by decile
73
- for i in range(10): # Iterate through deciles 1-10
74
- decile_num = i + 1 # Decile numbers are 1-10
61
+ # First assign primary earner elasticities by decile
62
+ decile_elasticities = [
63
+ p.by_position_and_decile.primary._children[str(i + 1)]
64
+ for i in range(10)
65
+ ]
66
+ for i in range(10):
75
67
  mask = (
76
68
  non_zero_earnings
77
- & (earnings_decile == decile_num)
69
+ & (earnings_decile == i + 1)
78
70
  & is_primary_earner
79
71
  )
80
- if np.any(mask):
81
- # Access parameter using getattr to handle both normal and test scenarios
82
- decile_param = getattr(
83
- p.by_position_and_decile.primary, str(decile_num)
84
- )
85
- # Handle both Parameter objects and raw values (when overridden in tests)
86
- param_value = (
87
- decile_param(period)
88
- if callable(decile_param)
89
- else decile_param
90
- )
91
- base_elasticity[mask] = param_value
72
+ elasticities[mask] = decile_elasticities[i]
92
73
 
93
- # Secondary earners get zero elasticity (only primary earners have non-zero values)
74
+ # Then assign secondary earner elasticity where applicable
75
+ secondary_mask = non_zero_earnings & ~is_primary_earner
76
+ elasticities[secondary_mask] = p.by_position_and_decile.secondary
94
77
 
95
- # Apply age multiplier for individuals at or above age threshold
96
- age = person("age", period.this_year)
97
- age_multiplier = where(
98
- age >= p.age_threshold,
99
- p.age_multiplier_over_threshold,
100
- 1.0, # No multiplier for under threshold
101
- )
102
-
103
- return base_elasticity * age_multiplier
78
+ return elasticities
@@ -0,0 +1,41 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class is_ssi_spousal_deeming_applies(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "SSI spousal deeming applies"
8
+ definition_period = YEAR
9
+ reference = "https://www.law.cornell.edu/cfr/text/20/416.1163"
10
+ defined_for = "is_ssi_eligible_individual"
11
+ documentation = """
12
+ Returns True when spousal deeming applies according to 20 CFR §416.1163.
13
+
14
+ Spousal deeming applies when:
15
+ 1. Person is an eligible individual (not part of an eligible couple)
16
+ 2. Spouse is ineligible (not aged/blind/disabled)
17
+ 3. Spouse's leftover income (after child allocations) exceeds the difference
18
+ between couple FBR and individual FBR
19
+
20
+ When deeming applies, the benefit calculation uses the couple FBR instead
21
+ of the individual FBR, recognizing that two people have higher expenses.
22
+ """
23
+
24
+ def formula(person, period, parameters):
25
+ # Get spouse's deemed income (after child allocations)
26
+ spouse_deemed_income = add(
27
+ person,
28
+ period,
29
+ [
30
+ "ssi_earned_income_deemed_from_ineligible_spouse",
31
+ "ssi_unearned_income_deemed_from_ineligible_spouse",
32
+ ],
33
+ )
34
+
35
+ # Compare to FBR differential (couple rate - individual rate)
36
+ p = parameters(period).gov.ssa.ssi.amount
37
+ diff = (p.couple - p.individual) * MONTHS_IN_YEAR
38
+
39
+ # Deeming applies when spouse's deemed income exceeds the differential
40
+ # Note: regulation says "not more than" means ≤, so we use > for deeming
41
+ return spouse_deemed_income > diff
@@ -22,37 +22,37 @@ class ssi_income_deemed_from_ineligible_spouse(Variable):
22
22
  unit = USD
23
23
 
24
24
  def formula(person, period, parameters):
25
- # 1. Sum leftover spouse earned/unearned (post-child allocations).
25
+ # 1. Check if spousal deeming applies (avoids duplicating threshold logic)
26
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
27
+
28
+ # 2. If deeming applies, calculate deemed amount using "difference" approach:
29
+ # (couple combined countable) - (individual alone countable)
30
+
31
+ # Get spouse's leftover income (post-child allocations)
26
32
  spouse_earned = person(
27
33
  "ssi_earned_income_deemed_from_ineligible_spouse", period
28
34
  )
29
35
  spouse_unearned = person(
30
36
  "ssi_unearned_income_deemed_from_ineligible_spouse", period
31
37
  )
32
- leftover_spouse = spouse_earned + spouse_unearned
33
-
34
- # 2. Compare leftover to FBR difference
35
- p = parameters(period).gov.ssa.ssi.amount
36
- diff = (p.couple - p.individual) * MONTHS_IN_YEAR
37
- if_leftover_exceeds = leftover_spouse > diff
38
-
39
- # 3. If leftover <= diff => no deeming
40
- # If leftover > diff => difference of incomes approach
41
- # (couple combined) - (individual alone).
42
- # (a) individual's own income
43
- indiv_earned = person("ssi_earned_income", period)
44
- indiv_unearned = person("ssi_unearned_income", period)
38
+
39
+ # Get individual's own income
40
+ individual_earned = person("ssi_earned_income", period)
41
+ individual_unearned = person("ssi_unearned_income", period)
42
+
43
+ # Calculate individual's countable income (alone)
45
44
  alone_countable = _apply_ssi_exclusions(
46
- indiv_earned, indiv_unearned, parameters, period
45
+ individual_earned, individual_unearned, parameters, period
47
46
  )
48
47
 
49
- # (b) couple combined income
48
+ # Calculate couple's combined countable income
50
49
  couple_countable = _apply_ssi_exclusions(
51
- indiv_earned + spouse_earned,
52
- indiv_unearned + spouse_unearned,
50
+ individual_earned + spouse_earned,
51
+ individual_unearned + spouse_unearned,
53
52
  parameters,
54
53
  period,
55
54
  )
56
55
 
57
- deemed_if_exceeds = max_(0, couple_countable - alone_countable)
58
- return if_leftover_exceeds * deemed_if_exceeds
56
+ # Deemed amount is the difference (only when deeming applies)
57
+ deemed_amount = max_(0, couple_countable - alone_countable)
58
+ return deeming_applies * deemed_amount
@@ -13,4 +13,25 @@ class ssi(Variable):
13
13
  def formula(person, period, parameters):
14
14
  if parameters(period).gov.ssa.ssi.abolish_ssi:
15
15
  return 0
16
- return max_(0, person("uncapped_ssi", period))
16
+
17
+ uncapped = person("uncapped_ssi", period)
18
+
19
+ # Apply floor: SSI cannot be negative
20
+ benefit = max_(0, uncapped)
21
+
22
+ # Apply cap when spousal deeming: cannot exceed individual FBR
23
+ # per 20 CFR §416.1163
24
+ # This cap is necessary when spouse's gross income is just above $483:
25
+ # - Deeming applies (uses couple FBR)
26
+ # - After exclusions, countable may be low
27
+ # - Benefit could exceed individual FBR without this cap
28
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
29
+ p = parameters(period).gov.ssa.ssi.amount
30
+ individual_max = p.individual * MONTHS_IN_YEAR
31
+ capped_benefit = min_(benefit, individual_max)
32
+
33
+ return where(
34
+ deeming_applies,
35
+ capped_benefit,
36
+ benefit,
37
+ )
@@ -12,12 +12,34 @@ class ssi_amount_if_eligible(Variable):
12
12
  def formula(person, period, parameters):
13
13
  p = parameters(period).gov.ssa.ssi.amount
14
14
  is_dependent = person("is_tax_unit_dependent", period)
15
+
16
+ # Three scenarios for adults:
17
+ # 1. Both spouses eligible (joint claim) → couple rate / 2
18
+ # 2. One eligible, no deeming → individual rate
19
+ # 3. One eligible, deeming applies → couple rate (capped in ssi)
20
+ #
21
+ # Note: In scenario 3, deeming applies when spouse's GROSS income > $483.
22
+ # Income exclusions are applied to the COMBINED income afterwards.
23
+ # This means countable income can be much lower than $483, and the
24
+ # benefit can exceed individual FBR, requiring the cap in ssi.
25
+
26
+ is_joint_claim = person("ssi_claim_is_joint", period)
27
+ deeming_applies = person("is_ssi_spousal_deeming_applies", period)
28
+
29
+ # Determine FBR to use based on scenario
30
+ individual_or_deeming_amount = where(
31
+ deeming_applies,
32
+ p.couple, # Scenario 3: Deeming applies - use couple rate!
33
+ p.individual, # Scenario 2: No deeming
34
+ )
35
+
15
36
  head_or_spouse_amount = where(
16
- person("ssi_claim_is_joint", period),
17
- p.couple / 2,
18
- p.individual,
37
+ is_joint_claim,
38
+ p.couple / 2, # Scenario 1: Both eligible
39
+ individual_or_deeming_amount,
19
40
  )
20
- # Adults amount is based on whether it is a joint claim
41
+
42
+ # Adults amount is based on scenario (see above)
21
43
  # Dependents always use individual amount.
22
44
  ssi_per_month = where(
23
45
  is_dependent, p.individual, head_or_spouse_amount
@@ -17,6 +17,6 @@ class ca_care_categorically_eligible(Variable):
17
17
  tribal_lifeline_programs = add(household, period, p.tribal_categorical)
18
18
  return np.where(
19
19
  is_on_tribal_land,
20
- np.any(tribal_lifeline_programs),
21
- np.any(non_tribal_lifeline_programs),
20
+ tribal_lifeline_programs > 0,
21
+ non_tribal_lifeline_programs > 0,
22
22
  )
@@ -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
  ]
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Colorado Care Worker Tax Credit"
8
+ defined_for = "co_care_worker_credit_eligible"
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.co.tax.income.credits.care_worker
15
+ joint = tax_unit("tax_unit_is_joint", period)
16
+ eligible_care_worker_count = tax_unit(
17
+ "co_care_worker_credit_eligible_care_worker_count", period
18
+ )
19
+ joint_with_two_eligible_care_workers = joint & (
20
+ eligible_care_worker_count == 2
21
+ )
22
+ return where(
23
+ joint_with_two_eligible_care_workers,
24
+ p.amount.joint,
25
+ p.amount.non_joint,
26
+ )
@@ -0,0 +1,27 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Colorado Care Worker Tax Credit eligible"
8
+ defined_for = StateCode.CO
9
+ unit = USD
10
+ definition_period = YEAR
11
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ p = parameters(period).gov.states.co.tax.income.credits.care_worker
15
+ joint = tax_unit("tax_unit_is_joint", period)
16
+ agi = tax_unit("adjusted_gross_income", period)
17
+ income_limit = where(
18
+ joint, p.income_limit.joint, p.income_limit.non_joint
19
+ )
20
+ income_eligible = agi <= income_limit
21
+ eligible_care_worker_present = (
22
+ tax_unit(
23
+ "co_care_worker_credit_eligible_care_worker_count", period
24
+ )
25
+ > 0
26
+ )
27
+ return income_eligible & eligible_care_worker_present
@@ -0,0 +1,10 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible_care_worker(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Eligible Care Worker for the Colorado Care Worker Tax Credit"
8
+ defined_for = StateCode.CO
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
@@ -0,0 +1,18 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class co_care_worker_credit_eligible_care_worker_count(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Number of eligible Care Workers for the Colorado Care Worker Tax Credit"
8
+ defined_for = StateCode.CO
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/colorado/title-39/specific-taxes/income-tax/article-22/part-5/section-39-22-566/"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ person = tax_unit.members
14
+ care_worker = person(
15
+ "co_care_worker_credit_eligible_care_worker", period
16
+ )
17
+ head_or_spouse = person("is_tax_unit_head_or_spouse", period)
18
+ return tax_unit.sum(care_worker & head_or_spouse)
@@ -0,0 +1,19 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class ga_itemizer_credit(Variable):
5
+ value_type = float
6
+ entity = TaxUnit
7
+ label = "Georgia itemizer tax credit"
8
+ unit = USD
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/georgia/2022/title-48/chapter-7/article-2/section-48-7-29-23/"
11
+ defined_for = StateCode.GA
12
+
13
+ def formula(tax_unit, period, parameters):
14
+ # Full-year and part-year residents who itemize their deductions
15
+ # are entitled to a credit up to $300 per taxpayer
16
+ itemizes = tax_unit("tax_unit_itemizes", period)
17
+ taxpayer_count = tax_unit("head_spouse_count", period)
18
+ p = parameters(period).gov.states.ga.tax.income.credits.itemizer
19
+ return where(itemizes, p.amount * taxpayer_count, 0)
@@ -5,7 +5,7 @@ class hi_cdcc(Variable):
5
5
  value_type = float
6
6
  entity = TaxUnit
7
7
  label = "Hawaii child and dependent care credit"
8
- defined_for = StateCode.HI
8
+ defined_for = "hi_cdcc_eligible"
9
9
  unit = USD
10
10
  definition_period = YEAR
11
11
  reference = "https://files.hawaii.gov/tax/legal/hrs/hrs_235.pdf#page=40"
@@ -0,0 +1,14 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class hi_cdcc_eligible(Variable):
5
+ value_type = bool
6
+ entity = TaxUnit
7
+ label = "Hawaii child and dependent care credit eligible"
8
+ defined_for = StateCode.HI
9
+ definition_period = YEAR
10
+ reference = "https://law.justia.com/codes/hawaii/title-14/chapter-235/section-235-55-6/"
11
+
12
+ def formula(tax_unit, period, parameters):
13
+ count_cdcc_eligible = tax_unit("count_cdcc_eligible", period)
14
+ return count_cdcc_eligible > 0
@@ -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
@@ -0,0 +1,33 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities 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
+ "https://hfs.illinois.gov/medicalprograms/hbwd.html",
13
+ )
14
+ defined_for = StateCode.IL
15
+
16
+ def formula(person, period, parameters):
17
+ age_eligible = person("il_hbwd_age_eligible", period)
18
+ disability_eligible = person("il_hbwd_disability_eligible", period)
19
+ employment_eligible = person("il_hbwd_employment_eligible", period)
20
+ income_eligible = person("il_hbwd_income_eligible", period)
21
+ asset_eligible = person("il_hbwd_asset_eligible", period)
22
+ immigration_eligible = person(
23
+ "il_hbwd_immigration_status_eligible", period
24
+ )
25
+
26
+ return (
27
+ age_eligible
28
+ & disability_eligible
29
+ & employment_eligible
30
+ & income_eligible
31
+ & asset_eligible
32
+ & immigration_eligible
33
+ )
@@ -0,0 +1,25 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_employment_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities employment 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
+ # Per § 120.510(l)(1), employment is verified by current payment
17
+ # under FICA or IMRF. We use earned income as a proxy for
18
+ # employment with FICA contributions.
19
+ #
20
+ # Not currently modeled:
21
+ # - § 120.510(l)(2)(A): Future employment exception (60 days)
22
+ # - § 120.510(l)(2)(B): Medical inability grace period (90 days)
23
+ # - § 120.510(l)(2)(C): Job loss grace period (30 days)
24
+ earned_income = person("il_hbwd_gross_earned_income", period)
25
+ return earned_income > 0
@@ -0,0 +1,26 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_immigration_status_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities immigration status eligible"
8
+ definition_period = MONTH
9
+ reference = (
10
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.310",
11
+ "https://www.law.cornell.edu/regulations/illinois/Ill-Admin-Code-tit-89-SS-120.510",
12
+ )
13
+ defined_for = StateCode.IL
14
+
15
+ def formula(person, period, parameters):
16
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
17
+ immigration_status = person("immigration_status", period)
18
+ is_citizen = (
19
+ immigration_status == immigration_status.possible_values.CITIZEN
20
+ )
21
+ immigration_status_str = immigration_status.decode_to_str()
22
+ has_qualifying_status = np.isin(
23
+ immigration_status_str,
24
+ p.qualified_noncitizen_statuses,
25
+ )
26
+ return has_qualifying_status | is_citizen
@@ -0,0 +1,23 @@
1
+ from policyengine_us.model_api import *
2
+
3
+
4
+ class il_hbwd_income_eligible(Variable):
5
+ value_type = bool
6
+ entity = Person
7
+ label = "Illinois Health Benefits for Workers with Disabilities income 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
+ p = parameters(period).gov.states.il.hfs.hbwd.eligibility
17
+ # Income limit is 350% of FPL
18
+ fpg = person.spm_unit("spm_unit_fpg", period)
19
+ income_limit = fpg * p.income.limit
20
+ # Check household countable income against limit
21
+ # Per § 120.510(f), counts individual + spouse income
22
+ countable_income = person.spm_unit("il_hbwd_countable_income", period)
23
+ return countable_income <= income_limit