B2C data: контур сверки «прогноз → факт сделки» #2900

Open
opened 2026-08-15 16:04:25 +00:00 by lekss361 · 0 comments
Owner

На этом стоит вся секция «Точность» в макете (сверка каждого прогноза с реальной сделкой, лента прогноз→факт, таблица сверок). Контура нет: в trade_in_estimates нет ни deal_id, ни actual_sold_price, ни verified_at; ни одного JOIN оценка↔сделка в коде.

Главный блокер — данные, а не код

Открытые данные Росреестра агрегированы до уровня улицы, без номера дома (зафиксировано в шапке data/sql/067_v_street_sales_vs_listings.sql). Matching работает per-street + area/rooms, значит «вернуться к своему прогнозу по этой квартире» нельзя в принципе.

Как лучше сделать (по возрастанию честности)

  1. Delisting как прокси продажи: объявление пропало из выдачи → кандидат в проданные. Дёшево, но шумно (сняли не значит продали).
  2. Самоотчёт продавца: письмо через N дней «продали? за сколько?». Нужен e-mail (см. задачу про доставку отчёта) и мотивация отвечать.
  3. Офлайн-бэктест как метрика витрины: уже есть backend/scripts/backtest_estimator.py и backtest_baseline.json (n=277: MAPE 13,23%, попадание в диапазон 81,95%). Это лабораторный замер против прошлых сделок, не point-in-time — публиковать можно только с честной подписью, чем он является.

До появления (1) или (2) любые публичные цифры точности — это цифры из (3) либо ничем не обеспеченные.

На этом стоит вся секция «Точность» в макете (сверка каждого прогноза с реальной сделкой, лента прогноз→факт, таблица сверок). Контура нет: в `trade_in_estimates` нет ни `deal_id`, ни `actual_sold_price`, ни `verified_at`; ни одного JOIN оценка↔сделка в коде. ## Главный блокер — данные, а не код Открытые данные Росреестра агрегированы **до уровня улицы, без номера дома** (зафиксировано в шапке `data/sql/067_v_street_sales_vs_listings.sql`). Matching работает per-street + area/rooms, значит «вернуться к своему прогнозу по этой квартире» нельзя в принципе. ## Как лучше сделать (по возрастанию честности) 1. **Delisting как прокси продажи**: объявление пропало из выдачи → кандидат в проданные. Дёшево, но шумно (сняли не значит продали). 2. **Самоотчёт продавца**: письмо через N дней «продали? за сколько?». Нужен e-mail (см. задачу про доставку отчёта) и мотивация отвечать. 3. **Офлайн-бэктест как метрика витрины**: уже есть `backend/scripts/backtest_estimator.py` и `backtest_baseline.json` (n=277: MAPE 13,23%, попадание в диапазон 81,95%). Это лабораторный замер против прошлых сделок, не point-in-time — публиковать можно только с честной подписью, чем он является. До появления (1) или (2) любые публичные цифры точности — это цифры из (3) либо ничем не обеспеченные.
lekss361 added the
data
priority/p2
scope/backend
labels 2026-08-15 16:04:25 +00:00
lekss361 added the
enhancement
scope/db
tradein
labels 2026-08-16 10:25:31 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2900
No description provided.