Sergey Pavlov
Sergey Pavlov личный блог
02 декабря 2024, 15:16

Решая алгопортфельную задачу

можно узнать неожиданное, а можно убедиться интуитивном.

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

Поправочные коэффициенты к этим весам потом сделать легко. Например, снизить вес газа за счет короткой истории. Например, снизить вес Америки из-за наличия контртрендовых компонент. И тд.

Но как распределить веса иначе, чем поровну… вопрос пока остался открытым.
19 Комментариев
  • ves2010
    02 декабря 2024, 15:20
    смотри… у тя есть гипотеза… т.е прогноз… логично сделать большую ставку на актив который наиболее точно следут прогнозу… и меньшую ствку в котором прогноз ваще не исполняется 
  • zam
    02 декабря 2024, 15:32
    если по максимальной просадке выравнивать? чем больше максимальная просадка, тем меньше доля
  • А. Г.
    02 декабря 2024, 15:38
    NA и LK не слишком ликвидны. А PT c PL у нас вообще неликвид.
  • svgr
    02 декабря 2024, 16:23
    Если можно как-то вычислить (оценить) вероятности маржинколов (или полного разорения, или потери четверти депозита) пакета алгоритмов для каждого фьючерса, то можно принять условие равенства таких вероятностей для всех фьючерсов. А затем обратным счётом вычислить доли пакетов.

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

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