SergeyJu
SergeyJu личный блог
08 января 2023, 11:42

Два слова об алгопортфеле

Провел поиск весов оптимального портфеля для 36 систем на фьючерсах. Период 10.01.2008 — 30.12 22. Часть систем живут весь период, часть включается по мере  наличия достаточных данных. Например, системы на фьючерсе на юань — с конца весны 2022. При отсутствии части систем в какой-то промежуток времени, производилось умножение весов работающих систем на повышающий к-т так, чтобы сохранялся фиксированная сумма работающих весов. 
Метод оптимизации — МонтеКарло. 50 000 бросков. Критерий оптимизации единственный — отношение доходности к риску. 
Результаты следующие.
Значимое отличие весов от 0 — 25 систем. Причем оставление 18 из них с наибольшими весами практически не ухудшает результат. 
Процентные соотношения по торгуемому активу получились такие. 
Si 30,4%
CNY 25,7%
RTS 19,6%
MXX 11,3%
SBER 10,0%
BR 3,0%

 
50 Комментариев
  • Дмитрий Овчинников
    08 января 2023, 11:56
    Некоторые коллеги на основе эмпирического опыта утверждают, что выделять средства системам необходимо без оптимизации, да и вообще поровну.
    • Replikant_mih
      08 января 2023, 12:04
      Дмитрий Овчинников, Я сейчас все вмешательства подобного рода верифицирую через, как это лучше назвать, через мета-верификацию. В данном случае я бы, смещая окно на исторических данных, посмотрел как бы этот подход работал — ну то есть берем окно, на части окна мы «оптимизируем» веса, на части смотрим с новыми весами, дальше смещаем окно, снова на части оптимизируем, на части проверяем результат. Дальше склеиваем все куске где на оптимизированных весах все работало. Дальше можно сравнить этот результат с бенчмарком (например, равными весами).
        • Replikant_mih
          08 января 2023, 12:20

          SergeyJu, Да, скользящее окно, это скорее для оценки работает ли сам подход. Оценить влияет ли размер обучающей выборки на результаты — отельный этап. Для себя отметил, что если это делаешь так как вы описали (расширяя окно обучения с фиксированным началом), желательно как-то учесть, что если брать в качестве OOS осташийся кусок, то у тебя для каждого размера окна будет разный OOS кусок, другими словами, в данном случае у тебя подмешаны два фактора будут — размер IS окна + какие состояния рынка захватывает OOS кусок (да и для IS это тоже, к слову, справедливо), ну т.е. если у тебя в OOS куске сначала идут неблагоприятные для систем времена, а потом улучшаются постепенно, то, увеличивая размер IS окна, можно по ошибке посчитать что увеличение размера обучающего окна положительно влияет, а по факту положительно влиять будет что в уменьшающемся OOS окне все более благоприятствующие состояния рынка попадают.

          Старался понятно написать, не уверен, что получилось)).

           

            • Replikant_mih
              08 января 2023, 12:35

              SergeyJu, 

              Тем более, что почти все шаманы умудряются  править системы по результатам OOS

               

              Ну мне OOS и все что выше описал позволяет оценивать сами подходы к оценке систем. Да, OOS не панацея, если например то, что в цитате. Но вообще это всё хороший инструментарий чтобы «приземлять» (ореалистичивать оценку) системы на этапе ещё до выпуска в бой. Ну т.е. да, это надо использовать как способ оценить, а не как способ улучшить.

      • Дмитрий Овчинников
        08 января 2023, 12:32
        SergeyJu, 
        Условно, тема корреляции эквити систем игнорируется. 
        Ильинский в своей книге утверждает, что с ростом количества активов корреляция малоинформативна. 

        Цитата:
        Корреляции, на которые мы тратим столько времени и сил в случае большого количества активов, скорее всего, случайные. Реально сильно на них полагаться нельзя.
          • Replikant_mih
            08 января 2023, 12:39
            SergeyJu, А что такое фактор риска? Диверсификация лонг и шорт систем, систем которым нужен тренд и которые рубят во флете — что-то такое?
              • Replikant_mih
                08 января 2023, 12:49

                SergeyJu, 

                Но если из 10 систем 9 настроены на один фактор

                ...

                Какие это факторы я и не собираюсь разбираться.

                Как это всё-таки работает? Ну т.е. в данном примере сишка/акции это будет один из, условно, 10 факторов риска (не важно, что какие низкоуровневые причины у этих различий)?

                  • Replikant_mih
                    08 января 2023, 13:17
                    SergeyJu, Ага, понял. Я пока ничего такого не делаю, но в TODO давно пылится)).
          • Дмитрий Овчинников
            08 января 2023, 12:43
            SergeyJu, 
            я, как практик, считаю, что в развешивании систем лучше работают опыт и понимание уникальности систем и инструментов, чем условно «математические» подходы. Но не факт, что я прав :)

              • Дмитрий Овчинников
                08 января 2023, 21:34
                SergeyJu, 
                речь не об интуиции. речь о том, например, что из понимания различия систем, переносящих овернайт по сравнению с не переносящими, я буду выдавать им разные весовые коэффициенты, независимо от цифр, полученных в результате моделирований.
    • А. Г.
      08 января 2023, 12:13
      Дмитрий Овчинников, внутри одного инструмента я так и делаю, а вот между инструментами все иначе.
      • А. Г.
        08 января 2023, 12:44
        Дополню. Если быть точным, то равные веса на одну идею. А одна идея из-за разных значений параметров может разбиваться между несколькими системами, но не больше 3-х.
    • Kot_Begemot
      08 января 2023, 13:08
      Дмитрий Овчинников, автор так и сделал практически, уничтожив все корреляции при помощи рандомизации. 
      • Дмитрий Овчинников
        08 января 2023, 13:09
        Kot_Begemot, 
        автор так и сделал

        так это как?
        • Kot_Begemot
          08 января 2023, 13:13

          Дмитрий Овчинников, как это так? Есть, как говорится, ньюансы) 

          Что-то загрубляем, что-то игнорируем, что-то работает так, как должно.

  • Replikant_mih
    08 января 2023, 11:58
    А чего монте-карлилось? Разная последовательность сделок в пределах системы?
      • Replikant_mih
        08 января 2023, 12:09
        SergeyJu, И просто берем, условно, лучшее соотношение? Это ж подгонка, не?
          • Replikant_mih
            08 января 2023, 12:13
            SergeyJu, Чувствуется, что вы достигли алго-дзена)).
              • Replikant_mih
                08 января 2023, 12:23
                SergeyJu, Ну да, сначала график растёт — это адаптация, учет специфики состояний и т.д., дальше пик и график падает — это уже подгонка.
  • Denis
    08 января 2023, 15:00
    Гэп от 24-го, выбрасываете, или оцениваете, как не разовый выброс в соотношении доход/риск?
  • kostay_scr
    08 января 2023, 17:29
    Может стоит попробовать нормальный оптимизатор, DE(дифференциальная эволюция), или GA(генетический алгоритм)? И добавить регуляризации L1 — штраф за не нулевые веса(по эпсилону, относительно самого большого веса), чтобы получить решение с меньшим количеством систем. Также разделить данные на 2 части, чтобы оценить влияние подгонки весов вне выборки.
      • kostay_scr
        08 января 2023, 20:39
        SergeyJu, есть сомнения, что задача простая. 32 параметра это много, бюджет на 50000 вызовов целевой это немного. Нужно проверять на сходимость, смотреть гистограмму результатов повторов оптимизации по целевой(например 64 прохода генетического алгоритма, с разной инициализацией).
        По монте карло тоже можете посмотреть 100 лучших решений, и оценить разброс.
        Если лучшие результаты близки к друг другу, то наверно есть сходимость, и оптимум близок к глобальному. Выглядит как «край» на гистограмме, в который она упирается. Если же есть лучший результат, а другие сильно хуже него, и в общем большой разброс, то надо думать. Но это всё-таки нужно смотреть по результатам оптимизатора, С монте карло, наверно, будет хуже видно.
        А регуляризация это для того, чтобы получить результат из меньшего кол-ва систем, ну и возможно уменьшить подгонку под историю.
  • Roman Ivanov
    09 января 2023, 00:47
    Монте-карло не лучший метод для данной задачи. Я бы применил метод роя частиц. Хотя 50тыс хватит и на генетический алгоритм.
      • kostay_scr
        09 января 2023, 15:23
        SergeyJu, по мне так рой похуже, чем другие алгоритмы. Вот хороший GA, не прогадаете:
        pymoo.org/algorithms/soo/ga.html
        Работает из коробки.
        Можно просто FunctionalProblem:
        pymoo.org/problems/definition.html
        • Roman Ivanov
          09 января 2023, 22:13
          kostay_scr, смотря для какой задачи. В данном случае сможет сэкономить на итерациях раз в 5-10
            • kostay_scr
              10 января 2023, 11:02
              SergeyJu, В этой же библиотеке готовый рой, не надо ничего придумывать:
              pymoo.org/algorithms/soo/pso.html
              Или питон не подходит?
      • Roman Ivanov
        09 января 2023, 22:11
        SergeyJu, не подскажу, я обычно сам делаю. Матчасть не сложная
          • Roman Ivanov
            12 января 2023, 01:03
            SergeyJu, IMHO вряд ли этот метод перебъет ГА
  • Sergey Pavlov
    09 января 2023, 05:00
    Спасибо!
    1. Сильно ли идейно различаются 36 систем?
    2. Сильно ли они различаются по времени удержания позиции?
    Есть ли такое, что монте-карло предлагает скатиться в какую одну группу идей систем и в какое-то (вероятно, быстрое) удержание позиций?
  • yurikon
    09 января 2023, 09:36
    Делал похожее моделирование, коэф между тикерами примерно такие же. Два замечания: почти то же самое даст метод «риск паритет» и надо снизу доходность подпереть ограничением, иначе больший вес набирают системы с гладкой эквити, но низким доходом.

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

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