DSCR today is a spot number — current rent divided by current value. It tells you where a market is, not where it is going. This page forecasts metro rent growth one year and three years ahead, so debt-service coverage can be read forward, not just frozen at today. A pooled mean-reversion model on Zillow ZORI history, walk-forward backtested, honest about its skill.
The bar to beat is naive: assume rent growth simply keeps its current year-over-year rate. For every historical metro-month the model is fit only on data observed by that point, then scored on the rent growth that actually followed. Error is mean absolute error in percentage points of annual rent growth.
b in gₐ₊ₕ = a + b·gₐ
At 1 year, b is positive but well below 1 — hot markets stay warm, but converge.
At 3 years, b turns negative: today's fastest-growing
metros are, on average, tomorrow's slowest. That reversal is the forecastable signal.
| # | Metro | Rent now | 3yr fcst | CAGR |
|---|
| # | Metro | Rent now | 3yr fcst | CAGR |
|---|
| # | Metro | Rent now | YoY now | 1yr fcst | 3yr fcst | 3yr CAGR | DSCR now | DSCR fwd 3y |
|---|
DSCR fwd 3y holds property value flat and scales the spot DSCR by forecast rent growth only. It is a deliberately conservative rent-side projection — not a full DSCR forecast (it does not move home prices or mortgage rates).
We model the year-over-year rent growth rate gₐ directly, not the rent level.
Growth is persistent in the short run and mean-reverts in the medium run, so a first-order
autoregression is the natural, defensible form:
gₐ₊ₕ = a + b · gₐ
One pair (a, b) is fit per horizon by ordinary least squares across
all metro-month observations pooled together — roughly 27 000 pairs at
1 year and 21 000 at 3 years. The rent level forecast then chains the
predicted growth: rent × (1 + ĝ)^(h/12).
An earlier version fit a separate AR(1) for each of 245 metros. With only ~18–100 noisy growth observations apiece, those fits overfit badly — persistence drifted near 1.0 for hot markets and produced explosive extrapolations (a +33%/yr rent CAGR for one metro). It lost to naive by 35–50%. Mean reversion in rent growth is a structural property of the housing market, not a per-metro quirk; pooling 30 000 observations pins the coefficients tightly. Forecasts are additionally clamped to the empirical 1st–99th percentile of observed YoY growth, so no metro is projected outside the range rents have actually moved in.
A cut-off month walks forward through history. At each cut-off the pooled model is fit only on training pairs whose outcome was observed by that cut-off, then used to predict pairs whose outcome lands later. No future data leaks into any fit.
n
counts overlapping metro-month pairs; the independent sample is far smaller. The MAE
and skill direction are sound; treat the raw n as a lower-resolution figure.statsforecast and sklearn were not
available; the ticket permits a single AR/OLS model in that case.build_rent_forecast.py. Data: rent_forecast.json.