Как тестировать портфель на исторических данных

Разбираемся в Portfolio Visualizer
23
Как тестировать портфель на исторических данных

Исторические данные — верный друг инвестора.

Аватар автора

Виктор Джин

частный инвестор

Страница автора

Они позволяют оценить эффективность выбранной стратегии и при необходимости оптимизировать ее.

В поиске перспективных активов инвестору приходят на помощь различные сайты-скринеры, такие как Finviz, Investing и ETFdb.com. Но еще полезно проверить выживаемость портфеля на историческом отрезке в несколько лет или даже несколько бизнес-циклов. Особенно интересно испытать свою стратегию в периоды экономических кризисов, подобных 2008 и 2020 годам.

Конечно, результаты в прошлом не гарантируют их повторения в будущем, но такое тестирование позволяет оценить эффективность и выявить недостатки портфеля на основе различных метрик: средняя доходность, волатильность, максимальные просадки и т. д. А еще сопоставить его с бенчмарками — индексами, выступающими эталоном.

Для этих целей я использую Portfolio Visualizer — это сервис, в котором можно смоделировать и протестировать любую корзину активов, состоящую из акций, облигаций и ETF. Сервис бесплатный и не требует регистрации. В статье пошагово разберем его функции и проанализируем пробный портфель.

А что с российскими эмитентами?

Сервис Portfolio Visualizer отражает данные для ценных бумаг и фондов, котирующихся на американских биржах. Соответственно, из российских компаний будут представлены лишь те, у которых есть листинг в США или АДР — американские депозитарные расписки на свои акции. Сейчас таких компаний 16:

  • «Газпром» (OPZPY).
  • «Норникель» (NILSY).
  • МТС (MBT).
  • «Вымпелком» (VEON).
  • QIWI (QIWI).
  • Яндекс (YNDX).
  • «Газпром-нефть» (GZPFY).
  • «Лукойл» (LUKOY).
  • «Татнефть» (OAOFY).
  • «Сургутнефтегаз» (SGTZY, SGTPY).
  • «Мечел» (MTL).
  • ТМК (TMKXY).
  • «Ростелеком» (ROSYY).
  • «Полюс» (OPYGY).
  • «Русгидро» (RSHYY).
  • «Мосэнерго» (AOMOY).

Кроме того, Portfolio Visualizer отображает ряд фондов на российский рынок, в частности: iShares MSCI Russia ETF (ERUS) — корзина индекса MSCI и VanEck Vectors Russia Small-Cap ETF (RSXJ) — российские компании малой капитализации.

Обзор сервиса

У Portfolio Visualizer 6 разделов, предназначенных для всесторонней профессиональной оценки любого набора активов. В этой статье мы рассмотрим только одну из функций сайта — Backtest Portfolio, анализ портфеля на исторической дистанции.

Для полноты картины упомяну другие 5 разделов, представленных на сайте:

  1. Factor Analysis — peгpeccиoнный aнaлиз с учетом рыночных факторов, в частности по трехфакторной модели Фама — Френча.
  2. Asset Analytics — скринер ETF, а также анализ корреляции между различными активами.
  3. Monte Carlo Simulation — моделирование методами Монте-Карло, чтобы проверить ожидаемый долгосрочный рост и выживаемость портфеля.
  4. Portfolio Optimization — оптимизация портфеля с помощью анализа соотношения риска и доходности, а также других параметров. Применение модели Блэка — Литтермана для построения оптимального портфеля.
  5. Timing Models — тестирование набора активов на основе разных индикаторов, таких как скользящие средние и волатильность.
6 разделов сервиса Portfolio Visualizer для профессионального анализа портфеля. Нас интересует первый
6 разделов сервиса Portfolio Visualizer для профессионального анализа портфеля. Нас интересует первый

В разделе Backtest Portfolio — ретроспективный анализ портфеля — есть три функции:

  1. Backtest Portfolio Asset Class Allocation — тест произвольного набора, состоящего из различных классов активов. Например, акции компаний средней капитализации, краткосрочные трежерис, коммодити.
  2. Backtest Portfolio — тест портфеля, состоящего из конкретного набора тикеров тех или иных активов. В статье будем рассматривать эту функцию.
  3. Backtest Dynamic Allocation — ретроспективный анализ динамического портфеля, когда набор активов и их доли меняются с течением времени.
Backtest Portfolio Asset Class Allocation подходит для укрупненного анализа: без конкретных тикеров, тестируем только по классам активов
Backtest Portfolio Asset Class Allocation подходит для укрупненного анализа: без конкретных тикеров, тестируем только по классам активов
Backtest Portfolio — тестируем набор активов с конкретными тикерами
Backtest Portfolio — тестируем набор активов с конкретными тикерами

Тестирование на исторической дистанции

Итак, нас интересует страница Backtest Portfolio. В верхней части есть поля, в которых задаются параметры тестирования, а ниже — еще четыре колонки с полями: в первой вводятся тикеры нужных нам инструментов, а в остальных — их пропорции для каждого из тестируемых портфелей. Всего мы можем создать и сравнить между собой максимум 3 портфеля за раз.

В качестве примера разберем два портфеля и сравним их с бенчмарком — индексом S&P 500.

Первый набор активов будет воплощать всепогодную стратегию Рэя Далио. Его можно выбрать из списка стандартных портфелей на сайте, чтобы не вводить тикеры самостоятельно. Для этого нажимаем на шестеренку рядом с названием Portfolio #1 и выбираем из выпадающего списка нужный — Ray Dalio All Weather. Поля автоматически заполнятся тикерами ETF на соответствующие классы активов в нужных пропорциях.

Выбор всепогодного портфеля из списка стандартных
Выбор всепогодного портфеля из списка стандартных

Фонды и их распределение во всепогодном портфеле

Название ETFРасшифровкаДоля
Vanguard Total Stock Market (VTI)Фонд на глобальные акции30%
iShares 20+ Year Treasury Bond (TLT)Длинные казначейские облигации40%
iShares 7—10 Year Treasury Bond (IEF)Среднесрочные казначейские облигации15%
Invesco DB Commodity (DBC)Фонд на товары7,5%
SPDR Gold Shares (GLD)Золото7,5%

Фонды и их распределение во всепогодном портфеле

Vanguard Total Stock Market (VTI)
РасшифровкаФонд на глобальные акции
Доля30%
iShares 20+ Year Treasury Bond (TLT)
РасшифровкаДлинные казначейские облигации
Доля40%
iShares 7—10 Year Treasury Bond (IEF)
РасшифровкаСреднесрочные казначейские облигации
Доля15%
Invesco DB Commodity (DBC)
РасшифровкаФонд на товары
Доля7,5%
SPDR Gold Shares (GLD)
РасшифровкаЗолото
Доля7,5%

Второй портфель составим индивидуальный — его не будет в выпадающем списке, поэтому введем тикеры вручную. Возьмем для примера оптимизированный портфель, который я рассматривал в своей статье про дивидендных аристократов.

Портфель 80/20 из дивидендных аристократов с ИТ-сектором

Название ETFРасшифровкаДоля
Technology Select Sector SPDR (XLK)Фонд на ИТ-сектор20%
ProShares S&P 500 Dividend Aristocrats (NOBL)Дивидендные аристократы80%

Портфель 80/20 из дивидендных аристократов с ИТ-сектором

Technology Select Sector SPDR (XLK)
РасшифровкаФонд на ИТ-сектор
Доля20%
ProShares S&P 500 Dividend Aristocrats (NOBL)
РасшифровкаДивидендные аристократы
Доля80%
Второй портфель добавляем, вбивая вручную тикеры NOBL и XLK, а также долю каждого актива в процентах — в сумме должно составлять 100%
Второй портфель добавляем, вбивая вручную тикеры NOBL и XLK, а также долю каждого актива в процентах — в сумме должно составлять 100%

Теперь в верхней части страницы задаем параметры тестирования.

Time Period — временное деление по годам (Year-to-Year) или помесячно (Month-to-Month) с возможностью задать конкретный месяц в году, с которого начинается исчисление. Выбираем первый вариант.

Start Year — выбираем из списка год, с которого начинается отсчет. Сервис позволяет производить анализ с 1985 года. Поставим для примера 2010, то есть оцениваем поведение наших портфелей за последнее десятилетие.

End Year — конечный год рассмотрения. Ставим текущий — 2020.

Include YTD — включаем ли мы в расчет дни с начала месяца по сегодняшнюю дату для результатов в 2020 году. По умолчанию стоит No, то есть не берем в расчет прошедшие с начала месяца дни.

Initial Amount — стартовый капитал в долларах. Сумма, на которой мы будем тестировать портфели. Значение по умолчанию — 10 000 $.

Cashflow — будем ли мы периодически вносить какие-то суммы или выводить деньги со счета. При выводе средств можно настроить снимаемую сумму в абсолютном выражении или в процентах. Для нашего теста оставляем поле пустым — мы ничего не вносим и не выводим.

Rebalancing — с какой периодичностью производить ребалансировку портфеля. Дело в том, что все активы ведут себя по-разному, поэтому с течением времени исходные пропорции размываются. Периодическая ребалансировка позволяет сохранить структуру портфеля. Сервис предлагает следующие варианты: без ребалансировки, раз в год, раз в полгода, ежеквартально, ежемесячно или при заданном коридоре отклонения долей активов от изначальных значений. Оставляем по умолчанию — Rebalance Annually, раз в год.

Display Income — задаем, учитывать ли в расчетах ожидаемый дивидендный доход. Если берем их в расчет, то нужно выбрать, как поступать с дивидендами: реинвестировать или нет. В нашем тесте не будем принимать дивиденды во внимание и посмотрим, как происходил ценовой рост активов.

Benchmark — выбираем бенчмарк, то есть образец, с которым сопоставляются наши портфели. Будем ориентироваться на индекс S&P 500. Бенчмарк можно задать через тикер, а также выбрать из предложенных: Vanguard 500 Index Investor (VFINX) или равновесный вариант Vanguard Balanced Index Inv (VBINX). Выбираем первый из них — взвешенный по капитализации.

Portfolio Names — по умолчанию портфели будут называться Portfolio 1, Portfolio 2 и Portfolio 3. Если выбрать значение Custom, то появятся поля, где можно задать имя каждому из портфелей.

После того как все параметры заданы, нажимаем кнопку Analyze Portfolios — анализировать портфели.

Выбираем временное деление — помесячно или год к году
Выбираем временное деление — помесячно или год к году
Будем ли периодически вносить или выводить суммы, выраженные в долларах или в процентах
Будем ли периодически вносить или выводить суммы, выраженные в долларах или в процентах
Выбираем периодичность ребалансировки — восстановления долей активов, заданных изначально
Выбираем периодичность ребалансировки — восстановления долей активов, заданных изначально
Задаем бенчмарк через выпадающий список — в нашем случае Vanguard 500 Index Investor
Задаем бенчмарк через выпадающий список — в нашем случае Vanguard 500 Index Investor
Итоговый вид настройки параметров для нашего теста
Итоговый вид настройки параметров для нашего теста
Сервис выдает такую страницу с результатами анализа
Сервис выдает такую страницу с результатами анализа

Анализ результатов

Первое, что бросается в глаза, — сайт скорректировал начальную дату анализа. Дело в том, что ETF на дивидендных аристократов NOBL появился только в ноябре 2013 года, поэтому тест произведен на промежутке с января 2014 по август 2020 года.

Далее идет отчет с результатами портфелей.

Initial Balance, изначальный баланс. Для всех портфелей одинаковый — 10 000 $.

Final Balance — итоговый результат. Видим, что портфель 80/20 продемонстрировал за неполные 7 лет наилучший результат — 22 133 $. Это на 638 $ больше, чем S&P 500. Если навести указатель мыши на черную иконку рядом с итоговой суммой, во всплывающем окне отобразится результат с учетом инфляции — 19 907 $ для портфеля 80/20.

CAGR, Compound Annual Growth Rate, — совокупный среднегодовой темп роста. Портфель 80/20 на тестируемом отрезке времени давал в среднем 12,66% годовых.

Std. Dev., Standard Deviation, — стандартное отклонение, его еще называют среднеквадратическим. Показывает, насколько доходность каждого из портфелей отклонялась от средней величины. Чем меньше это значение, тем более стабилен портфель — год от года приносит примерно одинаковую прибыль.

Best Year — показатель портфеля в лучший год. Портфель 80/20 в самый прибыльный год продемонстрировал рост 31,52%, что лучше конкурентов.

Worst Year — показатель портфеля в худший год. Сильнее всех по итогам года проседал S&P 500 — до −4,52%.

Max Drawdown — максимальная просадка, в которую уходил портфель. У портфеля 80/20 худший результат — просадка −20,96%.

Sharpe Ratio — коэффициент Шарпа, который отражает оптимальное соотношение риска и доходности. Чем он выше, тем большую доходность демонстрирует портфель на единицу риска. Подробнее о нем я говорил в статье про всепогодную стратегию. Среди наших портфелей лучший показатель Шарпа у всепогодного — 1,18.

Sortino Ratio — коэффициент Сортино. Это вариация коэффициента Шарпа, но с тем отличием, что в его формуле используются отклонения доходности, которые принимают отрицательные значения. Показатель Сортино чаще используется для сравнения волатильных портфелей, в то время как коэффициент Шарпа — для консервативных. В нашем случае лучший коэффициент Сортино все у того же всепогодного портфеля — 2,21.

US Mkt Correlation — насколько тесно портфель коррелирует с американским фондовым рынком. Так как S&P 500 содержит 500 крупнейших компаний, охватывающих 80% общей капитализации рынка, то у него корреляция максимальная — равна единице. Наименьшая корреляция с рынком акций у всепогодного портфеля — и в этом заключается его преимущество. Акции занимают здесь лишь 30%, а другие инструменты целенаправленно подбираются таким образом, чтобы они были слабо взаимосвязаны друг с другом. Поэтому имеем самый низкий коэффициент корреляции — всего 0,42.

Сервис автоматически меняет рассматриваемый период, если какой⁠-⁠то из активов моложе заданной в настройках стартовой даты
Сервис автоматически меняет рассматриваемый период, если какой⁠-⁠то из активов моложе заданной в настройках стартовой даты
Таблица с основными характеристиками по каждому из портфелей
Таблица с основными характеристиками по каждому из портфелей
Распределение активов по портфелям
Распределение активов по портфелям
Поведение портфелей в графическом виде. Видим, что всепогодный портфель ведет себя иначе. Его конкуренты более волатильны
Поведение портфелей в графическом виде. Видим, что всепогодный портфель ведет себя иначе. Его конкуренты более волатильны
Доходность каждого из портфелей по годам
Доходность каждого из портфелей по годам

Кроме основной страницы Summary — с общими результатами тестирования — сервис отображает ряд вкладок со специфическими данными. Кратко рассмотрим их.

Exposures — разбор содержимого портфелей по типам активов, капитализации компаний, секторальному делению, принадлежности к развитым и развивающимся рынкам.

Metrics — обширный набор метрик, таких как: волатильность, коэффициенты бета и альфа.

Annual Returns — развернутая таблица доходностей по годам для каждого актива в портфеле.

Monthly Returns — развернутая помесячная таблица с результатами по каждому активу.

Drawdowns — данные и график по просадке портфеля.

Assets — статистика по отдельным видам активов, содержащихся в портфеле, их поведение и корреляция между собой.

Rolling Returns — скользящая доходность. Здесь представлены результаты доходности за 3 и 5 лет на протяжении всей истории портфеля, что дает более полноценную картину, нежели цифры за конкретные годы.

Allocation Drift — история распределения активов. Эта вкладка отображается только в том случае, если в параметрах тестирования отказались от ребалансировки — No Rebalancing. Тогда мы можем увидеть, как менялись доли активов внутри портфеля с течением времени.

Все доступные вкладки с результатами тестирования
Все доступные вкладки с результатами тестирования
Вкладка Exposures, распределение активов
Вкладка Exposures, распределение активов
Секторальное деление акций во всепогодном портфеле
Секторальное деление акций во всепогодном портфеле
Вкладка Metrics, различные метрики и коэффициенты
Вкладка Metrics, различные метрики и коэффициенты
Вкладка Annual Returns, таблица доходности по годам
Вкладка Annual Returns, таблица доходности по годам
Вкладка Monthly Returns, таблица доходности по месяцам
Вкладка Monthly Returns, таблица доходности по месяцам
Вкладка Drawdowns, история просадок портфелей
Вкладка Drawdowns, история просадок портфелей
Вкладка Assets, история доходностей по каждому активу
Вкладка Assets, история доходностей по каждому активу
Вкладка Rolling Returns, скользящая доходность за 3 и 5 лет
Вкладка Rolling Returns, скользящая доходность за 3 и 5 лет
Вкладка Allocation Drift, как менялось распределение долей активов в портфеле
Вкладка Allocation Drift, как менялось распределение долей активов в портфеле

Запомнить

  1. Portfolio Visualizer — сервис, позволяющий проанализировать инвестиционную стратегию и оптимизировать ее. Сайт будет полезен любому инвестору, формирующему индивидуальный портфель.
  2. Для анализа исторической доходности и сравнения эффективности портфелей нужно перейти в раздел Backtest Portfolio. На первый взгляд интерфейс выглядит запутанным, но через пару дней работы все становится понятно.
  3. Общие результаты тестирования и основные метрики отображаются на главной вкладке Summary. Специфические наборы данных содержатся на других вкладках.
Виктор ДжинА как вы тестируете свои стратегии?
  • Alexandr VolikМожно ли с помощью сервиса определять оптимальные дели активов в портфелях? Если увеличить долю it сектора, доходность будет выше, было бы неплохо, чтобы сервис сам строил распределение0
  • Gorgeous JohnСпасибо за статью, было очень полезно. А все-таки есть какие-то подобные сервисы для анализа российских компаний не из числа тех 16ти, которые есть в portfolio visualizer?2
  • Vladimir SankovVTI - это не фонд на глобальные акции. This ETF offers broad exposure to the U.S. equity market, investing in thousands of different securities across all sectors. Фонд на глобальные акции - VT1
  • Vladimir LuchkoДобавлю, что в сервисе можно учитывать шорт, указывая долю -%. Но в итоге сумма всех процентов должна быть 100, поэтому отдельной строкой должно быть CASHX, куда вводим нужную разницу.1
  • Пончик АнончикAlexandr, это вам пуль Марковица строить нужно) Я такого онлайн не нашёл навскидку(1
  • Игорь БочкаревОтдельный лайк за Pink Floyd1
  • riskan16Gorgeous, в него можно загрузить любую бумагу - но придётся делать выгрузку о стоимости рос. бумаги самостоятельно и импортировать в port viz1
  • riskan16Alexandr, можно, надо построить efficient frontier0
  • Stanislav DziubaА я сделал собственный сайт, который может из группы акций мосбиржи посчитать оптимальный портфель. и до конца года будет фича, где можно будет самому выбрать активы в портфель5
  • Askar Mulkubayevполезно, спасибо0
  • Pablo ObukhovСпасибо. Понравилось.0
  • Сергей ИсаковСпасибо за разбор прекрасного инструмента. На курсе по инвестициям, нас тренировали именно на нём.0
  • DА есть ли что-то похожее для инструментов Лондонской биржи и XETRA?0
  • Полиция Т—ЖStanislav, предупреждали вас1
  • Ivan DobrodeyОфигенный сервис! Добавить бы в него ещё основные криптовалюты :) Сорян, они уже есть :)0
  • Роман ПошехоновСвязанный вопрос. Тут говорится, что в Portfolio Visualizer есть только российские акции, представленные на американской бирже, и цены, видимо, тоже с американских бирж берутся для анализа. А насколько связаны эти цены с ММВБ? В частности,и если рубль резко упадет на 10 %, то это будет поводом для роста акций на ММВБ на 10% или падения американских котировок на 10%? Как быстро выравниваются цены? Если корреляция между между котировками в разных странах плохая, то наверное, это не лучший инструмент для прогнозирования поведения акций на ММВБ.... А вариант с выгрузкой в port viz не очень удобен0
  • Александр ЭлсОбычно гоняю в этом сервисе. Сейчас собираю портфель под тему метаверс. Выбираю между взвещенным по капе и по Шарпу в оптимизаторе. По Шарпу доходность выше, но когда данных по бумаге только с 2012 года, может быть маловато для выводов. Плюс получается что оказываются больше доли бумаг, которые выросли больше к текущему моменту, но это не значит что они будут делать это дальше. Вероятно, наоборот, окажется больше доля дорогих компаний. Попадаешь в ловушку переоценки 2021 - 2022 года. Видимо, лучше не использовать Шарп для оптимизации отдельных бумаг.0
  • Александр ЭлсStanislav, а какие ещё есть фишки? Какой критерий оптимальности?0
  • Александр ЭлсAlexandr, есть в разделе Portfolio Optimisation0
  • ЕвгенийWealth lab/tslab прогонку тестов стратегий + python/pandas подборка из стратегий портфеля0