Skip to content

Add TANF administrative calibration targets#747

Closed
MaxGhenis wants to merge 3 commits intoPolicyEngine:mainfrom
MaxGhenis:codex/tanf-state-targets
Closed

Add TANF administrative calibration targets#747
MaxGhenis wants to merge 3 commits intoPolicyEngine:mainfrom
MaxGhenis:codex/tanf-state-targets

Conversation

@MaxGhenis
Copy link
Copy Markdown
Contributor

@MaxGhenis MaxGhenis commented Apr 13, 2026

Summary

This PR adds TANF administrative calibration targets from HHS ACF FY2024 data and wires them into the US data build.

It does three things:

  • adds a new TANF ETL that reads the official FY2024 ACF caseload and TANF/MOE financial workbooks
  • loads national and state TANF recipient-family counts plus TANF cash-assistance spending into the calibration database and target config
  • exposes baseline CPS liquid-asset inputs (bank_account_assets, stock_assets, bond_assets) so follow-up state-specific resource modeling can use explicit asset types instead of survey-reported placeholders

Details

The new ETL pulls:

  • average monthly TANF recipient families from the FY2024 ACF caseload workbook
  • cash-assistance spending from the FY2024 TANF/MOE financial workbook, using the narrower row that excludes relative foster care maintenance payments and adoption/guardianship subsidies

Those targets are added at:

  • national tanf
  • national spm_unit_count with domain_variable: tanf
  • state tanf
  • state spm_unit_count with domain_variable: tanf

The old hardcoded national TANF total is removed from etl_national_targets.py, and the remaining legacy fallback is aligned to the same FY2024 ACF cash-assistance total.

Scope boundary

This PR does not publish a generic spm_unit_assets aggregate. That would be too semantically broad for the current data, because this branch only exposes liquid-asset inputs and many downstream rules still interpret spm_unit_assets as broader countable resources.

It also intentionally does not add state-specific TANF take-up priors. Full-take-up profiling still leaves structural eligibility misses in some states, so inferred state take-up rates are not yet credible. That follow-up belongs after the remaining eligibility/application-month modeling work.

For now, this PR stays on the calibration/data side:

  • administrative TANF count and spending targets
  • person-level liquid-asset inputs for future state-specific counted-asset formulas

Related context:

Verification

  • uv run pytest -q tests/unit/test_etl_tanf.py tests/unit/calibration/test_target_config.py tests/unit/calibration/test_loss_targets.py tests/integration/test_cps_generation.py tests/integration/test_database_build.py
  • uv run ruff check policyengine_us_data/db/etl_tanf.py policyengine_us_data/storage/calibration_targets/pull_hardcoded_targets.py policyengine_us_data/utils/loss.py tests/unit/test_etl_tanf.py tests/unit/calibration/test_loss_targets.py tests/integration/test_cps_generation.py tests/integration/test_database_build.py

Two fresh independent review passes after the follow-up patch found no remaining actionable issues.

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 13, 2026

@MaxGhenis is attempting to deploy a commit to the PolicyEngine Team on Vercel.

A member of the Team first needs to authorize it.

@MaxGhenis
Copy link
Copy Markdown
Contributor Author

Closing this fork-based PR in favor of #750 so the repository's full CI can run. The branch is now mirrored to \ with the same commits plus the upstream-branch workflow note in README.

@MaxGhenis MaxGhenis closed this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant