Add ZIP code-level HUD payment standards for Texas and Kansas#8738
Open
hua7450 wants to merge 6 commits into
Open
Add ZIP code-level HUD payment standards for Texas and Kansas#8738hua7450 wants to merge 6 commits into
hua7450 wants to merge 6 commits into
Conversation
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>
…into tx-zip-payment-standards
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8738 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 2 4 +2
Lines 37 82 +45
=========================================
+ Hits 37 82 +45
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
4 tasks
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>
- Add Houston HHA full-coverage ZIPs 77407 (Tier A) and 77587 (Tier D), which previously fell back to the county FMR - Floor the SAFMR branch in pha_payment_standard on a present value, so a missing SAFMR falls back to the county FMR instead of collapsing to $0 - Add validate="many_to_one" to both ZIP merges to fail fast on a duplicate join key (mirrors the county-FMR loader guard) - Add documentation/reference to safmr_used_for_hcv; add the HHA source to zip_code_payment_standard.reference; credit HHA in the changelog - Add regression tests for 77407/77587 and a discriminating published-over-SAFMR overlap case (75010) - Correct README counts (146 Houston ZIPs, 9 partially-covered ZIPs) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add 174 Kansas ZIPs to small_area_fair_market_rents.csv for the two mandatory-SAFMR metros: Kansas City, KS (91 KS-side ZIPs) and Wichita, KS (83 ZIPs), from HUD FY2026 SAFMRs - Suffix hud_area_name with the 2-letter state (e.g. "Dallas, TX", "Wichita, KS") so metros read unambiguously across states; the bi-state Kansas City metro uses the KS-side label - Add "Kansas City, KS" and "Wichita, KS" to SAFMR_HCV_DESIGNATED_METROS - Add 10 Kansas tests (SAFMR lookup, designation gate incl. MO-side and Topeka exclusions, end-to-end payment standard) and update the README - County FMR remains the fallback outside the mandatory-SAFMR metros Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Resolves Housing Choice Voucher (HCV) payment standards at the ZIP-code level for Texas and Kansas, replacing the county-level Fair Market Rent where finer data exists (~1,059 covered ZIPs). Previously
pha_payment_standardonly varied by county (plus a hardcoded LA County schedule).How
pha_payment_standardresolves from most to least geographically specific:zip_code_payment_standard(a PHA's actually-adopted schedule)small_area_fair_market_rent, used only wheresafmr_used_for_hcvis true (a mandatory-SAFMR metro)hud_fair_market_rent, unchangedZIP paths only fire on a match, so county-level and microsimulation households (where
zip_codeis unset) are unaffected. Where a ZIP has both a published standard and a SAFMR, the published standard wins.Data
TX published standards total 430 ZIPs (284 TDHCA + 146 HHA); TX combined distinct coverage is 885 ZIPs. Adding Kansas's 174 SAFMR ZIPs gives ~1,059 distinct covered ZIPs. The SAFMR table now holds 724 ZIPs across 6 metros.
hud_area_nameinsmall_area_fair_market_rents.csvis suffixed with the 2-letter state (e.g.Dallas, TX,Wichita, KS) so metros read unambiguously across states; the bi-state Kansas City metro's KS-side rows are labeledKansas City, KS.parameters/gov/hud/payment_standards/zip_code_payment_standards.csvparameters/gov/hud/fmr/small_area_fair_market_rents.csvVariables
small_area_fair_market_rent(ZIP→SAFMR lookup) andsafmr_used_for_hcv(designated-metro gate)zip_code_payment_standard(ZIP→published-standard lookup)pha_payment_standardThis also activates the Harris Rent Relief Act contrib reform's SAFMR-based rent cap for the covered metros — it consumes
small_area_fair_market_rent/safmr_used_for_hcv, which were previously stubs (see thechangedchangelog fragment).Notes / limitations
small_area_fair_market_rentcarries data only for the designated TX/KS metros (0 elsewhere), so the Harris reform's SAFMR-based rent cap is non-zero only there.Verification
fy2026_safmrs_revised.xlsx), filtered to the mandatory metros; the designated-metro set for both states verified against HUD's Designated SAFMR Areas list (Aug 2024). The bi-state Kansas City metro is filtered to KS-side ZIPs.pd.mergeorder-preservation confirmed on scrambled multi-household vectors; both ZIP merges now usevalidate="many_to_one".Test plan
small_area_fair_market_rent,zip_code_payment_standard,safmr_used_for_hcv, and precedence/state cases inpha_payment_standard(TX and KS, including Kansas City MO-side and Topeka exclusions)🤖 Generated with Claude Code