Идея. В отличие от st1/st2 (mean-reversion — ставка на возврат спреда к среднему), momentum ставит на продолжение относительного тренда. Крипта исторически трендова — это другой класс edge.
Механика. Каждые holding часов ранжируем топ-30 ликвидных монет по доходности за прошлые lookback закрытых баров и лонгуем k лидеров равным нотионалом. Только лонг — шорты убраны: бэктест показал, что short-нога теряет на растущей крипте (long +2928% / short −80% за 180д) и раздувает просадку.
Рыночный фильтр. На ребалансе, если равновзвешенный индекс рынка ниже своей SMA(market_ma) — портфель уходит в кэш (медвежий режим). Это срезает главный риск momentum — обвал на развороте: бэктест 180д maxDD −92% → −42%, Sharpe 1.14 → 3.04, ret +8% → +237% (тейкер). ~49% времени в кэше в просадки рынка.
Честность. Стратегия отобрана honest walk-forward OOS (параметры на train, прогон на невиданном test) + проверена по третям периода — в плюс даже когда рынок падал −21%/−15%. Индикаторы только по закрытым барам (no repaint), издержки тейкерные.
⚠ Paper, без реальных ордеров (Phase 1). Цифры бэктеста/сравнения — по close-ценам без модели стакана, это верхняя граница. Честный показатель — live forward-test ниже, он копится медленно.
| дата | equity | Δ за день | ребалансов |
|---|
| время | equity | оборот | лонг | шорт |
|---|
| окно | lookback | holding | return% | Sharpe | maxDD% |
|---|
Идея. Обыкновенные (SBRF, серии SR*) и привилегированные (SBPR, серии SP*) акции одного эмитента жёстко коинтегрированы — спред SBPR − SBRF колеблется в узком коридоре. Торгуем возврат спреда к средней: при пробое полос Боллинджера входим против движения, выходим на пересечении SMA.
Механика. На закрытии каждого 10-мин бара считаем спред и BB(SMA=200, 2σ). SELL (шорт спреда = купить SBRF + продать SBPR) при пробое верхней полосы; BUY (лонг спреда) при пробое нижней. Вход проходит ещё гейт отклонения от средней (AbsOfMean — знаконезависимый, корректен при любом знаке спреда). Выход — по возврату к живой SMA. Исполнение пары атомарное: менее ликвидную ногу (SBPR) заливаем первой, при срыве второй — аварийный unwind первой.
Данные. Реальные котировки MOEX ISS (публичные, с задержкой, без ключей). Ближайшая ликвидная серия выбирается авто-роллировером; индикаторы — только по закрытым свечам (no repaint).
⚠ Paper по умолчанию; T-Bank sandbox — реальные ордера в песочнице. Боевой контур не подключён. Высокий win-rate бэктеста объясняется силой коинтеграции на спокойном периоде; честный риск — в строке maxDD и в нереализованном P&L зависшей позиции (выход только по средней, стоп-лосс опционален).
| направление | спред вх→вых | лотов | держал | проскальз. | net ₽ | причина |
|---|
| дата (МСК) | доходность ₽ | сделок | накопл. ₽ |
|---|
| дата (МСК) | дней | стоп σ | сделок | win% | net ₽ | % | maxDD% |
|---|---|---|---|---|---|---|---|
| прогонов ещё не было | |||||||
| направление | спред вх→вых | держал | net ₽ | причина |
|---|
| дата (МСК) | стоп σ | сделок | win% | net ₽ | % | maxDD% |
|---|---|---|---|---|---|---|
| прогонов ещё не было | ||||||
.tbank_token (права 0600, не в git) — переживает
рестарт. Песочница активна только в режиме live (MOEX ISS). Только SandboxService —
реальные биржевые ордера не отправляются. «Забыть токен» — удалить с диска.| контрактов (пар) | ГО нужно | % от баланса |
|---|---|---|
| нажмите «обновить» | ||
Идея. Цена ликвидного фьючерса в течение дня колеблется вокруг VWAP (средневзвешенной по объёму) — якоря институциональных исполнений. Сильное отклонение от VWAP имеет тенденцию возвращаться. Торгуем возврат: при пробое коридора VWAP ± k·σ входим против движения (лонг под коридором, шорт над), выходим на пересечении VWAP.
Отличие от st4. Не парный спред, а ОДИН инструмент — направленная ставка (лонг/шорт) с возвратом к среднему как эджем. VWAP внутридневной (сброс по дню), позиция закрывается к концу сессии (нет овернайт-риска).
Честно: VWAP-reversion на одиночном фьючерсе — слабый эдж (net около нуля на бэктесте), в отличие от коинтегрированного спреда st4. Это форвард-тест гипотезы, не готовая прибыльная стратегия.
| направл. | цена вх→вых | лотов | держал | net ₽ | причина |
|---|
| дата (МСК) | дней | σ | сделок | win% | net ₽ | % | maxDD% |
|---|---|---|---|---|---|---|---|
| прогонов ещё не было | |||||||
Идея. Из корзины акций MOEX непрерывно отбирается лучшая пара по коинтеграции/корреляции (score). Торгуем возврат спреда A − β·B к среднему: при сильном z-отклонении входим против движения, выходим при возврате z к нулю. Корреляционный гейт пускает в сделку только пока пара статистически связана.
Механика. z-score спреда: вход при |z| ≥ z_entry (лонг A / шорт B снизу, симметрично сверху), выход при |z| ≤ z_exit, стоп при |z| ≥ z_stop. Гейт: открываем только при corr ≥ corr_enter; если corr < corr_break — связь распалась, выходим и ищем новую пару.
Честно: режим paper — реальные ордера не выставляются. Индикаторы считаются только по закрытым свечам (no repaint). Динамический отбор пары — форвард-тест гипотезы, не гарантия доходности.
| направл. | пара | z вх | держал | net ₽ | причина |
|---|
| время | направление | ноги: цена входа → выхода | вход z | выход z | net P&L | причина |
|---|---|---|---|---|---|---|
| сделок пока нет — ждём первый подтверждённый вход | ||||||
Текущая торговая сессия будет обнулена: журнал сделок, открытая позиция, метрики и время работы сессии сбросятся. Это действие необратимо.
Мы не угадываем, вырастет ли биткоин. Мы берём две похожие монеты (например BTC и ETH), которые обычно ходят вместе, и ловим моменты, когда они временно разошлись. Ставка: они снова сойдутся. Покупаем отставшую, продаём убежавшую — и зарабатываем на их сближении, независимо от того, куда идёт рынок в целом.
«Насколько разошлись» измеряет спред: ln(A) − β·ln(B). β (хедж-коэффициент)
говорит, сколько единиц B уравновешивают одну единицу A — считается автоматически по истории цен,
чтобы позиция была доллар-нейтральной (одинаковый размер в обе стороны, рыночный риск гасится).
Спред гуляет вокруг своей средней. z-score показывает, насколько далеко он ушёл
(в стандартных отклонениях σ). Входим, только когда он ушёл заметно далеко
(|z| ≥ 2.5 по умолчанию) — там вероятность возврата выше:
Размер позиции — 2% от баланса, поделённый между ногами по β.
Сделка закрывается автоматически по одному из трёх событий:
|z| ≥ 8) —
режем убыток, чтобы он не разрастался;Каждая сделка — две ноги. Лонг зарабатывает на росте цены, шорт — на падении. Итог = сумма по обеим ногам − комиссии (≈0.06% за ногу × 2) − проскальзывание. Прибыль — когда монеты сошлись (выход по цели). Убыток — когда вместо сближения они разъехались ещё сильнее и сработал стоп. Это нормальный риск: выигрышей больше, но отдельные стопы крупнее — поэтому смотрим на суммарный net, а не на отдельную сделку.
На бэктесте 6 мес (9 пар): win-rate ≈73%, выходы по цели прибыли — всегда в плюс. Метрики синтетики (демо) ничего не говорят о реальной доходности — это просто проверка, что логика считается верно.