Hedge Research · R-MODEL.cap-rate

The implied cap rate of every U.S. ZIP

Cap rate is the number institutional real-estate buyers actually speak: the unlevered yield of a property — net operating income divided by what you pay, before any mortgage. This page computes an implied cap rate for every scored ZIP from modeled NOI, ranks the markets, and shows how cap rate is just DSCR with the financing stripped out. It is a screen, not an appraisal.

loading…

Every number here is generated by scripts/compute_cap_rate.py from zip_render.json — Zillow ZHVI / ACS home values, a blended best-rent series, NAIC 2022 DP-3 landlord insurance and Tax Foundation per-state property tax. The NOI is the canonical one — the exact op-cost model the DSCR v3 recompute uses.

01What a cap rate is — and how we compute it

Cap rate asks one question: if you paid cash for this asset, what yield does it throw off? It is unlevered by definition — no mortgage, no loan-to-value, no debt service. Just NOI over price.

# 1. canonical NOI — identical op-cost model to DSCR v3
op_cost = prop_tax_pct(state) + dp3_insurance_pct(state) + 0.50% maint reserve
noi = best_rent × 12 × 0.89 − home_value × op_cost

# 2. cap rate — NOI over value, no financing
cap_rate = noi ÷ home_value

Canonical NOI

Effective rent (best_rent × 12 × 0.89, an 11% vacancy / credit-loss haircut) minus three real operating costs: Tax Foundation per-state effective property tax, NAIC 2022 DP-3 landlord insurance, and a labeled 0.50% maintenance reserve assumption. This is the same NOI the DSCR v3 model uses — cap rate and DSCR share a numerator.

Unlevered — on purpose

No mortgage enters the cap rate. That is the point: it isolates the asset's return from the buyer's financing choice. Two investors with different loans see the same cap rate on the same building; they see different DSCRs. Cap rate is the property; DSCR is the deal.

02The national cap-rate distribution

Modeled cap rate across every scored ZIP, in 1-point buckets. The bulk of the country clusters in a low single-digit band — modern home values have outrun rents — with a long, thin high-cap-rate tail of distressed and rural markets.

03Highest implied cap rates

Metro-scale counties (≥8 scored ZIPs, >150k people) ranked by median cap rate. Fat cap rates concentrate in low-price markets: when home values are cheap relative to rent, the unlevered yield is high — and so, usually, is the perceived risk.

04Lowest implied cap rates

The other tail: expensive coastal and resort metros where home prices are driven by owner-occupier and second-home demand, not rent. A cap rate near zero — or negative — means modeled NOI barely covers, or fails to cover, the carrying costs.

05Cap rate is DSCR's unlevered cousin

The two metrics are the same NOI seen through two different denominators.

Cap rate — the asset

cap_rate = noi ÷ home_value

Answers: what does the property yield, full stop. Independent of rates, of LTV, of who is buying. The number a seller and an all-cash buyer agree on.

DSCR — the deal

dscr = noi ÷ (home_value × LTV × ann_factor)

Answers: does the rent cover this loan. Same NOI on top; the denominator is debt service instead of price. When mortgage rates rise, DSCR falls while cap rate does not move — that gap is the financing drag.

Mechanically, for a fixed loan, DSCR is just cap rate scaled: dscr = cap_rate ÷ (LTV × ann_factor). So a market's cap-rate rank and its DSCR rank move together — cap rate tells you which markets yield; DSCR tells you whether today's debt lets you keep that yield. Hunt with cap rate; underwrite with DSCR.

06Methodology & honest caveats

Cap rate is computed by scripts/compute_cap_rate.py over the ZIPs in zip_render.json that carry both a home value and a rent. Home value is Zillow ZHVI where available, ACS median home value otherwise. Output is the new file data/cap_rate.json — this script writes nothing into zip_master.json or the heatmap.

What this number is not