The expected_sold_range_low/high were derived from the analog asking-IQR (× asking→sold ratio): only ~55% of actual sold prices fell inside the stated range — a 50%-ish interval mislabeled as the estimate's range. Replace with a calibrated band around the expected_sold POINT, gated behind estimate_calibrated_pi_enabled (default ON): range_low = expected_sold_price × 0.649 (empirical p10 of sold/expected_sold) range_high = expected_sold_price × 1.392 (empirical p90, n=2366 prod deals) This is a genuine ~80% prediction interval (verified 80.0% coverage on the 2366-deal sample). Headline asking range_low/high (market-asking IQR) untouched. Frozen backtest baseline regenerated: range_coverage.overall 55.23 → 80.14 (n_covered 153 → 222); expected_sold POINT mape/bias and headline unchanged (only the band moved). Tests asserting the old asking-IQR × ratio band updated to the calibrated band (documented behavior change). |
||
|---|---|---|
| .. | ||
| app | ||
| data/sql | ||
| scripts | ||
| tests | ||
| .dockerignore | ||
| Dockerfile | ||
| pyproject.toml | ||