← Заметки
Как мы торгуем уровни
strategy·trading·zones·execution

Как мы торгуем уровни

Движок зон, MTF-конфлюенция, лимитный maker-вход, сайзинг по Sharpe, поправка на funding. Внутридневная сторона целиком, от и до.

· Mikhail Savchenko · Обновлено

Торговые стратегии — это короткие позиционные истории на perp/spot биржах: уровни внутри дня, зоны, возврат к среднему на кластерах. Другой временной горизонт, другая ветка кода, другая БД. Этот пост — о том, как одна сделка рождается, сайзится, исполняется и закрывается.

Что мы ищем: зоны, а не уровни

«Уровень» — это одна цена. Зона — это диапазон цен, в котором исторически сам ордерфлоу её и защищает: фитили из диапазона отбиваются, пробои из диапазона удерживаются, ретесты удерживаются или ломаются предсказуемо. Зоны переживают многократные касания; уровни — часто нет.

Зоны мы собираем из:

  • Пивотов на разных таймфреймах — дневной/4ч/1ч сходятся на одном ценовом диапазоне.
  • Volume profile — POC + экстремумы value area.
  • Структур Вайкоффа — границы аккумуляции/дистрибуции на HTF.

Чтобы зона прошла фильтр, нужно минимум два из трёх. Зоны на одном источнике — это шум.

Скоринг конфлюенции

Каждому потенциальному сетапу проставляется оценка конфлюенции (confluence-score). Мы пробовали стандартное деление A/B/C — так делает большинство столов. Backtest показал контринтуитивный результат: сделки grade A работали хуже сделок grade B. Причина: A-сетапы очевидны, под них заранее становится флоу, и проскальзывание на входе съедает 30-50% ожидаемого R. У B-сетапов меньше пред-позиционирования, исполнение чище.

Поэтому grade A мы выкинули и работаем в режиме «фильтр от C, потолок B» — всё, что выше порога C, но не выше B по качеству конфлюенции. Эмпирика выиграла, вопреки ожиданиям. WR вырос с 54% до 58%, вклад в R вырос на 61%. Полные данные и аргументация, к которой мы пришли за год работы A и B параллельно, — в посте почему мы убрали сигналы grade A.

Вход: только лимит, maker-режим

В зону мы не входим маркетом. Вся идея в том, что зона сама себя защищает; если приходится догонять цену — зона провалилась. Лимитные ордера стоят на границе зоны, в maker-режиме (на Binance perps это отрицательная комиссия), с тайм-аутом: если ордер не залился за N свечей — отменяем и пересчитываем.

Инфраструктура для TWAP-нарезки есть, но внутри дня мы её почти не используем — размер сделки маленький, помещается в один лимитник, а нарезка добавляет неопределённость по исполнению, которая на 5-минутке нам не нужна.

Сайзинг: по Sharpe + поправка на funding

Два слоя:

  1. Базовый размер от Sharpe. У каждого варианта стратегии есть скользящий Sharpe за последние 60 дней. Размер пропорционален Sharpe: вариант с Sharpe 1.8 получает ~2× базового размера варианта с 0.9. Ниже 0.5 — сайзинг падает в ноль (варианты, которые не зарабатывают, мы не торгуем).

  2. Поправка на funding. Funding на perps Binance — это живые деньги. Если funding нам в плюс (стоим в шорте, funding положительный, или наоборот) — размер увеличиваем. Если против нас — сокращаем. Потолок ±25%. По книге это даёт условно бесплатные 8-15% к доходности: funding всё равно капает в карман или из кармана, и грех этим не пользоваться.

Выход: по убеждению, а не по таймеру

По фиксированному R-multiple мы не выходим. Выходим, когда:

  • Цена доходит до зеркальной зоны (зоны на другой стороне, естественный take-profit). 80% выходов идут отсюда.
  • Тезис ломается — цена закрывается через входную зону в обратную сторону на объёме. Стоп. Режем.
  • Убеждение слабеет — ордерфлоу перестаёт защищать, структура, на которой стоял вход, отыграна (HTF-свеча закрылась не так, как ожидалось, и т.п.).

«Модель убеждения» — небольшая откалиброванная штука: наполовину жёсткие правила, наполовину чтение признаков ордерфлоу (cumulative delta, изменения OI, taker imbalance). Это не ML-чёрный ящик. Это прозрачно настолько, что оператор может перебить решение прямо из кокпита.

VCA + open interest

В этом году мы добавили фильтр абсорбции (VCA — vertical close-down/up absorption). Конкретно: на зоне смотрим, как меняется OI во время фитиля. OI растёт на защищённом фитиле = флоу поглощается на уровне = сильная защита. OI падает = сквиз, защита слабее.

VCA + OI дали +11.7 п. п. к win rate на вариантах, где мы это бэктестили. Q-learning на выходе (пробовали) на том же горизонте работал хуже фиксированных правил. Вернулись к фиксированным правилам.

Как сейчас выглядит книга

Последние 90 дней живой paper-книги:

  • WR: 54.8%
  • Сумма R: +9.34R = ~$4.7k notional
  • Maker-режим активен, по комиссиям P&L в плюсе
  • Только сделки grade B, вклад +10R

Это не «доходность десятилетия» — это стабильность. Торговая стратегия работает рядом с длинными на одном балансе пользователя — см. пост про нелинейный торговый баланс о том, как кэш, NAV и маржа складываются в одно дерево.

Что мы не делаем

  • News trading. Никакого NLP, никаких реакций на заголовки. Сигнал слишком быстрый для нашей инфраструктурной задержки, и alpha decay жесточайший.
  • HFT. Наш бюджет задержки — «человек успевает заметить»: идея сделки должна быть валидна минимум 5 минут. Всё, что быстрее, живёт в субмиллисекундном мире, где нам не место.
  • Стек плечей. Максимум 3× effective notional. Мы стресс-тестили 4×, и хвостовой риск не оправдывает upside.

Сделка как проект

У каждой сделки — свой автомат состояний: prepared → open → scaling-in → defended → exiting → closed. Состояние пишется в tm_strategy_snapshots и регулярно обновляется. Если движок перезапустится посреди сделки — он подхватит с того же места: ордера всё ещё стоят на бирже, позиция всё ещё в tm_positions, последний снапшот — в БД.

У MCP можно спросить get_trading_account(strategy_id="paper_levels_bob") и получить полную картину: кэш, NAV, использованную маржу, реализованный и нереализованный PnL, время последнего снапшота. Из чата. Пока сделка ещё открыта.

Стратегия целиком — это упрямый софт, аккуратно реализующий прописанную методологию. Это не чёрный ящик; это пара тысяч строк кода, которые можно прочитать построчно в репозитории.

Похожие заметки
Все заметки →