Skip to content

Add ZIP code-level HUD payment standards for Texas#8738

Draft
hua7450 wants to merge 4 commits into
PolicyEngine:mainfrom
hua7450:tx-zip-payment-standards
Draft

Add ZIP code-level HUD payment standards for Texas#8738
hua7450 wants to merge 4 commits into
PolicyEngine:mainfrom
hua7450:tx-zip-payment-standards

Conversation

@hua7450

@hua7450 hua7450 commented Jun 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

Resolves Housing Choice Voucher (HCV) payment standards at the ZIP-code level for Texas, replacing the county-level Fair Market Rent for ~1,118 covered ZIPs. Previously pha_payment_standard only varied by county (plus a hardcoded LA County schedule).

How

pha_payment_standard now resolves from most to least geographically specific:

  1. Published ZIP payment standardzip_code_payment_standard
  2. Metro Small Area FMRsmall_area_fair_market_rent
  3. LA County local schedule — unchanged
  4. County FMRhud_fair_market_rent, unchanged

ZIP paths only fire on a match, so county-level and microsimulation households (where zip_code is unset) are unaffected.

Data

Source Coverage Bedrooms Year
TDHCA published HCV payment standards 284 ZIPs / 34 counties (service-area ring + rural) 0–6 2025
HUD Small Area FMRs (4 mandatory-SAFMR metros: Houston, Dallas, San Antonio, Fort Worth) 834 ZIPs 0–4 FY2026
  • TDHCA: parameters/gov/hud/payment_standards/zip_code_payment_standards.csv
  • SAFMR: parameters/gov/hud/fmr/small_area_fair_market_rents.csv

Variables

  • Filled small_area_fair_market_rent (ZIP→SAFMR lookup) and safmr_used_for_hcv
  • Added zip_code_payment_standard (ZIP→published-standard lookup)
  • Rewired pha_payment_standard

This also activates the Harris Rent Relief Act contrib reform's SAFMR-based rent cap for the four TX metros — it consumes small_area_fair_market_rent / safmr_used_for_hcv, which were previously stubs (see the changed changelog fragment).

Notes / limitations

  • Coverage is the TDHCA service area + the 4 mandatory-SAFMR metro cores. Other TX metros (Austin, El Paso, …) and rural TX keep the county FMR, matching HUD policy (SAFMR is only mandatory in those 4 metros).
  • Year labels follow the published data (TDHCA 2025, SAFMR FY2026); the framework imputes the nearest available year.

Verification

  • TDHCA CSV re-extracted from the source PDF via two independent engines — all 284 ZIPs × 7 bedrooms match (0 mismatches).
  • SAFMR CSV verified against HUD's FY2026 xlsx — all 834 ZIPs × 5 bedrooms match; cross-HMFA dedup confirmed lossless.
  • pd.merge order-preservation confirmed on scrambled multi-household vectors.

Test plan

  • New unit tests: small_area_fair_market_rent, zip_code_payment_standard, safmr_used_for_hcv, plus precedence cases in pha_payment_standard
  • CI passes

🤖 Generated with Claude Code

hua7450 and others added 2 commits June 23, 2026 15:16
Resolve Housing Choice Voucher payment standards at the ZIP level for
Texas. Two ZIP-keyed sources feed pha_payment_standard ahead of the
county FMR fallback:

- TDHCA's published 2025 payment standards for its 34-county service
  area (284 ZIPs, 0-6 bedrooms).
- HUD FY2026 Small Area FMRs for the four mandatory-SAFMR metros
  (Houston, Dallas, San Antonio, Fort Worth; 834 ZIPs, 0-4 bedrooms).

pha_payment_standard precedence is now: published ZIP standard, then
metro SAFMR, then the LA County local schedule, then county FMR. The
ZIP paths only fire on a match, so county/microsim households are
unchanged. Fills the previously stubbed small_area_fair_market_rent and
safmr_used_for_hcv variables.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (cf06458) to head (8eff9d6).
⚠️ Report is 14 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #8738   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            5         4    -1     
  Lines           73        80    +7     
=========================================
+ Hits            73        80    +7     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

hua7450 and others added 2 commits June 24, 2026 17:02
safmr_used_for_hcv is now backed by an explicit list of HUD's
mandatory-SAFMR metros (the SAFMR_HCV_DESIGNATED_METROS constant; 24 CFR
888.113) rather than `small_area_fair_market_rent > 0`, and
pha_payment_standard gates its metro branch on it. This keeps raw SAFMR
data available for other uses (e.g. a reform's rent cap) without those
ZIPs adopting SAFMR as their HCV payment standard. Behavior is unchanged
for the current data (the four Texas metros).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The SAFMR-for-HCV designation was sourced from the metros that happened to
be in the SAFMR data file rather than HUD's mandatory list, wrongly
including Houston. Per HUD Notice PIH 2023-32 Appendix A the mandatory
Texas metros are Dallas, Fort Worth-Arlington, San Antonio (2018 cohort)
and Beaumont-Port Arthur (2024 cohort); Houston is not designated.

- Correct SAFMR_HCV_DESIGNATED_METROS and re-scope the SAFMR data to the
  four mandatory metros (drop Houston, add Beaumont-Port Arthur).
- Encode Houston Housing Authority's adopted tiered payment standards in
  zip_code_payment_standards.csv, so Houston ZIPs use HHA's standard
  (e.g. 77002 2BR = $1,628) with safmr_used_for_hcv = false.
- Update tests, READMEs, and the loader docstring.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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