Обзор бесплатного робота для парного арбитража в OsEngine. Вторая модификация классического парного арбитража на схождение пары. В данном случае одновременно и корреляция и график минимальных отклонений разниц инструментов с оптимальным мультипликатором.
Сразу напоминаю, что робот уже готов к запуску на Московской бирже (MOEX), криптобиржах вроде Binance, Bitget и т.д. В общем присоединяйтесь.

Суть.
Корреляция пробивает уровень 0,9, и мы с какой-то стороны графика минимальных отклонений входим, рассчитывая на схождения пар.
Выход по обратному сигналу.

Рис. 1. Пример логики.
Расположение в OsEngine.

Рис. 2. Расположение в проекте.
Код робота.

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

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

Рис. 5. Обработчик событий CorrelationChangeEvent.
Переходим в обработчик события изменения корреляции и:
- Проверяем, включен робот или нет. Если нет, то выходим из события.
- Проверяем, есть ли у нас открытые позиции. Если да, то заходим в логику закрытия позиций, если нет открытых позиций, то переходим в логику открытия позиций.

Рис. 6. Логика закрытия позиций.
- Смотрим направление Коитеграции:
- Направление выше верхней линии.
- Прошлое значение было ниже нижней линии.
То мы закрываем позиции.
2. Так же смотрим направление.
- Значение ниже нижней линии.
- Прошлое значение выше верхней линии.
Закрываем позиции.

Рис. 7. Логика открытия позиций.
- Сравниваем последнее значение корреляции, если оно меньше 0,9, то выходим из метода.
- Смотрим количество открытых позиций и выходим из метода, если они равняются максимальному разрешенному количеству позиций.
- Если коинтеграция выше нуля, то на первом инструменте мы заходим в Short, а на втором в Long.
- Если ниже нуля, то в точности наоборот первый инструмент входит в Long, а второй входит Short.
Мы провели тест на 6 парах, вот что из этого у нас получилось:

Рис. 8. Результаты тестирования.
Данная модификация робота поможет Вам понять, насколько важно значение корреляции в парном арбитраже. Обязательно потратьте несколько вечеров в тестере и разберитесь как он устроен.

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии открыты для друзей, добавляйтесь!