行业轮动的黄金律:日内动量与隔夜反转

一、引言

>>> 研究目的

本文参考方正证券《行业轮动的黄金律:日内动量与隔夜反转》,对研报里面的结果进行了分析,并对比了传统动量因子策略和将传统动量因子拆分后日内涨跌幅因子和隔夜涨跌幅因子的效果。

>>> 研究内容

不同的交易者群体,会有不同的行为模式。在交易日内的不同时段,交易者的成分可能存在系统性差异,因而会导向不同的市场行为特征,最终形成各式各样的日内模式(intraday patterns)。按照这个思路,为了研究动量效应的日内精细规律,本文将行业指数的每日收益率拆解为日内收益率(今收/今开-1) 和隔夜收益率(今开/昨收-1)。

1)将过去 15 个交易日的日内收益率加总,命名为日内涨跌幅因子 M0;将过去 15 个交易日的隔夜收益率加总,称为隔夜涨跌幅因子 M1。

2)将这两个效应结合在一起,构建新的行业轮动模型。在具体操作上,我们将 N 个行业指数按照 M0 因子值从低到高分别打 1 分至 N 分,按照 M1 因子值从高到低分别打 1 分至 N 分,将两项打分相加,得到每个行业的总得分,此因子命名为黄金律因子 M_gold。

3)行业轮动的回测框架如下:

测试时段: 2006 年 1 月-2017 年 11 月;

样本空间: 申万一级行业指数(共 28 个);

调仓方式: 在每个月初,将行业指数按总得分排序,划分为五组,分别持有至月末;得分最高的组合为多头组合,得分最低的组合为空头组合。

>>> 本文所用因子构建细节

根据研究内容,我们列出本文所用的四个因子构建细则:

传统动量因子:前十五天涨跌幅

日内涨跌幅因子M0:前十五日内收益率加总,其中日内收益率为今收/今开-1

隔夜涨跌幅因子M1:前十五日隔夜收益率加总,其中隔夜收益率为今开/昨收-1

黄金律因子M_gold:将日内涨跌幅因子和隔夜涨跌幅因子根据打分法等权加总构成黄金律因子,其中日内涨跌幅因子由于动量效应采取从低到高分别打1-N分,而隔夜涨跌幅因子由于反转效应由高到底分别打1-N分

>>> 研究结论

1)本文将传统的动量因子(即前十五日涨跌幅)进行分拆,对交易者的行为模式进行进一步细化,可以发现交易者存在不同的日内交易模式,这为构建新的因子提供思路。

2)可以发现行业指数存在“日内动量”与“隔夜反转”的黄金律:即日内涨跌幅因子 M0(前15天的日内收益率加总) 呈现显著的动量效应,因子越大的组合能够带来更大的收益,而隔夜涨跌幅因子 M1(前十五日隔夜收益率加总)则呈现反转效应,因子值越小的组合超额收益更加明显。

3)将两个因子按照打分法等权结合得到的黄金律因子构建行业轮动组合,可以发现顶部组合年化收益约有 7%的提升,同时最大回撤情况也有明显改善。对比传统的动量因子夏普比率 0.68,黄金律因子的夏普比率可达 0.87。

>>> 研究耗时

1)数据准备部分:大约需要 20min,数据采集部分需要注意,目前平台暂无提供直接的 API 获取行业数据,以下的内容都是调用了聚源数据库进行的操作,具体数据源可以参考这个链接网页链接

2)策略构建部分:大约需要 30min,主要对模型进行调整。

二、导入数据

目前平台暂无提供直接的 API 获取行业数据,以下的内容都是调用了聚源数据库进行的操作,具体数据源可以参考这个链接网页链接,我们利用 get_SW_index 这个函数提取每一个申万二级行业指数的数据,利用 index_list 确定提取指标,如收盘价“ClosePrice”等,其中 codelist 为申万二级指数的代码汇总,我们可以利用 get_SW_index 函数提取出交易数据。

设置开始回测的开始时间和结束时间,将 index_list 设置为收盘价与开盘价,利用 get_SW_index 分别提取出所有申万二级指数的收盘价和开盘价。

三、黄金律:日内动量+隔夜反转

不同的交易者群体,会有不同的行为模式。在交易日内的不同时段,交易者的成分可能存在系统性差异,因而会导向不同的市场行为特征,最终形成各式各样的日内模式(intraday patterns)。按照这个思路,为了研究动量效应的日内精细规律,报告将行业指数的每日收益率拆解为日内收益率(今收/今开-1) 和隔夜收益率(今开/昨收-1)。在本篇报告中,我们将过去 15 个交易日的日内收益率加总,命名为日内涨跌幅因子 M0;将过去 15 个交易日的隔夜收益率加总,称为隔夜涨跌幅因子 M1。

首先我们设置回测的一些参数,即开始回测时间和年份。

下面的 def_alpha 函数是我们根据之前说的因子计算逻辑计算出四个因子,即M-传统的动量因子,M0-日内涨跌幅因子,M1-隔夜涨跌幅因子,M_gold-M1 和 M2 的复合因子。

同时后续会利用 report 这个函数对比这四个因子的选股效果,report 函数计算得到了年化收益率,最大会回撤等指标,可以对策略收益进行量化衡量,我们同时给出如计算得到的传统动量因子,如下所示:

在这里,利用 resample 这个函数,写出 get_month 这个函数从而根据因子索引得到月末时间点和月初时间点,输出月末时间点如下所示。

同时在本文中我们利用打分法进行选股,get_alpharank 就是用于做因子排序,输入因子和日期,我们可以将那一天的排序值输出。

下面可以对调仓时候的净值进行计算,如 group1,a1 就是传统动量因子的分组一的结果。下图展示了传统动量因子(以 15 日涨跌幅替代) 在行业轮动上的应用效果,测试对象为申万二级行业指数。可以看出五分组净值曲线之间的区分度不太理想。

我们给出了多空净值(第 1 组-第 5 组)的走势,结论是上升趋势不够稳定且回撤较大。也就是说,直接基于指数前期 涨跌幅构建的动量轮动策略,效果是难以令人满意的。

为了考察因子对行业指数未来收益的预测能力,我们分别按照 M0、M1 由高到低将行业指数排序分成 5 组, 在每个自然月的月末进行调仓。下图给出了两种因子下各组合的年化收益率。我们的结论是:日内涨跌幅因子 M0 呈现显著的动量效应,而隔夜涨跌幅因子 M1 则呈现反转效应。

四、基于黄金律的行业轮动模型

按照前文所述,行业指数存在“日内动量”与“隔夜反转”的黄金律,下面我们尝试将这两个效应结合在一起,构建新的行业轮动模 型。在具体操作上,我们将 N 个行业指数按照 M0 因子值从低到高分别打 1 分至 N分,按照 M1 因子值从高到低分别打 1 分至 N 分,将两项打分相加,得到每个行业的总得分。

行业轮动的回测框架如下:

测试时段: 2006 年 1 月-2017 年 11 月;

样本空间: 申万一级行业指数(共 28 个);

调仓方式: 在每个月初,将行业指数按总得分排序,划分为五组, 分别持有至月末;

得分最高的组合为多头组合,得分最低的组合为空头组合。

下图为各分组的净值走势曲线。

五、结论

>>> 研究结论

本篇报告重点讨论动量因子的行业轮动应用。基于“日内不同时段交易者行为模式存在差异”的考虑,我们将传统动量因子进行拆分,首次提出了“日内动量+隔夜反转”的行业轮动黄金律。

通过对比传统动量因子和改进后的动量因子,我们发现明显的有一些策略业绩的提升:从顶部组合来看,传统动量因子的年化收益率只有 20.37%,但经过改进后的因子有 26.17%。同时从收益波动来看,经过改进后的因子的最大回撤也从 70%降低为 64%左右。即不管是盈利能力还是盈利稳定性,改进后的因子都超过了传统的动量因子。

>>> 未来展望

研究结果为我们提供了一定的思考方向,即对一些传统因子的改进,可以提升其效果。同时我们在这里将传统动量因子的参数默认为 15 天,这也是一个值得探讨的影响要求,参数可能会对因子效果产生一定的影响。同时本篇报告并没有将换手因素加入,即没有考虑交易费用所带来的影响。这都是之后值得研究的问题。


点击【阅读原文】,查看完整研究源码~

@今日话题 @蛋卷基金 

雪球转发:2回复:1喜欢:5

全部评论

Jack_Another04-08 16:37

赞! 正需要这么个验证改进mom因子