можно узнать неожиданное, а можно убедиться интуитивном.
На текущий момент в алгопортфеле участвуют 14 фьючерсов, в каждом в среднем по пять алгоритмов (в лонг и в шорт).
Внутри каждого фьючерса эти алгоритмы дают сводную эквити, из которых строится эквити алгопортфеля, вид которой
может ощутимо зависеть от выбранных весов для этих фьючерсов. Веса алгоритмов внутри фьючерсов пока принимаются равными.
Ну и всё это торгуется уже третий год в стиле тупанов. Высокая средняя сделка и долгое время удержания позиции в каждом алгоритме.
Диверсификация это сила, но с весами на уровне фьючерсов не всё понятно (или почти всё непонятно). Про веса алгоритмов внутри фьючерса пока даже не думаю задумываться.
Поскольку по максимально доступной истории всё посчитано, легко посчитать корреляции фьючерсов (здесь и далее подразумевается сумма алгоритмов внутри каждого фьючерса, а не само удержание фьючерса) друг с другом.
Топ-10 по нескоррелированности:
[1,] «sf-pd» "-0.08"
[2,] «na-pd» "-0.08"
[3,] «gz-pd» "-0.07"
[4,] «ng-na» "-0.06"
[5,] «ng-pd» "-0.06"
[6,] «ng-sf» "-0.04"
[7,] «br-sf» "-0.03"
[8,] «gd-pd» "-0.03"
[9,] «sv-na» "-0.03"
[10,] «br-ng» "-0.02"
Топ-10 по скоррелированности:
[82,] «ri-lk» «0.34»
[83,] «sr-gz» «0.36»
[84,] «gz-mx» «0.39»
[85,] «ri-si» «0.41»
[86,] «ri-gz» «0.44»
[87,] «sr-mx» «0.52»
[88,] «mx-lk» «0.54»
[89,] «ri-mx» «0.6»
[90,] «ri-sr» «0.64»
[91,] «sf-na» «0.75»
Чтобы легче с этим работать, посчитаем корреляционный вес каждого фюьчерса как среднее значение его корреляций с другими фьючерсами:
[1,] «ng» "-0.01"
[2,] «pd» «0.03»
[3,] «sv» «0.03»
[4,] «gd» «0.06»
[5,] «pt» «0.07»
[6,] «br» «0.09»
[7,] «si» «0.1»
[8,] «sf» «0.1»
[9,] «na» «0.1»
[10,] «gz» «0.12»
[11,] «lk» «0.14»
[12,] «sr» «0.17»
[13,] «mx» «0.19»
[14,] «ri» «0.23»
«1» здесь означало бы, что мы имеем фьючерс, который имеет единичную или 100%-ю корреляцию со всеми остальными и такой торговать точно не стоило бы.
Выкидываем RI и всё пересчитываем:
[1,] «ng» "-0.01"
[2,] «pd» «0.02»
[3,] «sv» «0.03»
[4,] «gd» «0.05»
[5,] «si» «0.07»
[6,] «br» «0.07»
[7,] «pt» «0.07»
[8,] «gz» «0.09»
[9,] «sf» «0.1»
[10,] «na» «0.1»
[11,] «lk» «0.12»
[12,] «sr» «0.13»
[13,] «mx» «0.16»
Так тоже не годится. Оставляем из русских акций только MX, а из американской пары убираем NA:
[1,] «ng» "-0.01"
[2,] «sf» «0.03»
[3,] «sv» «0.04»
[4,] «gd» «0.05»
[5,] «pd» «0.05»
[6,] «mx» «0.05»
[7,] «br» «0.07»
[8,] «si» «0.08»
[9,] «pt» «0.08»
Получаем рабочий набор факторов или классов торговли, между которыми надо реально распределять веса.
Первый вывод очевиден, что MX, RI, LK, SR, GZ должны между собой делить вес MX из последней таблицы.
Аналогично NA и SF делят американский вес, обозначенный SF.
Но вот как делить веса между этими девятью базовыми фьючерсами — вопрос второй и второй вывод, который нелегко сделать.
Поправочные коэффициенты к этим весам потом сделать легко. Например, снизить вес газа за счет короткой истории. Например, снизить вес Америки из-за наличия контртрендовых компонент. И тд.
Но как распределить веса иначе, чем поровну… вопрос пока остался открытым.