fix(tradein): «медианный торг» гаснет на псевдорепликах и на неправдоподобном минусе (#2672) #2706

Merged
bot-backend merged 1 commit from fix/2672-distinct-listings-gate into main 2026-08-06 06:48:49 +00:00

1 commit

Author SHA1 Message Date
189379627d fix(tradein): «медианный торг» гаснет на псевдорепликах и на неправдоподобном минусе (#2672)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 8s
CI Trade-In / frontend-checks (pull_request) Has been skipped
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
CI Trade-In / backend-tests (pull_request) Successful in 3m2s
Гейт #2666/#2671 считал ПАРЫ, а пары не являются независимыми наблюдениями:
DISTINCT ON берёт по объявлению на сделку, но одно объявление переиспользуется
на десятках сделок улицы (у показываемых групп медиана — 18 сделок на одно
различное объявление). Из 64 показываемых чисел 22 (34%) стояли на ОДНОМ
объявлении: «50 пар» у Белинского 1-комн. означало 50 сделок, поделённых на
одну цену предложения, то есть не наблюдение рынка, а фабрикацию точности.

Порог по объявлениям = 2 — это граница выразимости, а не статистики: на одном
объявлении ни джекнайф, ни кластерный бутстрап не дают числа вообще (выкидывать
и пересэмплировать нечего, отклонение тождественно 0), и агрегат по всем 64
группам от добавления таких групп УЛУЧШАЛСЯ — метрика становилась тем зеленее,
чем больше в ней неизмеримого. Обоснование порогов выше 2 и их цена — в шапке
секции.

Нижняя граница ужесточена −60% → −35%. Исходное подозрение «−60% режет живой
рынок» проверено и опровергнуто: до −60% проходило всё. Ошибка была в другую
сторону — 26 из 64 показываемых чисел лежали ниже −23.7% (худший объяснимый
рынком бакет asking_to_sold_ratios), самое глубокое — −58.5%. Мы гасили «+34%»
и показывали «−58.5%» из того же артефакта пейринга, а абсурдный минус, в
отличие от абсурдного плюса, себя не опровергает.

Прод-замер (2026-08-06, 128 групп с парами, обе версии модуля в одном процессе):
показываемых 64 (50%) → 32 (25%); погасло 32 — 22 по «одно объявление», 10 по
границе. Каждое погашенное число уходит с объяснением (0 молчаливых), пары,
linkage и медиана ₽/м² не тронуты.

Refs #2672
2026-08-06 11:43:58 +05:00