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
    смотри… у тя есть гипотеза… т.е прогноз… логично сделать большую ставку на актив который наиболее точно следут прогнозу… и меньшую ствку в котором прогноз ваще не исполняется 
    • Иосич
      02 декабря 2024, 17:09
      ves2010, у алготрейдеров редко есть прогноз)
      у них есть прогон на истории и это как правило всЕ)
  • zam
    02 декабря 2024, 15:32
    если по максимальной просадке выравнивать? чем больше максимальная просадка, тем меньше доля
      • zam
        02 декабря 2024, 16:01
        Sergey Pavlov, ну по шарпу к примеру выделить доли тогда…
  • А. Г.
    02 декабря 2024, 15:38
    NA и LK не слишком ликвидны. А PT c PL у нас вообще неликвид.
      • А. Г.
        02 декабря 2024, 16:57
        Sergey Pavlov, для небольших объемов NA может и сойдет, а вот как палладий торговать с 588 сделками 16.09 не представляю.
  • svgr
    02 декабря 2024, 16:23
    Если можно как-то вычислить (оценить) вероятности маржинколов (или полного разорения, или потери четверти депозита) пакета алгоритмов для каждого фьючерса, то можно принять условие равенства таких вероятностей для всех фьючерсов. А затем обратным счётом вычислить доли пакетов.
      • svgr
        02 декабря 2024, 17:42
        Sergey Pavlov, если имеющаяся реализация считается нетипичной по просадкам по каким-то соображениям, то можно пробовать опереться в ней на другие параметры колебаний цены, допустив, что они то окажутся характерными для инструмента. Затем снова из каких-то соображений прописать характерные просадки при этих параметрах. И уже эту модель монтекарлить. 
  • yurikon
    02 декабря 2024, 18:42

    @Sergey Pavlov , слушай, а почему у ри и си положительная корреляция? Нет ошибки?

     

    • Дмитрий Овчинников
      02 декабря 2024, 19:53
      yurikon, 
      здесь и далее подразумевается сумма алгоритмов внутри каждого фьючерса, а не само удержание фьючерса
      • yurikon
        03 декабря 2024, 08:21
        Дмитрий Овчинников, вон оно чо михалыч ))) да, алго будут коррелировать, конечно
  • wrmngr
    02 декабря 2024, 19:03
    а чем не устраивает классика?
    — если ничего не знаем: наивная дивер-ция 1/n
    — если более-менее надежно можем оценить риск (и ничего кроме): risk-parity
    — если можем кроме риска еще как-то оценить ожидаемую доходность и кросс-корреляции, то Марковиц плюс-минус
  • SergeyJu
    02 декабря 2024, 19:24
    Я же писал несколько раз об этой задаче. В моих блогах на смартике можно посмотреть и свежим глазом глянуть на один из моих подходов.

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

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