---
name: investpilot-asymmetric-regime
description: КодИнвест — фильтр режима асимметричен (лонги в медведе МОЖНО, шорты в быке нельзя); сторож молчания; порог шортов 80 не снижать
metadata:
  node_type: memory
  type: project
  originSessionId: 6f344612-b945-4107-b457-8ad2163cd988
  modified: 2026-07-29T06:12:36.270Z
---

Жалоба владельца «столько времени прошло, а бот даже акции не предлагает»
(2026-07-27) → замер: из 148 бумаг ядро строило 21 SHORT и **0 LONG**.
Причина структурная, не рыночная: фильтр режима отменял ЛЮБОЙ лонг, пока
IMOEX ниже SMA200 (т.е. весь медвежий рынок). См. D42/D43/D44 в Obsidian.

**D42 — фильтр режима теперь АСИММЕТРИЧЕН** (`analysis/plan.py`): лонг
против падающего рынка РАЗРЕШЁН, шорт против растущего — по-прежнему
запрещён. A/B 2020-26: выбрасываемые старым фильтром лонги давали PF 1.99
(против 1.70 у стратегии в целом); общий PF 1.70→1.72, сумма +1316→+1452
п.п.; 2025 год из убытка в плюс. Двойная защита лонга (SMA200 + моментум
≥`min_mom_3m`) сохранена, поэтому эффект скромный: живой прогон дал +1
бумагу, а не поток. **Важно понимать при следующих жалобах «мало
сигналов»:** в глубоком медведе лонгов почти не будет и это нормально —
защита не в фильтре режима, а в требовании роста+моментума.

**D43 — сторож молчания.** `kv["last_scan_ok"]` + `Scheduler._watch_silence()`
(порог `scan_silence_alert_h`=5ч). Урок общий: мониторинг ЖИВОСТИ ПРОЦЕССА
не заменяет мониторинг ЖИВОСТИ РАБОТЫ — у каждой периодической задачи должна
быть отметка «успешно отработала» + сторож на её свежесть. См.
[[investpilot_silent_outage_2026-07-27]].

**D44 — порог шортов 80 НЕ снижать.** Проверено на живых исходах (бэктестом
нельзя — там нет LLM), сегментированно по D39: зона 75-79 → 0 побед из 9
(-39.5%), зона 70-74 → 0 побед из 9 (-29.7%). Открытый вопрос на будущее:
шорты 80+ на живых тоже убыточны (-39.1 п.п./15 сделок) при бэктестном
PF 3.54 — расхождение разобрать, когда наберётся выборка.

**D45 — расхождение «бэктест шортов PF 3.54 vs живой минус» ЗАКРЫТО**, это
не поломка, а три искажения: (1) **PF 3.54 — иллюзия усреднения**: +717 из
+959 п.п. дал ОДИН 2022 год (обвал); без него PF **1.86** — вот реальное
ожидание; (2) **период плох и в бэктесте**: июль 2026 на IMOEX даёт PF 0.22
/ -22.2 п.п., живые -19.3 — совпадает; (3) **РЕАЛЬНЫЙ БАГ — бот шортил
облигации**: падение цены от роста ключевой ставки читалось как «тренд
вниз», цель -35% от номинала = сценарий дефолта, неисполнимо. 14 paper-
сделок дали фиктивные +115 п.п. и МАСКИРОВАЛИ правду (шорты -70.7 с ними,
**-186.1** без). Фикс: `build_plan(shortable=)`, в analyzer
`inst.kind != "bond"`. Побочно: основной живой убыток шортов — третий
эшелон вне вселенной бэктеста (122 сделки, -166.8 п.п.).

**D48 — «ослаблять вход в лонг при развороте ключевой ставки» ПРОВЕРЕНО И
ОТВЕРГНУТО** (2026-07-29, идея возникла у меня же при ручном разборе рынка).
База PF 1.77 против 1.66-1.75 у всех вариантов ослабления; out-of-sample
2024-26 база 1.38 против 1.25-1.26. В 2025 — год старта цикла снижения, где
правило должно было блистать — оно дало ХУЖЕ (лонги -60 против -46 у базы).
Узкое окно после разворота (30/60/90/180 дн) — монотонно хуже базы.
**Причина, ради которой это стоит помнить: снижение ставки уже в цене ВСЕГО
индекса и не помогает выбрать КОНКРЕТНУЮ бумагу, а «выше SMA200 + моментум» —
фильтр ОТНОСИТЕЛЬНОЙ СИЛЫ. Макро-фактор не заменяет фильтр силы, они про
разное.** Идея звучит логично и будет всплывать снова — перечитать D48, а не
перепроверять. Не проверено: облигационная часть (длинные ОФЗ растут телом при
снижении ставки) — там арифметика дюрации, а не статистика.

**How to apply:** любые правки гейтов сверять и с бэктестом, и с живыми
исходами; помнить, какой слой чем проверяется — гейты ядра (plan.py)
бэктестом, пороги LLM-панели (gates.py) только живыми исходами с
сегментацией по D39. **Главный урок D45: бэктестную цифру переносить на
живую торговлю только внутри ТОЙ ЖЕ вселенной и ТОГО ЖЕ режима рынка, на
которых её считали** — и всегда проверять, не держится ли красивый PF на
одном аномальном годе (разбить по годам ДО того, как называть цифру
владельцу).
