(medium) 09_macro_and_trend.py/main: trend_ratio=2.0 при v_prior==0 даёт максимальный буст районам без истории продаж #1508

Closed
opened 2026-06-15 05:58:56 +00:00 by bot-backend · 1 comment
Collaborator

Severity: medium · Категория: numeric · Файл: site-finder/09_macro_and_trend.py:103-105

09_macro_and_trend.py:103 — ratio = (v_rec/v_prior) if v_prior>0 else (None if v_rec==0 else 2.0). Для района без зарегистрированных сделок в прошлом полугодии (v_prior=0), но с хотя бы одной в текущем, тренд жёстко = 2.0 (максимум), независимо от величины v_rec. Далее trend_factor=clamp(2.0)=2.0 (строка 105), и в 10_score_v2.py:127-128 tf=2.0 даёт множитель скорости 1.0 (максимальный). Один зарегистрированный ДДУ в новом районе => «рост спроса x2». Импакт: артефакт отсутствия истории завышает velocity-вклад в economic (вес 30%) для новых/малоданных районов и искажает ранжирование. Фикс: при v_prior==0 не присваивать максимум, а использовать нейтральный тренд (1.0) или None с понижением уверенности.

Почему баг: Деление на ноль обходится фиксированным 2.0 без учёта величины v_rec. Это не реальный тренд, а артефакт отсутствия истории; в economic-компоненте (вес 30%) это завышает velocity_score для новых/малоданных районов и искажает ранжирование участков.

Как чинить: При v_prior==0 не присваивать максимум: использовать нейтральный тренд (1.0) или ограничивать буст по абсолютной v_rec (напр. требовать минимальный объём сделок), либо помечать как недостаточно данных.


deep-audit «армия ботов 2» · verify+harden, confidence 0.85 · unit U114

**Severity:** medium · **Категория:** numeric · **Файл:** `site-finder/09_macro_and_trend.py:103-105` 09_macro_and_trend.py:103 — ratio = (v_rec/v_prior) if v_prior>0 else (None if v_rec==0 else 2.0). Для района без зарегистрированных сделок в прошлом полугодии (v_prior=0), но с хотя бы одной в текущем, тренд жёстко = 2.0 (максимум), независимо от величины v_rec. Далее trend_factor=clamp(2.0)=2.0 (строка 105), и в 10_score_v2.py:127-128 tf=2.0 даёт множитель скорости 1.0 (максимальный). Один зарегистрированный ДДУ в новом районе => «рост спроса x2». Импакт: артефакт отсутствия истории завышает velocity-вклад в economic (вес 30%) для новых/малоданных районов и искажает ранжирование. Фикс: при v_prior==0 не присваивать максимум, а использовать нейтральный тренд (1.0) или None с понижением уверенности. **Почему баг:** Деление на ноль обходится фиксированным 2.0 без учёта величины v_rec. Это не реальный тренд, а артефакт отсутствия истории; в economic-компоненте (вес 30%) это завышает velocity_score для новых/малоданных районов и искажает ранжирование участков. **Как чинить:** При v_prior==0 не присваивать максимум: использовать нейтральный тренд (1.0) или ограничивать буст по абсолютной v_rec (напр. требовать минимальный объём сделок), либо помечать как недостаточно данных. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.85 · unit U114</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:58:56 +00:00
bot-backend added the
scope/backend
label 2026-06-15 11:02:15 +00:00
Owner

🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)

Текущее состояние кода: site-finder/09_macro_and_trend.py:103-105.

Корень: :103 ratio = (v_rec/v_prior) if v_prior>0 else (None if v_rec==0 else 2.0). Для района без зарегистрированных сделок в прошлом полугодии (v_prior==0), но с хотя бы одной в текущем (v_rec>0), ratio жёстко = 2.0 (максимум) независимо от величины v_rec. Далее :105 trend_factor = max(0.7, min(2.0, ratio)) = 2.0. В 10_score_v2.py:127-128 tf=2.0 даёт максимальный множитель скорости. Один зарегистрированный ДДУ в новом районе ⇒ «рост спроса ×2». Это артефакт отсутствия истории, который завышает velocity-вклад в economic (вес 30%) и искажает ранжирование малоданных районов.

Что править:

  • При v_prior==0 не присваивать максимум: использовать нейтральный тренд 1.0 (или Nonetrend_factor=1.0, как уже делает :105 для ratio is None).
  • Опционально: гейтить буст по абсолютному v_rec (минимальный объём сделок) либо помечать район как «недостаточно данных» и понижать уверенность.

Что посмотреть:

  • Код: 09_macro_and_trend.py:99-105; 10_score_v2.py:127-128 (потребитель trend_factor).
  • Vault: релевантных заметок не найдено.
**🔍 week ревью 1 — верификация (ПОДТВЕРЖДЕНО)** **Текущее состояние кода:** `site-finder/09_macro_and_trend.py:103-105`. **Корень:** `:103` `ratio = (v_rec/v_prior) if v_prior>0 else (None if v_rec==0 else 2.0)`. Для района без зарегистрированных сделок в прошлом полугодии (`v_prior==0`), но с хотя бы одной в текущем (`v_rec>0`), `ratio` жёстко = `2.0` (максимум) независимо от величины `v_rec`. Далее `:105` `trend_factor = max(0.7, min(2.0, ratio)) = 2.0`. В `10_score_v2.py:127-128` `tf=2.0` даёт максимальный множитель скорости. Один зарегистрированный ДДУ в новом районе ⇒ «рост спроса ×2». Это артефакт отсутствия истории, который завышает velocity-вклад в economic (вес 30%) и искажает ранжирование малоданных районов. **Что править:** - При `v_prior==0` не присваивать максимум: использовать нейтральный тренд `1.0` (или `None` → `trend_factor=1.0`, как уже делает `:105` для `ratio is None`). - Опционально: гейтить буст по абсолютному `v_rec` (минимальный объём сделок) либо помечать район как «недостаточно данных» и понижать уверенность. **Что посмотреть:** - Код: `09_macro_and_trend.py:99-105`; `10_score_v2.py:127-128` (потребитель `trend_factor`). - Vault: релевантных заметок не найдено.
bot-backend added the
needs-human
label 2026-06-15 16:44:09 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#1508
No description provided.