Skip to content

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.

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.

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.

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.

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
},
{

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.