uralpro
uralpro личный блог
30 сентября 2016, 12:00

Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Доклад «Оптимизация портфеля алгоритмических стратегий»


1. Введение


В чем состоит цель подобной оптимизации? Представим, что у нас есть набор алгоритмов, каждый из которых обладает некоторыми статистическими свойствами, из которых наиболее важными для нас являются доходность и максимальная величина просадки. В основе каждого из алгоритмов лежат разные стратегии, которые, тем не менее, могут быть коррелированы между собой в разной степени, торговля также может вестись на разных инструментах. В качестве примера приведу характеристики стратегий, которые были разработаны нашей командой и применяются в боевых торгах в настоящее время:


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Так как свойства каждого из алгоритмов отличаются, возникает проблема: каким образом распределить между ними доступный капитал для того чтобы:

1. Максимизировать доход при заданном уровне риска ( то есть максимальной величине просадки)

2. Минимизировать риск при заданной доходности


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


2. Модель Марковица


Задачу оптимизации попробуем решить, применив теорию оптимального портфеля, разработанную Марковицем, точнее некоторые последующие ее модификации. Обычно данная теория применяется для долгосрочного инвестиционного портфеля, состоящего из различных активов, например акций. Кратко  суть теории.



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Если инвестору доступно n-ое количество ценных бумаг с ожидаемой доходностьюДоклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16, где i =1,2,...n, то найдется только одна комбинация активовE(r_p), которая минимизирует риск портфеля при каждом заданном значении ожидаемой доходности всего портфеля.


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


Здесь можно сделать два вывода:

  1. Если коэффициенты корреляции между доходностями активов  постоянны, то при изменении соотношения активов в портфеле меняется и риск портфеля;

  2. Для любого портфеля с понижением коэффициента корреляции между активами уменьшается и риск портфеля.


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

Для примера возьмем несколько российских акций, входящих в состав индекса РТС за период в 1 год и рассчитаем для них границу эффективности.


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Точки  на графике обозначают значения доходности каждой акции за последний год, зеленый цвет — положительная доходность, красный — отрицательная доходность.


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

  Как видно из данного графика, при перемещении по границе вверх-вправо величины Е®(ожидаемая доходность) иДоклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16(риск) увеличиваются, а при движении вниз-влево — уменьшаются.

Эффективный портфель — это портфель, который обеспечивает минимальный риск при заданной величине E® или максимальный доход при заданном уровне риска.


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



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

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



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Если построить такой график за больший период,  этот эффект проявится еще сильнее.

В связи с этим, полезность оптимизации инвестиционного портфеля ценных бумаг по модели Марковица на практике находится под вопросом.


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



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Однако и тут, для алгоритма №8 мы можем видеть, что есть отрезок, где плотность имеет значение, превыщающее значение нормального распределения. Чтобы учесть это несоответствие, при оптимизации мы должны будем использовать модификации модели Марковица, принимающие это во внимание.


3. Оптимизация портфеля алгоритмов


Таким образом, предположим, что применение модели Марковица к портфелю алгоритмических стратегий будет достаточно эффективным. Проверим это утверждение на практике.


В качестве исходных данных возьмем дневные доходности каждого из алгоритмов, которые вычисляются по формуле:





R_t=(P_t-P_{t-1})/P_0, где


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16 —  суммарный капитал в конце торговой сессии дня t


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16 — капитал на начало расчетного периода


Так как наши алгоритмы работают на срочном рынке ФОРТС, то в качестве начального капитала мы берем гарантийное обеспечение, необходимое для открытой позиции на максимальное число задействованных в данном алгоритме контрактов. Реинвестирование капитала не применяем, поэтому все приращения рассчитываются относительно начального капитала.


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

На слайде показаны эквити всех алгоритмов на одном графике в размерности вышеуказанной доходности, при условии одинакового начального капитала для каждого алгоритма.



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

На следующем  слайде — суммарное эквити в случае выделения равных долей капитала для каждого алгоритма. Второй график — общий график просадок. Как можно увидеть, максимальная просадка за рассматриваемый период составила около 7,5%. В В общем, можно сказать, что для такого эквити уже мало что можно соптимизировать, так как за счет диферсификации и невысоких значений коэффициента парной корреляции получается достаточно плавный рост с небольшими просадками. Однако даже здесь есть возможность для улучшения общей доходности.


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


Для того чтобы определить, насколько устойчивы характеристики модели на будущих периодах, разобъем нашу выборку на две части в пропорции 70:30, как показано на графике прерывистой линией. Первая часть (in-sample) — это выборка, на которой мы будем строить нашу модель и на которой определим веса каждого алгоритма. Ко второй части выборки (out-of-sample) мы применим полученные веса и посмотрим, будет ли эффект от оптимизации на прошлом периоде действовать на периоде будущем. Хочу отметить, что выборка out-of-sample пришлась на период, где просадки возникали гораздо чаще, чем на выборке in-sample, значит, условия для проверки модели усложняются и будет интересно увидеть ее поведение в этом случае.



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Вычисления будем производить на языке R. Для упрощения расчетов применим пакет PortfolioAnalytics, который предназначен для численного решения задач портфельной оптимизации с различными целями и сложными ограничениями.


Кратко пройдемся по коду.


Сначала считываем исходные данные, которые записаны в простой текстовый файл с разделителями. Напоминаю, что исходными данными являются дневные доходности алгоритмов.


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



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Далее сформируем портфельный объект из матрицы доходностей:



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Следующий шаг — наложение необходимых ограничений на портфель стратегий. 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.1. Выборка in-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Здесь мы можем видеть, что нам удалось достигнуть увеличения доходности на 50% за рассматриваемый период, однако максимальная просадка возросла на 2% по сравнению с портфелем с равными весами.


    1.2. Выборка out-of-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Здесь доход выше на 5% по сравнению с исходным портфелем, но макимальная просадка увеличилась более чем на 10%. Так как при данной оптимизации мы не контролируем показатели по риску, то будем считать, что свойства модели сохранены.


2. Портфель с минимизацией риска по ETL

2.1. Выборка in-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

При этой оптимизации произошло снижение доходности на 10% по сравнению с портфелем с равными весами, но просадку удалось снизить на 2,34 %


2.2. Выборка out-of-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

В данном случае мы получаем даже увеличение дохода на 3%, максимальная просадка ниже на 1,3% — свойства модели сохраняются вне расчетной выборки.


3. Портфель с балансом максимума дохода и снижения риска по ETL

3.1. Выборка in-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Этот вариант также показывает увеличение доходности на 12%, и при этом максимальная просадка снизилась на 2,35%


3.2. Выборка out-of-sample



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

На проверочной выборке мы видим преимущество по доходности в 5%, но максимальная просадка увеличилась на полтора процента, что может свидетельствовать об изменении характеристик некоторых алгоритмов на этом периоде.


Теперь посмотрим, как распределялись веса алгоритмов в портфеле в каждом из случаев оптимизации



Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Здесь можно отметить, что, например, в случае максимизации доходности наибольшей вес у алго №8, который, возвращаясь к эквити стратегий, имел как самый большой доход, так и наибольшую просадку, что и отразилось в результатах оптимизации. В случаях оптимизаций по ETL и баланса между риском и доходностью, веса распределились более диверсифицированно между алгоритмами.


Вывод.


В результате проведенного тестирования можно утверждать, что статистические свойства алгоритмов имеют более устойчивые во времени значения, чем свойства приращений цен акций. Эта особенность позволяет применить оптимизацию к портфелю алгоритмов с гораздо большей эффективностью, чем к портфелю ценных бумаг. В результате подобной оптимизации удалось повысить доходность алгоритмического портфеля от 3 до 5% на проверочной выборке длительностью в 1,5 месяца. Можно сделать вывод, что наиболее применимые результаты дает оптимизация портфеля по минимизации риска ETL, а также по балансу между максимумом дохода и минимумом риска.


Доклад «Оптимизация портфеля алгоритмических стратегий» на конфе смартлаба 24.09.16

Другие стратегии и алгоритмы автоматической торговли смотрите на моем сайте — www.quantalgos.ru
23 Комментария
  • Дар Ветер
    30 сентября 2016, 12:10

    Вывод.


    В результате проведенного тестирования можно утверждать, что статистические свойства алгоритмов имеют более устойчивые во времени значения, чем свойства приращений цен акций. Эта особенность позволяет применить оптимизацию к портфелю алгоритмов с гораздо большей эффективностью, чем к портфелю ценных бумаг. В результате подобной оптимизации удалось повысить доходность алгоритмического портфеля от 3 до 5% на проверочной выборке длительностью в 1,5 месяца. Можно сделать вывод, что наиболее применимые результаты дает оптимизация портфеля по минимизации риска ETL, а также по балансу между максимумом дохода и минимумом риска.


    Золото. Я пришел к такому же, но без модели Марковица.
  • ICWiener
    30 сентября 2016, 12:14
    Чё?
  • Aberkromb Garell
    30 сентября 2016, 12:20
    вот это я ждал, спасибо! 
  • waldhaber
    30 сентября 2016, 12:31
    Кррууууто) Спасибо!
  • Sergey Pavlov
    30 сентября 2016, 12:40
    Спасибо за обзор с реальными примерами!
    Было бы интересно на примере ваших стратегий увидеть, насколько лучше каждый тип оптимизации случая одинаковых весов. Иными словами, интересно понять, стоит ли игра по нахождению оптимального портфеля стратегий свеч?
    • SergeyJu
      30 сентября 2016, 13:17
      Sergey Pavlov, мне представляется, что надо решать задачу не оптимизации какого-либо соотношения доходности и риска, а устойчивости портфеля. 
      Из всех вариантов, представленных здесь, я бы априори выбрал равномерное распределение капитала. И обязательно рассмотрел бы случай тупого раздельного самофинансирования каждой системой. То есть, раздали бабла поровну, а потом пусть каждая система  торгует на исходной сумме+ то, что заработала/потеряла. 
        • SergeyJu
          30 сентября 2016, 13:51
          uralpro, устойчивое решение и оптимальное в каком-то смысле решение не есть одно и то же. 
          Вы же не в состоянии включить в анализ такие события, как останов торгов, несколько планок подряд, повышение ГО, которое приводит к маржину и так далее. 
          Наконец, что будет, если одна из систем трахнется?
            • SergeyJu
              30 сентября 2016, 14:10
              uralpro, другими — это несколько напряжно. Хочется иметь некий устойчивый и адекватный метод построения портфеля, и черт бы с ней, с оптимальностью, в каких-то узких временных рамках.
          • Sergey Pavlov
            30 сентября 2016, 14:21
            SergeyJu, ваша позиция мне представляется более конструктивной с точки зрения реальности. Устойчивость это единственное что может быть критерием, а разные оптимизируемые функционалы лишь попытка оценить эту устойчивость. И вот хорошо бы, чтобы удавалось хотя бы экспертно при каждой такой оценке (например, портфельно-марковицкой) понимать насколько это хорошее приближение к устойчивости системы.
      • SergeyJu
        30 сентября 2016, 14:43
        uralpro, а что можно понимать под равными весами? 
        (а) постоянная перебалансировка денег между системами 
        (б) торговля с постоянным объемом весь период
        (в) выделение равных денег на старте, с последующим самофинансированием каждой системой.
        Весьма разные будут результаты на периоде. 
  • love_to_trade
    30 сентября 2016, 13:03

    Спасибо! Лучший доклад на конференции, имхо.  Насколько критичен солвер, который мы выбираем при минимизации просадки? Проверяли ли Вы это?
    Сравнивали ли CVaR с CDaR?

  • Astronomer
    30 сентября 2016, 14:17
    Спасибо, интересно…
  • Григорий
    30 сентября 2016, 14:42
    интересно, только там по тексту символы не читаются в фул-блэк
      • Григорий
        30 сентября 2016, 14:51
        uralpro, http://prntscr.com/co4yol
      • Григорий
        30 сентября 2016, 14:52
        uralpro, а так большое спасибо за интересную работу!
  • Павел Дуков
    02 октября 2016, 14:22
    спасибо
  • Blade
    28 октября 2016, 00:07
    Спасибо за статью! Прекрасная статья! Я много кода из неё скопипастил для своих наработок.

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

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