Блог им. tradingloop

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
★20
14 комментариев
Толково! Отличный пост!!!
avatar
В целом, достаточно держать портфель из 4-6 тяжелых фишек с весами большими, чем в индексе 20-25% и моментум придет.
avatar
Последние пару лет у нас немного аномалия — тяжелые фишки растут СУЩЕСТВЕННО лучше легких. Отсюда, например, может следовать, что поправка на капитализацию оправдана. Но это особенность конкретного периода.

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

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


Александр Силаев, да с 2010 было бы неплохо. К сожалению долго руками собираю данные, поэтому не получается пока брать большие интервалы.
avatar
протестируйте с 2007 года
Спасибо! Предвосхитили мои задумки! Andreas Clenow рекомендует веса позиций считать обратно пропорционально волатильности, сейчас читаю его книги, думаю над практической реализацией такого расчета. В сети полно алгоритмов на Python от Clenow, но хотелось бы «ручками» (Excell).
avatar
Андрей, это не такая уж сложная затея. я сам больше люблю питон, но если есть возможность в excel, лучше делать в excel. Проще искать ошибки. Если делать веса обратно волатильности, это уже про minimum volatility etf. Хорошая идея. Почитайте про risk-parity. Вообще волатильность, в большинстве случаев, меняется медленнее доходности, поэтому там меньше размер ребалансировок.
avatar
Согласен с Евгением, непонятно, почему для теста выбран столь короткий период.
Также неплохо было бы для сравнения протестировать параллельную стратегию покупки N «худших» по отношению к индексу, с критериями, максимально похожими на стратегию покупки «лучших».
Дмитрий Овчинников, период короткий, это да. что смог оцифровать на том и посчитал. К сожалению, по некоторым акциям дивиденды с котировками сводил вручную. Про покупку лучших статью уже написал. https://smart-lab.ru/blog/588095.php
avatar
tradingloop, 
да, я видел эту статью, спасибо, подход у вас достойный.

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

Меня не очень интересует тема портфельного инвестирования, но читая англоязычную литературу, посвященную алгоритмической торговле, периодически натыкаюсь на протестированную на большой американской истории и большом количестве бумаг идею о том, что акции надо покупать в контртренд, т.е. те, которые отстают от индекса (такой вариант стоимостного инвестирования). А комоды напротив, надо покупать и продавать те, которые опережают условный индекс, т.е. по тренду.  
Дмитрий Овчинников, Да есть такое. Mean-reversion. Сходу нашел один ETF https://etfdb.com/etf/AUSF/#etf-ticker-profile, который пытается такую стратегию использовать. Пока отстает от SP500. Когда у нас один мега-тренд в мире с 2009, ждать разврота — неблагодарное дело. Хотя может и выстрелит в будущем.
avatar
tradingloop, 
Mean-reversion это не ожидание разворота, это покупка недооцененных.
Про продажу бумаг речи не идет. Возможно у нас это слабо работает из-за низкой ликвидности и малого количества доступных инвестору инструментов.
Но это вам анализировать, я так больше для кругозора пытаюсь понять, почему у нас все наоборот работает.
Хорошая работа и вполне заслуживает лайка.
Но есть один момент — с 2017 рынок РФ растет.
Если бы он падал или флэтил, то были бы шансы обогнать его в падении, тем более что стопов я в системе не увидел. 
Врач-бондиатОр, да, это правда. Поэтому я здесь не пишу, что нашел Грааль. Самому интересно, что будет дальше, попробую в realtime его в этом году еще посмотреть. Если хватит времени, посчитаю. как все советуют, на других промежутках, но пока есть еще много других идей, так что это не в приоритете.
avatar

теги блога tradingloop

....все тэги



UPDONW
Новый дизайн