Корреляция торговых роботов.
Вступление.
Недавно у меня вышло видео на YouTube, где я рассказываю и показываю то, как анализирую корреляцию своих торговых алгоритмов, можете ознакомиться: https://www.youtube.com/watch?v=ldKBQpqUhYE&t=3s&ab_channel=16%3A05Algo.
А тут напишу короткий пост по этой теме.
Для начала скажу, что, на мой взгляд, корреляцию я анализирую достаточно необычным методом, но он показывает именно ту информацию, которую мне важно знать. Так что в комментариях я предлагаю вам поделиться вашими методами анализа корреляции между торговыми роботами, думаю всем нам это будет полезно и интересно.
Также стоит заметить, что мой текущий основной портфель роботов состоит из 9 алгоритмов, которые запущены только на фьючерсе на индекс РТС, так что описанный ниже метод лично я применяю внутри одного инструмента, но думаю с его помощью можно анализировать роботов и между разными инструментами.
Основная идея.
Для меня главным при составлении портфеля роботов является то, сколько рыночного времени охватывают мои алгоритмы (в идеале, чтобы почти всегда хотя бы один из роботов был в позиции и зарабатывал деньги, эх мечты).
Соответственно корреляцию алгоритмов на данный момент я анализирую с точки зрения того, когда у моих роботов совпадают позиции на рынке.
Сам алгоритм выглядит следующим образом:
На этом основная часть алгоритма закончена, все довольно просто, но лично для меня очень информативно.
Как это выглядит на практике.
В итоге я получаю табличку следующего вида (вырезал кусок только по 4 ботам, иначе будет слишком мелко из-за ее форм-фактора, полную табличку, если интересно можно найти в ролике на ютубе):
Каждое число означает долю одновременного времени в позиции роботов из соответствующего столбца и строки по отношению к индивидуальному времени в позиции робота из столбца (т.е. столбцы тут ведущие).
Например, общее времени в позиции 1 и 3 роботов составляет 52% от индивидуального времени в позиции 1 робота т.е. 52% времени 1 робот находится в позиции тогда же, когда и 3. А вот 3 робот находится в позиции вместе с 1 лишь 12% времени (можете найти соответствующее число).
Дополнительно я вычисляю процент покрытия рынка для каждого робота (строчка «рынок») путем деления времени в позиции каждого робота на общий объем свечей за анализируемый период. Я это делаю для того, чтобы лучше понимать коррелируют 2 алгоритма между собой по причине их сильной похожести или просто по тому, что один из алгоритмов очень много времени находится в рынке и с большой долей вероятности сделки других ботов будут происходит в момент, когда этот робот в позиции.
У меня таким примером является робот под номером 3, который может удерживать позиции на протяжении недели. Можно заметить, что его процент покрытия рынка 45%. И если выделить строчку 3 робота можно увидеть, что все роботы в более чем 40% совершают сделки в момент сделок 3 робота и это связано именно с тем, что этот робот покрывает значительный объем рыночного времени.
Концовка.
В процессе создания ролика на эту тему понял, что описанный мною алгоритм можно улучшить и сделать 2 таблицы: по корреляции времени в прибыльных сделках и убыточных. Как появится время обязательно займусь этим улучшением.
Ну а пока, как обычно, надеюсь, что мой пост был вам полезен.
Всем профита!
Знак позиции (донг или шорт) как-то учитывается?
Даже здесь, на смартлабе, как минимум два алго-трейдера подробно описывали весь процесс анализа корреляции алгоритмов в экселе.
Если про загрузку, надо знак учитывать, однако.
И что? Разные системы в одном инструменте могут в разные стороны стоять. Даже трендовые.