gendesign/tradein-mvp/backend/app
bot-backend ed4335b932
All checks were successful
CI / changes (pull_request) Successful in 6s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
feat(tradein/estimator): calibrated 80% prediction interval for expected_sold range (#1966)
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).
2026-06-27 16:53:14 +03:00
..
api feat(scrapers): live pacing-регулятор (GET/PUT /scraper/pacing) + data-quality coverage endpoint 2026-06-20 12:47:03 +03:00
core feat(tradein/estimator): calibrated 80% prediction interval for expected_sold range (#1966) 2026-06-27 16:53:14 +03:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas fix(estimator): data-age guards — sber staleness + IMV thin-market (#audit-5) 2026-06-20 15:03:19 +03:00
services feat(tradein/estimator): calibrated 80% prediction interval for expected_sold range (#1966) 2026-06-27 16:53:14 +03:00
tasks feat(tradein): бэкфилл координат листингов из ekb_geoportal_buildings (street+house match) 2026-06-20 17:08:46 +03:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): systemd timer scheduler — trigger script + units + SCHEDULER_ENABLE flag (#581) 2026-05-31 16:53:38 +00:00
scheduler_main.py feat(tradein): отдельный scraper-контейнер — scheduler вне API-процесса (#1182) 2026-06-12 10:50:50 +03:00