🏘️ housing¶
U.S. housing market and affordability data: FHFA house price indexes, Census new-residential building permits, HUD Fair Market Rents, and HUD income limits. Each row is a place-and-period observation joinable to geo (states/counties/CBSAs), econ (income, employment), census (demographics), and sec (homebuilder / REIT filings by state). Price appreciation (FHFA), new supply (permits), rental cost (FMR), and affordability thresholds (income limits) together describe local housing-market conditions.
21 datasets · 176 columns
house_price_index · table¶
FHFA House Price Index observations from the master file (all index types, flavors, frequencies, and geographies in one file). One row per (hpi_type, hpi_flavor, frequency, level, place, period). Snapshot table: the whole file is re-fetched and the partition overwritten each run; history lives in Iceberg snapshots. State-level place_id is the USPS abbreviation (join to geo.states.state_abbr); MSA-level place_id is the 5-digit CBSA code (join to geo.cbsa.cbsa_fips). Source: fhfa.gov/hpi/download/monthly/hpi_master.csv.
| Column | Type | Null | Description |
|---|---|---|---|
hpi_ |
string | yes | Index construction (e.g. 'traditional', 'expanded-data', 'distress-free') |
hpi_ |
string | yes | Transaction basis ('purchase-only', 'all-transactions') |
frequency |
string | yes | Frequency ('monthly' or 'quarterly') |
level |
string | yes | Geography level ('USA or Census Division', 'State', 'MSA', 'Puerto Rico') |
place_ |
string | yes | Human-readable place name |
place_ |
string | no | Place identifier; USPS abbr for State level, 5-digit CBSA code for MSA level, division code (e.g. 'DV_ENC') / 'USA' for national level |
data_ |
integer | no | Observation year (FHFA 'yr' column) |
period |
integer | no | Period within year — month (1-12) or quarter (1-4) per frequency |
index_ |
double | yes | Not-seasonally-adjusted index value (base 100) |
index_ |
double | yes | Seasonally-adjusted index value (base 100; null where unpublished) |
building_permits · table¶
Census Building Permits Survey — new privately-owned residential construction authorized by building permits, county annual totals. One row per county per year with buildings/units/valuation for 1-unit, 2-unit, 3-4-unit, and 5-plus-unit structures (imputed totals). Leading indicator of housing supply. Joins to geo.counties via county_fips. Source: www2.census.gov/econ/bps/County/co{year}a.txt.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
county_ |
string | yes | County name (as published by Census) |
region_ |
integer | yes | Census region code |
division_ |
integer | yes | Census division code |
units_ |
integer | yes | Number of 1-unit buildings permitted |
units_ |
integer | yes | Number of 1-unit housing units permitted |
units_ |
long | yes | Construction valuation of 1-unit permits (USD) |
units_ |
integer | yes | Number of 2-unit buildings permitted |
units_ |
integer | yes | Number of 2-unit housing units permitted |
units_ |
long | yes | Construction valuation of 2-unit permits (USD) |
units_ |
integer | yes | Number of 3-4-unit buildings permitted |
units_ |
integer | yes | Number of 3-4-unit housing units permitted |
units_ |
long | yes | Construction valuation of 3-4-unit permits (USD) |
units_ |
integer | yes | Number of 5-plus-unit buildings permitted |
units_ |
integer | yes | Number of 5-plus-unit housing units permitted |
units_ |
long | yes | Construction valuation of 5-plus-unit permits (USD) |
building_permits_place · table¶
Census Building Permits Survey — new privately-owned residential construction authorized by building permits, at PLACE (incorporated city/town/village) grain, annual. One row per place per year with buildings/units/valuation for 1-unit, 2-unit, 3-4-unit and 5-plus-unit structures (Census's imputed totals, the canonical series). This is the grain municipal housing policy is actually made at: zoning, permitting and approval decisions are a city function, and the county-grain building_permits table sums across every jurisdiction in a county plus its unincorporated area, so it cannot separate a permissive city from a restrictive neighbour. Roughly 20,000 rows per year across the four regional files, available back to 1980. GRAIN — one row per permit-issuing jurisdiction per county part per year. The unique key is (state_fips, place_fips, mcd_fips, county_fips, year); place_geoid alone is NOT a key. Two things break the naive one-row-per-place assumption. First, a jurisdiction straddling a county line is reported once per county it falls in. Second, and much larger: most rows nationally are NOT identified by place at all — in strong-MCD states (PA, MA, NJ, NY, ...) the permit-issuing jurisdiction is a township or town carried in the MCD field, and those rows have place_fips 00000. Chester County PA alone reports 57 townships that way. Use jurisdiction_type to tell which identity a row carries — 'place' (place_geoid set), 'mcd' (mcd_geoid set), 'unincorporated' (a county's leftover unincorporated area, the 99990 sentinel, also flagged by is_unincorporated_area), or 'county' (a county-wide permit office). place_geoid and mcd_geoid are populated ONLY where a real code backs them, never synthesised from a sentinel, so a join on either cannot silently merge distinct jurisdictions. Filter to jurisdiction_type='place' to compare municipalities; keep every type to reconcile against the county-grain building_permits table — but expect an exact match only for recent years. Census's place and county products do not fully agree on older vintages: 2023 and 2024 reconcile to the unit, while 2009-2022 and 2025 differ by up to 0.8% (2013: 625,225 place units against 620,785 county). Both tables here match their own source file to the row (verified against fresh downloads), so that gap is upstream, in how Census aggregates and imputes at each grain — not an ingestion difference. Treat the county table as authoritative for county totals and this one for within-county composition, rather than expecting either to be derivable from the other. months_reported says how many of the year's 12 months the jurisdiction actually reported — the rest is imputed, which matters more here than at county grain because one small jurisdiction's silence is not averaged away. Source: www2.census.gov/econ/bps/Place/{region}/{prefix}{year}a.txt.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
place_ |
string | yes | 5-digit Census place FIPS code |
place_ |
string | yes | 7-character state+place GEOID (2-digit state FIPS + 5-digit place FIPS). NULL unless a real place code backs it — never synthesised from the 00000 (MCD-reported) or 99990 (unincorporated) sentinels, so joining on it cannot merge distinct jurisdictions. |
mcd_ |
string | yes | 10-character state+county+MCD GEOID for an MCD-reported (township/town) jurisdiction; NULL when the row is not MCD-identified. The majority of rows nationally carry this rather than place_geoid. |
jurisdiction_ |
string | yes | Which identity the row carries: 'place', 'mcd', 'unincorporated' (a county's 99990 remainder) or 'county' (county-wide permit office). Filter to 'place' to compare municipalities. |
place_ |
string | yes | Place name (as published by Census) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
is_ |
boolean | yes | True when place_fips is the 99990 sentinel — a county's unincorporated remainder, not a municipality. Filter these out to compare real places; keep them to reconcile against the county-grain building_permits table. |
census_ |
string | yes | Census's own 4-digit place code (distinct from the FIPS place code) |
mcd_ |
string | yes | FIPS minor civil division code ('00000' where not applicable) |
population |
integer | yes | Place population as carried on the permit file |
csa_ |
string | yes | Combined Statistical Area code |
cbsa_ |
string | yes | Core Based Statistical Area code |
footnote_ |
string | yes | Census footnote code for the row, when present |
central_ |
string | yes | Central-city indicator for the place within its CBSA, when present |
zip_ |
string | yes | ZIP code of the permit-issuing office |
region_ |
integer | yes | Census region code (1 Northeast, 2 Midwest, 3 South, 4 West) |
division_ |
integer | yes | Census division code |
months_ |
integer | yes | Months of the year the place actually reported (0-12); the remainder is imputed |
units_ |
integer | yes | Number of 1-unit buildings permitted |
units_ |
integer | yes | Number of 1-unit housing units permitted |
units_ |
long | yes | Construction valuation of 1-unit permits (USD) |
units_ |
integer | yes | Number of 2-unit buildings permitted |
units_ |
integer | yes | Number of 2-unit housing units permitted |
units_ |
long | yes | Construction valuation of 2-unit permits (USD) |
units_ |
integer | yes | Number of 3-4-unit buildings permitted |
units_ |
integer | yes | Number of 3-4-unit housing units permitted |
units_ |
long | yes | Construction valuation of 3-4-unit permits (USD) |
units_ |
integer | yes | Number of 5-plus-unit buildings permitted |
units_ |
integer | yes | Number of 5-plus-unit housing units permitted |
units_ |
long | yes | Construction valuation of 5-plus-unit permits (USD) |
fair_market_rents · table¶
HUD Fair Market Rents — 40th-percentile gross rent by bedroom size, used to set Section 8 voucher payment standards. County-grain (New England rows may be sub-county town areas, distinguished by hud_area_code). One fetch per (year, state) returns all counties for that state. Joins to geo.counties via county_fips. Requires HUD_TOKEN. Source: huduser.gov/hudapi/public/fmr/statedata/{state}.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
hud_ |
string | no | HUD 10-digit area code (county FIPS + subdivision; PK component) |
county_ |
string | yes | County name |
town_ |
string | yes | Town/sub-county area name (New England); null elsewhere |
metro_ |
string | yes | HUD metro FMR area name |
smallarea_ |
string | yes | 1 = Small Area FMR (ZIP-based) in effect, 0 = metro-wide |
fmr_ |
integer | yes | FMR percentile (40 standard, 50 for exception areas) |
fmr_ |
integer | yes | FMR for an efficiency (0-bedroom) unit (USD/month) |
fmr_ |
integer | yes | FMR for a 1-bedroom unit (USD/month) |
fmr_ |
integer | yes | FMR for a 2-bedroom unit (USD/month) |
fmr_ |
integer | yes | FMR for a 3-bedroom unit (USD/month) |
fmr_ |
integer | yes | FMR for a 4-bedroom unit (USD/month) |
income_limits · table¶
HUD Income Limits — Area Median Income and the extremely-low (30%), very-low (50%), and low (80%) income thresholds that gate eligibility for HUD-assisted housing and LIHTC. State-grain (the HUD il/statedata endpoint returns one state summary; county/metro-level limits require per-county calls and are a documented follow-up). Covers the 50 states only — DC and the territories (AS, GU, MP, PR, VI) have no state-level aggregate in il/statedata; their income limits are still available at HUD-area grain via income_limits_county. Values shown for a 4-person household (HUD's reference size). Requires HUD_TOKEN. Source: huduser.gov/hudapi/public/il/statedata/{state}.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
state_ |
string | no | USPS state abbreviation (convenience label; the geo FK is on state_fips) |
median_ |
integer | yes | Area (state) median family income (USD/year) |
il30_ |
integer | yes | Extremely-low-income limit (30% AMI), 4-person household (USD/year) |
il50_ |
integer | yes | Very-low-income limit (50% AMI), 4-person household (USD/year) |
il80_ |
integer | yes | Low-income limit (80% AMI), 4-person household (USD/year) |
income_limits_county · table¶
HUD Income Limits at county / HUD-metro-area grain — the same 30/50/80% AMI thresholds as income_limits but resolved per HUD area rather than state-wide. The streaming transformer fetches the state's HUD area list (fmr/listCounties/{state}) then il/data/{area} for each, so one fetch unit per (year, state) yields all its areas. hud_area_code matches fair_market_rents.hud_area_code (New England rows are sub-county towns); county_fips joins geo.counties. Values are the 4-person-household figures. Requires HUD_TOKEN. Source: huduser.gov/hudapi/public/il/data/{area}.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
hud_ |
string | no | HUD 10-digit area code (county FIPS + subdivision; PK component) |
county_ |
string | yes | County/area name (as published by HUD, e.g. 'Bristol County, RI') |
metro_ |
string | yes | '1' = area is within a metro FMR area, '0' = non-metro |
metro_ |
string | yes | CBSA/metro name (null for non-metro areas) |
area_ |
string | yes | HUD income-limit area name |
median_ |
integer | yes | Area median family income (USD/year) |
il30_ |
integer | yes | Extremely-low-income limit (30% AMI), 4-person household (USD/year) |
il50_ |
integer | yes | Very-low-income limit (50% AMI), 4-person household (USD/year) |
il80_ |
integer | yes | Low-income limit (80% AMI), 4-person household (USD/year) |
hmda_loans · table¶
Home Mortgage Disclosure Act loan aggregates from the CFPB HMDA Data Browser aggregations API. One row per (year, state, action_taken, loan_purpose) with the loan count and total loan amount. Not loan-level microdata: the aggregations endpoint accepts at most two breakdown dimensions per request, so this table breaks HMDA out by loan action (originated / approved-not-accepted / denied / withdrawn / …) and loan purpose (home purchase / refinance / cash-out / …) — the mortgage-market funnel. Applicant race / ethnicity / sex breakdowns are available from the same endpoint as a documented follow-up. Joins to geo.state_ref via state_abbr and to sec homebuilder / mortgage-lender filings by state. Source: ffiec.cfpb.gov/v2/data-browser-api/view/aggregations.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | no | USPS state abbreviation (FK to geo.state_ref.state_abbr) |
action_ |
string | no | HMDA action code (1 originated, 2 approved-not-accepted, 3 denied, 4 withdrawn, 5 closed-incomplete, 6 purchased, 7 preapproval-denied, 8 preapproval-approved-not-accepted) |
action_ |
string | yes | Human-readable action_taken label |
loan_ |
string | no | HMDA loan-purpose code (1 home purchase, 2 home improvement, 31 refinancing, 32 cash-out refinancing, 4 other, 5 not applicable) |
loan_ |
string | yes | Human-readable loan_purpose label |
loan_ |
long | yes | Number of loan records in this (action, purpose) cell |
loan_ |
double | yes | Sum of loan amounts (USD) across the cell |
hmda_lending_by_tract · table¶
Real census-tract-grain HMDA lending activity — the tract/county grain housing.hmda_loans cannot provide. That table's aggregations-endpoint counties= filter is accepted and echoed back by the API but never actually applied server-side (confirmed live 2026-09-11: Story County IA and Loving County TX, population ~64, both returned their entire state's total). Real tract/county grain requires the loan-level data instead: this table downloads CFPB's "Nationwide Data Subset" loan-level export (ffiec.cfpb.gov/v2/data-browser-api/view/nationwide/csv) for each year and aggregates to (state, county, tract) via HmdaLoanLevelAggregateProvider — an embedded DuckDB query streamed directly off the downloaded file, never loaded into JVM heap as a row list. The API requires an explicit actions_taken filter alongside years or it silently returns a small undocumented partial subset instead of an error (confirmed live: omitting it returned ~261K rows for 2023; passing all 8 action codes returned the real ~1.11M). origination_count/ denial_count/origination_total_amount are counted from real loan-level records, not derived or estimated. tract_population/tract_minority_population_percent/ tract_to_msa_income_percentage are the source's own per-tract context fields (constant across a tract's loan records within a year), carried through for convenience. Complements housing.hmda_loans' state x action x purpose funnel view rather than replacing it — this table has no purpose/demographic breakdown by design, to keep the first tract-grain build scoped; that breakdown is a natural follow-on, not included here. Joins to geo.counties via county_fips and to geo.census_tracts via census_tract, where those exist.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-letter USPS state abbreviation (FK to geo.state_ref.state_abbr) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
census_ |
string | no | 11-digit census tract FIPS code; PK component with year |
application_ |
long | yes | Total loan application/action records in this tract/year (all action_taken values) |
origination_ |
long | yes | Count of records with action_taken=1 (loan originated) |
denial_ |
long | yes | Count of records with action_taken=3 (application denied) |
origination_ |
double | yes | Sum of loan_amount (USD) across originated loans (action_taken=1) in this tract/year |
origination_ |
double | yes | Median loan_amount (USD) across originated loans in this tract/year |
avg_ |
double | yes | Average interest rate across originated loans with a real reported rate; null when the source's interest_rate is 'NA' or 'Exempt' for a record, not fabricated |
tract_ |
double | yes | Tract population, as carried by the source's own per-tract context field |
tract_ |
double | yes | |
tract_ |
double | yes | Tract median family income as a percentage of the MSA/MD median family income |
year |
integer | no | HMDA filing/activity year; PK component with census_tract |
hmda_applicant_demographics · table¶
HMDA fair-lending breakdown from the CFPB HMDA Data Browser aggregations API — the applicant race / ethnicity / sex cut that hmda_loans cannot carry (the aggregations endpoint allows at most two breakdown dimensions per request, and hmda_loans spends them on action × purpose). Long format: one row per (year, state, action_taken, demographic_dimension, demographic_value) with loan count and total amount, where demographic_dimension is 'race', 'ethnicity', or 'sex'. The streaming transformer issues one request per dimension per (year, state) and unions them. Joins to geo.state_ref via state_abbr. Source: ffiec.cfpb.gov/v2/data-browser-api/view/aggregations.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | no | USPS state abbreviation (FK to geo.state_ref.state_abbr) |
action_ |
string | no | HMDA action code (1 originated, 2 approved-not-accepted, 3 denied, 4 withdrawn, 5 closed-incomplete, 6 purchased, 7 preapproval-denied, 8 preapproval-approved-not-accepted) |
action_ |
string | yes | Human-readable action_taken label |
demographic_ |
string | no | Applicant dimension: 'race', 'ethnicity', or 'sex' |
demographic_ |
string | no | HMDA category within the dimension (e.g. 'White', 'Black or African American', 'Hispanic or Latino', 'Female', 'Joint', '… Not Available') |
loan_ |
long | yes | Number of loan records in this (action, demographic) cell |
loan_ |
double | yes | Sum of loan amounts (USD) across the cell |
hmda_lar · table¶
HMDA Loan/Application Register — actual loan-level records from the CFPB Data Browser CSV export (a different endpoint from hmda_loans / hmda_applicant_demographics, which query the aggregations API and are capped at two breakdown dimensions per request and so can never carry census_tract). One row per LAR record, curated to a subset of the source's 99 columns. In DQ mode dqRowLimit caps each (year, state); a single state-year (e.g. CA 2023) is ~1M rows in production. Joins to geo.counties via county_fips (state_code+county_code) and to geo tracts via census_tract. Source: ffiec.cfpb.gov/v2/data-browser-api/view/csv.
| Column | Type | Null | Description |
|---|---|---|---|
activity_ |
integer | yes | HMDA reporting (activity) year |
lei |
string | yes | Legal Entity Identifier of the reporting institution |
county_ |
string | yes | 5-digit county FIPS (state+county) — FK to geo.counties.county_fips |
census_ |
string | yes | 11-digit census tract FIPS GEOID — the geography hmda_loans / hmda_applicant_demographics cannot carry (the aggregations API caps breakdowns at 2 dimensions per request); this table exists to carry it |
derived_ |
string | yes | Derived MSA/MD code (5-digit CBSA/Metropolitan Division) of the property location |
derived_ |
string | yes | Derived loan product type (e.g. Conventional:First Lien, FHA:Subordinate Lien) |
derived_ |
string | yes | Derived dwelling category (e.g. Single Family (1-4 Units):Site-Built) |
derived_ |
string | yes | Derived single-value applicant ethnicity (summarizes applicant_ethnicity-1..5) |
derived_ |
string | yes | Derived single-value applicant race (summarizes applicant_race-1..5) |
derived_ |
string | yes | Derived single-value applicant sex |
action_ |
string | yes | HMDA action code (1 originated, 2 approved-not-accepted, 3 denied, 4 withdrawn, 5 closed-incomplete, 6 purchased, 7 preapproval-denied, 8 preapproval-approved-not-accepted) |
loan_ |
string | yes | HMDA loan type code (1 conventional, 2 FHA-insured, 3 VA-guaranteed, 4 USDA/RHS) |
loan_ |
string | yes | HMDA loan-purpose code (1 home purchase, 2 home improvement, 31 refinancing, 32 cash-out refinancing, 4 other, 5 not applicable) |
lien_ |
string | yes | Lien status code (1 first lien, 2 subordinate lien) |
loan_ |
double | yes | Loan amount (USD) |
loan_ |
double | yes | Loan-to-value ratio (percent); TRY_CAST nulls the 'Exempt' sentinel some institutions report |
interest_ |
double | yes | Note interest rate (percent); TRY_CAST nulls the 'NA'/'Exempt' sentinels some institutions report |
rate_ |
double | yes | Rate spread over the average prime offer rate (percent); TRY_CAST nulls the 'Exempt' sentinel |
property_ |
double | yes | Property value (USD); TRY_CAST nulls the 'Exempt' sentinel |
income |
double | yes | Applicant/co-applicant combined gross annual income (USD thousands) |
debt_ |
string | yes | Debt-to-income ratio: an exact percent for most loans, but a bucketed range (e.g. '36%-<37%', '<20%', '>60%') above the CFPB's exact-value disclosure threshold, or 'Exempt' — kept as string, not numeric, so no value is silently nulled by a cast |
occupancy_ |
string | yes | Occupancy type code (1 principal residence, 2 second residence, 3 investment property) |
applicant_ |
string | yes | Applicant sex code (1 male, 2 female, 3 not provided, 4 not applicable, 6 both) |
co_ |
string | yes | Co-applicant sex code (same coding as applicant_sex; 5 no co-applicant) |
opportunity_zones · table¶
Qualified Opportunity Zones (OZ 1.0) — the ~8,764 census tracts designated under IRC §§1400Z-1/-2 by the 2018 nomination round, in effect through 2028. One row per designated tract. Static table: the whole layer is re-paginated and the partition overwritten each run; history lives in Iceberg snapshots. census_tract is the 11-digit tract GEOID; joins to geo.counties via county_fips and to geo.state_ref via state_fips / state_abbr. Source: HUD Open Data ArcGIS Opportunity_Zones FeatureServer (services.arcgis.com/VTyQ9soqVukalItT).
| Column | Type | Null | Description |
|---|---|---|---|
census_ |
string | no | 11-digit census tract FIPS/GEOID (2010 vintage; PK) |
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
state_ |
string | yes | USPS state abbreviation (FK to geo.state_ref.state_abbr) |
tract_ |
string | yes | 6-digit tract code within the county |
state_ |
string | yes | State name (as published by HUD) |
is_ |
boolean | yes | True when the tract carries HUD's rural designation |
hud_subsidized_housing · table¶
HUD "A Picture of Subsidized Households" — the all-HUD-programs summary of assisted-housing units and residents, by census tract (December 2020 snapshot): total_units, people_total, people_per_unit, avg_hh_income, and pct_disabled. One row per tract (program = 'Summary of All HUD Programs' only). Static table: the whole layer is re-paginated and the partition overwritten each run. For the richer county-level, per-program, per-year profile (occupancy, tenant rent, HUD spending, more demographic shares) see hud_subsidized_county. census_tract is the 11-digit tract GEOID; joins to geo.counties via county_fips and to geo.state_ref via state_abbr. Source: HUD Open Data ArcGIS Snapshot_HUD_Picture_Subsidized_Households FeatureServer.
| Column | Type | Null | Description |
|---|---|---|---|
census_ |
string | no | 11-digit census tract FIPS/GEOID (2010 vintage; PK) |
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
state_ |
string | yes | USPS state abbreviation (FK to geo.state_ref.state_abbr) |
tract_ |
string | yes | Census tract label (e.g. 'Census Tract 109.05') |
program |
string | yes | HUD program grouping ('Summary of All HUD Programs') |
total_ |
integer | yes | Total subsidized units in the tract |
people_ |
integer | yes | Total assisted residents (null-suppressed for small cells) |
people_ |
double | yes | Average people per assisted unit |
avg_ |
integer | yes | Average annual household income of assisted residents (USD) |
pct_ |
double | yes | Percent of assisted households reporting a disability |
hud_subsidized_county · table¶
HUD "A Picture of Subsidized Households" at county × HUD-program grain, from the annual county workbook (COUNTY_
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
state_ |
string | yes | USPS state abbreviation (FK to geo.state_ref.state_abbr) |
county_ |
string | yes | County name (as published by HUD) |
program_ |
string | no | HUD program code (1 = Summary of All HUD Programs, 2 = Public Housing, …) |
program |
string | yes | HUD program label |
sub_ |
string | yes | HUD sub-program within the program (e.g. voucher subtype; null when none) |
total_ |
integer | yes | Total subsidized units under the program |
pct_ |
double | yes | Percent of units occupied |
people_ |
integer | yes | Total assisted residents |
people_ |
double | yes | Average people per assisted unit |
avg_ |
integer | yes | Average annual household income of assisted residents (USD) |
avg_ |
integer | yes | Average monthly tenant rent contribution (USD) |
avg_ |
integer | yes | Average monthly HUD spending per unit — the federal subsidy (USD) |
pct_ |
double | yes | Percent of assisted households that are minority |
pct_ |
double | yes | Percent of assisted households that are female-headed |
pct_ |
double | yes | Percent of assisted households with head/spouse age 62+ |
pct_ |
double | yes | Percent of assisted households reporting a disability |
months_ |
integer | yes | Average months on the waiting list before admission |
housing_hpi_state_annual · view¶
State-level FHFA purchase-only price index, one row per (year, state). index_sa_year_end is the maximum seasonally-adjusted index value seen for that state within the year (not necessarily the December/Q4 reading) and index_sa_year_avg is the mean across all periods; the query does not filter by frequency, so monthly and quarterly readings for the same state/year are aggregated together. place_id is the USPS abbreviation — ready to join geo.states.state_abbr and to sec homebuilder/REIT filings by state.
View — columns are resolved by the query engine at runtime.
housing_permits_by_county · view¶
County-year rollup of building_permits: total_units (all structure sizes), single_family_units (1-unit only), multifamily_units (2-unit through 5-plus-unit combined), and total_valuation (summed construction value across all structure sizes). Primary housing-supply measure; joins to geo.counties via county_fips (permits-per-capita requires an external population join, e.g. census).
View — columns are resolved by the query engine at runtime.
housing_affordability_by_state · view¶
State-level rental affordability: average 2-bedroom Fair Market Rent against the HUD income limits for the same state and year. Bridges the rental-cost (FMR) and eligibility-threshold (income_limits) tables via shared state_fips/year — the natural cross-housing join.
View — columns are resolved by the query engine at runtime.
housing_mortgage_originations · view¶
Originated mortgages (HMDA action_taken = 1) by state, year, and loan purpose — the housing-market volume cut. Joins to geo.state_ref via state_abbr and to sec mortgage-lender / homebuilder filings by state.
View — columns are resolved by the query engine at runtime.
housing_opportunity_zone_counts · view¶
Count of designated Opportunity Zone tracts per state, split by rural vs non-rural. Joins to geo.state_ref via state_abbr.
View — columns are resolved by the query engine at runtime.
housing_hmda_denial_rate_by_race · view¶
HMDA denial funnel by state, year, and applicant race — originated (action_taken = 1) vs denied (action_taken = 3) loan counts, the core fair-lending metric. Pivots the long-format hmda_applicant_demographics table for the 'race' dimension. Joins to geo.state_ref via state_abbr.
View — columns are resolved by the query engine at runtime.
housing_subsidized_by_county · view¶
County rollup of the tract-grain hud_subsidized_housing ArcGIS snapshot (all-HUD-programs summary): tract_count, summed total_units and people_total, and avg_pct_disabled per county. Recovers county grain from the tract-level source. For a richer per-program, per-year county profile (occupancy, income, tenant rent, HUD spending, more demographic shares), see hud_subsidized_county / housing_subsidized_profile_by_county. Joins to geo.counties via county_fips.
View — columns are resolved by the query engine at runtime.
housing_subsidized_profile_by_county · view¶
County-year resident profile for all HUD programs combined (program_code = '1') from hud_subsidized_county, across all loaded years: total_units, pct_occupied, avg_hh_income, avg_tenant_rent, avg_hud_spending, and the pct_minority / pct_female_head / pct_elderly / pct_disabled shares. Joins to geo.counties via county_fips. For a lighter, tract-derived county rollup across all HUD programs combined, see housing_subsidized_by_county.
View — columns are resolved by the query engine at runtime.