前情概要
上一篇中,我们介绍了优化投资组合的两种方式:最小方差与最大夏普比。前者侧重于风险控制,优化的目标是减小收益率波动,然而无法确保可观的收益率;后者侧重于收益风险比,优化的目标是控制风险的同时获得更大的收益,然而无法杜绝极端情况下的黑天鹅事件。
实证回测
那么这两种优化方式在实际应用中的效果到底如何?我们将通过下文的真实股票数据回测进行深入探索,旨在为大家打开思路。在回测引擎中,我们需要做些初始化设置,主要如下:
1、设置佣金及印花税 set_order_cost,本例佣金设定为万分之1.5;
2、指定股票范围,本例为“青岛啤酒、华域汽车、浦发银行、上海能源”4只股票。
接下来我们设置回测函数,该函数会每天触发运行。主要逻辑为:
1、每个交易日为这四只股票分配等权重配置比例;
2、查询每个交易日的账户总资产,按上述权重配比对所持的四只股票进行调仓,确保调仓后投资于各股票的金额相等。
最后我们设定回测时点为16年下半年,初始金额10万,回测结果如下:
作为对比,我们给出最小方差和最大夏普比的回测结果,稍后来进行说明:
最小方差优化策略:
最大夏普比率优化策略:
通过观察可以发现,等权重分配的投资组合,经过最小方差优化以后,收益率有了明显的提升。而按照夏普比率优化过后,收益率不增反降,而且大幅跳水,效果不尽如人意。这是否说明了夏普比率优化方案仅仅只是停留在理论上的优化可能?
夏普比率失效的原因
为进一步分析原因,我们打印出了回测过程中,两种优化策略的仓位变化(注:图中四列数字,分表代表的是4只股票的仓位资金)
最小方差优化策略:
最大夏普比率优化策略:
至此,不知各位是否已经发现了问题的原因?也许聪明如你已经看出了端倪,是的,按夏普比率优化的仓位比约为 9.3:0:0:0.7,几乎全部集中在了第一只股票上。还记得我们在开篇时候说过的分摊风险吗?我们之所以进行多股票配置,正是为了分摊风险,而根据夏普比率计算出的优化方案却将资金孤注一掷在了一只股票上,可想而知风险不但没有分摊,反而更加放大了。
注意,这并不是说,最小方差计算得到的投资组合显得更优。事实上,最小方差同样有概率发生类似的问题。只不过本例中恰巧没有发生。因此,我们需要思考,是否有更完善的优化方案?为此我们来分析一下优化策略的代码实现部分和主要逻辑:
首先,我们获取到4只股票的过往20个交易日内股价,通过计算得到对应的收益率时间序列。然后我们设定权重约束,要求每只股票的权重大小都在0~1之间,并且加总为1(即100%)。最后,我们应用Scipy.Optimize.minimize方法来得到权重的最优解。
这里需要特别说明的是,理想情况下,我们对投资组合的优化,是基于各只股票的未来收益率已知。然而实际上我们不可能预测未来。正如代码中所示,我们是基于对股票的历史收益率来估算所谓的未来收益率。这就会导致偏差,即历史收益率到底有多“可信”足以预测未来?甚至换言之,历史收益率是否能够代表未来收益?进一步地,按此进行计算的最佳权重配比也就会有偏差,尤其是对于将资本全部集中在一只股票上的优化方案(如上文举例的最大夏普比率)更容易发生“黑天鹅”事件。
完善优化方案
因此,我们完善了优化方案,即并行计算最小方差和最大夏普比的两种权重方案,挑选出它们之中方差最小的方案,也即更均匀离散的分摊方式。这一点正是基于“历史收益率”无法全权代表“预期收益率”,两者存在偏差,对风险的估算因而会存在更多的不确定性。而解决办法正是参考了生活中我们都接触过的掷骰子的灵感,我们知道,当预估掷骰子点数时,正是由于不确定性,我们会用等权重(概率)来预测每一面出现的可能性,这实际上就是采用了均匀分布实现最大化的风险分摊。因此对于两种权重优化方案,我们会倾向于更加“均匀”分摊风险的方式即权重方差最小的方案。
特别地,我们最后还需要考虑一种特殊情况,当两种优化权重方案都是集中于某一只股票时,我们需要程序判断进行介入干预,即投资组合优化中,若某一只股票的权重配比超过了80%,我们将按均摊的方式分配权重,来控制风险。
以下是一个低估值选股的策略,分别为采用均匀分摊、最小方差、最大夏普比率,以及我们完善后的优化方案收益情况对比:
四种方案中,仅最小方差与我们的完善方案拥有>220%的收益,相比较而言,完善的方案拥有更小的回撤与更大的夏普比率。更多内容欢迎关注微信公众号“数据夕拾”。