IgorK
IgorK личный блог
22 февраля 2025, 22:45

Теория Марковица для портфеля с BTC, золотом и фондовыми рынками

Краткое описание портфельной теории Марковица: при известных доходностях, волатильностях и корреляциях набора активов, есть формула, по которой можно собрать портфель с минимальным риском. В качестве риска можно выбрать любую желаемую функцию: шарп, волатильность или что угодно. Марковиц получил за эту работу Нобелевскую премию в 1990 году.

Недостатки: поскольку модель строится на исторических данных, она может давать плохие результаты в будущем в резко меняющихся рынках.

Из любопытства, а не как инструкция к применению, попробую рассчитать на Питоне весы для портфеля из SPX, MOEX, золота и биткоина, с помощью теории Марковица. Цены всех активов перевожу в доллары. Для расчета весов в портфеле по Марковицу использую готовый пакет PyPortfolioOpt. 
Вот код: gist.github.com/IgorKuch/5d177109b4fcd2a9b0cca0e9870d5e93

Результат зависит от интервала lookback, за который берутся исторические данные. ChatGPT порекомендовал 3 года. Буду использовать скользящее окно и шаг 1 месяц, чтобы показать динамику расчетных весов портфеля во времени. 
Теория Марковица для портфеля с BTC, золотом и фондовыми рынками
С параметром lookback=3 года, на февраль 2025 модель рекомендует вложить 70% в золото, 25% в SPX и 5% в биткоин. В MOEX за последние два года не рекомендовала вкладываться вообще.

Посчитаю матрицу корреляции между активами за последние 3 года:
Теория Марковица для портфеля с BTC, золотом и фондовыми рынками
Интересна высокая корреляция между BTC и SPY, целых 42%; поэтому модель отводит меньшую долю в BTC в портфеле, предпочитая SPY.

Попробую lookback=2 года.
Теория Марковица для портфеля с BTC, золотом и фондовыми рынками
На настоящий момент рекомендует 20% биткоин, 20% золото и 60% SPY. По сравнению с lookback = 3 года поменялись местами золото и SPY. Очень интересно, что на начало 2024 модель рекомендовала закупиться золотом на 100%. MOEX опять по нулям. Корреляция:

Теория Марковица для портфеля с BTC, золотом и фондовыми рынками


… я подумал, что вкралась какая-то ошибка в расчет для MOEX, но нет, если взять lookback=1 год, рекомендуемая доля MOEX будет ненулевая, но всё равно незначительная.
Теория Марковица для портфеля с BTC, золотом и фондовыми рынками
Интересно посчитать историческую доходность, когда портфель перекладывается каждый месяц по Марковицу, для разных параметров lookback. Ваши ставки, какой параметр даст большую доходность? Мне lookback = 2 нравится больше.

18 Комментариев
  • 3Qu
    22 февраля 2025, 23:46
    На золоте — эт не знаю. На крипте — бери в долгую что хошь из популярных и не заморачивайся — по любому не прогадаешь. При условии, разумеется, что рынок крипты в обозримом будущем не изменится.
      • 3Qu
        24 февраля 2025, 11:46
        IgorK, наверное возможно, при стабильно растущей экономике. Однако, при такой экономике работает и простой принцип — завтра будет тоже что вчера. Т.е., бери с хорошими показателями и вряд ли ошибешься.
  • Alex
    23 февраля 2025, 07:21
    look back хотя бы лет 6 надо брать

  • Инвестор
    23 февраля 2025, 07:25
    Модель Марковитца идеальна для пассивного инвестирования вдолгую. Автор, вы какой уровень годовой волатильности брали? По факту от этого будут зависеть доли в портфеле (нужна матрица ковариаций).
  • Eth_algotrader
    13 марта 2025, 15:21
    По какому параметру оптимизируете? Шарп?

    Очень странные результаты для lookback=3 года. Золото и Биток берутся с большим весом после диапазона/даунтренда, затем их доля доводится до 0 перед ралли того и другого.

    2 года выглядит более адекватным. Такая разновидность моментума.
  • Eth_algotrader
    09 февраля 2026, 17:52
    … я подумал, что вкралась какая-то ошибка в расчет для MOEX

    Именно так, в расчетах для Моех ошибка из-за того, что значение курса usd_try на 16 марта 2023 вместо 75 равно 5. После добавления в строку 38:

    usd_try.loc['2023-03-16']=75


    Модель начинает иногда (очень мало) назначать часть аллокации в МОЕХ (с лукбеком 2 года):

  • Eth_algotrader
    09 февраля 2026, 20:15
    Кроме того, из-за недостаточности данных по МОЕХ yahoo выдает по 470 баров вместо 500 по прочим инструментам, а по последним 7 итерациям обучения это число снижается вообще до 334, т.к. данные по МОЕХ заканчиваются в июне 2024.

    Если убрать МОЕХ из тикеров (везде станет по 500 баров) результат будет такой:
    Чуть сильнее сократил долю SPY под конец.
      • Eth_algotrader
        10 февраля 2026, 15:00
        IgorK, я сейчас тоже пришел к подходу, основанному на волатильности, а не на Шарпе, потому что это удивительным образом стыкуется с моими моделями из области алго.

        А портфель собираете в том же пакете, только вместо ef.max_sharpe() выбираете ef.min_volatility()?

        Вообще миллион же есть способов измерять волатильность… отдельная тема для исследования.
          • Eth_algotrader
            10 февраля 2026, 17:41
            IgorK, >например, есть сложный подход Black–Litterman, использующий байесовскую модель для ожидаемых доходностей — этот подход реализован в pypfopt, если я правильно помню

            Там же основано на субъективных оценках. А они почти всегда будут скакать вверх-вниз следом за последними доходностями (т.е. это не более чем лин.рег за последние год-два, грубо говоря). Такое себе. Любой субъективизм рано или поздно сводится к повторению общего сантимента.

            >Но есть серия статей, показыващих, что на практике простой подход с минимизацией волатильности часто бьёт сложные подходы с доходностью — в том числе бьёт по индикаторам, учитывающим доходность (например, по Шарпу).

            Покидаете ссылок?

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

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