---
name: investpilot-liquidity-gate
description: "КодИнвест — гейт ликвидности 10 млн ₽/день (медиана, не среднее); короткий горизонт хуже длинного; для живых исходов единица наблюдения = торговый день, бутстрап блочный"
metadata: 
  node_type: memory
  type: project
  originSessionId: 6f344612-b945-4107-b457-8ad2163cd988
  modified: 2026-07-29T07:13:47.173Z
---

Замер 2026-07-29 (D46) по двум гипотезам владельца — обе в основном
опровергнуты, внедрено только подтверждённое.

**Короткий горизонт ХУЖЕ длинного, а не «проще предугадать».** Свип срока
удержания на боевых гейтах (45 бумаг, 2020-26): PF 1 день 1.24 → 14 дней
1.77, дальше плато. С издержкой 0.1% на круг однодневки дают 1.08 = шум.
Механизм заблуждения, который стоит помнить: направление на коротком
горизонте угадывается чуть ЧАЩЕ (винрейт 50.3% против 48.2%), но средний
результат падает в 9 раз (0.16% против 1.45%) — прибыль это частота ×
размер, и размер убивается. Свинг уже дефолт (D27, живое удержание 4.5
дня), интрадей отвергнут (D33). Техническая деталь: `horizon_weeks_max`
для такого свипа НЕ годится — `build_plan` не пускает ниже 2 недель
(`horizon_weeks_min`), резать надо `trade.horizon_days` обёрткой над
`replay._simulate_exit`.

**Гейт ликвидности `settings.min_turnover_rub = 10_000_000`.** Метрика —
**медиана за 90 дней (`Features.median_value_90d`), НЕ среднее**: на живых
тикерах 7 расхождений на пороге и все в одну сторону — среднее протаскивает
разогнанный неликвид (ABIO среднее-20 45.6 млн против медианы-90 5.3 млн).
Подаётся только для share/etf (ОФЗ держим до погашения ради купона).
Отсекает 38 акций из 145. Обоснование — единственная находка, пережившая
корректную статистику: оборот <10 млн даёт PF 0.31, интервал [0.01, 0.79]
целиком ниже 1, убыток в 8 днях из 9.

**ГЛАВНЫЙ МЕТОДИЧЕСКИЙ УРОК (продолжение [[investpilot_asymmetric_regime]]
D45).** Разрез по ликвидности сперва выглядел решением: отсечка ≥100 млн
переворачивала −165% в +31%. Не пережил проверку — вся живая выборка
оказалась **12 торговыми днями**, где два дня (13–14.07) дали весь плюс;
без них фильтр спасает 21% убытка, а не 80%. Бутстрап по СДЕЛКАМ завышал
уверенность: сделки одного дня скоррелированы (все шорты, один индекс),
эффективная выборка ~12, а не 159. **Для живых исходов единица наблюдения
— торговый день, а не сделка; бутстрап обязан быть блочным по дням.**
После поправки интервал «>1 млрд» = [0.57, 10.29] — прибыльность ликвидных
бумаг НЕ доказана, и порог ведёт себя как шум (200 млн → PF 0.90 между
1.19 и 1.37).

**How to apply:** прежде чем нести владельцу цифру по живым данным —
посчитать, на скольких РАЗНЫХ днях она держится, и убрать 1-2 лучших дня;
если находка рассыпается, это шум. Замер сделан на шортах (лонгов в базе
нет вовсе — асимметричный фильтр включён 27.07), перенос гейта на лонги
сделан по механической причине (неисполнимый объём), не по статистике.
