Открыть на GitHub

Схема стратегии дельта-нейтрального спреда по Z-score

Два инструмента, которые обычно ходят вместе, иногда расходятся, и разрыв между ними, как правило, снова закрывается. Схема делит одну цену на другую и получает синтетический инструмент, измеряет, насколько это отношение отошло от собственного среднего в единицах собственной волатильности, и открывает оба инструмента разом в противоположные стороны: покупает дешёвую сторону против продажи дорогой. Когда отношение возвращается туда, где оно обычно держится, обе ноги закрываются. Каждый вход к тому же проговаривается строкой текста с тем значением, которое его вызвало.

Обзор стратегии

  • Кубик индекса строит из двух реальных инструментов один синтетический, деля цену первого на цену второго, и на этот синтетический инструмент подписана серия свечей — спред приходит готовыми свечами, а не собирается вручную из двух потоков данных.
  • По свечам спреда считаются скользящая средняя и стандартное отклонение, а конвертер берёт их цену закрытия. Эти три числа — всё, что нужно для решения: где спред находится, где он обычно держится и насколько широко обычно колеблется.
  • Одна формула превращает их в z-score — расстояние от цены закрытия до среднего, делённое на отклонение, — а зеркальная формула даёт то же число с обратным знаком, так что один порог входа и один порог выхода обслуживают оба направления без второй пары констант.
  • Ещё две серии свечей идут по двум инструментам, которыми реально торгуют, а две переменные привязывают показания к торгуемому: каждая удерживает последнее число, полученное по спреду, и отдаёт его, когда закрывается свеча торгуемого инструмента, — так каждое решение идёт по часам того инструмента, на который выставляются заявки.
  • Два кубика позиции, по одному на инструмент, сообщают, что открыто. Их значения удерживаются на той же свече торгуемого инструмента и сравниваются с нулём, и схема получает четыре простых ответа: каждая нога либо пуста, либо открыта.
  • Сравнения с порогом входа говорят, находится ли спред намного ниже или намного выше своего среднего, а логическое условие соединяет это с тем, что обе ноги пусты. Только тогда четыре кубика позиции срабатывают вместе, покупая один инструмент и продавая другой одинаковым объёмом.
  • Два сравнения с порогом выхода, объединённые логическим условием, говорят, что значение мало по модулю, то есть спред вернулся к своему среднему. У каждой ноги свой отдельный вентиль закрытия, поэтому ногу, которая уже пуста, никогда не просят закрыться, а ту, что ещё открыта, — просят всегда.
  • В момент входа переменная запоминает вызвавший его z-score, форматирование строки складывает его во фразу, а кубик уведомления пишет эту фразу в лог стратегии. Панель графика рисует оба торгуемых инструмента, синтетическую серию спреда, среднее, отклонение, а также все заявки и сделки.

Правила входа и выхода

  • Вход в лонг: Зеркальный z-score выше порога входа — то есть спред стоит более чем на столько стандартных отклонений ниже собственного среднего, — и обе ноги пусты. Схема покупает торгуемый инструмент и продаёт хеджирующий, обе заявки по рынку и обе на объём заявки.
  • Вход в шорт: Z-score выше порога входа — то есть спред стоит более чем на столько стандартных отклонений выше собственного среднего, — и обе ноги пусты. Схема продаёт торгуемый инструмент и покупает хеджирующий, обе заявки по рынку и обе на объём заявки.
  • Выход: Обе ноги закрываются, когда z-score по модулю опускается ниже порога выхода, то есть когда спред вернулся в узкий коридор вокруг своего среднего. Два закрывающих кубика не несут собственного направления и настроены на закрытие позиции: каждый сам определяет, в какую сторону и каким объёмом торговать, поэтому одна и та же пара кубиков разбирает и длинный спред, и короткий. Кроме того, у торгуемой ноги есть процентный стоп-лосс, отсчитываемый от цены её исполнения. Этот стоп покрывает только одну ногу: парную позицию нельзя закрыть одной защитной заявкой, поэтому у хеджирующей ноги остаётся свой вентиль закрытия, и она уходит, когда спред возвращается.

Параметры

Параметр По умолчанию Описание
Index Expression BTCUSDT@BNBFT/TONUSDT@BNBFT Выражение, из которого строится синтетический инструмент: цена торгуемого инструмента, делённая на цену хеджирующего. Оба инструмента должны присутствовать в подключённых данных, и торгуются оба.
Spread Candles 00:05:00 Длительность свечей, на которых строится серия спреда, а значит, и свеча, по которой измеряются среднее и отклонение.
Traded Leg Candles 00:05:00 Длительность свечей, по которым отслеживается торгуемая нога. Это часы, по которым идёт вся схема, поэтому держите её равной серии спреда, иначе удержанные показания окажутся старше свечи, на которой их читают.
Hedge Leg Candles 00:05:00 Длительность свечей, по которым отслеживается хеджирующая нога. Эта серия нужна, чтобы цены хеджирующего инструмента доходили до расчёта и появлялись на графике; держите её равной двум другим.
Average Length 20 Число свечей спреда в скользящей средней, от которой отсчитывается z-score.
Deviation Length 20 Число свечей спреда в стандартном отклонении, на которое делится z-score. Держите его равным длине средней, если только вам сознательно не нужен быстрый уровень против медленной ширины.
Entry Z-Score 1.5 На сколько стандартных отклонений спред должен отойти от своего среднего, прежде чем пара будет открыта. Увеличение делает входы более редкими, а расхождение, на котором они берутся, — более широким.
Exit Z-Score 0.5 Насколько близко к своему среднему должен вернуться спред, прежде чем обе ноги будут закрыты. Значение берётся по модулю и покрывает обе стороны, поэтому одно и то же число закрывает и длинный спред, и короткий.
Order Volume 1 Объём каждой ноги, в лотах. Обе ноги отправляются одинаковым объёмом.
Stop Loss, % 1.5 Стоп-лосс для торгуемой ноги, в процентах от цены её исполнения. Он защищает только одну ногу; у хеджирующей ноги собственного стопа нет.

Детали диаграммы

  • Синтетический инструмент — это отношение, а не разность. В разности двух инструментов с сильно разными уровнями цен главенствует более дорогой, и z-score мерил бы тогда именно этот один инструмент, а не связь между двумя.
  • Две серии заканчиваются не в один и тот же момент: синтетический инструмент собирается из двух потоков данных, и его свеча закрывается чуть позже обычной. Привязка показаний к свече торгуемого инструмента держит всю схему на одних часах; если же отпускать обе серии вместе, каждая заявка датировалась бы более ранней из двух, а заявка со временем раньше текущего отклоняется.
  • Константы запускаются свечой торгуемого инструмента. Сравнению для каждого вычисления нужно, чтобы оба его значения пришли заново, поэтому константа, которая больше не отправляется, молча останавливает условие, которое она питает.
  • Деление, из которого получается z-score, ограничено снизу очень малым положительным числом, чтобы участок полностью неподвижных цен не привёл к делению на нулевое отклонение и не остановил работу.
  • За каждой ногой следит свой кубик позиции, и закрывается она по отдельному условию, поэтому, если стоп первым выбьет торгуемую ногу, хеджирующая всё равно закроется по собственному условию, а не останется висеть до следующего входа.

Использование

Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.