Methodology

How we build defensible forecasts.

Full transparency on every step — from ingestion to publication. We believe forecasts are only as good as the trust you can place in them, and trust is earned by showing work.

01

Data ingestion

Seven federal and open sources pulled on their native cadence (daily, weekly, monthly). All raw responses versioned to S3 before any transformation.

BLS · FRED · Census ACS · FHFA HPI · HUD FMR · Zillow ZHVI/ZORI · Redfin Data Center
02

Feature engineering

Raw series are cleaned, normalized to MSA boundaries, seasonally adjusted where appropriate, and combined into ~120 features per market per month.

Affordability · permits · migration · jobs · rent-to-price · inventory
03

Model fit

An ensemble of gradient-boosted trees and a Bayesian structural time-series model. Fit per-MSA with global priors, cross-validated on rolling windows.

XGBoost + BSTS ensemble · monthly refit · rolling CV
04

Forecast + intervals

12-month-ahead point forecasts with 80% and 95% prediction intervals. Forecasts are versioned — every historical forecast is recoverable for audit.

Point + PI · 12-month horizon · full version history
05

Validation

Out-of-sample MAE tracked continuously against BLS / Case-Shiller / FHFA releases. Degradation beyond a threshold triggers human review.

OOS MAE 1.7% @ 12mo · drift alerts
06

Publication

Forecasts published through the product, API, and research notes. Every number cites its underlying feature weights and data lineage.

Web · API · research notes · CSV export
Accuracy

We publish our forecast errors.

Out-of-sample mean absolute error against the FHFA HPI release, on 12-month horizons, refreshed monthly.

MAE (v1 target)
≤ 2.0%
12m national HPI
WMAPE (v1 target)
≤ 18%
Relative error, all MSAs
Skill score (target)
≥ 0.12
vs AR(1) baseline
Top-quartile MAE
1.2%
Best-calibrated MSAs
Why WMAPE? Traditional MAPE explodes when realized HPI growth is near zero, which happens regularly in smaller MSAs during flat markets. WMAPE (Σ|y−ŷ| / Σ|y|) weights by market size and stays well-defined.
Why skill score? Reports improvement over the AR(1) baseline directly — if a model can't beat "last year's change, applied forward" by at least 12%, it's not worth deploying.
Live metrics land here on the first production run. Full method + definitions in the whitepaper.
Glossary

Terms we use.

HPI
House Price Index. We use FHFA All-Transactions, seasonally adjusted, as our anchor series at the MSA level.
MSA / CBSA
Metropolitan Statistical Area / Core-Based Statistical Area, as defined by the OMB. 410 covered.
MAE
Mean Absolute Error — mean(|y − ŷ|). Robust, in the same units as the target.
WMAPE
Weighted Mean Absolute Percentage Error — Σ|y−ŷ| / Σ|y|. Stays well-defined near zero, unlike vanilla MAPE.
MdAPE
Median Absolute Percentage Error — median(|y−ŷ|/|y|). Outlier-robust; half of markets beat this.
Skill score
1 − (MAE_model / MAE_baseline). Positive means the model beats AR(1); 0.12 means 12% reduction in MAE.
Bias
mean(ŷ − y). Positive = systematic over-forecast. Target: |bias| < 0.3pp on the holdout.
Signal: Expand / Hold / Contract
Portfolio-oriented rollup of forecast, risk score, and valuation.
Risk score (A–F)
Forward-looking concentration of downside risk drivers: affordability, supply, migration, jobs.
ZHVI / ZORI
Zillow Home Value Index and Zillow Observed Rent Index — used as validation series.
Whitepaper

Read the full technical specification

Features, training protocol, full accuracy metrics (MAE, RMSE, WMAPE, MdAPE, skill score), and reproducibility instructions.

Read the whitepaper