🏘️ 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.
18 datasets · 108 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) |
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). 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_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 |
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). One row per tract (Summary of All HUD Programs). Static table: the whole layer is re-paginated and the partition overwritten each run. 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 state per year (December/Q4 reading). 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¶
Total permitted housing units by county and year across all structure sizes. Primary housing-supply measure; joins to geo.counties and to census population for permits-per-capita.
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 Picture of Subsidized Households snapshot: total subsidized units and assisted residents per county (all-HUD-programs summary). Recovers the plan's county grain from the ArcGIS tract layer. Joins to geo.counties via county_fips.
View — columns are resolved by the query engine at runtime.
housing_subsidized_profile_by_county · view¶
County resident profile for all HUD programs combined (program_code = 1) from hud_subsidized_county — units, average income, HUD subsidy, and the minority / female-headed / elderly / disabled shares for the latest loaded years. Joins to geo.counties via county_fips.
View — columns are resolved by the query engine at runtime.