Methodology

How we compute the numbers

Formulas, assumptions, and aggregation rules behind every metric. When we use a model, we say so; when we have to estimate, the assumption is in the methodology popover next to the number.

Data as of April 2026

Derived metrics on every ZIP page

Gross rental yield

Annualized rent (latest ZORI × 12) divided by typical home value (latest ZHVI). The simplest cash-flow measure; ignores expenses, financing, and vacancy.

gross_yield = (latest_rent × 12) / latest_zhvi

Example — ZIP 48213, Detroit — $750/mo rent, $80K typical value → (750 × 12) / 80,000 = 11.25%.

Net rental yield

Gross yield × 0.60 — the gross trimmed for typical operating expenses (taxes, insurance, repairs, vacancy, and management). The 40% drop is the standard rule for single-family rentals, simplified from the "50% rule" most investors use.

net_yield = gross_yield × 0.60

Cap rate

Net operating income divided by purchase price. NOI = effective rent (gross × (1 − vacancy)) − operating expenses, where vacancy defaults to 5% and operating expenses default to 35% of effective rent.

cap_rate = ((rent × 12 × (1 − vacancy)) − operating_expenses) / purchase_price

Example — A $400K home with $30K NOI → 30,000 / 400,000 = 7.5% cap rate.

Effective property tax rate

Aggregate real-estate taxes paid in the ZIP divided by aggregate home value, from the Census ACS. This is the "all-in" rate residents actually pay; it includes every assessment line item, not the headline statutory rate.

effective_tax_rate = aggregate_taxes_paid / aggregate_home_value

Typical annual tax

The effective tax rate applied to the ZIP's typical home (latest ZHVI). A rough estimate of what one ZIP-median property would pay annually.

typical_annual_tax = effective_tax_rate × latest_zhvi

Year-over-year appreciation

Percent change in the ZIP's typical home value over the trailing 12 months. The headline price-trend number; useful as a leading indicator of market momentum.

yoy = (zhvi_latest − zhvi_12mo_ago) / zhvi_12mo_ago

Mortgage payment (calculator)

Standard 30-year-fixed amortization. Excludes taxes, insurance, and HOA — those land in the buy-vs-rent calculator.

M = P × r(1 + r)ⁿ / ((1 + r)ⁿ − 1)   where P = price − down_payment, r = annual_rate / 12, n = months

Cost-to-rent monthly own-cost (calculator)

All-in monthly cost of ownership for a same-priced home compared to the typical local rent. Maintenance defaults to 1% of home value per year. Below 1.0 favors owning, above 1.0 favors renting. Near-term cash-flow view; ignores home-price appreciation, the mortgage-interest deduction, and the opportunity cost of the down payment.

monthly_own_cost = mortgage_p_and_i + (effective_tax_rate × home_value / 12) + (home_value × 0.01 / 12) + insurance

Metro percentile rankings

The ZIP's position among every ZIP in its metro for a given metric. 75th percentile means three-quarters of the metro's ZIPs scored lower.

Geographic aggregation (state, metro, county, city pages)

City, county, metro, and state-level statistics are population-weighted aggregatesof the ZIP-level data: each ZIP's value is weighted by its 2020 US Census population (ACS 5-year estimates) when rolled up. ZIPs with no reported population are excluded from the weighting.

This matches the methodology Zillow Research and FHFA use for their city, metro, and state-level indices — small ZIPs with unusual values don't move the area median around as much as the ZIPs where most residents live.

  • Population total: simple sum across the area's ZIPs.
  • Median home value: population-weighted median of the latest ZHVI.
  • Median rent: population-weighted median of the latest ZORI.
  • Top ZIPs: the five highest-value ZIPs in the area, linked for drill-down.

ZIP-to-geography mapping

  • City: Census Bureau 2020 ZCTA→Place relationship file — the authoritative ZIP-to-incorporated-place mapping the Census Bureau publishes (and that HUD's USPS crosswalk derives from). For ZIPs spanning multiple places, the place with the largest land-area overlap is picked. Rural ZIPs not inside any incorporated place have no city page and appear only on their county/metro/state pages.
  • County: Census ZCTA→County relationship file. Where a ZIP spans counties, the county with the largest land overlap is chosen.
  • Metro: OMB Core Based Statistical Area (CBSA). ZIPs outside any Metropolitan Statistical Area are excluded from metro aggregates.
  • State: USPS state abbreviation on the primary place.

Ranking pages

Top-N ranking tables exclude ZIPs with values outside the plausibility bounds for that metric — e.g. a 95% reported gross yield is a data error in the source, not a real observation, and would otherwise top every rental-yield list. Bounds match the validation ranges used to drop bad values before they reach individual ZIP pages.

Plausibility checks

Every key metric has a plausible range — wide enough to admit unusual but real markets (Detroit's 25%+ rental yields, the South Bronx's outlier appreciation) but tight enough to catch gross data errors. Values outside their range are dropped to null before they reach a page; that field shows as "—" rather than a wrong number.

MetricMinMax
Typical home value (ZHVI)$20,000$20,000,000
Typical rent (ZORI)$300/mo$15,000/mo
Gross rental yield0.5%30%
Cap rate0%15%
Year-over-year appreciation−25%+30%
5-year CAGR−10%+25%
10-year CAGR−5%+20%
Effective property tax rate0%3.5%
Population50200,000
Median household income$10,000$500,000

Bounds match the validation ranges used in the pipeline (services/pipeline/src/pipeline/transformations/). The rental-yield ceiling specifically reflects the additional filters in ADR 0017 (vacation-rental ZIP blocklist, population floor, vacation-rent guard) that prevent short-term-rental ZORI data from contaminating long-term-rental rankings.

Update cadence

  • Zillow ZHVI / ZORI: monthly.
  • Census ACS, FEMA NRI, IRS migration, NCES CCD: annually.
  • HUD-USPS crosswalks: quarterly.

The full warehouse is re-derived after each ingestion; published ZIP pages revalidate via ISR within 24 hours of a republish.