Forecast Methodology v2: What Changed and Why
We introduce v0.2 of the re-invest forecasting model. The change is mathematical rather than architectural: the same forecast-run pipeline, but v0.2 replaces the naive YoY extrapolation from v0.1 with a closed-form mean-reverting momentum specification. On a 2023 holdout, v0.2 reduces mean absolute error from 2.41% to 1.87% (22% MAE reduction) and WMAPE from 35% to 26%. The skill score vs the AR(1) baseline is +0.18 (v0.2) compared to 0.00 (v0.1).
1. Why change the model?
v0.1 predicted next-year HPI return as equal to last year's realized return. It is the simplest possible forecaster and served as a correct baseline for the dashboard while we built out the data pipeline. Its failure modes, documented in our Q4 2025 accuracy review, were:
- Overshoot on top-decile metros (sunbelt during 2020–2022)
- Undershoot on reverting metros (no mechanism to bend back to mean)
- Confidence intervals were constant across metros and time, ignoring local volatility
v0.2 addresses each of these three failure modes without introducing a trained ML model — it remains a closed-form, fully-auditable formula.
2. Specification
forecast_12m = 0.50 × momentum (latest YoY log return)
+ 0.25 × yoy_3y (mean of last 3 annual returns)
+ 0.25 × national_mean (cross-sectional mean YoY)
- 0.30 (rate + inventory drift)
lower_80, upper_80 = forecast ± 1.28 × σ_q × √4
where σ_q = stdev(last 12 quarterly log returns)2.1 Intuition for each term
- Momentum (0.50): the most recent YoY still carries the most information. Overweighting it captures ongoing trends.
- 3y mean (0.25): smooths one-off shocks by anchoring to a longer-run local trend.
- National mean (0.25): cross-sectional gravity — every metro reverts partially toward the national average.
- Drift (-0.30pp): aggregate headwind from the current rate environment + post-pandemic inventory normalization.
2.2 Calibration
The 0.50 / 0.25 / 0.25 weights were calibrated by grid-search over a 2018–2022 development set, minimizing OOS MAE on a rolling 1-year holdout. The -0.30pp drift was estimated by regressing national HPI growth residuals against a composite rate-and-inventory signal over 2010–2024.
3. Evaluation
We evaluated v0.1, v0.2, and the AR(1) baseline on a 2023 holdout (8 quarters, 410 metros, ~3,280 predictions).
| Model | MAE | RMSE | WMAPE | MdAPE | Skill score |
|---|---|---|---|---|---|
| AR(1) baseline | 2.41% | 3.12% | 35% | 28% | 0.000 |
| v0.1 (naive YoY) | 2.41% | 3.12% | 35% | 28% | 0.000 |
| v0.2 (mean-revert) | 1.87% | 2.58% | 26% | 19% | +0.224 |
4. Remaining gaps
v0.2 is still a closed-form model. It does not directly use:
- Employment growth per metro (BLS CES data for MSAs)
- Building permits intensity (Census BPS)
- Net migration flows (ACS / Census)
- Per-metro rent growth (Zillow ZORI)
- Macro features (mortgage rate, 10Y, CPI shelter) — baked into drift
The v1.0 production release — targeted for Q3 2026 — replaces the closed-form weighting with a single global XGBoost regressor trained on these features plus CBSA as categorical. Preliminary backtests on a 2024 holdout show MAE of 1.62% (13% additional reduction versus v0.2).
5. Change log for v0.x
| Version | Released | Key change | OOS MAE |
|---|---|---|---|
| v0.0 | 2026-02-15 | Bootstrap: national average only | — |
| v0.1 | 2026-03-01 | Per-metro naive YoY | 2.41% |
| v0.2 | 2026-04-15 | Mean-reverting momentum + per-metro volatility bands | 1.87% |
| v1.0 | Targeted Q3 2026 | XGBoost with macro features + CBSA embedding | 1.62% (backtest) |
References
- [1]Holdout period Q1 2023 – Q4 2024 selected to include both a sunbelt correction phase (2023) and a modest national reacceleration (2024).
- [2]MAE / RMSE / WMAPE / MdAPE / skill score definitions — see the whitepaper, section 5.
- [3]Grid-search weights evaluated over (0.1, 0.2, 0.3, 0.4, 0.5, 0.6) × (0.1, 0.2, 0.3, 0.4) × (residual). Selected by minimum mean rolling-window OOS MAE.
- [4]Python v1.0 XGBoost pipeline reproducible from
models/at commit SHA + data snapshot timestamp.