LSTM模型分层回测分析
循环神经网络模型,最终在每个月底可以产生对全部个股下月上涨或下跌的预测值。因此可以将其看作一个因子合成模型,即在每个月底将因子池中所有因子合成为一个“因子”。接下来,我们对该模型合成的这个“因子”(即个股下期收益预测值)进行分层回测,从各方面考察该模型的效果。仿照华泰单因子测试系列报告中的思路,分层回测模型构建方法如下:
1. 股票池:全A股,剔除ST股票,剔除每个截面期下一交易日停牌的股票,剔除上市3个月以内的股票。
2. 回测区间:2011-01-31至2017-10-31(按年度分为7个子区间)。
3. 换仓期:在每个自然月最后一个交易日核算因子值,在下个自然月首个交易日按当日收盘价换仓。
4. 数据处理方法:将LSTM模型的预测值视作单因子,因子值为空的股票不参与分层。
5. 分层方法:在每个一级行业内部对所有个股按因子大小进行排序,每个行业内均分成N个分层组合。如图表25所示,黄色方块代表各行业内个股初始权重,可以相等也可以不等(我们直接取相等权重进行测试),分层具体操作方法为N等分行业内个股权重累加值,例如图示行业1中,5只个股初始权重相等(不妨设每只个股权重为0.2),假设我们欲分成3层,则分层组合1在权重累加值1/3处截断,即分层组合1包含个股1和个股2,它们的权重配比为0.2:(1/3-0.2)=3:2,同样推理,分层组合2包含个股2、3、4,配比为(0.4-1/3):0.2:(2/3-0.6)=1:3:1,分层组合4包含个股4、5,配比为2:3。以上方法是用来计算各个一级行业内部个股权重配比的,行业间权重配比与基准组合(我们使用沪深300)相同,也即行业中性。
6. 评价方法:回测年化收益率、夏普比率、信息比率、最大回撤、胜率等。
这里我们将展示LSTM模型的分层测试结果。
下图是分五层组合回测绩效分析表(20110131~20171031)。其中组合1~组合5为
按LSTM 模型打分从大到小排序构造的行业中性的分层组合。基准组合为行业中性的等权组合,具体来说就是将组合1~组合5合并,一级行业内部个股等权配置,行业权重按当期沪深300行业权重配置。多空组合是在假设所有个股可以卖空的基础上,每月调仓时买入组合1,卖空组合5。回测模型在每个自然月最后一个交易日核算因子值,在下个自然月首个交易日按当日收盘价调仓。
下面四个图依次为:
1. 分五层组合回测净值图。按前面说明的回测方法计算组合1~组合5、基准组合的净值,与沪深300、中证500净值对比作图。
2. 分五层组合回测,用组合1~组合5的净值除以基准组合净值的示意图。可以更清晰地展示各层组合在不同时期的效果。
3. 组合1相对沪深300月超额收益分布直方图。该直方图以[-0.5%,0.5%]为中心区间,向正负无穷方向保持组距为1%延伸,在正负两个方向上均延伸到最后一个频数不为零的组为止(即维持组距一致,组数是根据样本情况自适应调整的)。
4. 分五层时的多空组合收益图。再重复一下,多空组合是买入组合1、卖空组合5(月度调仓)的一个资产组合。多空组合收益率是由组合1的净值除以组合5的净值近似核算的。
下图为分十层组合回测时,各层组合在不同年份间的收益率及排名表。每个单元格的内容为在指定年度某层组合的收益率(均为整年收益率),以及某层组合在全部十层组合中的收益率排名。最后一列是分层组合在2011~2017的排名的均值。
下图是不同市值区间分层组合回测绩效指标对比图(分十层)。我们将全市场股票按市值排名前1/3,1/3~2/3,后1/3分成三个大类,在这三类股票中分别进行分层测试,基准组合构成方法同前面所述(注意每个大类对应的基准组合并不相同)。
下图是不同行业间分层组合回测绩效分析表(分五层)。我们在不同一级行业内部都做了分层测试,基准组合为各行业内该因子非空值的个股等权组合(注意每个行业对应的基准组合并不相同)。