Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
12 сентября 2023, 19:17

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

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

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

 

Спойлер. В 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 вообще всё за Вас уже сделано, и в слое торговли пар Вы всегда будете иметь под рукой актуальные данные по корреляции. Но про это в следующих статьях.

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

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

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

14 Комментариев
  • Виктор
    12 сентября 2023, 19:31
    Вижу дядю Лёшу, ставлю лайк)
    • Union_Jack
      13 сентября 2023, 09:04
      Виктор, это который Леша Ван, заносящий в ЧС за любые неудобные ему вопросы?)
      • Ухо спекулянта
        13 сентября 2023, 09:27
        Union_Jack, согласись што у него супер мозг? да? это мини каспаров)) может у вас тоже такие заслуги есть?
        • Union_Jack
          13 сентября 2023, 09:54
          Ухо спекулянта, Каспаров?) Мелко берете! Да по сравнению с Лёшей Ваном — Ньютон и Лейбниц просто посредственные мальчишки!))
          • Ухо спекулянта
            13 сентября 2023, 11:17
            Union_Jack, жулик он, он меня вдохновил на великий штурм мозга, но… не все рождены гениями, как не пытайся… мне прикольно конешно рожать структуры ООП… он жулик положительный
  • SergeyJu
    12 сентября 2023, 20:42
    Корреляция — плохая мера сходства. Для любой конкретной задачи можно найти более качественное решение. Впрочем, делайте что хотите. 
  • ves2010
    12 сентября 2023, 22:21
    ты просто скинь эквити за 5-10 лет… где раздельно видно  лонг и шорт...
    и скинь эквити по активу 1 без 2 и по активу 2 без актива 1...

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

  • ezomm
    12 сентября 2023, 22:47
    и кому нужна эта хуреляция? График рисует объем и больше никто!
  • BITE4SAVE
    13 сентября 2023, 08:17
    Talos, спасибо за ссылку, много интересных мыслей про корреляцию и ковариацию у Кирилла в лекциях !
    Согласен полностью с комментом SergeyJu про то, что в чистом виде корреляция — плохая мера сходства, необходимо использовать также ковары, регрессии, дополнительную фильтрацию свечных сетапов и т.п.
  • Ухо спекулянта
    13 сентября 2023, 09:30
    Парни вы супер, мне бы хотя бы 10% вашей соображалки и умении концентрации над решением. Обидно но в рассии вы не будите никогда модны на этом умершем рынке
  • wrmngr
    13 сентября 2023, 10:24
    Если на то пошло то для relative value важнее коинтеграция.

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

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