Блог им. uralpro
Доклад «Оптимизация портфеля алгоритмических стратегий»
1. Введение
В чем состоит цель подобной оптимизации? Представим, что у нас есть набор алгоритмов, каждый из которых обладает некоторыми статистическими свойствами, из которых наиболее важными для нас являются доходность и максимальная величина просадки. В основе каждого из алгоритмов лежат разные стратегии, которые, тем не менее, могут быть коррелированы между собой в разной степени, торговля также может вестись на разных инструментах. В качестве примера приведу характеристики стратегий, которые были разработаны нашей командой и применяются в боевых торгах в настоящее время:
Так как свойства каждого из алгоритмов отличаются, возникает проблема: каким образом распределить между ними доступный капитал для того чтобы:
1. Максимизировать доход при заданном уровне риска ( то есть максимальной величине просадки)
2. Минимизировать риск при заданной доходности
Если дать, например равные доли капитала каждому алгоритму, то, очевидно, что такое распределение не будет оптимальным, так как мы не учитываем характеристики, присущие стратегиям. Не будет оптимальным и тот случай, когда мы, например, выделяем капитал пропорционально относительной доходности каждого алгоритма, здесь мы игнорируем значения волатильности, то есть риска, стратегий.
2. Модель Марковица
Задачу оптимизации попробуем решить, применив теорию оптимального портфеля, разработанную Марковицем, точнее некоторые последующие ее модификации. Обычно данная теория применяется для долгосрочного инвестиционного портфеля, состоящего из различных активов, например акций. Кратко суть теории.
Если инвестору доступно n-ое количество ценных бумаг с ожидаемой доходностью, где i =1,2,...n, то найдется только одна комбинация активов, которая минимизирует риск портфеля при каждом заданном значении ожидаемой доходности всего портфеля.
Ожидаемая доходность ценной бумаги в модели Марковица рассчитывается как матожидание ее доходностей за предыдущий отрезок времени, риск — как среднеквадратическое отклонение этих доходностей. По второй формуле на слайде вычисляется риск портфеля, где последние три множителя в формуле представляют собой ковариацию между двумя активами.
Здесь можно сделать два вывода:
Если коэффициенты корреляции между доходностями активов постоянны, то при изменении соотношения активов в портфеле меняется и риск портфеля;
Для любого портфеля с понижением коэффициента корреляции между активами уменьшается и риск портфеля.
Набор портфелей, которые минимизируют уровень риска при каждой величине ожидаемой доходности, образует так называемую границу эффективности.
Для примера возьмем несколько российских акций, входящих в состав индекса РТС за период в 1 год и рассчитаем для них границу эффективности.
Точки на графике обозначают значения доходности каждой акции за последний год, зеленый цвет — положительная доходность, красный — отрицательная доходность.
Граница эффективности показывает, что какую бы величину ожидаемой доходности мы не определили, всегда путем подбора весов активов портфеля можно составить такой портфель, при котором уровень риска достигает минимального значения.
Как видно из данного графика, при перемещении по границе вверх-вправо величины Е®(ожидаемая доходность) и(риск) увеличиваются, а при движении вниз-влево — уменьшаются.
Эффективный портфель — это портфель, который обеспечивает минимальный риск при заданной величине E® или максимальный доход при заданном уровне риска.
В модели Марковица есть ряд серьезных недостатков. Если мы составляем портфель из каких-либо ценных бумаг — акций, фьючерсов и т.д., то предполагаем, что их средняя доходность в будущем будет соответствовать средней доходности прошлого периода, на основе которой мы производили оптимизацию. Очевидно, что для этого вида активов такое условие выполняется далеко не всегда. Кроме того, не выполняется предпосылка модели о нормальном распределении доходности, а значит математическое ожидание и среднеквадратичное отклонение не могут служить адекватными мерами доходности и риска. Как известно, плотность распределения приращений ценового ряда имеет более толстые хвосты по сравнению с нормальной плотностью, что мы можем видеть на графике распределения дневных доходностей акции Сбербанка за рассматриваемый период:
Здесь мы можем наблюдать такой толстый хвост в зоне как отрицательных, так и положительных приращений. Эти хвосты говорят о том, что мы можем получить величину доходности, значительно отличающуюся от рассчитанной на исторических данных.
Если построить такой график за больший период, этот эффект проявится еще сильнее.
В связи с этим, полезность оптимизации инвестиционного портфеля ценных бумаг по модели Марковица на практике находится под вопросом.
Однако, в случае портфеля, составленного из алгоритмических стратегий, как минимум первый из упомянутых недостатков, (а именно устойчивость матожидания) сильно сглаживается, так как ожидаемая доходность алгоритма с положительным матожиданием прибыли имеет значительно более устойчивый характер, в отличии от ценового ряда ценных бумаг, в силу самой сущности стратегии, основанной на каком-то статистическом преимуществе. То же самое можно сказать и о второй проблеме модели -в распределении доходности алгоритмических стратегий хвосты в отрицательной области затухают даже быстрее, чем у нормального распределения:
Однако и тут, для алгоритма №8 мы можем видеть, что есть отрезок, где плотность имеет значение, превыщающее значение нормального распределения. Чтобы учесть это несоответствие, при оптимизации мы должны будем использовать модификации модели Марковица, принимающие это во внимание.
3. Оптимизация портфеля алгоритмов
Таким образом, предположим, что применение модели Марковица к портфелю алгоритмических стратегий будет достаточно эффективным. Проверим это утверждение на практике.
В качестве исходных данных возьмем дневные доходности каждого из алгоритмов, которые вычисляются по формуле:
, где
— суммарный капитал в конце торговой сессии дня t
— капитал на начало расчетного периода
Так как наши алгоритмы работают на срочном рынке ФОРТС, то в качестве начального капитала мы берем гарантийное обеспечение, необходимое для открытой позиции на максимальное число задействованных в данном алгоритме контрактов. Реинвестирование капитала не применяем, поэтому все приращения рассчитываются относительно начального капитала.
На слайде показаны эквити всех алгоритмов на одном графике в размерности вышеуказанной доходности, при условии одинакового начального капитала для каждого алгоритма.
На следующем слайде — суммарное эквити в случае выделения равных долей капитала для каждого алгоритма. Второй график — общий график просадок. Как можно увидеть, максимальная просадка за рассматриваемый период составила около 7,5%. В В общем, можно сказать, что для такого эквити уже мало что можно соптимизировать, так как за счет диферсификации и невысоких значений коэффициента парной корреляции получается достаточно плавный рост с небольшими просадками. Однако даже здесь есть возможность для улучшения общей доходности.
Наша цель — в итоге получить весовые коэффициенты, которые будут означать долю начального капитала, вложенного в каждый отдельный алгоритм, которые вместе сформируют эффективный алгоритмический портфель.
Для того чтобы определить, насколько устойчивы характеристики модели на будущих периодах, разобъем нашу выборку на две части в пропорции 70:30, как показано на графике прерывистой линией. Первая часть (in-sample) — это выборка, на которой мы будем строить нашу модель и на которой определим веса каждого алгоритма. Ко второй части выборки (out-of-sample) мы применим полученные веса и посмотрим, будет ли эффект от оптимизации на прошлом периоде действовать на периоде будущем. Хочу отметить, что выборка out-of-sample пришлась на период, где просадки возникали гораздо чаще, чем на выборке in-sample, значит, условия для проверки модели усложняются и будет интересно увидеть ее поведение в этом случае.
Вычисления будем производить на языке R. Для упрощения расчетов применим пакет PortfolioAnalytics, который предназначен для численного решения задач портфельной оптимизации с различными целями и сложными ограничениями.
Кратко пройдемся по коду.
Сначала считываем исходные данные, которые записаны в простой текстовый файл с разделителями. Напоминаю, что исходными данными являются дневные доходности алгоритмов.
Далее формируем матрицу доходностей, в которой строками являются дни, столбцами — номера алгоритмов, значения матрицы — относительные дневные приращения.
Далее сформируем портфельный объект из матрицы доходностей:
Следующий шаг — наложение необходимых ограничений на портфель стратегий. PortfolioAnalytics позволяет выбрать широкий спектр таких ограничений, например, ограничение на сумму весов, ограничения на минимальный вес актива, на оборот, на величину комиссии и т.п. В нашем случае мы зададим сумму весов равную единице, что означает, что мы используем весь имеющийся капитал:
ограничим минимальный вес каждого алгоритма — не менее 0.05, это означает, что ни один из алгоритмов в итоговом портфеле не получит значения весового коэффициента менее этой величины, максимальный вес ограничим значением 0.5. Для чего нужны эти ограничения? Мы стараемся сохранить эффект диферсификации и не допустить слишком большого перевеса какого-либо алгоритма.
Далее нам необходимо определить цель, по которой мы будем оценивать эффективность нашего портфеля. Как ранее уже было сказано, есть две основных цели — максимизация дохода при заданном уровне риска или минимизация риска при заданном уровне доходности.
Первая цель, которую мы зададим — это максимизация дохода нашего портфеля. Здесь все просто, оптимизированный портфель рассчитает веса каждого алгоритма так, чтобы получить максимальную прибыль в будущем. Мы будем двигаться по границе эффективности, но искать будем точку максимальной прибыли.
Напомню, что в теорию Марковица плохо вписываются толстые хвосты распределения доходности. Хотя у наших стратегий такие хвосты значительно меньше, чем у ценовых рядов, они не идеально соответствуют нормальному распределению. Чтобы учесть данный факт, применяют модификации теории Марковица, такие, как value-at-risk(VaR), conditional-value-at-risk. VaR учитывает максимальный риск просадки в нормальных рыночных условиях. Мы при определении целей будем руководствоваться критерием ETL — expected tail loss. Это среднее значение возможных просадок, которые превышают величину VaR, таким образом, мы постараемся в расчет эффективного портфеля включить возможность максимальных просадок с левой стороны распределения доходности.
Таким образом, второй вариант портфеля — уменьшение риска по критерию ETL.
Оптимизацию этих двух вариантов будем проводить с помощью алгоритмов ROI — R Optimization Infrastructure, представляющие собой алгоритмы решения задач путем линейного и квадратичного программирования.
И, наконец, в третьем варианте портфеля мы попробуем найти оптимальное соотношение между максимизацией дохода и минимизацией риска ETL c помощью алгоритма глобального поиска Differential Evolution.
В результате вычислений мы должны получить, как я и упоминал ранее, веса алгоритмов в составе каждого из портфелей.
Расчеты производим на выборке in-sample, а затем на полученных значениях весов проверяем эффективность модели на выборке out-of-sample.
Итак, посмотрим, что в результате у нас получилось.
Портфель с максимизацией дохода
1.1. Выборка in-sample
Здесь мы можем видеть, что нам удалось достигнуть увеличения доходности на 50% за рассматриваемый период, однако максимальная просадка возросла на 2% по сравнению с портфелем с равными весами.
1.2. Выборка out-of-sample
Здесь доход выше на 5% по сравнению с исходным портфелем, но макимальная просадка увеличилась более чем на 10%. Так как при данной оптимизации мы не контролируем показатели по риску, то будем считать, что свойства модели сохранены.
2. Портфель с минимизацией риска по ETL
2.1. Выборка in-sample
При этой оптимизации произошло снижение доходности на 10% по сравнению с портфелем с равными весами, но просадку удалось снизить на 2,34 %
2.2. Выборка out-of-sample
В данном случае мы получаем даже увеличение дохода на 3%, максимальная просадка ниже на 1,3% — свойства модели сохраняются вне расчетной выборки.
3. Портфель с балансом максимума дохода и снижения риска по ETL
3.1. Выборка in-sample
Этот вариант также показывает увеличение доходности на 12%, и при этом максимальная просадка снизилась на 2,35%
3.2. Выборка out-of-sample
На проверочной выборке мы видим преимущество по доходности в 5%, но максимальная просадка увеличилась на полтора процента, что может свидетельствовать об изменении характеристик некоторых алгоритмов на этом периоде.
Теперь посмотрим, как распределялись веса алгоритмов в портфеле в каждом из случаев оптимизации
Здесь можно отметить, что, например, в случае максимизации доходности наибольшей вес у алго №8, который, возвращаясь к эквити стратегий, имел как самый большой доход, так и наибольшую просадку, что и отразилось в результатах оптимизации. В случаях оптимизаций по ETL и баланса между риском и доходностью, веса распределились более диверсифицированно между алгоритмами.
Вывод.
В результате проведенного тестирования можно утверждать, что статистические свойства алгоритмов имеют более устойчивые во времени значения, чем свойства приращений цен акций. Эта особенность позволяет применить оптимизацию к портфелю алгоритмов с гораздо большей эффективностью, чем к портфелю ценных бумаг. В результате подобной оптимизации удалось повысить доходность алгоритмического портфеля от 3 до 5% на проверочной выборке длительностью в 1,5 месяца. Можно сделать вывод, что наиболее применимые результаты дает оптимизация портфеля по минимизации риска ETL, а также по балансу между максимумом дохода и минимумом риска.
Золото. Я пришел к такому же, но без модели Марковица.
Было бы интересно на примере ваших стратегий увидеть, насколько лучше каждый тип оптимизации случая одинаковых весов. Иными словами, интересно понять, стоит ли игра по нахождению оптимального портфеля стратегий свеч?
Из всех вариантов, представленных здесь, я бы априори выбрал равномерное распределение капитала. И обязательно рассмотрел бы случай тупого раздельного самофинансирования каждой системой. То есть, раздали бабла поровну, а потом пусть каждая система торгует на исходной сумме+ то, что заработала/потеряла.
Вы же не в состоянии включить в анализ такие события, как останов торгов, несколько планок подряд, повышение ГО, которое приводит к маржину и так далее.
Наконец, что будет, если одна из систем трахнется?
(а) постоянная перебалансировка денег между системами
(б) торговля с постоянным объемом весь период
(в) выделение равных денег на старте, с последующим самофинансированием каждой системой.
Весьма разные будут результаты на периоде.
Спасибо! Лучший доклад на конференции, имхо. Насколько критичен солвер, который мы выбираем при минимизации просадки? Проверяли ли Вы это?
Сравнивали ли CVaR с CDaR?