数据结构
多因子模型处理的数据结构是标准的面板数据,包括三个维度:个股、时间、 因子,对应的应变量是 T+1 期的收益率。
应用于 RNN 网络结构中时,与传统的多因子模型有一定的区别:
T+1 期的收益率仍然是训练的标签(label),因子对应的是样本的特征(feature), 个股对应的是一个样本,但是,时间维度,在 RNN 中,是一个循环的过程,将过去 T-n 期的因子数据都要纳入 T+1 期收益率的预测之中:
多因子的
RNN
数据结构
我们先设定具体的参数,再进一步理解 RNN 在多因子训练中的具体过程。
参数设定
回测时间:
2007 年 5 月 1 日-2016 年 4 月 30 日,该时间区间下月度数据训练样本数超过 18w(每一个股票每一个月底代表一个样本)
策略时间:
2016年 5月 1日-2017年 4月 30日
RNN 时间长度( steps):
24 个月,即每一个训练样本包含过去 24 个月的因子 数据,依次从第一个月输入神经网络,并将返回值与下一个月因子同时循环输 入神经网络,以此类推,直到得到第 24 个月的预测值。
因子数:
由于放入神经网络中训练,我们在期初并不评价因子的有效性,同时也不对因子进行合并,全部输入模型之中。(剔除部分相关性过高,且属于同类因子,该过程可以降低模型训练过拟合的可能)最终入选 48个小因子,属于10 类常见的风格因子。(详见后文统计与国信多因子系列报告)
分类数:
为了验证预测的准确性,同时排除样本中的部分噪声,我们将样本的收益率类型分为三类:上涨(月收益率大于 3%)、下跌(月收益率小于-3%)、 中性(月收益率处于-3%与 3%之间)
batch size:
1000,该参数属于 RNN 神经网络的系统参数,是 BP 算法中用来计算梯度的参数,即每次的训练,随机抽取 18w 训练样本中的 1000 个样本作为训练样本。
隐层神经元个数:
400,2 层,该参数同样属于 RNN 神经网络的系统参数,是 输入样本与隐层细胞连接的“神经”个数,受限于电脑的性能,只能设定为三位数,隐层个数也仅为 2 层。
学习速率:
0001,RNN 神经网络的系统参数,是模型训练时梯度下降的速度, 过 高容易导致梯度消失 ,过低则训练过慢。
交叉检验比例:
10%,为了防止模型过拟合,选择 18w 样本中的 90%作为训练 集,用以训练模型参数,而剩余 10%不参与训练,只作为测试集进行检验,如果训练集准确率与测试集准确率同时上升,则说明模型过拟合的可能较小。
需要说明的是,通过训练,我们发现,最后的 4 个 RNN 系统参数,在本推文中并不敏感,我们只设定为常见的参数值,就可以得到较为理想的准确率。
训练结果
数据预处理:仿照多因子的流程,对截面因子进行去极值、标准化的处理,同时, 为了剔除行业的效果, 截面单因子对行业矩阵回归,取残差作为最终输入的因子 数据。
样本内训练
经过100次迭代,已经能够观察到训练收敛的结果。
基于上图的基本的两层 RNN 网络结构,得到的损失率如下图:
Basic_LSTM
损失率
转换为模型的 3 类收益率预测值与真实值的对比准确率:
从曲线中可以看到,检验集的准确率最终收敛于
85%-90%
之间,这个准确率水平在机器学习的大多数模型中并不足够高,但考虑到我们使用的是基本的
RNN
结构,同时是存在市场博弈的股票市场,我们认为这一收敛水平能够反映出
LSTM
神经网络对多因子数据进行了有效的训练与特征抓取。
样本外检验
通过训练的最终结果,我们将样本外数据 2016-2017 输入,得到模型对未来 12个月的股票收益率的估计。其准确率的走势如下图:
Basic_LSTM
样本外选股准确率
样本外的准确率最终收敛水平仅高于
50%
,但是需要区分这一水平所能够反映的真实预测程度。为了直观的检验
LSTM
模型样本外的选股效果,我们选择模型给出的每个月个股的预测结果作为选股标准。
每月末,将样本外数据输入模型,并根据模型输出的对个股收益的三类(-3%、3%)预测,将全 A 股股票分为三个组合——高收益预测、低收益预测、中性预测。
全
A
股预测组合净值
可以看到,模型在最近一年,对高、低收益的预测胜率较高,但对于居中的中性组合预测效果较差。
全
A
股多空组合累计净值
多空超额收益在最近
12
个月的胜率为
75%
。从多空累计净值上看,多空超额
收益最近
12
个月在
4.5%
。
为了进一步验证模型对于股票预测的准确性,我们把选股的标准从模型输出的预测变为模型最终预测前的激活值。由于我们将预测目标分为了三类(高、中、 低),神经网络会选择激活值最大的类别,作为预测类别。因此,激活值实际上 反映了模型对个股未来收益的预测概率。
基于此,我们重新构建三类股票组合,每一期,选择激活值最大的 30%的股票最 为对应组合:
30%
多空组合净值
可以发现,模型对于中性收益的预测效果仍然没有改进,但是多空收益的预测效果比全
A
股更加准确。
多空组合的超额收益超过 9%,而最近 12 个月的月度胜率超过 90%。通过样本外数据的回测,我们发现,通过 LSTM 的 RNN 网络学习,对股票的收益率预测实际上是较为准确的,同时,模型对于不同收益类型的预测概率能够更进一 步的反映出股票上涨与下跌的概率大小。