Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
01 октября 2023, 18:02

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.

Обзор бесплатного робота для парного арбитража в OsEngine. Робот уже готов к запуску на Московской бирже (MOEX), криптобиржах вроде Binance, Bitget и т.д.

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.

Логика:

Робот, торгующий по графику отклонений одного инструмента от другого, рассчитанного через их разницу с мультипликатором.

На данный график накладывается две линии, рассчитанные из стандартного отклонения, умноженного на мультипликатор. Выше и ниже нуля.

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 1. График минимальных отклонений между инструментами с оптимальным мультипликатором.

  1. Когда текущее отклонение выше верхней линии на графике отклонений, входим в позицию, рассчитывая на схождение инструментов, закрываем предыдущую позицию.
  2. Когда текущее отклонение ниже нижней линии на графике отклонений, входим в позицию, рассчитывая на схождение инструментов, закрываем предыдущую позицию.
Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 2. Пример логики робота.

Расположение в проекте OsEngine:

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 3. Расположение робота в проекте.

Код робота: 

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором. 
Рис. 4. Конструктор.

  1. Создаем закрытое поле типа BotTabPair.
  2. Вызываем метод из базового класса робота TabCreate, а в качестве параметра передаем туда перечисление BotTabType, в нашем случае Pair. И ниже записываем ссылку в ранее созданное поле.
  3. Подписываемся на событие CointegrationPositionSideChangeEvent.
  4. Создаем параметр Regime для проверки состояния робота включен он или же наоборот.
  5. Так же создаем параметр MaxPositionCount для настройки максимального количества позиций.

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 5. Метод GetNameStrategyType

Создаем метод GetNameStrategyType и записываем в нем название робота.

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 6.  Обработчик событий CointegrationPositionSideChangeEvent.

Переходим в обработчик событий:

  1. Проверяем, включен робот или нет. Если нет, то выходим из события.
  2. Проверяем, есть ли у нас открытые позиции. Если да, то заходим в логику закрытия позиций и потом в логику открытия, если нет открытых позиций, то сразу переходим в логику открытия позиций.

 Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 7. Логика закрытия позиций.

1. Смотрим направление Коитеграции:

  • Направление выше верхней линии.
  • Прошлое значение было ниже нижней линии.

То мы закрываем позиции.

2. Также смотрим направление:

  • Значение ниже нижней линии.
  • Прошлое значение выше верхней линии.

Закрываем позиции.

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 8. Логика открытия позиций.

  1. Смотрим количество открытых позиций и выходим из метода, если они равняются максимальному разрешенному количеству позиций.
  2. Сравниваем нынешнее направление Коинтеграции, если оно равняется прошлому значению, то выходим из метода.
  3. Если коинтеграция пробила верхнюю линию, то на первом инструменте мы заходим в Short, а на втором в Long.

Если была пробита нижняя линия, то в точности наоборот первый инструмент входит в Long, а второй входит Short.

Тестирование:

Мы провели тестирование на 5 парах одновременно, на крипте, из ТОП 10.
И вот такие у нас получились результаты:

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.
Рис. 9. Результаты тестирования. П/У % > 0.3


Конечно же не все пары инструментов коинтегрированы достаточное кол-во времени чтобы на них зарабатывать. Нужно их подбирать. Как и подбирать отклонение с глубиной подсчёта индикаторов. Но оно того стоит. 


Логика робота буквально из нескольких десятков строк кода. Все расчёты зашиты под капот OsEngine. Приятного использования!
 

Ссылка на робота: github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/PairArbitrage/PairCointegrationSideTrader.cs

Робот для парного арбитража на схождение. На основе графика минимальных отклонений разницы инструментов с оптимальным мультипликатором.

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support

Комментарии открыты для друзей, добавляйтесь!

 

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн