Accuracy
Accuracy
Section titled “Accuracy”The current published artifact is p5v4-2026.07, as of 2026-07-13. Accuracy is not one county-wide percentage: it varies by property type, geography and whether the engine has enough comparable sales to issue a value at all.
Current point-in-time scorecard
Section titled “Current point-in-time scorecard”For each historical subject, the validator admits only sales with a sale_date strictly before the subject sale. It also rebuilds comp condition labels from that prior-only pool. The table reports errors only where the engine issued a Tier-1 comp value; suppression is reported separately and must be read alongside error.
| Segment | Attempted | Valued | MdAPE | Within ±20% | Median bias | Suppressed |
|---|---|---|---|---|---|---|
| South Side SFH | 198 | 72 | 15.5% | 62% | +0.7% | 63.6% |
| North Side 2–4 unit | 180 | 38 | 16.4% | 55% | +0.5% | 78.9% |
| Suburban Cook SFH (Oak Park/Berwyn) | 243 | 104 | 12.2% | 72% | +3.8% | 57.2% |
| $1M+ luxury, Tier-1 only | 278 | 162 | 13.8% | 64% | +0.5% | 41.7% |
| Lake County | 5 | 0 | — | — | — | 100% |
MdAPE is median absolute percentage error. “Within ±20%” is the share of issued values whose error was no more than 20%. Bias is the median signed percentage error; positive means the model ran high. These statistics are conditional on the engine issuing a value. They do not describe suppressed properties, and the low valued counts in some segments make the figures unstable.
Lake County is intentionally unvalued because the current comparable-sales corpus is Cook-only. It is context coverage, not valuation coverage.
What this does and does not prove
Section titled “What this does and does not prove”This is a bounded, internal, retrospective validation—not an independent appraisal study. Holdout membership is identified retrospectively from resale patterns. Comparable-sale facts are point-in-time, but building characteristics come from current assessor records rather than historical snapshots. One concrete consequence of that assessor snapshot: a comp’s current year-built can postdate an old sale when the parcel was torn down and rebuilt, so a pre-teardown sale can look like a sale of the newer structure. Permit linkage is not included in this run, and the segment samples cover selected Chicago/suburban areas rather than every block in Cook County.
The scorecard validates the comp-value path. It does not validate:
- the rent model, because realized licensed rental data is not loaded;
- rehab point estimates, whose rough proxy test has 55.9% MAPE and −40.1% median bias;
- suggested-offer performance or investment returns;
- Lake County valuation; or
- fairness clearance. The separate error-differential fairness gate is still open. Fairness is measured per cell — majority-minority vs other-tract error compared within each city/suburb × property-type × price-tier cell, each with a bootstrap interval — rather than by a single pooled regression coefficient.
The engine therefore returns a range or a refusal unless evidence clears its display gates. A model error rate is not permission to turn a range into a bid.
Other validation artifacts
Section titled “Other validation artifacts”The standing flip-pair file is still stamped p2v1-2026.07 (2026-07-10). It is excluded from current-model claims until regenerated with p5v4-2026.07; the API reports this as flip_pair_artifact_stale.
No rent accuracy is published. Status: awaiting_mls_rentals. The HUD SAFMR anchor covers 370 ZIPs, but an anchor is not a realized-rent backtest.
The rehab calibration is labeled rough. Its implied-cost identity confounds purchase discount, financing, holding period and margin, so it is directional evidence that the current dollars-per-square-foot bases run low—not a reliable project budget.
Source of record: pipeline/out/scorecards.json. The public API exposes the same segment cells at /api/metrics/scorecard and warns when an artifact version is stale.
Rent model validation
Section titled “Rent model validation”Harness: DEVELOPMENT_PLAN_V3 3.7 – predicted rent vs. active MLS/RentCast rental listings and/or realized leases. Generated 2026-07-12, model p5v3-2026.07.
This validates the rent model the same way the section above validates ARV: predicted rent vs. the best available evidence at the time (active rental listings and/or realized leases, whichever the artifact used – check method per segment below). A rent MdAPE here is a genuinely different number from the ARV MdAPE above; do not average them.
Artifact present but in an unrecognized shape as of this build – raw contents:
{ "version": "rent-validation-v1-2026.07", "generated": "2026-07-12", "model_version": "p5v3-2026.07", "engine_parity": "worker.js bedroomRent / rentEngineV3 (constants mirrored)", "sources": { "safmr": "dist/data/safmr.json (HUD FY2026 SAFMR)", "zori": "Zillow ZORI zip (uc_sfrcondomfr_sm_sa), latest month 2026-05-31" }, "external_validation": "pending RentCast post-deploy", "safmr_bound_check": { "served_band": "[0.85, 1.6] x (SAFMR-2BR x BR_RATIO); reno rent capped at 1.6x", "zip_br_cells_checked": 1850, "post_clamp_violations": 0, "violations": 0, "clamp_binds": 0, "clamp_bind_rate": 0, "interpretation": "served rent is clamped to the band by construction so post-clamp violations are 0; clamp_binds counts cells where the pre-clamp ZORI/SAFMR blend fell outside the band (the bound is active there).", "corpus_zips_missing_safmr": [ "60486", "60493", "60648", "60658", "60698", "69612" ], "corpus_zips_missing_safmr_count": 6, "corpus_zip_source": "properties(cook+lake)", "unbounded_rent_risk": "a corpus ZIP with no SAFMR anchor takes the ZORI-only [0.6,1.8] path -> the only way served rent leaves the SAFMR band; count above." }, "sqft_monotonicity": { "function": "clamp((gla/1100)^0.30, 0.75, 1.30)", "sweep_sqft": [ 500, 750, 1000, 1100, 1500, 2000, 3000, 4000 ], "sweep_multiplier": [ 0.7894, 0.8915, 0.9718, 1, 1.0975, 1.1964, 1.3, 1.3 ], "monotone_nondecreasing": true, "by_construction": "exponent 0.30 > 0 (strictly increasing) then clamped -> monotone" }, "zori_vs_safmr_divergence": { "n_zips": 212, "latest_zori_month": "2026-05-31", "divergence_pct_summary": { "median": 5.4, "p10": -8.6, "p90": 29.8, "n_market_above_voucher": 142, "n_voucher_above_market": 69 }, "s8_arbitrage_top": [ { "zip": "60804", "zori": 1268, "safmr_2br": 1490, "divergence_pct": -14.9 }, { "zip": "60603", "zori": 2294, "safmr_2br": 2670, "divergence_pct": -14.1 }, { "zip": "60827", "zori": 1253, "safmr_2br": 1450, "divergence_pct": -13.6 }, { "zip": "60174", "zori": 1877, "safmr_2br": 2170, "divergence_pct": -13.5 }, { "zip": "60640", "zori": 2019, "safmr_2br": 2300, "divergence_pct": -12.2 }, { "zip": "60563", "zori": 2109, "safmr_2br": 2400, "divergence_pct": -12.1 }, { "zip": "60093", "zori": 2121, "safmr_2br": 2410, "divergence_pct": -12 }, { "zip": "60660", "zori": 1891, "safmr_2br": 2150, "divergence_pct": -12 }, { "zip": "60626", "zori": 1767, "safmr_2br": 2000, "divergence_pct": -11.7 }, { "zip": "60435", "zori": 1450, "safmr_2br": 1630, "divergence_pct": -11 }, { "zip": "60615", "zori": 1928, "safmr_2br": 2160, "divergence_pct": -10.7 }, { "zip": "60193", "zori": 2042, "safmr_2br": 2280, "divergence_pct": -10.4 }, { "zip": "60007", "zori": 1786, "safmr_2br": 1990, "divergence_pct": -10.3 }, { "zip": "60005", "zori": 1742, "safmr_2br": 1940, "divergence_pct": -10.2 }, { "zip": "60173", "zori": 2102, "safmr_2br": 2340, "divergence_pct": -10.2 } ], "market_most_above_voucher": [ { "zip": "60543", "zori": 2500, "safmr_2br": 1660, "divergence_pct": 50.6 }, {Spatial walk-forward validation
Section titled “Spatial walk-forward validation”The committed spatial walk-forward artifact is stamped p5v4-2026.07 (2026-07-14), not the current p5v5-2026.07 model. Its statistics are excluded from current-model claims until the corpus-backed harness is rerun.
