Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

2020-04-0419:59:28后端程序开发Comments2,726 views字数 3780阅读模式

股票投资中收益和风险始终存在着不确定性,对于理性投资者来说,他们倾向于在风险和收益之间达到均衡点。对于单只股票来说,在回测中使用夏普比率可以很好地去综合考虑收益与风险之间的关系。而对于多只股票组合投资时,会引入基金经理常常需要考虑的问题——仓位如何分配?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

本文给大家分享一个经典的模型——Markowitz均值-方差投资组合理论模型,一起来了解下如何运用Markowitz模型在多种资产上确定最优的投资比例。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Markowitz模型简介

1952年,美国芝加哥大学的经济学家Markowitz,应用了数学中的均值、方差概念来定义资产组合中收益和风险这两个关键因素,从而系统地阐述了资产组合和选择问题,标志着现代资产组合理论(Modern Portfolio Theory,简称MPT)的开端。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

该理论认为,由于资产投资的风险在于收益的不确定性,因此可将收益率视为一个随机变量,投资组合的期望收益是该随机变量的期望值,收益的波动率用随机变量的方差/标准差来表示,以此衡量投资组合的风险。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

于是,在波动率为横坐标、收益率为纵坐标的二维平面中描绘各种优化投资组合,从而形成了一条曲线。这条曲线在最小方差点以上的部分就是著名的Markowitz投资组合“有效前沿”(Efficient Frontier,有效边界),对应的投资组合称为有效投资组合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

根据投资组合理论,我们可以对多只股票(资产)的组合配置进行以下的优化过程:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

  • 获取多只股票数据,分析股票的收益率和波动率
  • 生成大量随机权重的收益/风险组合
  • 找到风险最小时的投资组合
  • 找到有效边界(有效前沿)
  • 找到夏普率较高的随机组合,即收益-风险均衡点

计算个股收益率

首先我们选取002372伟星新材、000876新希望、000851高鸿股份、600797浙大网新、000651格力电器这5只股票进行分析,并且将代码名称以列表格式存储。下载这5只股票的收盘价数据,并且合并至表格中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

 """
             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
"""
复制代码

然后计算每个股票的收益率,此处计算的是对数收益率,具体方法可参考小册《股票交易策略:收益与风险维度度量策略效果》这一节。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

"""
              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
"""
复制代码

我们可视化每只股票收益率的直方图,了解一下分布情况。可见每支股票的分布形状是近视正态分布,但仍然有“肥尾”现象。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合" data-data-original="https://user-gold-cdn.xitu.io/2020/4/4/171442e2d13a8272?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" src="https://www.cainiaoxueyuan.com/wp-content/themes/begin/img/loading.png"height="20" data-width="1016" data-height="765" />

当然也可以可视化出个股的每日叠加的收益率曲线,了解一年中的收益率走势情况,如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

计算协方差矩阵

在构建最优的投资组合过程中,计算投资组合的协方差矩阵是非常关键的一步。我们可以运用Pandas内置的cov()方法计算协方差矩阵。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

"""
          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
"""
复制代码

投资组合风险与收益

投资组合的风险取决于投资各组合中资产收益率的相关性。因此除了计算协方差矩阵之外,还需要计算年化收益率。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

"""
002372   -0.118489
000876    0.939151
000851    0.015777
600797    0.273381
000651    0.490995
dtype: float64
"""
复制代码

根据理论,风险需要分散,每个股票都会有一定比例的投资权重。一个资产组合的收益率(均值),为组合中个股收益率(均值)的权重之和。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

当我们给定相应的投资比例之后,计算投资组合的期望收益率时,首先要将每只股票的收益率乘上对应的权重,然后加权、求和再平均后即可计算所得该组合投资的期望收益。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

接下来我们可以用蒙特卡洛法随机生成多组权重,并根据权重计算出组合收益率和组合波动率。需要注意到此处的权重系数范围在0-1之间,并且权重系数总和为1。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

设定此过程重复5000次,即得到5000种组合收益率和波动率,当样本数越多就越能覆盖到各种权重组合,包括常用的等权重投资组合、市值加权投资组合。然后将数据可视化为散点图。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

图中横坐标是代表风险的标准差,纵坐标是收益率,每一个点都代表着一种投资组合的情况。Markowitz投资组合理论认为,理性的投资者最终是在风险和收益之间做出选择,总是在给定风险水平下追求期望收益最大化,或者是在给定收益水平下追求期望风险做最小化。因此只有在有效边界上的点才是最有效的投资组合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

最优的投资组合

接下来我们作为理性的投资者来选择有效边界上的某一点作为投资组合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

首先我们找到最小风险组合(GMV portfolio),并绘制在收益-风险的散点图中。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

接下来介绍一个能够同时对收益与风险加以综合考虑的经典指标——夏普比率(Sharpe Ratio)。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

夏普比率计算的是每承受一单位的风险所产生的超额回报,它是基金绩效评价标准化指标。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

接下来我们计算上述蒙特卡洛模拟的组合所对应的夏普比率,并将之作为第三个变量绘制在收益-风险的散点图中,此处采用颜色这一视觉线索来表征夏普比率。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

我们发现散点图上越往左上方,越具有较高的夏普比率,而越高夏普率,说明该组合的权重分配越优。接着开始找到夏普比率最大的组合(MSR),将其绘制在收益-风险的散点图中。如下所示:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

Python量化交易进阶讲堂:Markowitz模型实现最优投资组合

我们提取出最大夏普比率投资组合对应的权重,并转化为Numpy数组,如下所示: [0.12617847 0.74273907 0.04905298 0.00580558 0.07622391]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

由此处5只股票组成的例子可知。12.6%的权重买002372伟星新材,74.3%的权重买000876新希望,4.9%的权重买000851高鸿股份,0.5%的权重买600797浙大网新,7.6%的权重买000651格力电器。这样的组合,根据以往数据,可以分析得出组合年化收益率为72%,波动率为42.6%,夏普率为1.61。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

总结

虽然Markowitz的投资组合理论中涉及到很多假设情况,但重要的是它揭示了“资产的期望收益由其自身的风险的大小来决定”这个结论。同时有效边界上也印证了风险与收益成正比,要想更高的收益率就需要承担更大的风险,但投资组合在有效边界上,则是性价比最高的组合。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

作者:元宵大师
链接:https://juejin.im/post/5e883bd36fb9a03c341d9a4a
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/18078.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/18078.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定