Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- bump: patch
changes:
added:
- Add Census SPM weekly work-expense parameters and formulas for work and childcare expense caps.
date: 2026-04-09 00:00:00
4 changes: 4 additions & 0 deletions policyengine_us/parameters/gov/census/index.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
metadata:
propagate_metadata_to_children: true
economy: false
household: false
4 changes: 4 additions & 0 deletions policyengine_us/parameters/gov/census/spm/index.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
metadata:
propagate_metadata_to_children: true
economy: false
household: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
metadata:
propagate_metadata_to_children: true
economy: false
household: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
description: Weekly work-expense deduction amount used in Census Supplemental Poverty Measure calculations.
values:
2009-01-01: 28.0500
2010-01-01: 25.5000
2011-01-01: 27.1575
2012-01-01: 33.0225
2013-01-01: 39.3975
2014-01-01: 39.2530
2015-01-01: 40.0945
2016-01-01: 38.4710
2017-01-01: 36.3460
2018-01-01: 37.1025
2019-01-01: 39.7205
2020-01-01: 39.6100
2021-01-01: 38.0630
2022-01-01: 31.0080
2023-01-01: 33.4050
2024-01-01: 34.9945

metadata:
unit: currency-USD
period: year
uprating: gov.bls.cpi.cpi_u
label: Census SPM weekly work-expense deduction amount
reference:
- title: Supplemental Poverty Measure (SPM) Technical Documentation
href: https://www2.census.gov/programs-surveys/supplemental-poverty-measure/technical-documentation/spm_techdoc.pdf
- title: Poverty in the United States 2023
href: https://www2.census.gov/library/publications/2024/demo/p60-283.pdf
- title: Poverty in the United States 2024
href: https://www2.census.gov/library/publications/2025/demo/p60-287.pdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
- name: Combined work and childcare expenses are capped at the lower earner
period: 2024
absolute_error_margin: 0.001
input:
people:
head:
age: 35
weeks_worked: 10
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
spouse:
age: 33
weeks_worked: 20
employment_income: 2_000
is_tax_unit_spouse: true
child:
age: 8
tax_units:
tax_unit:
members: [head, spouse, child]
spm_units:
spm_unit:
members: [head, spouse, child]
spm_unit_pre_subsidy_childcare_expenses: 2_000
output:
spm_unit_capped_work_childcare_expenses: 2_000

- name: Work expenses are preserved when they already exceed the earnings cap
period: 2024
absolute_error_margin: 0.001
input:
people:
head:
age: 41
weeks_worked: 52
employment_income: 1_500
is_household_head: true
is_tax_unit_head: true
child:
age: 5
tax_units:
tax_unit:
members: [head, child]
spm_units:
spm_unit:
members: [head, child]
spm_unit_pre_subsidy_childcare_expenses: 3_000
output:
spm_unit_capped_work_childcare_expenses: 1_819.714

- name: Childcare is capped by the remaining lower-earner earnings after work expenses
period: 2024
absolute_error_margin: 0.001
input:
people:
head:
age: 46
weeks_worked: 52
employment_income: 9_098.57
is_household_head: true
is_tax_unit_head: true
spouse:
age: 46
weeks_worked: 52
employment_income: 30_000
is_tax_unit_spouse: true
tax_units:
tax_unit:
members: [head, spouse]
spm_units:
spm_unit:
members: [head, spouse]
spm_unit_pre_subsidy_childcare_expenses: 21_580
output:
spm_unit_capped_work_childcare_expenses: 9_098.57

- name: Unmarried partner counts toward the reference person's remaining childcare cap
period: 2024
absolute_error_margin: 0.001
input:
people:
head:
age: 35
weeks_worked: 10
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
partner:
age: 33
weeks_worked: 20
employment_income: 2_000
is_unmarried_partner_of_household_head: true
is_tax_unit_head: true
child:
age: 8
tax_units:
reference_unit:
members: [head, child]
partner_unit:
members: [partner]
spm_units:
spm_unit:
members: [head, partner, child]
spm_unit_pre_subsidy_childcare_expenses: 2_000
output:
spm_unit_capped_work_childcare_expenses: 2_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
- name: Household head and spouse determine the SPM childcare earnings cap
period: 2024
absolute_error_margin: 0.001
input:
people:
reference_person:
age: 35
employment_income: 40_000
is_household_head: true
is_tax_unit_spouse: true
spouse:
age: 45
employment_income: 8_000
is_tax_unit_head: true
child:
age: 8
tax_units:
tax_unit:
members: [reference_person, spouse, child]
spm_units:
spm_unit:
members: [reference_person, spouse, child]
output:
spm_unit_head_spouse_earned_cap: 8_000

- name: Household head and unmarried partner determine the SPM childcare earnings cap
period: 2024
absolute_error_margin: 0.001
input:
people:
reference_person:
age: 35
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
partner:
age: 33
employment_income: 2_500
is_unmarried_partner_of_household_head: true
is_tax_unit_head: true
child:
age: 8
tax_units:
reference_unit:
members: [reference_person, child]
partner_unit:
members: [partner]
spm_units:
spm_unit:
members: [reference_person, partner, child]
output:
spm_unit_head_spouse_earned_cap: 2_500

- name: Farm income counts toward the Census SPM childcare earnings cap
period: 2024
absolute_error_margin: 0.001
input:
people:
reference_person:
age: 35
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
spouse:
age: 33
farm_income: 3_000
is_tax_unit_spouse: true
child:
age: 8
tax_units:
tax_unit:
members: [reference_person, spouse, child]
spm_units:
spm_unit:
members: [reference_person, spouse, child]
output:
spm_unit_head_spouse_earned_cap: 3_000

- name: Extra adults in the SPM unit do not expand the reference person's childcare cap
period: 2024
absolute_error_margin: 0.001
input:
people:
reference_person:
age: 35
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
partner:
age: 33
employment_income: 5_000
is_unmarried_partner_of_household_head: true
is_tax_unit_head: true
unrelated_adult:
age: 55
employment_income: 1_000
is_tax_unit_head: true
child:
age: 8
tax_units:
reference_unit:
members: [reference_person, child]
partner_unit:
members: [partner]
unrelated_unit:
members: [unrelated_adult]
spm_units:
spm_unit:
members: [reference_person, partner, unrelated_adult, child]
output:
spm_unit_head_spouse_earned_cap: 5_000

- name: Spouse takes precedence over unmarried partner in the reference person's childcare cap
period: 2024
absolute_error_margin: 0.001
input:
people:
reference_person:
age: 35
employment_income: 40_000
is_household_head: true
is_tax_unit_head: true
spouse:
age: 33
employment_income: 6_000
is_tax_unit_spouse: true
partner:
age: 31
employment_income: 2_500
is_unmarried_partner_of_household_head: true
is_tax_unit_head: true
tax_units:
reference_unit:
members: [reference_person, spouse]
partner_unit:
members: [partner]
spm_units:
spm_unit:
members: [reference_person, spouse, partner]
output:
spm_unit_head_spouse_earned_cap: 6_000

- name: The childcare cap falls back to tax-unit head/spouse when no reference person is provided
period: 2024
absolute_error_margin: 0.001
input:
people:
head:
age: 35
employment_income: 40_000
is_tax_unit_head: true
spouse:
age: 33
employment_income: 4_000
is_tax_unit_spouse: true
tax_units:
tax_unit:
members: [head, spouse]
spm_units:
spm_unit:
members: [head, spouse]
output:
spm_unit_head_spouse_earned_cap: 4_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
- name: Work expenses apply only to adult earners in the SPM unit
period: 2024
absolute_error_margin: 0.001
input:
people:
adult_worker:
age: 40
weeks_worked: 10
employment_income: 20_000
adult_nonworker:
age: 38
weeks_worked: 30
employment_income: 0
child:
age: 12
weeks_worked: 52
employment_income: 500
spm_units:
spm_unit:
members: [adult_worker, adult_nonworker, child]
output:
spm_unit_work_expenses: 349.945

- name: Farm-income-only adults still incur Census SPM work expenses
period: 2024
absolute_error_margin: 0.001
input:
people:
adult_farmer:
age: 40
weeks_worked: 10
farm_income: 20_000
adult_nonworker:
age: 38
weeks_worked: 30
farm_income: 0
spm_units:
spm_unit:
members: [adult_farmer, adult_nonworker]
output:
spm_unit_work_expenses: 349.945
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
- name: Weeks worked is an input variable
period: 2024
input:
weeks_worked: 40
output:
weeks_worked: 40

- name: Weeks worked carries forward when future data is missing
period: 2025
input:
people:
person:
weeks_worked:
2024: 37
output:
weeks_worked: 37
1 change: 0 additions & 1 deletion policyengine_us/tools/default_uprating.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
"spm_unit_spm_threshold",
"non_sch_d_capital_gains",
"spm_unit_state_tax_reported",
"spm_unit_capped_work_childcare_expenses",
"farm_income",
"taxable_403b_distributions",
"qualified_tuition_expenses",
Expand Down
Loading