Python Quantitative Trading Advanced Lecture-Markowitz Model Реализация оптимального инвестиционного портфеля

Python анализ данных

Добро пожаловать на подписку«Python Combat — построение системы количественной торговли на основе акций»Буклет, в буклете будут последовательно публиковаться статьи в колонках, связанные с содержанием буклета, которые обеспечат более полное и расширенное введение в соответствующие точки знаний и будут выборочно включены в буклет, облегчая читателям проверку знаний. точки.

предисловие

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

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

Введение в модель Марковица

В 1952 году Марковиц, экономист из Чикагского университета, применил математические концепции среднего значения и дисперсии для определения двух ключевых факторов доходности и риска в портфеле активов, тем самым систематически изложив проблему портфеля активов и их выбора, обозначив современный актив Начало современной теории портфеля (MPT).

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

Поэтому различные оптимальные инвестиционные портфели изображаются в двумерной плоскости с волатильностью по оси абсцисс и доходностью по оси ординат, образуя таким образом кривую. Часть этой кривой выше точки минимальной дисперсии представляет собой знаменитый портфель Марковица «Эффективная граница» (Efficient Frontier), а соответствующий портфель называется эффективным портфелем.

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

  • Получите данные о нескольких акциях и проанализируйте доходность и волатильность акций
  • Сгенерируйте большое количество случайно взвешенных комбинаций доходности/риска
  • Найдите наименее рискованный портфель
  • Найдите эффективную границу (эффективная граница)
  • Найдите случайную комбинацию с более высоким коэффициентом Шарпа, точкой равновесия доходности и риска.

Рассчитать доходность акций

Прежде всего, мы выбираем 002372 Weixing New Materials, 000876 New Hope, 000851 Gaohong Shares, 600797 Zhejiang University Wangxin и 000651 Gree Electric Appliances для анализа и сохраняем кодовые названия в формате списка. Загрузите данные о ценах закрытия для этих 5 акций и объедините их в таблицу.

 """
             002372  000876  000851  600797  000651
trade_date                                        
2019-01-02   14.63    7.40    5.03    7.30   35.80
2019-01-03   14.25    7.42    5.12    7.26   35.92
2019-01-04   14.49    7.52    5.49    7.51   36.65
2019-01-07   14.90    7.82    5.79    7.77   36.48
2019-01-08   15.18    7.60    5.79    7.67   36.34
2019-01-09   15.30    7.73    5.80    7.69   37.51
2019-01-10   15.37    7.60    5.84    7.61   37.76
...            ...     ...     ...     ...     ...
2019-01-11   15.49    7.64    5.67    7.74   37.73
2019-01-14   15.45    7.77    5.74    7.68   37.68
2019-01-15   15.87    7.77    5.58    7.99   38.78
2019-01-16   16.07    7.64    5.46    7.86   39.31
"""

Затем рассчитайте доходность каждой акции. Здесь рассчитывается логарифмическая норма доходности. Конкретный метод см. в разделе брошюры "Стратегии торговли акциями: измерение эффекта стратегий с точки зрения доходности и рисков". ".

"""
              002372    000876    000851    600797    000651
trade_date                                                  
2019-01-03 -0.026317  0.002699  0.017734 -0.005495  0.003346
2019-01-04  0.016702  0.013387  0.069774  0.033856  0.020119
2019-01-07  0.027902  0.039118  0.053204  0.034035 -0.004649
2019-01-08  0.018618 -0.028536  0.000000 -0.012954 -0.003845
2019-02-20  0.040290  0.023878 -0.009285 -0.012136  0.008258
...              ...       ...       ...       ...       ...
2019-11-18  0.015429  0.047883  0.003650  0.032485  0.002206
2019-11-19  0.034841  0.029960  0.032261  0.010899  0.007936
2019-11-20 -0.018854 -0.018676 -0.012423 -0.038679 -0.010142
"""

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

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

Вычислить ковариационную матрицу

Вычисление ковариационной матрицы портфеля является важным шагом в процессе построения оптимального портфеля. Мы можем вычислить ковариационную матрицу, используя метод cov(), встроенный в Pandas. Следующим образом:

"""
          002372    000876    000851    600797    000651
002372  0.180281  0.040032  0.042272  0.022727  0.030380
000876  0.040032  0.293750  0.046080  0.085311  0.013274
000851  0.042272  0.046080  0.282092  0.161818  0.052123
600797  0.022727  0.085311  0.161818  0.245785  0.034793
000651  0.030380  0.013274  0.052123  0.034793  0.113990
"""

Портфельный риск и доходность

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

"""
002372   -0.118489
000876    0.939151
000851    0.015777
600797    0.273381
000651    0.490995
dtype: float64
"""

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

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

Затем мы можем использовать метод Монте-Карло для случайного создания нескольких наборов весов и расчета доходности портфеля и волатильности портфеля на основе весов. Следует отметить, что весовые коэффициенты здесь колеблются в пределах 0-1, а сумма весовых коэффициентов равна 1.

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

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

оптимальный инвестиционный портфель

Далее, как рациональный инвестор, мы выбираем точку на границе эффективности в качестве портфеля.

Сначала мы находим портфель с минимальным риском (портфель GMV) и наносим его на диаграмму рассеяния риска доходности. Следующим образом:

Далее мы представим классический индикатор, способный одновременно учитывать преимущества и риски — коэффициент Шарпа.

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

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

Мы обнаружили, что чем дальше вверху влево на графике рассеивания, тем выше коэффициент Шарпа, а чем выше коэффициент Шарпа, тем лучше распределение веса комбинации. Затем начните находить портфель с наибольшим коэффициентом Шарпа (MSR) и наносите его на диаграмму рассеяния риска доходности. Следующим образом:

Мы извлекаем веса, соответствующие самым большим портфелям коэффициента Шарпа, и конвертируем их в массивы Numpy следующим образом:[0.12617847 0.74273907 0.04905298 0.00580558 0.07622391]

Возьмем, к примеру, 5 акций. 12,6% веса покупает 002372 Weixing New Materials, 74,3% веса покупает 000876 New Hope, 4,9% веса покупает 000851 Акции Gao Hong, 0,5% веса покупает 600797 Zhejiang University Netnews, 7,6% веса покупает 000651 Электрические приборы Gree. Для такой комбинации, согласно предыдущим данным, можно проанализировать, что годовая норма доходности комбинации составляет 72%, коэффициент волатильности — 42,6%, а коэффициент Шарпа — 1,61.

Суммировать

Хотя портфельная теория Марковица включает множество допущений, важно выявить вывод о том, что «ожидаемая доходность актива определяется его собственным риском». В то же время граница эффективности также подтверждает, что риск пропорционален доходности.Если вы хотите получить более высокую норму прибыли, вам нужно больше рисковать, но инвестиционный портфель на границе эффективности является наиболее рентабельной комбинацией. .

Вышеуказанные стратегии и используемые акции предназначены только для учебных целей и не представляют собой каких-либо рекомендаций по инвестированию! Инвестировать нужно осторожно, вход на рынок рискован! ! !

Я обдумываю, стоит ли помещать содержимое этой колонки в буклет (включая исходный код реализации) Заинтересованные друзья могут оставить мне сообщение и предложения! Если много людей, поднимите его!

Чтобы узнать больше о количественном трейдинге, подпишитесьбуклетчитать! !

В то же время вы также можете обратить внимание на мой общедоступный аккаунт WeChat [Master Lantern предлагает вам использовать количественную торговлю Python], чтобы узнать больше о количественной торговле Python.