rss

Профиль компании

Финансовые компании

Блог компании Os_Engine | О корреляции в алготрейдинге

Сегодня поговорим о корреляции в контексте алготрейдинга.

Зачем это нужно? Как посчитать? Возможные применения в алготрейдинге?

 

Спойлер. В OsEngine уже есть 3 встроенных робота, которые позволяют вообще без написания кода знать коэффициент корреляции между инструментами внутри пары. Поэтому это не просто статья ради статьи. Это объяснение того, как устроен парный трейдинг. Начало небольшой серии статей.

 О корреляции в алготрейдинге

Рис. 1. Интерфейс для парного трейдинга в OsEngine.

 

1. Что такое корреляция?

Корреляция в трейдинге – числовая мера взаимосвязи между различными активами и индексами. Насколько два актива движутся синхронно.

Числовое значение корреляции бывает от + 1 до – 1, что очень удобно для расчётов и использования данного показателя во время торговли.

  1. +1 означает очень высокую синхронизированность активов. Высокую корреляцию. Свечи буквально ходят одна за другой без отклонений.
  2. -1 означает отрицательную корреляцию. Это значит, что активы ходят в разные стороны.
  3. Всё, что между этими значениями нужно как-то в коде будет интерпретировать. Не всегда очевидным образом. Но про это мы тоже поговорим в этой серии статей.

2. Зачем нужно знать коэффициент корреляции в парном трейдинге?

  1. Потому, что он очень сильно влияет на итоговую прибыльность роботов для парного и иных видов арбитражей, в которых сравниваются два актива (или актив к индексу).
  2. Изменение корреляции в динамике может само по себе давать отличные точки входа. Можно даже особо на графики инструментов не смотреть. Пример:

 О корреляции в алготрейдинге

3. Как посчитать корреляцию?

Поскольку этот пост будут читать следующие лет 5, я просто обязан привести здесь формулы для математиков. Но это не означает, что надо в этом разбираться и пугаться этих закорючек) Не пугайтесь! Всё гораздо проще!

 

Обычно предлагается делать как-то так:

О корреляции в алготрейдинге

Или так:

 О корреляции в алготрейдинге

Естественно делать так не надо. Всё уже написано до нас очень давно. Даже я с этим разбираться не стал. Ну а Вам уж точно не нужно.

Нужно использовать стандартные средства расчёта корреляции между двумя рядами, встроенными в среду, в которой вы делаете роботов.

В рамках OsEngine у нас есть слой создания роботов для торговли пар. О нём чуть позже поговорим в следующих статьях.

Также продвинутые товарищи могут пользоваться классом CorrelationBuilder:

 О корреляции в алготрейдинге

Который предоставляет нам методы для расчёта корреляции:
О корреляции в алготрейдинге

  1. ReloadCorrelation – на вход подаём: свечи 1, свечи 2, длину расчёта, получаем массив значений PairIndicatorValue.
  2. ReloadCorrelationLast – всё тоже самое, только на выходе одно значение по последним свечкам.

4. Итого.

На данный момент надо понимать:

  1. Корреляция – очень важна, когда вы торгуете парный арбитраж или актив к индексу.
  2. Штука эта генерирует торговые сигналы сама по себе и может служить фильтром для входа. Ибо сильно низкая корреляция в моменте может говорить о том, что не стоит торговать в данный момент на схождение.
  3. Рассчитать можно в любом языке стандартными способами, бросив в какой-то класс массив свечей или массив типа double. Формулы зубрить не нужно. Концентрируйтесь на торговой логике. В OsEngine вообще всё за Вас уже сделано, и в слое торговли пар Вы всегда будете иметь под рукой актуальные данные по корреляции. Но про это в следующих статьях.

 

Что почитать по алготрейдингу?

1) Сборник статей по парному арбитражу: https://smart-lab.ru/company/os_engine/blog/948250.php

2) Сборник статей по валютному арбитражу: https://smart-lab.ru/company/os_engine/blog/965051.php

3) Сборник статей по индексному арбитражу: https://smart-lab.ru/company/os_engine/blog/997533.php

4) Сборник статей про индикаторы и роботы к ним: https://smart-lab.ru/company/os_engine/blog/966919.php

5) Как стать программистом и изменить свою жизнь: https://smart-lab.ru/company/os_engine/blog/982134.php 

OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support

 Удачных алгоритмов!

 

 

★4
14 комментариев
Вижу дядю Лёшу, ставлю лайк)
avatar
Виктор, это который Леша Ван, заносящий в ЧС за любые неудобные ему вопросы?)
avatar
Union_Jack, согласись што у него супер мозг? да? это мини каспаров)) может у вас тоже такие заслуги есть?
avatar
Ухо спекулянта, Каспаров?) Мелко берете! Да по сравнению с Лёшей Ваном — Ньютон и Лейбниц просто посредственные мальчишки!))
avatar
Union_Jack, жулик он, он меня вдохновил на великий штурм мозга, но… не все рождены гениями, как не пытайся… мне прикольно конешно рожать структуры ООП… он жулик положительный
avatar
Корреляция — плохая мера сходства. Для любой конкретной задачи можно найти более качественное решение. Впрочем, делайте что хотите. 
avatar
ты просто скинь эквити за 5-10 лет… где раздельно видно  лонг и шорт...
и скинь эквити по активу 1 без 2 и по активу 2 без актива 1...

скорее всего у тя там типичные для парного трейдинга ошибки... 

avatar
и кому нужна эта хуреляция? График рисует объем и больше никто!
avatar
Talos, спасибо за ссылку, много интересных мыслей про корреляцию и ковариацию у Кирилла в лекциях !
Согласен полностью с комментом SergeyJu про то, что в чистом виде корреляция — плохая мера сходства, необходимо использовать также ковары, регрессии, дополнительную фильтрацию свечных сетапов и т.п.
avatar
Парни вы супер, мне бы хотя бы 10% вашей соображалки и умении концентрации над решением. Обидно но в рассии вы не будите никогда модны на этом умершем рынке
avatar
Если на то пошло то для relative value важнее коинтеграция.
avatar

UPDONW
Новый дизайн