Провел поиск весов оптимального портфеля для 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% |
1. Я всегда беру не скользящее окно, а окно с закрепленным началом, скользит только конец. Много раз проверял, что чем больше данных для анализа, тем лучше.
2. Отсюда следует, что для сегодняшнего портфеля нужна именно тотальная оптимизация, как я и сделал.
SergeyJu, Да, скользящее окно, это скорее для оценки работает ли сам подход. Оценить влияет ли размер обучающей выборки на результаты — отельный этап. Для себя отметил, что если это делаешь так как вы описали (расширяя окно обучения с фиксированным началом), желательно как-то учесть, что если брать в качестве OOS осташийся кусок, то у тебя для каждого размера окна будет разный OOS кусок, другими словами, в данном случае у тебя подмешаны два фактора будут — размер IS окна + какие состояния рынка захватывает OOS кусок (да и для IS это тоже, к слову, справедливо), ну т.е. если у тебя в OOS куске сначала идут неблагоприятные для систем времена, а потом улучшаются постепенно, то, увеличивая размер IS окна, можно по ошибке посчитать что увеличение размера обучающего окна положительно влияет, а по факту положительно влиять будет что в уменьшающемся OOS окне все более благоприятствующие состояния рынка попадают.
Старался понятно написать, не уверен, что получилось)).
SergeyJu,
Ну мне OOS и все что выше описал позволяет оценивать сами подходы к оценке систем. Да, OOS не панацея, если например то, что в цитате. Но вообще это всё хороший инструментарий чтобы «приземлять» (ореалистичивать оценку) системы на этапе ещё до выпуска в бой. Ну т.е. да, это надо использовать как способ оценить, а не как способ улучшить.
Минус, собственно, состоит в том, что никак не учитываются связи между системами. В результате мы можем задась избыточный вес набору систем с одинаковыми профилями риска и недооценить системы с другими рисками. Условно, тема корреляции эквити систем игнорируется.
Цитата:
Корреляции, на которые мы тратим столько времени и сил в случае большого количества активов, скорее всего, случайные. Реально сильно на них полагаться нельзя.
Но если из 10 систем 9 настроены на один фактор, а 1 на второй, равное взвешивание не самый удачный выбор.
К тому же Ильинский играет на другом поле. Не всегда советы футболиста подойдут волейболисту.
P.S. Мне вообще тема корреляции на биржевых рынках не близка. И я не использую почти ни к-т корреляции, ни ковариационные матрицы. Именно по причине неустойчивости их оценок в условиях высокого уровня шума.
SergeyJu,
Как это всё-таки работает? Ну т.е. в данном примере сишка/акции это будет один из, условно, 10 факторов риска (не важно, что какие низкоуровневые причины у этих различий)?
я, как практик, считаю, что в развешивании систем лучше работают опыт и понимание уникальности систем и инструментов, чем условно «математические» подходы. Но не факт, что я прав :)
речь не об интуиции. речь о том, например, что из понимания различия систем, переносящих овернайт по сравнению с не переносящими, я буду выдавать им разные весовые коэффициенты, независимо от цифр, полученных в результате моделирований.
так это как?
Дмитрий Овчинников, как это так? Есть, как говорится, ньюансы)
Что-то загрубляем, что-то игнорируем, что-то работает так, как должно.
Собственно, и системы наши все — подгонка. Другое дело, что и с подгонкой жить можно, если осторожно. А вот без неё алготрейдинга нет.
Не надо рубить дрова ни скальпелем, ни паровым молотом, если под рукой есть просто колун.
По монте карло тоже можете посмотреть 100 лучших решений, и оценить разброс.
Если лучшие результаты близки к друг другу, то наверно есть сходимость, и оптимум близок к глобальному. Выглядит как «край» на гистограмме, в который она упирается. Если же есть лучший результат, а другие сильно хуже него, и в общем большой разброс, то надо думать. Но это всё-таки нужно смотреть по результатам оптимизатора, С монте карло, наверно, будет хуже видно.
А регуляризация это для того, чтобы получить результат из меньшего кол-ва систем, ну и возможно уменьшить подгонку под историю.
kostay_scr, осмотрите на это с практической точки зрения. Мы не можем решать неустойчивые задачи в условиях высокого уровня шума. Изначально неустойчивые постановки — в топку безжалостно! У нас нет необходимости искать абсолютный экстремум по той же самой причине. Достаточно попасть в близкую окрестность. Причем не обязательно даже в близкую исходном пространстве параметров. Вы обратили внимание, что можно легко отбросить некоторую часть компонент и практически не получить ухудшения итогового результата? Я могу выбросить несколько систем и получить другую развесовку, но не намного худший по критерию новый оптимум.
Зачем же я про такую примитивную фигню написал? Да именно потому, что примитивная работающая фигня выпадает из поля зрения высоко образованных личностей.
Да, я, конечно, смотрел на разные результаты при различных запусках. В общем и целом — одно и тоже выходит каждый раз. Если бы шел разнобой, я бы, конечно, напрягся.
pymoo.org/algorithms/soo/ga.html
Работает из коробки.
Можно просто FunctionalProblem:
pymoo.org/problems/definition.html
МК я тоже не в лоб использую, есть методы ускорения сходимости, особенно используя особенности задачи. В разы обычно легко. Вот со сверхлинейной сходимостью посложнее, но, если задача позволяет, можно комбинировать с методом сопряженных градиентов, например.
pymoo.org/algorithms/soo/pso.html
Или питон не подходит?
Метод МК хорошо ускоряется за счет замены случайных данных специально сконструированными последовательностями. Первым автором по этой теме был Соболь (монография 1973 года).
1. Сильно ли идейно различаются 36 систем?
2. Сильно ли они различаются по времени удержания позиции?
Есть ли такое, что монте-карло предлагает скатиться в какую одну группу идей систем и в какое-то (вероятно, быстрое) удержание позиций?
Время удержания от нескольких часов до пары недель.