Methodology
How the numbers work
Section titled “How the numbers work”Every number this system emits is supposed to satisfy four rules: produced by exactly one code path, versioned, explainable, and falsifiable against realized outcomes. This section documents how close the current model (p0a-2026.07) gets, including where it falls short. Start with limitations and accuracy — the headline: median ARV miss 20.1%, measured against 744 arms-length 2–4 unit resales (as-of 2026-06), with a +4.7% hot bias.
The three places a number can come from
Section titled “The three places a number can come from”| Source | What it produces | Cadence |
|---|---|---|
| Tract signals | 26 precomputed metrics per census tract (1,492 tracts, Cook + Lake), percentile-ranked county-wide | monthly refresh |
| Comp engine | Per-address comp sets pulled live from Cook County sales records, filtered and gated at request time | per request |
| Underwrite solvers | Deterministic deal math (offers, DSCR, carry, economics gate) on top of the first two | per request |
Nothing else generates numbers. When a request can’t be served from these three honestly, the answer is “unscored” or “insufficient comps” with a reason string — never a filler value.
- Scores — the 0–100 scale, its known compression, the deal-score formula, unscored states
- Flip score · BRRRR score — factor weights and penalties
- Risk score — scored separately from opportunity, flag by flag
- Valuation — comp approach, income approach, reconciliation, refusal behavior
- Rent model — SAFMR-anchored bedroom rents, the renovated multiplier
- Underwriting — offer solvers, carry model, the economics gate
- Data sources — every feed with cadence, vintage, and coverage gaps
- Accuracy — the published backtest
- Limitations — read first
Every API and MCP response is stamped with model_version; changes that move numbers are logged in the changelog with what changed and why.