diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..f30df143d57 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + changed: + - Wire up all 39 state TANF programs, add takeup support, and remove tanf_reported short-circuit. diff --git a/policyengine_us/parameters/gov/states/co/ccap/income/countable_income/sources.yaml b/policyengine_us/parameters/gov/states/co/ccap/income/countable_income/sources.yaml new file mode 100644 index 00000000000..e8c73e3eca8 --- /dev/null +++ b/policyengine_us/parameters/gov/states/co/ccap/income/countable_income/sources.yaml @@ -0,0 +1,31 @@ +description: Colorado counts these income sources as countable income under the Child Care Assistance Program. +values: + 2020-01-01: + # Earned income + - employment_income + - self_employment_income + - farm_income + # Unearned income + - social_security + - pension_income + - retirement_distributions + - military_retirement_pay + - unemployment_compensation + - workers_compensation + - child_support_received + - alimony_income + - interest_income + - dividend_income + - rental_income + - veterans_benefits + - disability_benefits + - capital_gains + - gi_cash_assistance + +metadata: + unit: list + period: year + label: Colorado CCAP countable income sources + reference: + - title: 8 CCR 1403-1 Section 7.105 + href: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=11042&fileName=8%20CCR%201403-1#page=22 diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/integration.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/integration.yaml index 23bb22cf9d6..2d2e71881c2 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/integration.yaml @@ -22,42 +22,25 @@ # CO TANF will be calculated - just check it's positive tanf: 6_540 # Actual CO TANF for family of 4 with low income -- name: Illinois family with reported TANF +- name: Takeup set to false zeroes TANF for eligible household period: 2023 input: people: parent: age: 30 - tanf_reported: 300 * 12 + employment_income: 500 * 12 child: age: 10 spm_units: spm_unit: members: [parent, child] + takes_up_tanf_if_eligible: false households: household: members: [parent, child] - state_code_str: IL - output: - tanf: 300 * 12 # Uses reported value - -- name: Florida family gets no TANF - period: 2023 - input: - people: - parent: - age: 30 - child: - age: 5 - spm_units: - spm_unit: - members: [parent, child] - households: - household: - members: [parent, child] - state_code_str: FL + state_code_str: CO output: - tanf: 0 # FL not implemented + tanf: 0 - name: DC family with no income period: 2023 diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/tanf.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/tanf.yaml index 6c77a72023f..abeed22e8a7 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/tanf.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/tanf/cash/tanf.yaml @@ -1,28 +1,17 @@ -# Unit tests for tanf variable - testing only direct inputs +# Unit tests for tanf variable - name: TANF abolition parameter returns zero period: 2022 input: gov.hhs.tanf.abolish_tanf: true - tanf_reported: 500 ca_tanf: 300 co_tanf: 200 output: tanf: 0 -- name: TANF reported is used when positive +- name: State TANF values are summed period: 2022 input: - tanf_reported: 200 - ca_tanf: 100 - co_tanf: 50 - output: - tanf: 200 - -- name: State TANF values are summed when no reported value - period: 2022 - input: - tanf_reported: 0 ca_tanf: 150 co_tanf: 100 dc_tanf: 75 @@ -30,10 +19,9 @@ output: tanf: 450 -- name: Zero TANF when no state programs and no reported value +- name: Zero TANF when no state programs calculate a benefit period: 2022 input: - tanf_reported: 0 ca_tanf: 0 co_tanf: 0 dc_tanf: 0 @@ -41,10 +29,18 @@ output: tanf: 0 -- name: Only positive reported TANF overrides state values +- name: Takeup set to false zeroes out TANF + period: 2022 + input: + takes_up_tanf_if_eligible: false + ca_tanf: 500 + ny_tanf: 300 + output: + tanf: 0 + +- name: Takeup defaults to true period: 2022 input: - tanf_reported: 0 ca_tanf: 100 ny_tanf: 200 output: diff --git a/policyengine_us/tests/policy/baseline/gov/states/ak/dpa/atap/ak_atap_childcare_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/ak/dpa/atap/ak_atap_childcare_deduction.yaml index 5e53880104e..c64711a08e1 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ak/dpa/atap/ak_atap_childcare_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ak/dpa/atap/ak_atap_childcare_deduction.yaml @@ -206,7 +206,7 @@ # Child age 1: cap = $200/month # Child age 4: cap = $175/month # Total max disregard = $200 + $175 = $375 - # Monthly expenses = $3,600 / 12 = $300 + # Monthly expenses = $3_600 / 12 = $300 # Disregard = min($300, $375) = $300 (expenses below cap) ak_atap_childcare_deduction: 300 diff --git a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf.yaml b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf.yaml index 55f3c7caca1..40b6b156cac 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf.yaml @@ -12,13 +12,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -43,13 +43,13 @@ employment_income_before_lsr: 3_600 # $300/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -72,13 +72,13 @@ employment_income_before_lsr: 24_000 # $2,000/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -100,6 +100,7 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -108,7 +109,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 1_000 - housing_cost: 600 tax_units: tax_unit: members: [person1, person2, person3] @@ -134,13 +134,13 @@ child_support_received: 1_200 # $100/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -170,7 +170,6 @@ spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 0 tax_units: tax_unit: members: [person1, person2] @@ -202,7 +201,6 @@ spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 0 # A2 lower standard tax_units: tax_unit: members: [person1, person2] diff --git a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_eligible.yaml index aa4972efb8d..c102917fa5a 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_eligible.yaml @@ -11,13 +11,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -36,11 +36,11 @@ age: 30 employment_income_before_lsr: 0 is_tax_unit_head: true + pre_subsidy_rent: 6_000 spm_units: spm_unit: members: [person1] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1] @@ -61,13 +61,13 @@ employment_income_before_lsr: 24_000 # $2,000/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -91,13 +91,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 3_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -118,11 +118,11 @@ employment_income_before_lsr: 0 is_tax_unit_head: true is_pregnant: true + pre_subsidy_rent: 4_800 spm_units: spm_unit: members: [person1] spm_unit_assets: 500 - housing_cost: 400 tax_units: tax_unit: members: [person1] @@ -143,6 +143,7 @@ employment_income_before_lsr: 3_600 # $300/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -151,7 +152,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 1_500 - housing_cost: 600 tax_units: tax_unit: members: [person1, person2, person3] @@ -176,6 +176,7 @@ is_tax_unit_head: true own_children_in_household: 1 immigration_status: UNDOCUMENTED + pre_subsidy_rent: 6_000 person2: age: 5 immigration_status: UNDOCUMENTED @@ -183,7 +184,6 @@ spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -205,13 +205,13 @@ is_tax_unit_head: true own_children_in_household: 1 immigration_status: LEGAL_PERMANENT_RESIDENT + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -232,13 +232,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 2_000 # Exactly at $2,000 limit - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -259,13 +259,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 2_001 # $1 over limit - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] diff --git a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_income_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_income_eligible.yaml index 8f442513d20..65c74b73650 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_income_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_income_eligible.yaml @@ -12,12 +12,12 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -38,12 +38,12 @@ employment_income_before_lsr: 3_600 # $300/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -68,12 +68,12 @@ employment_income_before_lsr: 9_600 # $800/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -101,7 +101,6 @@ spm_units: spm_unit: members: [person1, person2] - housing_cost: 0 tax_units: tax_unit: members: [person1, person2] @@ -125,6 +124,7 @@ child_support_received: 600 # $50/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -132,7 +132,6 @@ spm_units: spm_unit: members: [person1, person2, person3] - housing_cost: 600 tax_units: tax_unit: members: [person1, person2, person3] diff --git a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_payment_standard.yaml b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_payment_standard.yaml index 690c678035f..95d6d85d812 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_payment_standard.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/az_tanf_payment_standard.yaml @@ -10,12 +10,12 @@ people: person1: age: 30 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] - housing_cost: 500 # $500/month rent households: household: members: [person1, person2] @@ -39,7 +39,6 @@ spm_units: spm_unit: members: [person1, person2] - housing_cost: 0 households: household: members: [person1, person2] @@ -58,6 +57,7 @@ people: person1: age: 30 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -65,7 +65,6 @@ spm_units: spm_unit: members: [person1, person2, person3] - housing_cost: 600 households: household: members: [person1, person2, person3] @@ -91,7 +90,6 @@ spm_units: spm_unit: members: [person1, person2, person3] - housing_cost: 0 households: household: members: [person1, person2, person3] @@ -110,6 +108,7 @@ people: person1: age: 30 + pre_subsidy_rent: 8_400 person2: age: 5 person3: @@ -119,7 +118,6 @@ spm_units: spm_unit: members: [person1, person2, person3, person4] - housing_cost: 700 households: household: members: [person1, person2, person3, person4] @@ -138,6 +136,7 @@ people: person1: age: 30 + pre_subsidy_rent: 9_600 person2: age: 28 person3: @@ -149,7 +148,6 @@ spm_units: spm_unit: members: [person1, person2, person3, person4, person5] - housing_cost: 800 households: household: members: [person1, person2, person3, person4, person5] diff --git a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/integration.yaml index 0fec6153a97..c44feb91867 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/az/hhs/tanf/integration.yaml @@ -20,6 +20,7 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -28,7 +29,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 1_000 - housing_cost: 600 tax_units: tax_unit: members: [person1, person2, person3] @@ -66,6 +66,7 @@ employment_income_before_lsr: 6_000 # $500/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_600 person2: age: 4 person3: @@ -74,7 +75,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 500 - housing_cost: 550 tax_units: tax_unit: members: [person1, person2, person3] @@ -110,6 +110,7 @@ employment_income_before_lsr: 6_000 # $500/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 4_800 person2: age: 1 is_child: true @@ -117,7 +118,6 @@ spm_unit: members: [person1, person2] spm_unit_assets: 800 - housing_cost: 400 childcare_expenses: 3_600 # $300/month annual tax_units: tax_unit: @@ -160,13 +160,13 @@ employment_income_before_lsr: 9_600 # $800/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 7 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_200 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -200,13 +200,13 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 6_000 person2: age: 5 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 3_000 # Exceeds $2,000 limit - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -232,13 +232,13 @@ child_support_received: 1_200 # $100/month annual unearned is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 5_400 person2: age: 4 spm_units: spm_unit: members: [person1, person2] spm_unit_assets: 1_000 - housing_cost: 450 tax_units: tax_unit: members: [person1, person2] @@ -276,6 +276,7 @@ employment_income_before_lsr: 4_800 # $400/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 9_600 person2: age: 36 own_children_in_household: 1 @@ -289,7 +290,6 @@ spm_unit: members: [person1, person2, person3, person4, person5] spm_unit_assets: 1_500 - housing_cost: 800 tax_units: tax_unit: members: [person1, person2, person3, person4, person5] @@ -328,6 +328,7 @@ employment_income_before_lsr: 6_000 # $500/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 8_400 person2: age: 28 employment_income_before_lsr: 4_800 # $400/month annual @@ -342,7 +343,6 @@ spm_unit: members: [person1, person2, person3, person4] spm_unit_assets: 1_200 - housing_cost: 700 childcare_expenses: 6_000 # $500/month annual tax_units: tax_unit: @@ -395,7 +395,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 500 - housing_cost: 0 # No shelter costs tax_units: tax_unit: members: [person1, person2, person3] @@ -435,6 +434,7 @@ employment_income_before_lsr: 0 is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 7_200 person2: age: 5 person3: @@ -443,7 +443,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_assets: 1_000 - housing_cost: 600 tax_units: tax_unit: members: [person1, person2, person3] @@ -480,6 +479,7 @@ employment_income_before_lsr: 3_600 # $300/month annual is_tax_unit_head: true own_children_in_household: 0 # Not the parent + pre_subsidy_rent: 6_000 person2: age: 8 is_child: true @@ -487,7 +487,6 @@ spm_unit: members: [person1, person2] spm_unit_assets: 1_500 - housing_cost: 500 tax_units: tax_unit: members: [person1, person2] @@ -529,6 +528,7 @@ employment_income_before_lsr: 3_600 # $300/month annual is_tax_unit_head: true own_children_in_household: 1 + pre_subsidy_rent: 10_800 person2: age: 38 own_children_in_household: 1 @@ -544,7 +544,6 @@ spm_unit: members: [person1, person2, person3, person4, person5, person6] spm_unit_assets: 1_800 - housing_cost: 900 tax_units: tax_unit: members: [person1, person2, person3, person4, person5, person6] diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_add_on_parent_fee.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_add_on_parent_fee.yaml index 2d04b5dfb35..292250f580c 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_add_on_parent_fee.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_add_on_parent_fee.yaml @@ -3,7 +3,7 @@ input: co_ccap_eligible_children: 1 co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 output: co_ccap_add_on_parent_fee: 2023-01: 0 @@ -13,7 +13,7 @@ input: co_ccap_eligible_children: 1 co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 output: co_ccap_add_on_parent_fee: 2023-01: 0 @@ -23,7 +23,7 @@ input: co_ccap_eligible_children: 2 co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 output: co_ccap_add_on_parent_fee: 2023-01: 0 @@ -33,7 +33,7 @@ input: co_ccap_eligible_children: 2 co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 output: co_ccap_add_on_parent_fee: 2023-01: 15 @@ -43,7 +43,7 @@ input: co_ccap_eligible_children: 1 co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 output: co_ccap_add_on_parent_fee: 2022-12: 0 @@ -53,7 +53,7 @@ input: co_ccap_eligible_children: 1 co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 output: co_ccap_add_on_parent_fee: 2022-12: 0 @@ -63,7 +63,7 @@ input: co_ccap_eligible_children: 2 co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 output: co_ccap_add_on_parent_fee: 2022-12: 0 @@ -73,7 +73,7 @@ input: co_ccap_eligible_children: 2 co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 output: co_ccap_add_on_parent_fee: 2022-12: 15 diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_base_parent_fee.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_base_parent_fee.yaml index 9e19a83fd8c..6db227e1238 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_base_parent_fee.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/co_ccap_base_parent_fee.yaml @@ -2,7 +2,7 @@ period: 2023 input: co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 state_code: CO output: co_ccap_base_parent_fee: @@ -12,7 +12,7 @@ period: 2023 input: co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 state_code: CO output: co_ccap_base_parent_fee: @@ -22,7 +22,7 @@ period: 2022 input: co_ccap_countable_income: 60_000 - snap_fpg: 120_000 + spm_unit_fpg: 120_000 state_code: CO output: co_ccap_base_parent_fee: @@ -32,7 +32,7 @@ period: 2022 input: co_ccap_countable_income: 80_000 - snap_fpg: 40_000 + spm_unit_fpg: 40_000 state_code: CO output: co_ccap_base_parent_fee: diff --git a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/entry/co_ccap_fpg_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/entry/co_ccap_fpg_eligible.yaml index 307fc73d60e..cea84cdfad1 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/co/ccap/entry/co_ccap_fpg_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/co/ccap/entry/co_ccap_fpg_eligible.yaml @@ -4,7 +4,7 @@ state_code_str: CO co_ccap_countable_income: 2.3 county_str: ADAMS_COUNTY_CO - snap_fpg: 1 + spm_unit_fpg: 12 output: co_ccap_fpg_eligible: true @@ -14,7 +14,7 @@ state_code_str: CO co_ccap_countable_income: 2.3 county_str: BACA_COUNTY_CO - snap_fpg: 1 + spm_unit_fpg: 12 output: co_ccap_fpg_eligible: false @@ -24,6 +24,6 @@ state_code_str: MN co_ccap_countable_income: 0 county_str: HENNEPIN_COUNTY_MN - snap_fpg: 1 + spm_unit_fpg: 12 output: co_ccap_fpg_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/dc/dhs/tanf/income/dc_tanf_childcare_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/dc/dhs/tanf/income/dc_tanf_childcare_deduction.yaml index c982ad8f44b..804e9243951 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/dc/dhs/tanf/income/dc_tanf_childcare_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/dc/dhs/tanf/income/dc_tanf_childcare_deduction.yaml @@ -13,7 +13,7 @@ input: state_code: DC is_tax_unit_dependent: true - monthly_age: 1 + monthly_age: 1 childcare_expenses: 250*12 output: dc_tanf_childcare_deduction: 200 @@ -23,7 +23,7 @@ input: state_code: DC is_tax_unit_dependent: true - monthly_age: 15 + monthly_age: 15 childcare_expenses: 250*12 output: dc_tanf_childcare_deduction: 175 @@ -33,8 +33,8 @@ input: state_code: DC is_tax_unit_dependent: false - monthly_age: 15 - childcare_expenses: 250*12 + monthly_age: 15 + childcare_expenses: 250*12 output: dc_tanf_childcare_deduction: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca.yaml index 6bea0d4964e..652153c950d 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca.yaml @@ -12,7 +12,7 @@ person1: age: 30 social_security: 2_760 # $230/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -35,7 +35,7 @@ person1: age: 30 social_security: 2_880 # $240/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -57,7 +57,7 @@ people: person1: age: 35 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 33 person3: @@ -102,7 +102,7 @@ person1: age: 30 social_security: 2_892 # $241/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -125,7 +125,7 @@ person1: age: 30 social_security: 3_600 # $300/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_eligible.yaml index 9e8770f4316..24ddfe0328b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_eligible.yaml @@ -8,7 +8,7 @@ people: person1: age: 30 - rent: 12_000 # $1,000/month + pre_subsidy_rent: 12_000 # $1,000/month person2: age: 10 spm_units: @@ -30,7 +30,7 @@ person1: age: 30 employment_income_before_lsr: 12_000 # $1,000/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -53,7 +53,7 @@ person1: age: 30 employment_income_before_lsr: 48_000 # $4,000/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -73,7 +73,7 @@ people: person1: age: 30 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -96,7 +96,7 @@ person1: age: 30 employment_income_before_lsr: 6_000 # $500/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -118,7 +118,7 @@ person1: age: 30 employment_income_before_lsr: 12_000 # $1,000/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 person3: @@ -144,7 +144,7 @@ people: person1: age: 30 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 28 spm_units: diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_net_income_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_net_income_eligible.yaml index 0981301af24..7b1bb940fda 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_net_income_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_net_income_eligible.yaml @@ -10,7 +10,7 @@ people: person1: age: 30 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -30,7 +30,7 @@ person1: age: 30 social_security: 2_880 # $240/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -50,7 +50,7 @@ person1: age: 30 social_security: 2_892 # $241/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -70,7 +70,7 @@ person1: age: 30 social_security: 2_904 # $242/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_payment_standard.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_payment_standard.yaml index 795a4cd6031..3a37cf87049 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_payment_standard.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/fl_tca_payment_standard.yaml @@ -6,7 +6,7 @@ period: 2024-01 input: spm_unit_size: 1 - housing_cost: 0 + pre_subsidy_rent: 0 state_code: FL output: fl_tca_payment_standard: 95 @@ -15,7 +15,7 @@ period: 2024-01 input: spm_unit_size: 1 - housing_cost: 300 # $25/month + pre_subsidy_rent: 300 # $25/month state_code: FL output: fl_tca_payment_standard: 153 @@ -24,7 +24,7 @@ period: 2024-01 input: spm_unit_size: 1 - housing_cost: 12_000 + pre_subsidy_rent: 12_000 state_code: FL output: fl_tca_payment_standard: 180 @@ -33,7 +33,7 @@ period: 2024-01 input: spm_unit_size: 2 - housing_cost: 0 + pre_subsidy_rent: 0 state_code: FL output: fl_tca_payment_standard: 158 @@ -42,7 +42,7 @@ period: 2024-01 input: spm_unit_size: 2 - housing_cost: 600 # $50/month (boundary) + pre_subsidy_rent: 600 # $50/month (boundary) state_code: FL output: fl_tca_payment_standard: 205 @@ -51,7 +51,7 @@ period: 2024-01 input: spm_unit_size: 2 - housing_cost: 612 # $51/month (just above boundary) + pre_subsidy_rent: 612 # $51/month (just above boundary) state_code: FL output: fl_tca_payment_standard: 241 @@ -60,7 +60,7 @@ period: 2024-01 input: spm_unit_size: 3 - housing_cost: 0 + pre_subsidy_rent: 0 state_code: FL output: fl_tca_payment_standard: 198 @@ -69,7 +69,7 @@ period: 2024-01 input: spm_unit_size: 3 - housing_cost: 300 + pre_subsidy_rent: 300 state_code: FL output: fl_tca_payment_standard: 258 @@ -78,7 +78,7 @@ period: 2024-01 input: spm_unit_size: 3 - housing_cost: 12_000 + pre_subsidy_rent: 12_000 state_code: FL output: fl_tca_payment_standard: 303 @@ -87,7 +87,7 @@ period: 2024-01 input: spm_unit_size: 14 - housing_cost: 12_000 + pre_subsidy_rent: 12_000 state_code: FL output: fl_tca_payment_standard: 919 @@ -96,7 +96,7 @@ period: 2024-01 input: spm_unit_size: 2 - housing_cost: 12 # $1/month + pre_subsidy_rent: 12 # $1/month state_code: FL output: fl_tca_payment_standard: 205 diff --git a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/integration.yaml index 59db65f7eed..1512c85528b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/fl/dcf/tanf/integration.yaml @@ -17,7 +17,7 @@ person1: age: 30 employment_income_before_lsr: 0 - rent: 12_000 # $1,000/month (>$50 shelter tier) + pre_subsidy_rent: 12_000 # $1,000/month (>$50 shelter tier) person2: age: 10 spm_units: @@ -54,7 +54,7 @@ person1: age: 30 employment_income_before_lsr: 6_000 # $500/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 8 spm_units: @@ -90,7 +90,7 @@ people: person1: age: 30 - rent: 0 # Zero shelter tier + pre_subsidy_rent: 0 # Zero shelter tier person2: age: 10 person3: @@ -117,7 +117,7 @@ people: person1: age: 30 - rent: 300 # $25/month ($1-$50 shelter tier) + pre_subsidy_rent: 300 # $25/month ($1-$50 shelter tier) person2: age: 10 person3: @@ -144,7 +144,7 @@ people: person1: age: 30 - rent: 1_200 # $100/month (>$50 shelter tier) + pre_subsidy_rent: 1_200 # $100/month (>$50 shelter tier) person2: age: 10 person3: @@ -172,7 +172,7 @@ person1: age: 30 employment_income_before_lsr: 12_000 # $1,000/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -208,7 +208,7 @@ person1: age: 30 employment_income_before_lsr: 48_000 # $4,000/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -236,7 +236,7 @@ person1: age: 30 social_security: 2_820 # $235/month annual # Unearned income - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -265,7 +265,7 @@ person1: age: 35 employment_income_before_lsr: 3_600 # $300/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 32 person3: @@ -301,7 +301,7 @@ age: 30 employment_income_before_lsr: 4_800 # $400/month social_security: 2_400 # $200/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 person3: @@ -333,7 +333,7 @@ people: person1: age: 35 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 12 person3: @@ -369,7 +369,7 @@ person1: age: 30 employment_income_before_lsr: 2_400 # $200/month exactly - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -398,7 +398,7 @@ people: person1: age: 30 - rent: 600 # $50/month exactly + pre_subsidy_rent: 600 # $50/month exactly person2: age: 10 spm_units: @@ -423,7 +423,7 @@ people: person1: age: 30 - rent: 612 # $51/month + pre_subsidy_rent: 612 # $51/month person2: age: 10 spm_units: @@ -449,7 +449,7 @@ person1: age: 30 social_security: 2_772 # $231/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -477,7 +477,7 @@ person1: age: 30 social_security: 2_784 # $232/month annual - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -504,7 +504,7 @@ person1: age: 35 employment_income_before_lsr: 3_600 # $300/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 33 employment_income_before_lsr: 2_400 # $200/month @@ -538,7 +538,7 @@ person1: age: 30 employment_income_before_lsr: 3_600 # $300/month - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: @@ -568,7 +568,7 @@ people: person1: age: 30 - rent: 12_000 + pre_subsidy_rent: 12_000 person2: age: 10 spm_units: diff --git a/policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/income/deductions/il_tanf_childcare_deduction.yaml b/policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/income/deductions/il_tanf_childcare_deduction.yaml index c1a1b6eb276..5ba44eb817e 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/income/deductions/il_tanf_childcare_deduction.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/il/dhs/tanf/income/deductions/il_tanf_childcare_deduction.yaml @@ -13,7 +13,7 @@ input: state_code: IL is_tax_unit_dependent: true - monthly_age: 1 + monthly_age: 1 childcare_expenses: 250 * 12 output: il_tanf_childcare_deduction: 200 * 12 @@ -33,7 +33,7 @@ input: state_code: IL is_tax_unit_dependent: false - monthly_age: 15 - childcare_expenses: 250 * 12 + monthly_age: 15 + childcare_expenses: 250 * 12 output: il_tanf_childcare_deduction: 0 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/integration.yaml index 11784a941f6..84828efdcd6 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/integration.yaml @@ -334,7 +334,7 @@ spm_unit: members: [person1, person2, person3] spm_unit_cash_assets: 500 - spm_unit_pre_subsidy_childcare_expenses: 1_200 # $100/month + childcare_expenses: 1_200 # $100/month tax_units: tax_unit: members: [person1, person2, person3] diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/ks_tanf_countable_earned_income.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/ks_tanf_countable_earned_income.yaml index 8752c50de20..2bda4f21ce5 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/ks_tanf_countable_earned_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/dcf/tanf/ks_tanf_countable_earned_income.yaml @@ -7,7 +7,7 @@ input: state_code: KS ks_tanf_earned_income_after_deductions: 0 - spm_unit_pre_subsidy_childcare_expenses: 0 + childcare_expenses: 0 output: ks_tanf_countable_earned_income: 0 @@ -16,7 +16,7 @@ input: state_code: KS ks_tanf_earned_income_after_deductions: 164 - spm_unit_pre_subsidy_childcare_expenses: 0 + childcare_expenses: 0 output: ks_tanf_countable_earned_income: 164 @@ -25,7 +25,7 @@ input: state_code: KS ks_tanf_earned_income_after_deductions: 164 - spm_unit_pre_subsidy_childcare_expenses: 1_200 # $100/month + childcare_expenses: 1_200 # $100/month output: # $164 - $100 = $64 ks_tanf_countable_earned_income: 64 @@ -35,7 +35,7 @@ input: state_code: KS ks_tanf_earned_income_after_deductions: 50 - spm_unit_pre_subsidy_childcare_expenses: 1_200 # $100/month + childcare_expenses: 1_200 # $100/month output: # max($50 - $100, 0) = $0 ks_tanf_countable_earned_income: 0 @@ -45,7 +45,7 @@ input: state_code: KS ks_tanf_earned_income_after_deductions: 400 - spm_unit_pre_subsidy_childcare_expenses: 3_600 # $300/month - no cap + childcare_expenses: 3_600 # $300/month - no cap output: # $400 - $300 = $100 ks_tanf_countable_earned_income: 100 diff --git a/policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/integration.yaml index dc208bbec38..0c769f9cfa8 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/mi/tax/income/credits/home_heating/integration.yaml @@ -97,6 +97,10 @@ person6: age: 4 employment_income: 0 + spm_units: + spm_unit: + members: [person1, person2, person3, person4, person5, person6] + takes_up_tanf_if_eligible: false tax_units: tax_unit: # heating_expenses: 1_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/integration.yaml index 527ebad8d04..f86146cdf74 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/integration.yaml @@ -11,6 +11,7 @@ person1: age: 30 employment_income_before_lsr: 12_000 # $1,000/month + pre_subsidy_rent: 6_000 # $500/month (capped at $400) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -27,7 +28,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_size: 3 - housing_cost: 6_000 # $500/month (capped at $400) tax_units: tax_unit: members: [person1, person2, person3] @@ -70,6 +70,7 @@ person1: age: 28 employment_income_before_lsr: 0 + pre_subsidy_rent: 14_400 # $1,200/month (capped at $450) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -86,7 +87,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_size: 3 - housing_cost: 14_400 # $1,200/month (capped at $450) tax_units: tax_unit: members: [person1, person2, person3] @@ -129,6 +129,7 @@ age: 32 employment_income_before_lsr: 6_000 # $500/month child_support_received: 1_800 # $150/month + pre_subsidy_rent: 4_800 # $400/month is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -140,7 +141,6 @@ spm_unit: members: [person1, person2] spm_unit_size: 2 - housing_cost: 4_800 # $400/month tax_units: tax_unit: members: [person1, person2] @@ -183,6 +183,7 @@ person1: age: 35 employment_income_before_lsr: 18_000 # $1,500/month + pre_subsidy_rent: 9_600 # $800/month (capped at $400) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -204,7 +205,6 @@ spm_unit: members: [person1, person2, person3, person4] spm_unit_size: 4 - housing_cost: 9_600 # $800/month (capped at $400) tax_units: tax_unit: members: [person1, person2, person3, person4] @@ -248,6 +248,7 @@ age: 40 employment_income_before_lsr: 9_600 # $800/month social_security: 0 + pre_subsidy_rent: 15_600 # $1,300/month (capped at $450) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -275,7 +276,6 @@ spm_unit: members: [person1, person2, person3, person4, person5] spm_unit_size: 5 - housing_cost: 15_600 # $1,300/month (capped at $450) tax_units: tax_unit: members: [person1, person2, person3, person4, person5] @@ -319,13 +319,13 @@ age: 25 employment_income_before_lsr: 0 is_pregnant: true + pre_subsidy_rent: 4_800 # $400/month is_tax_unit_head_or_spouse: true immigration_status: CITIZEN spm_units: spm_unit: members: [person1] spm_unit_size: 1 - housing_cost: 4_800 # $400/month tax_units: tax_unit: members: [person1] @@ -363,6 +363,7 @@ person1: age: 30 employment_income_before_lsr: 10_800 # $900/month + pre_subsidy_rent: 4_800 # $400/month is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -374,7 +375,6 @@ spm_unit: members: [person1, person2] spm_unit_size: 2 - housing_cost: 4_800 # $400/month tax_units: tax_unit: members: [person1, person2] @@ -417,6 +417,7 @@ person1: age: 35 employment_income_before_lsr: 9_600 # $800/month + pre_subsidy_rent: 6_000 # $500/month (capped at $400) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -433,7 +434,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_size: 3 - housing_cost: 6_000 # $500/month (capped at $400) tax_units: tax_unit: members: [person1, person2, person3] @@ -478,6 +478,7 @@ person1: age: 40 employment_income_before_lsr: 0 + pre_subsidy_rent: 12_000 # $1,000/month (capped at $450) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -529,7 +530,6 @@ spm_unit: members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10] spm_unit_size: 10 - housing_cost: 12_000 # $1,000/month (capped at $450) tax_units: tax_unit: members: [person1, person2, person3, person4, person5, person6, person7, person8, person9, person10] @@ -571,6 +571,7 @@ person1: age: 35 employment_income_before_lsr: 9_600 # $800/month + pre_subsidy_rent: 6_000 # $500/month (capped at $400) is_tax_unit_head_or_spouse: true immigration_status: CITIZEN person2: @@ -587,7 +588,6 @@ spm_unit: members: [person1, person2, person3] spm_unit_size: 3 - housing_cost: 6_000 # $500/month (capped at $400) childcare_expenses: 3_600 # $300/month tax_units: tax_unit: diff --git a/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.yaml b/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.yaml index 74e6f779cb3..55ec31aa5a6 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.yaml @@ -13,7 +13,6 @@ spm_units: spm_unit: members: [person1] - housing_cost: 0 households: household: members: [person1] @@ -29,15 +28,15 @@ people: person1: age: 30 + pre_subsidy_rent: 4_200 # $350/month, below $450 cap person2: age: 35 + pre_subsidy_rent: 7_200 # $600/month, above $450 cap spm_units: spm_unit1: members: [person1] - housing_cost: 4_200 # $350/month, below $450 cap spm_unit2: members: [person2] - housing_cost: 7_200 # $600/month, above $450 cap households: household1: members: [person1] @@ -58,15 +57,15 @@ people: person1: age: 30 + pre_subsidy_rent: 3_600 # $300/month, below $400 cap person2: age: 35 + pre_subsidy_rent: 6_000 # $500/month, above $400 cap spm_units: spm_unit1: members: [person1] - housing_cost: 3_600 # $300/month, below $400 cap spm_unit2: members: [person2] - housing_cost: 6_000 # $500/month, above $400 cap households: household1: members: [person1] diff --git a/policyengine_us/tests/policy/contrib/congress/tlaib/end_child_poverty_act/integration.yaml b/policyengine_us/tests/policy/contrib/congress/tlaib/end_child_poverty_act/integration.yaml index 40a492459f6..efcb2a02a04 100644 --- a/policyengine_us/tests/policy/contrib/congress/tlaib/end_child_poverty_act/integration.yaml +++ b/policyengine_us/tests/policy/contrib/congress/tlaib/end_child_poverty_act/integration.yaml @@ -86,10 +86,11 @@ free_school_meals: 0 snap: 0 ca_capi: 0 + takes_up_tanf_if_eligible: false households: household: members: [head, child_1, child_2] - state_code_str: FL # Florida has no TANF implementation + state_code_str: FL output: non_refundable_ctc: 800 household_benefits: 0 diff --git a/policyengine_us/variables/gov/hhs/tanf/cash/takes_up_tanf_if_eligible.py b/policyengine_us/variables/gov/hhs/tanf/cash/takes_up_tanf_if_eligible.py new file mode 100644 index 00000000000..91da4dc060e --- /dev/null +++ b/policyengine_us/variables/gov/hhs/tanf/cash/takes_up_tanf_if_eligible.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class takes_up_tanf_if_eligible(Variable): + value_type = bool + entity = SPMUnit + label = "Whether an eligible SPM unit takes up TANF" + definition_period = YEAR + default_value = True diff --git a/policyengine_us/variables/gov/hhs/tanf/cash/tanf.py b/policyengine_us/variables/gov/hhs/tanf/cash/tanf.py index 71a37c4c1fd..d595b9ed85a 100644 --- a/policyengine_us/variables/gov/hhs/tanf/cash/tanf.py +++ b/policyengine_us/variables/gov/hhs/tanf/cash/tanf.py @@ -1,5 +1,63 @@ from policyengine_us.model_api import * +# All implemented state TANF programs. +# Most use {st}_tanf naming; some states have their own program names. +STATE_TANF_VARIABLES = [ + # Standard {st}_tanf naming (28 states) + "al_tanf", + "az_tanf", + "ca_tanf", + "co_tanf", + "dc_tanf", + "de_tanf", + "ga_tanf", + "hi_tanf", + "il_tanf", + "in_tanf", + "ks_tanf", + "me_tanf", + "mo_tanf", + "ms_tanf", + "mt_tanf", + "nc_tanf", + "nd_tanf", + "nv_tanf", + "ny_tanf", + "ok_tanf", + "or_tanf", + "pa_tanf", + "sc_tanf", + "sd_tanf", + "tx_tanf", + "va_tanf", + "wa_tanf", + # Non-standard program names (23 states + DC) + "ak_atap", # Alaska Temporary Assistance Program + "ar_tea", # Arkansas Transitional Employment Assistance + "ct_tfa", # Connecticut Temporary Family Assistance + "fl_tca", # Florida Temporary Cash Assistance + "ia_fip", # Iowa Family Investment Program + "id_tafi", # Idaho Temporary Assistance for Families + "ky_ktap", # Kentucky K-TAP + "la_fitap", # Louisiana Family Independence TAP + "ma_tafdc", # Massachusetts TAFDC + "md_tca", # Maryland Temporary Cash Assistance + "mi_fip", # Michigan Family Independence Program + "mn_mfip", # Minnesota Family Investment Program + "ne_adc", # Nebraska Aid to Dependent Children + "nh_fanf", # New Hampshire FANF + "nj_wfnj", # New Jersey WorkFirst New Jersey + "nm_works", # New Mexico Works + "oh_owf", # Ohio Works First + "ri_works", # Rhode Island Works + "tn_ff", # Tennessee Families First + "ut_fep", # Utah Family Employment Program + "vt_reach_up", # Vermont Reach Up + "wi_works", # Wisconsin Works (W-2) + "wv_works", # West Virginia Works + "wy_power", # Wyoming POWER +] + class tanf(Variable): value_type = float @@ -17,14 +75,6 @@ def formula(spm_unit, period, parameters): if p.abolish_tanf: return 0 - # Use reported TANF if available - tanf_reported = add(spm_unit, period, ["tanf_reported"]) - if tanf_reported.sum() > 0: - return tanf_reported - - # Sum all state TANF programs - # Each state has its own implementation in the states/ folder - STATES_WITH_TANF = ["ca", "co", "dc", "ny"] - return add( - spm_unit, period, [f"{state}_tanf" for state in STATES_WITH_TANF] - ) + takes_up = spm_unit("takes_up_tanf_if_eligible", period) + value = add(spm_unit, period, STATE_TANF_VARIABLES) + return value * takes_up diff --git a/policyengine_us/variables/gov/states/az/hhs/tanf/eligibility/az_tanf_payment_standard.py b/policyengine_us/variables/gov/states/az/hhs/tanf/eligibility/az_tanf_payment_standard.py index bac168724e1..6609de8dd57 100644 --- a/policyengine_us/variables/gov/states/az/hhs/tanf/eligibility/az_tanf_payment_standard.py +++ b/policyengine_us/variables/gov/states/az/hhs/tanf/eligibility/az_tanf_payment_standard.py @@ -24,8 +24,21 @@ def formula(spm_unit, period, parameters): base_standard = p.rate * monthly_fpg_baseline # A2 = A1 reduced by 37% for those without shelter costs per A.R.S. § 46-207 - shelter_cost = spm_unit("housing_cost", period) - has_shelter_costs = shelter_cost > 0 + # Uses pre-subsidy rent to avoid circular dependency: + # tanf -> az_tanf -> housing_cost -> rent -> housing_assistance + # -> hud_annual_income -> tanf + pre_subsidy_rent = add(spm_unit, period, ["pre_subsidy_rent"]) + other_housing = add( + spm_unit, + period, + [ + "real_estate_taxes", + "homeowners_association_fees", + "mortgage_payments", + "homeowners_insurance", + ], + ) + has_shelter_costs = (pre_subsidy_rent + other_housing) > 0 reduced_standard = base_standard * (1 - p.reduction) diff --git a/policyengine_us/variables/gov/states/az/hhs/tanf/income/az_tanf_dependent_care_deduction.py b/policyengine_us/variables/gov/states/az/hhs/tanf/income/az_tanf_dependent_care_deduction.py index 1f883b1f6ef..2e0cfdd3611 100644 --- a/policyengine_us/variables/gov/states/az/hhs/tanf/income/az_tanf_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/states/az/hhs/tanf/income/az_tanf_dependent_care_deduction.py @@ -18,7 +18,6 @@ def formula(spm_unit, period, parameters): person = spm_unit.members age = person("age", period.this_year) - # Actual childcare expenses childcare_expenses = spm_unit("childcare_expenses", period) # Calculate eligible deduction for dependent children (based on age) diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_add_on_parent_fee.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_add_on_parent_fee.py index fd1562fc5e6..5668359cf45 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_add_on_parent_fee.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_add_on_parent_fee.py @@ -21,8 +21,7 @@ def formula(spm_unit, period, parameters): p = parameters(instant_str).gov.states.co.ccap # Calculate base parent fee and add on parent fee. gross_income = spm_unit("co_ccap_countable_income", period) - # snap_fpg is monthly. - snap_fpg = spm_unit("snap_fpg", period) + fpg = spm_unit("spm_unit_fpg", period.this_year) / MONTHS_IN_YEAR eligible_children = spm_unit("co_ccap_eligible_children", period) # Calculate add-on parent fee based on the number of eligible # children in a household and income: @@ -31,5 +30,5 @@ def formula(spm_unit, period, parameters): add_on_parent_fee_amount = ( eligible_children - 1 ) * p.parent_fee.add_on - add_on_parent_fee_applies = gross_income > snap_fpg + add_on_parent_fee_applies = gross_income > fpg return add_on_parent_fee_amount * add_on_parent_fee_applies diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_base_parent_fee.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_base_parent_fee.py index f9563fcdcc6..d5b76b3f212 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_base_parent_fee.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_base_parent_fee.py @@ -21,12 +21,11 @@ def formula(spm_unit, period, parameters): p = parameters(instant_str).gov.states.co.ccap # Calculate base parent fee and add on parent fee. gross_income = spm_unit("co_ccap_countable_income", period) - # snap_fpg is monthly. - snap_fpg = spm_unit("snap_fpg", period) + fpg = spm_unit("spm_unit_fpg", period.this_year) / MONTHS_IN_YEAR # Calculate base parent fee scaled (note income is monthly): # When income_scaled <= 1: income_scaled * 0.01 # When income_scaled > 1: [1 * 0.01 + (income_scaled - 1) * 0.14] # Multiply by fpg afterward to scale back up - gross_income_fpg_ratio = gross_income / snap_fpg + gross_income_fpg_ratio = gross_income / fpg base_parent_fee_scaled = p.parent_fee.base.calc(gross_income_fpg_ratio) - return base_parent_fee_scaled * snap_fpg + return base_parent_fee_scaled * fpg diff --git a/policyengine_us/variables/gov/states/co/ccap/co_ccap_countable_income.py b/policyengine_us/variables/gov/states/co/ccap/co_ccap_countable_income.py index e5478338ba8..11e5f054067 100644 --- a/policyengine_us/variables/gov/states/co/ccap/co_ccap_countable_income.py +++ b/policyengine_us/variables/gov/states/co/ccap/co_ccap_countable_income.py @@ -5,8 +5,9 @@ class co_ccap_countable_income(Variable): value_type = float entity = SPMUnit definition_period = MONTH - label = "Colorado Child Care Assitance Program Countable Income" + label = "Colorado Child Care Assistance Program countable income" reference = "https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=11042&fileName=8%20CCR%201403-1#page=22" unit = USD - # TODO: Use income components from the manual. - adds = ["snap_earned_income", "snap_unearned_income"] + defined_for = StateCode.CO + + adds = "gov.states.co.ccap.income.countable_income.sources" diff --git a/policyengine_us/variables/gov/states/co/ccap/entry/co_ccap_fpg_eligible.py b/policyengine_us/variables/gov/states/co/ccap/entry/co_ccap_fpg_eligible.py index 43c95c4c9cb..f38ed9be2d1 100644 --- a/policyengine_us/variables/gov/states/co/ccap/entry/co_ccap_fpg_eligible.py +++ b/policyengine_us/variables/gov/states/co/ccap/entry/co_ccap_fpg_eligible.py @@ -36,8 +36,7 @@ def formula(spm_unit, period, parameters): ) if mask.any(): fpg_rate[mask] = p.entry.fpg_rate[county[mask]] - # SNAP FPG is monthly. - fpg = spm_unit("snap_fpg", period) + fpg = spm_unit("spm_unit_fpg", period.this_year) / MONTHS_IN_YEAR fpg_limit = np.round(fpg * fpg_rate, 2) meets_income_limit = monthly_gross_income < fpg_limit return state_eligible & meets_income_limit diff --git a/policyengine_us/variables/gov/states/de/dhss/tanf/income/earned/de_tanf_dependent_care_deduction.py b/policyengine_us/variables/gov/states/de/dhss/tanf/income/earned/de_tanf_dependent_care_deduction.py index 1a92110ce57..252c58cb1c3 100644 --- a/policyengine_us/variables/gov/states/de/dhss/tanf/income/earned/de_tanf_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/states/de/dhss/tanf/income/earned/de_tanf_dependent_care_deduction.py @@ -26,7 +26,7 @@ def formula(spm_unit, period, parameters): max_per_dependent = p.dependent_care.calc(age) total_max = spm_unit.sum(max_per_dependent * is_dependent) - # Cap at actual childcare expenses + # Cap at actual childcare expenses. childcare_expenses = spm_unit("childcare_expenses", period) return min_(childcare_expenses, total_max) diff --git a/policyengine_us/variables/gov/states/fl/dcf/tanf/fl_tca_payment_standard.py b/policyengine_us/variables/gov/states/fl/dcf/tanf/fl_tca_payment_standard.py index 79bafe25693..5e13b2920d9 100644 --- a/policyengine_us/variables/gov/states/fl/dcf/tanf/fl_tca_payment_standard.py +++ b/policyengine_us/variables/gov/states/fl/dcf/tanf/fl_tca_payment_standard.py @@ -16,9 +16,22 @@ class fl_tca_payment_standard(Variable): def formula(spm_unit, period, parameters): # Per Florida Statutes 414.095(10): Payment based on shelter tier # Per FAC 65A-4.220(2)(b): Shelter obligation = responsibility to pay for cost of housing + # Uses pre-subsidy rent to avoid circular dependency: + # tanf -> fl_tca -> housing_cost -> rent -> housing_assistance -> hud_annual_income -> tanf p = parameters(period).gov.states.fl.dcf.tanf - monthly_shelter = spm_unit("housing_cost", period) + pre_subsidy_rent = add(spm_unit, period, ["pre_subsidy_rent"]) + other_housing = add( + spm_unit, + period, + [ + "real_estate_taxes", + "homeowners_association_fees", + "mortgage_payments", + "homeowners_insurance", + ], + ) + monthly_shelter = pre_subsidy_rent + other_housing # Determine unit size, capped at max in parameter table size = spm_unit("spm_unit_size", period.this_year) diff --git a/policyengine_us/variables/gov/states/hi/dhs/tanf/income/hi_tanf_dependent_care_deduction.py b/policyengine_us/variables/gov/states/hi/dhs/tanf/income/hi_tanf_dependent_care_deduction.py index 3e33e3581ed..a05c8b18856 100644 --- a/policyengine_us/variables/gov/states/hi/dhs/tanf/income/hi_tanf_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/states/hi/dhs/tanf/income/hi_tanf_dependent_care_deduction.py @@ -15,7 +15,6 @@ class hi_tanf_dependent_care_deduction(Variable): def formula(spm_unit, period, parameters): p = parameters(period).gov.states.hi.dhs.tanf.deductions.dependent_care - # Get actual childcare expenses (YEAR variable, auto-converts to monthly) expenses = spm_unit("childcare_expenses", period) # Count children in the unit for the per-child cap diff --git a/policyengine_us/variables/gov/states/ks/dcf/tanf/income/ks_tanf_countable_earned_income.py b/policyengine_us/variables/gov/states/ks/dcf/tanf/income/ks_tanf_countable_earned_income.py index b520c243763..48c984cfd20 100644 --- a/policyengine_us/variables/gov/states/ks/dcf/tanf/income/ks_tanf_countable_earned_income.py +++ b/policyengine_us/variables/gov/states/ks/dcf/tanf/income/ks_tanf_countable_earned_income.py @@ -24,7 +24,5 @@ def formula(spm_unit, period, parameters): earned_after_deductions = add( spm_unit, period, ["ks_tanf_earned_income_after_deductions"] ) - dependent_care = spm_unit( - "spm_unit_pre_subsidy_childcare_expenses", period - ) + dependent_care = spm_unit("childcare_expenses", period) return max_(earned_after_deductions - dependent_care, 0) diff --git a/policyengine_us/variables/gov/states/md/tca/income/md_tca_childcare_deduction.py b/policyengine_us/variables/gov/states/md/tca/income/md_tca_childcare_deduction.py index 42ea29e8c0e..b94d040fc6b 100644 --- a/policyengine_us/variables/gov/states/md/tca/income/md_tca_childcare_deduction.py +++ b/policyengine_us/variables/gov/states/md/tca/income/md_tca_childcare_deduction.py @@ -23,6 +23,6 @@ def formula(spm_unit, period, parameters): # Maximum deduction per child based on monthly work hours per_child_cap = p.childcare_expenses.cap.calc(max_monthly_hours) max_deduction = per_child_cap * num_children - # Actual childcare expenses (capped at regulatory maximum) + # Actual childcare expenses (capped at regulatory maximum). childcare_expenses = spm_unit("childcare_expenses", period) return min_(childcare_expenses, max_deduction) diff --git a/policyengine_us/variables/gov/states/me/dhhs/tanf/income/deductions/me_tanf_child_care_deduction.py b/policyengine_us/variables/gov/states/me/dhhs/tanf/income/deductions/me_tanf_child_care_deduction.py index e72a4b6ed27..822f74c93ec 100644 --- a/policyengine_us/variables/gov/states/me/dhhs/tanf/income/deductions/me_tanf_child_care_deduction.py +++ b/policyengine_us/variables/gov/states/me/dhhs/tanf/income/deductions/me_tanf_child_care_deduction.py @@ -30,6 +30,6 @@ def formula(spm_unit, period, parameters): max_deduction_per_person = max_per_child * is_child total_max_deduction = spm_unit.sum(max_deduction_per_person) - # Deduction is lesser of actual expenses or maximum + # Deduction is lesser of actual expenses or maximum. childcare_expenses = spm_unit("childcare_expenses", period) return min_(childcare_expenses, total_max_deduction) diff --git a/policyengine_us/variables/gov/states/nh/dhhs/fanf/income/nh_fanf_child_care_deduction.py b/policyengine_us/variables/gov/states/nh/dhhs/fanf/income/nh_fanf_child_care_deduction.py index cac87672be9..ce31cab3526 100644 --- a/policyengine_us/variables/gov/states/nh/dhhs/fanf/income/nh_fanf_child_care_deduction.py +++ b/policyengine_us/variables/gov/states/nh/dhhs/fanf/income/nh_fanf_child_care_deduction.py @@ -28,13 +28,16 @@ def formula(spm_unit, period, parameters): # Calculate max deduction per child based on employment status and age full_time_max = p.full_time.calc(age) part_time_max = p.part_time.calc(age) - max_per_child = where(any_full_time, full_time_max, part_time_max) + any_full_time_person = spm_unit.project(any_full_time) + max_per_child = where( + any_full_time_person, full_time_max, part_time_max + ) # Only count children max_deduction_per_child = max_per_child * is_child total_max_deduction = spm_unit.sum(max_deduction_per_child) - # Cap at actual childcare expenses + # Cap at actual childcare expenses. childcare_expenses = spm_unit("childcare_expenses", period) return min_(childcare_expenses, total_max_deduction) diff --git a/policyengine_us/variables/gov/states/ok/dhs/tanf/income/ok_tanf_dependent_care_deduction.py b/policyengine_us/variables/gov/states/ok/dhs/tanf/income/ok_tanf_dependent_care_deduction.py index 338e9684448..11bed24204e 100644 --- a/policyengine_us/variables/gov/states/ok/dhs/tanf/income/ok_tanf_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/states/ok/dhs/tanf/income/ok_tanf_dependent_care_deduction.py @@ -29,7 +29,7 @@ def formula(spm_unit, period, parameters): max_deduction_per_dependent * dependent ) - # Cap at actual childcare expenses + # Cap at actual childcare expenses. childcare_expenses = spm_unit("childcare_expenses", period) return min_(childcare_expenses, total_max_deduction) diff --git a/policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py b/policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py index 3b7c7219ec0..a0c7f0d6c8a 100644 --- a/policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/states/tx/tanf/income/deductions/tx_tanf_dependent_care_deduction.py @@ -17,7 +17,6 @@ def formula(spm_unit, period, parameters): # Actual cost of dependent child care, capped at maximum by age # Per § 372.409 (a)(3): up to $200/month for children under 2, $175/month for children 2+ - # Get actual childcare expenses childcare_expenses = spm_unit("childcare_expenses", period) # Calculate maximum deduction for dependents (children or incapacitated adults) diff --git a/policyengine_us/variables/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.py b/policyengine_us/variables/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.py index cd02ed4e6de..7d8b58688bd 100644 --- a/policyengine_us/variables/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.py +++ b/policyengine_us/variables/gov/states/vt/dcf/reach_up/vt_reach_up_housing_allowance.py @@ -20,6 +20,19 @@ def formula(spm_unit, period, parameters): in_chittenden = county == County.CHITTENDEN_COUNTY_VT # Select maximum based on county housing_max = where(in_chittenden, p.chittenden, p.non_chittenden) - # Cap actual housing costs at maximum - housing_cost = spm_unit("housing_cost", period) + # Cap actual housing costs at maximum. + # Uses pre-subsidy rent to avoid circular dependency + # through housing assistance and HUD annual income. + pre_subsidy_rent = add(spm_unit, period, ["pre_subsidy_rent"]) + other_housing = add( + spm_unit, + period, + [ + "real_estate_taxes", + "homeowners_association_fees", + "mortgage_payments", + "homeowners_insurance", + ], + ) + housing_cost = pre_subsidy_rent + other_housing return min_(housing_cost, housing_max) diff --git a/policyengine_us/variables/gov/usda/snap/income/deductions/snap_dependent_care_deduction.py b/policyengine_us/variables/gov/usda/snap/income/deductions/snap_dependent_care_deduction.py index 4422d0a6050..233e11e9b16 100644 --- a/policyengine_us/variables/gov/usda/snap/income/deductions/snap_dependent_care_deduction.py +++ b/policyengine_us/variables/gov/usda/snap/income/deductions/snap_dependent_care_deduction.py @@ -10,8 +10,4 @@ class snap_dependent_care_deduction(Variable): definition_period = MONTH reference = "https://www.law.cornell.edu/uscode/text/7/2014#e_3" - # Use pre-subsidy expenses to avoid circular dependency - # (childcare subsidies depend on income, which would create a - # circular dependency if SNAP deductions depended on subsidized - # childcare expenses). - adds = ["pre_subsidy_childcare_expenses"] + adds = ["childcare_expenses"]