From 92725c612250684d5285e481a71637dbf76eb562 Mon Sep 17 00:00:00 2001 From: bot-backend Date: Sun, 21 Jun 2026 09:06:36 +0300 Subject: [PATCH] =?UTF-8?q?fix(tradein):=20Mera-audit=20fix-4=20=E2=80=94?= =?UTF-8?q?=20=D0=B2=D0=B5=D1=80=D0=B8=D1=84=D0=B8=D1=86=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20DEAL=5FMAX=5FPPM2=20vs=20prod=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Данные на 2026-06-21 (prod deals table, 49 791 записей): p90=172 419 ₽/м², p95=199 583 ₽/м², p99=278 681 ₽/м², p99.9=500 000 ₽/м² deals >800k = 13 штук (0.026%) — нерыночные outlier'ы, не легитимный премиум ЕКБ. listings p99 (is_active, <800k фильтр) = 392 795 ₽/м². Вывод: DEAL_MAX_PPM2=800_000 НЕ срезает легитимный ЕКБ-премиум (p99.9 сделок=500k). Значение NOT изменено — задокументировано в комментарии рядом с константой для обоснования порога и последующей ревалидации при росте рынка. --- tradein-mvp/backend/app/services/estimator.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tradein-mvp/backend/app/services/estimator.py b/tradein-mvp/backend/app/services/estimator.py index c2fb473a..de181775 100644 --- a/tradein-mvp/backend/app/services/estimator.py +++ b/tradein-mvp/backend/app/services/estimator.py @@ -93,8 +93,15 @@ SBER_TIME_FACTOR_MAX = 1.6 # guard-bands (НЕ относительные) для ЕКБ-вторички: рынок ~100–400 К/м² (ср. пороги # _band_haircut 180/350К), премиум до ~680К. Нижняя/верхняя границы заведомо вне # рынка — режут «4.98 М за 125 м²» = 39.7 К/м² и т.п. Этаж: ЕКБ-максимум ~52 эт. +# +# Mera-audit fix-4: верифицировано vs данных prod deals (2026-06-21): +# deals p90=172_419 ₽/м², p95=199_583 ₽/м², p99=278_681 ₽/м², p99.9=500_000 ₽/м² +# deals >800k = 13 штук (0.026%) — нерыночные outlier'ы, не легитимный премиум. +# listings p99 (is_active, <800k фильтр) = 392_795 ₽/м². +# Вывод: DEAL_MAX_PPM2=800_000 НЕ режет легитимный ЕКБ-премиум (p99.9 сделок=500k). +# Значение НЕ изменено — порог адекватен. Проверить повторно при p99 > 700_000. DEAL_MIN_PPM2 = 50_000 # ниже = не arms-length (доля/обременение/ошибка) -DEAL_MAX_PPM2 = 800_000 # выше премиума → опечатка/коммерция +DEAL_MAX_PPM2 = 800_000 # выше премиума → опечатка/коммерция (verified p99.9=500k, 2026-06-21) DEAL_MAX_FLOOR = 60 # выше реального максимума ЕКБ → битый этаж (напр. floor:100) # Когорта по году постройки — типизация массовой застройки РФ.