tradingloop
tradingloop личный блог
27 января 2020, 21:31

Momentum портфель (ETF) на индекс ММВБ

У меня была давняя идея составить Momentum портфель (ETF) на Российском рынке. Первоначально я хотел просто составить список самых быстро растущих акций посмотреть насколько получится (если получится) обогнать индекс ММВБ. По мере составления я задумался над более общей задачей, как формировать любой ETF.

Эта статья разделена на несколько блоков:

  1. общие вопросы составления ETF
  2. результаты momentum портфеля (ETF) на индекс ММВБ
  3. как избежать подгонки результатов под данные (data-mining и overfitting)

1. Как составить портфель

Я решил ориентироваться на методику одного из крупнейших momentum etf — iShares Edge MSCI U.S.A. Momentum Factor ETF (активы — 10 млрд).
A risk adjusted price momentum, defined as the excess return over the risk-free rate divided by the annualized standard deviation of weekly returns over the past 3-years, is calculated for each security in the parent index over 6- and 12-month time periods. The 6- and 12- month risk-adjusted price momentum calculations are then standardized at ±3 standard deviations and the standardized z-scores are translated into an average momentum score. (Методика iShares)
Однако в составление ETF вопросов гораздо больше, чем описано в любой методике.
  1. Начинается все с определения вселенной акций, которую будем фильтровать: какой размер капитализации, какая страна или какой регион, какие ограничения по кредитному рейтингу, какая ликвидность и free-float? (здесь все понятно — ММВБ)
  2. Далее, как определить фактор, в моем случае, — momentum: через абсолютный прирост или прирост скорректированный на риск (читай Sharpe ratio)? (Sharpe ratio)
  3. Далее, одно из самых интересных — отбор акций и определение весов в ETF. Сколько акций брать в индекс? Топ 10%, топ 50 акций, все выше определенного порога? (у меня ровно 15)
  4. Хорошо, справились с предыдущим вопросов и выбрали необходимое число акций. Как их взвешивать? Равномерно, или с учетом капитализации, или с учетом капитализации и momentum score? Делать ли ограничение на вес одной акции в портфеле? (об этом ниже)
  5. Теперь у нас есть портфель, но остается вопрос как часто его ребалансировать и на основе каких правил? Полностью или поддерживая определенный уровень turnover? обновлять веса каждый день, раз в неделю, раз в квартал? (раз в квартал)
  6. Наконец мы придумали его, и что-то нам не нравится в его поведении, например, большая просадка или высокая бета. И возникает вопрос а можно ли веса в портфеле еще оптимизировать, чтобы сгладить эти факторы? К Sharpe ratio можно дополнительно начать считать Sortino, Calmar или Information ratios и на основе какой-нибудь эвристики учитывать в весах. (не пробовал, но хочу сделать)
На пересечение всех этих параметров и условий можно построить огромное количество ETF. Это одна из причин такого многообразия ETF на рынке.

2. Как я делал Momentum портфель (ETF) для ММВБ

Начальные условия:

  1. Брал ровно 15 акций. с учетом того что индекс ММВБ в среднем включает 46-50 акций, 15 это примерно 1/3.
  2. Данные с начала 16 года, начало портфеля 15.12.2016.
  3. Ребалансировал каждый 60 торговых дней (примерно каждый квартал)
  4. Считал на полной доходности, комиссии не учитывал, налоги тоже.
  5. Бенчмарк — индекс полной доходности ММВБ (MCFTR)
  6. Учитывал капитализацию и momentum score в весах.
  7. Momentum score — это просто Sharpe Ratio посчитанный на аннуализированной квартальной доходности и средней ставки цб деленной на годовую стандартное отклонение (из дневных отклонений).
Я считал веса следующим образом:

  1. Брал все momentum score, переводил их в z-score и потом z-score переводил в интегральную оценку нормального распределения (normal cdf). Последнее дало мне возможность просто все числа уместить в отрезке от 0 до 1 (На этом месте можно придумать все что угодно).
  2. Числа из пункта 1) умножал на % капитализации акции в индексе и нормировал с ограничением в 15% для каждой акции.
Получилось, на первый взгляд, очень неплохо.
Momentum портфель (ETF) на индекс ММВБ
За 3 года мой портфель вырос на 116%, ММВБ — на 70%, волатильность портфелей оказалась почти идентичной 14%. Я сравнил также свой портфель с портфелем, где ни капитализация, ни уровень momentum score не играют значения (желтая линия) — результат хуже.
Momentum портфель (ETF) на индекс ММВБ
Максимальная просадка у моего портфеля даже ниже чем у индекса ММВБ — 15% против 20% у индекса. Также, и это самый большой сюрприз, у моего портфеля бета оказалось ниже чем у индекса — 0,84.
Фактически портфель показывает огромную alpha, так как при низкой корреляции с рынком, имеем в разы более высокую доходность.
Momentum не всегда обгонял индекс: из 36 полных месяцев, только в 23. При этом видно что были продолжительные периоды отставания: с марта 19 по конец июля 19.
Momentum портфель (ETF) на индекс ММВБ
Momentum портфель (ETF) на индекс ММВБ
Вот так акции отбирались в портфель:
Momentum портфель (ETF) на индекс ММВБ
Momentum портфель (ETF) на индекс ММВБ
Turnover rate в среднем составил 63%, то есть каждый квартал обновляли более половину активов. Также если взглянуть более внимательно на веса, можно обнаружить определенные проблемы связанные с капитализацией: Газпром, Роснефть, Лукойл всегда, когда попадают в индекс, имеют максимальный вес — 15%. Это к вопросу про балансировку momentum score и капитализации: она необходима, и данный вариант далеко не самый лучший.В целом, меня порадовали результаты моделирования, правда, все то, что я посчитал возможно не имеет статистической значимости, и об этом ниже.
Momentum портфель (ETF) на индекс ММВБ

3. А не фигню ли я посчитал?

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

  1. Поиграться с параметрами и условиями: брать другие периоды ребалансировки, другие стартовые точки, менять количество акций в индексе, учитывать рыночные комиссии и налогообложение на дивиденды.
  2. Временной ряд котировок на длинном горизонте — реализация стохастичекого процесса с заданным трендом и волатильностью (процесс Орнштейна-Уленбека). Поэтому для настоящей проверки необходимо сгенерировать множество (хотя бы 100к) сценариев и посмотреть как отработает алгоритм на них.
  3. Интересный для меня вопрос, какие факторы больше влияют на доходность? Для выяснения этого после пункта 1 и 2 можно собрать все результаты вместе с исходными параметрами и прогнать их через какой-нибудь Random Forest.
 В общем, если кому-то интересно, пишите, будем считать вместе.

Посмотреть графики в оригинале

ТЕЛЕГРАМ: @seeking_for_alpha
14 Комментариев
  • Ajax
    28 января 2020, 03:24
    Толково! Отличный пост!!!
  • Vladimir T
    28 января 2020, 09:33
    В целом, достаточно держать портфель из 4-6 тяжелых фишек с весами большими, чем в индексе 20-25% и моментум придет.
  • Александр Силаев
    28 января 2020, 13:33
    Последние пару лет у нас немного аномалия — тяжелые фишки растут СУЩЕСТВЕННО лучше легких. Отсюда, например, может следовать, что поправка на капитализацию оправдана. Но это особенность конкретного периода.

    Сама простая проверка — прогнать это же на другом периоде, где-нибудь с 2010, например. 

    Сам делал нечто похожее (но, впрочем, менее научно и тщательно). Альфа есть. Еще интересно по периодам. Колебался между ребалансом 1, 2 и 4 раза в год. Примерно одинаково выходило. Но что интересно, почему-то лучше всего портфель — перетрясался весной и осенью. Летний и зимний пересмотр ничего не давали, можно было не трогать фишки. Но возможно, просто случайность, уж слишком странное явление.


  • Евгений Ворончихин
    28 января 2020, 15:38
    протестируйте с 2007 года
  • Андрей
    28 января 2020, 15:53
    Спасибо! Предвосхитили мои задумки! Andreas Clenow рекомендует веса позиций считать обратно пропорционально волатильности, сейчас читаю его книги, думаю над практической реализацией такого расчета. В сети полно алгоритмов на Python от Clenow, но хотелось бы «ручками» (Excell).
  • Дмитрий Овчинников
    28 января 2020, 16:22
    Согласен с Евгением, непонятно, почему для теста выбран столь короткий период.
    Также неплохо было бы для сравнения протестировать параллельную стратегию покупки N «худших» по отношению к индексу, с критериями, максимально похожими на стратегию покупки «лучших».
      • Дмитрий Овчинников
        29 января 2020, 21:45
        tradingloop, 
        да, я видел эту статью, спасибо, подход у вас достойный.

        Я немного не это имел ввиду.

        Меня не очень интересует тема портфельного инвестирования, но читая англоязычную литературу, посвященную алгоритмической торговле, периодически натыкаюсь на протестированную на большой американской истории и большом количестве бумаг идею о том, что акции надо покупать в контртренд, т.е. те, которые отстают от индекса (такой вариант стоимостного инвестирования). А комоды напротив, надо покупать и продавать те, которые опережают условный индекс, т.е. по тренду.  
          • Дмитрий Овчинников
            29 января 2020, 23:06
            tradingloop, 
            Mean-reversion это не ожидание разворота, это покупка недооцененных.
            Про продажу бумаг речи не идет. Возможно у нас это слабо работает из-за низкой ликвидности и малого количества доступных инвестору инструментов.
            Но это вам анализировать, я так больше для кругозора пытаюсь понять, почему у нас все наоборот работает.
  • Врач-бондиатОр
    28 января 2020, 19:53
    Хорошая работа и вполне заслуживает лайка.
    Но есть один момент — с 2017 рынок РФ растет.
    Если бы он падал или флэтил, то были бы шансы обогнать его в падении, тем более что стопов я в системе не увидел. 

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

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