Technical writing

FHFA House Price Index: The Federal Repeat-Sales Benchmark for US Home Prices

· AI Analytics
Federal DataFHFAHousingReal Estate

The Federal Housing Finance Agency House Price Index is the official federal benchmark for measuring changes in single-family home values across the United States. Built on repeat-sales methodology applied to conforming mortgages purchased or guaranteed by Fannie Mae and Freddie Mac since 1975, it is the data series that federal economic models, academic housing research, and mortgage underwriting guidelines treat as ground truth for US home price appreciation.

What the FHFA HPI Is

The FHFA House Price Index measures how much single-family home values have changed over time by tracking the same properties across multiple sales. Rather than comparing the average price of homes sold in one quarter to homes sold the next — a comparison contaminated by shifts in the mix of properties transacting — repeat-sales methodology anchors the index to observed price changes on individual homes. If a house sold for $250,000 in 2018 and $340,000 in 2023, that pair of transactions contributes a measured price gain of 36% for that property in that market over that interval.

The data underlying the FHFA HPI comes from the mortgages that Fannie Mae and Freddie Mac purchase or securitize — the conforming market. Every time a home with a conforming mortgage sells or is refinanced with an appraisal, that transaction enters the FHFA database. The index currently incorporates tens of millions of such transaction pairs stretching back to 1975, making it the longest continuously published repeat-sales home price index in the United States.

FHFA publishes the HPI quarterly at the national, Census division, state, and metropolitan statistical area (MSA) level, with an experimental monthly index at the national level and a quarterly ZIP code series published with a three-quarter lag. The purchase-only variant of the index — which excludes refinancing appraisals — is the most commonly cited series in economic research and financial reporting.

Repeat-Sales Methodology

The intellectual foundation of the repeat-sales approach is a 1963 paper by Bailey, Muth, and Nourse, which observed that the ideal way to measure pure price appreciation is to track the same asset over time rather than to compare different assets at two points in time. The method was substantially extended and popularized by Karl Case and Robert Shiller in the late 1980s, whose work produced what is now the S&P/Case-Shiller index. Both indices use repeat sales; the key differences lie in the universe of transactions and geographic coverage.

The FHFA HPI uses the weighted repeat sales (WRS) variant of the method, introduced by Case and Shiller in their 1989 paper. WRS assigns lower weight to transaction pairs with very long intervals between sales or with extreme price changes, on the theory that such pairs are more likely to reflect renovations, deterioration, or data errors than pure market price movements. A house that sold for $200,000 in 1978 and $850,000 in 2024 — a 46-year span — is downweighted relative to a house that sold in 2018 and 2022, because so much can change in 46 years that the transaction pair is less informative about current market conditions than about unobserved property changes.

The WRS estimator fits a regression of log price ratios on time dummy variables, with each observation weighted inversely to an estimate of its variance. The resulting index coefficients express cumulative price appreciation relative to the base period. Quarterly revisions occur as new transaction pairs come in that extend or fill gaps in existing price histories — the HPI for a given quarter can therefore be revised modestly in subsequent releases.

Coverage: The Conforming Mortgage Universe

The FHFA HPI covers only properties financed with conforming mortgages— loans that meet the size and underwriting standards required for purchase or securitization by Fannie Mae or Freddie Mac. In 2024, the conforming loan limit is $806,500 for a single-family property in most US counties and exceeds $1.2 million in designated high-cost areas such as coastal California, metro New York, and Hawaii.

This coverage boundary is the most important limitation of the FHFA HPI. It excludes:

To address the exclusion of FHA and USDA Rural Development loans, FHFA introduced theexpanded-data HPI in 2015. The expanded series adds FHA purchase transactions to the conforming loan pool, improving coverage in lower-price market segments and rural areas where conventional conforming lending is less dominant. The expanded-data HPI generally tracks the purchase-only HPI closely at the national level but can diverge materially at the state or MSA level in markets where FHA lending represents a large share of transactions.

Index Variants

FHFA publishes four distinct HPI series, each suited to different analytical purposes:

Each series is available in both seasonally adjusted and non-seasonally-adjusted variants. Year-over-year comparisons using the non-adjusted series and quarter-over-quarter comparisons using the seasonally adjusted series are the two standard analytical approaches.

Geographic Coverage

The FHFA HPI is published at five geographic levels, each with different sample sizes, reliability, and publication lags:

The 2020–2022 Housing Price Surge

The FHFA HPI documents one of the most rapid and geographically broad home price surges in recorded US history. Between Q1 2020 and Q2 2022, the national purchase-only HPI rose approximately 42% — a pace of appreciation with no precedent in the index's history back to 1975. The surge was not confined to a handful of hot markets; appreciation exceeded 30% in every Census division and exceeded 25% in every state.

Three structural forces drove the surge simultaneously. First, the pandemic produced an abrupt shift in housing preferences: work-from-home arrangements enabled millions of households to relocate from high-density urban cores to lower-density suburban and rural markets, generating demand in areas that had been supply-constrained only by lack of buyers rather than lack of land. Second, the Federal Reserve's zero-interest-rate policy pushed the 30-year fixed mortgage rate below 3% for the first time in modern US history, dramatically increasing the purchasing power of conforming-loan borrowers and accelerating the timeline for marginal buyers to enter the market. Third, existing housing supply was constrained by decades of restrictive zoning in coastal metros, by supply chain disruptions that raised construction material costs sharply in 2021, and by homeowners reluctant to sell during an uncertain public health environment.

The subsequent 2022–2023 correction is equally visible in the HPI. As the Federal Reserve raised the federal funds rate from near zero to over 5%, the 30-year fixed mortgage rate climbed above 7%, compressing affordability sharply. The national HPI declined modestly from its Q2 2022 peak — roughly 5–7% in the purchase-only seasonally adjusted series — before stabilizing and resuming appreciation in 2024 as inventory remained historically low despite reduced demand. The rate-lock effect — existing homeowners holding mortgages at 3% rates reluctant to sell and take on a 7% mortgage — suppressed listing inventory and prevented the kind of broad correction that followed the 2006–2008 bubble.

FHFA HPI vs. Case-Shiller vs. CoreLogic vs. Zillow

Four home price indices dominate the analytical landscape. They measure related but distinct things:

The FHFA HPI covers conforming mortgages, produces national-to-ZIP geography, is published free by a federal agency, is available quarterly with a monthly experimental national series, and goes back to 1975. It is the broadest geographic coverage of any repeat-sales index and the longest time series, but its conforming-loan restriction means it misses jumbo and cash-purchase activity.

The S&P/Case-Shiller HPI uses a broader transaction universe — any arms-length sale regardless of financing — but covers only 20 major metropolitan areas. The Case-Shiller Composite-20 is the most widely cited index in financial media and is available as a monthly series on FRED. Raw MSA-level data requires a commercial subscription, but the national composite and the 20-city composite are freely accessible. Case-Shiller captures jumbo and cash sales that the FHFA HPI misses, making it more representative of luxury urban markets.

CoreLogic HPI is a proprietary index covering a broad transaction universe including non-conforming loans. Fannie Mae, Freddie Mac, and the Federal Reserve use CoreLogic HPI in internal risk modeling. It is not publicly available without a commercial license.

The Zillow Home Value Index (ZHVI) uses a fundamentally different methodology: a hedonic model applied to all homes, including those not currently for sale, using Zillow's Zestimate estimates. ZHVI is monthly, covers all homes rather than only transacting homes, and is freely downloadable from Zillow Research. Because it includes non-transacting homes, ZHVI responds more smoothly to market shifts than transaction-based repeat-sales indices. Its accuracy depends on Zestimate quality, which varies by data availability and market activity level.

For most federal policy analysis and academic housing economics research, the FHFA HPI is the standard. For metropolitan-level analysis capturing high-end market dynamics, Case-Shiller is the complement. For tracking estimated value changes in specific neighborhoods or for off-market properties, ZHVI fills the gap.

HMDA Connection

The FHFA HPI and the Home Mortgage Disclosure Act (HMDA) data operate at different levels of the same mortgage ecosystem. The HPI aggregates transaction price data to measure market-level price trends. HMDA provides loan-level origination data for nearly every mortgage originated in the United States, including the loan amount, census tract, applicant income, race and ethnicity, lender identity, and disposition (originated, denied, withdrawn).

Together, the two datasets support distinct analytical questions. The HPI answers: how much have prices changed in this market? HMDA answers: who is getting loans in this market, at what terms, and at what denial rates? Pairing HPI appreciation with HMDA origination volume shows whether rising prices are accompanied by expanding or contracting access to credit — a critical distinction during affordability crises. Pairing HPI with HMDA denial rates by applicant race reveals whether price appreciation in a neighborhood correlates with changes in mortgage access disparities — a question central to fair lending enforcement and Community Reinvestment Act analysis.

The geographic linking unit is the census tract. HMDA data is published at the census-tract level; FHFA publishes HPI at the ZIP code level, which requires a ZIP-to-tract crosswalk (available from HUD) to merge the two datasets at fine geography.

Python: State-Level HPI Year-Over-Year Appreciation

The following script downloads the FHFA purchase-only quarterly HPI for all 50 states and DC, computes the year-over-year percent change for the most recent eight quarters, and identifies the top five and bottom five states by appreciation rate. The FHFA bulk download files are plain-text tab-delimited files; no authentication or API key is required.

import requests
import pandas as pd
import io, zipfile

# FHFA publishes bulk HPI data at the state level as fixed-width or delimited files.
# The purchase-only quarterly series (Seasonally Adjusted) for all 50 states + DC
# is available as a single flat file from the FHFA download portal.

HPI_URL = (
    "https://www.fhfa.gov/hpi/download/monthly/"
    "HPI_PO_state.txt"
)

# The purchase-only state file is tab-delimited with columns:
#   state, yr, qtr, index_sa, index_nsa
resp = requests.get(HPI_URL, timeout=60)
resp.raise_for_status()

df = pd.read_csv(
    io.StringIO(resp.text),
    sep="\t",
    header=0,
    dtype={"state": str, "yr": int, "qtr": int},
)

# Rename for clarity
df.columns = [c.strip() for c in df.columns]
df["period"] = df["yr"].astype(str) + "-Q" + df["qtr"].astype(str)
df["index_sa"] = pd.to_numeric(df["index_sa"], errors="coerce")

# Keep only the most recent 8 quarters for each state
max_yr = df["yr"].max()
max_qtr = df.loc[df["yr"] == max_yr, "qtr"].max()

# Build a linear quarter counter to make sorting straightforward
df["qnum"] = df["yr"] * 4 + df["qtr"]
max_qnum = max_yr * 4 + max_qtr

recent = df[df["qnum"] > max_qnum - 8].copy()

# Compute year-over-year change (4 quarters back) for each state
df_yoy = df.copy()
df_yoy["qnum_prev"] = df_yoy["qnum"] - 4
df_yoy = df_yoy.rename(columns={"index_sa": "idx_current"})

prev = df[["state", "qnum", "index_sa"]].rename(
    columns={"qnum": "qnum_prev", "index_sa": "idx_prev"}
)
merged = df_yoy.merge(prev, on=["state", "qnum_prev"], how="inner")
merged["yoy_pct"] = ((merged["idx_current"] - merged["idx_prev"]) / merged["idx_prev"] * 100).round(2)

# Take the most recent quarter for each state
latest = (
    merged.sort_values("qnum", ascending=False)
    .groupby("state")
    .first()
    .reset_index()
)

# Top 5 and bottom 5 by year-over-year appreciation
top5 = latest.nlargest(5, "yoy_pct")[["state", "period", "idx_current", "yoy_pct"]]
bot5 = latest.nsmallest(5, "yoy_pct")[["state", "period", "idx_current", "yoy_pct"]]

print("Top 5 states by YoY appreciation:")
print(top5.to_string(index=False))
print()
print("Bottom 5 states by YoY appreciation:")
print(bot5.to_string(index=False))

# Optional: pivot to wide format for a heat map
pivot = (
    latest[["state", "yoy_pct"]]
    .set_index("state")
    .sort_values("yoy_pct", ascending=False)
)

# With matplotlib and geopandas installed, this pivot table drives
# a choropleth where darker shading = higher appreciation.
# The state column matches the two-letter FIPS abbreviation used
# in standard US state shapefiles from the Census TIGER/Line files.
print()
print("All states sorted by YoY appreciation rate:")
print(pivot.to_string())

The FHFA purchase-only state file uses two-letter postal abbreviations for state identifiers and reports a seasonally adjusted index value and a non-seasonally-adjusted index value for each state-quarter combination. The index values are not prices — they are index levels where 100 represents the reference period (typically Q1 1980 for the purchase-only series). Year-over-year percent change is the analytically meaningful output; raw index levels are only comparable across states if you understand they reflect cumulative appreciation since 1980, not current price levels.

A choropleth map of the resulting state-level appreciation rates can be produced with geopandas and matplotlib using the Census TIGER/Line state shapefile (available at census.gov/geo/maps-data) merged on the two-letter state abbreviation. The FHFA ZIP code HPI file follows the same tab-delimited format and can be substituted for the state file to produce sub-MSA heat maps, subject to the additional three-quarter publication lag.

Limitations and Practical Cautions

The conforming-loan restriction is the most analytically significant limitation. In markets where cash purchases or jumbo loans constitute a large share of transactions — coastal California, metro New York, South Florida luxury submarkets — the FHFA HPI tracks a non-representative slice of the transaction universe. The purchase-only HPI for the Pacific Census division may understate or overstate appreciation in those markets depending on whether conforming-loan buyers and jumbo-loan buyers are responding to the same price signals. In practice, the FHFA and Case-Shiller indices for major metros track closely during normal market conditions but can diverge meaningfully during episodes when credit access shifts sharply between the conforming and jumbo segments.

Quarterly publication frequency and a roughly two-month lag after the reference quarter make the FHFA HPI slower-moving than CoreLogic or Zillow estimates, which publish monthly. The monthly FHFA experimental index provides more frequent readings but is available only at the national level and is subject to more substantial revision than the quarterly series.

ZIP code HPI volatility is a practical challenge. A ZIP code with 30 conforming purchase transactions per quarter can produce HPI estimates with very wide confidence intervals, particularly in markets with heterogeneous housing stock. Analysts using ZIP code HPI should apply a minimum transaction count filter and consider smoothing across adjacent quarters or aggregating to MSA level for small markets before drawing conclusions about neighborhood price trends.

The HPI measures price changes, not price levels. It cannot tell you that a home in Phoenix costs $420,000 and a comparable home in Detroit costs $180,000 — it can only tell you that Phoenix prices rose 8% and Detroit prices rose 3% over the past year. For cross-sectional price level comparisons, the American Community Survey median home value (5-year estimates at the census tract level) or Zillow ZHVI are the appropriate sources.


The FHFA HPI tracks price changes but not affordability or housing supply. The HUD Low Income Housing Tax Credit database documents the federally subsidized affordable housing stock that provides housing access independent of market price dynamics. See HUD LIHTC Database: Tracking the Federal Affordable Housing Tax Credit Portfolio.

Home price appreciation directly affects property insurance risk and flood exposure valuations. The National Flood Insurance Program data tracks insured properties and claims by geography, providing a property-risk counterpart to the HPI's price trend data. See NFIP Flood Insurance: The Federal Government's Property Flood Risk Dataset.

The mortgage market underlying the HPI is shaped by CFPB enforcement of fair lending and consumer financial protection rules. CFPB enforcement actions against mortgage servicers and lenders document regulatory risk in the conforming-loan market. See CFPB Enforcement Actions: The Federal Consumer Financial Protection Docket.