2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 基于深度神经网络的股票多因子预测模型(下)

基于深度神经网络的股票多因子预测模型(下)

时间:2022-10-29 17:01:39

相关推荐

基于深度神经网络的股票多因子预测模型(下)

接上一篇文章基于深度神经网络的股票多因子预测模型(上)

多因子建模

数据结构

多因子模型处理的数据结构是标准的面板数据,包括三个维度:个股、时间、 因子,对应的应变量是 T+1 期的收益率。

应用于 RNN 网络结构中时,与传统的多因子模型有一定的区别:

T+1 期的收益率仍然是训练的标签(label),因子对应的是样本的特征(feature), 个股对应的是一个样本,但是,时间维度,在 RNN 中,是一个循环的过程,将过去 T-n 期的因子数据都要纳入 T+1 期收益率的预测之中:

多因子的RNN数据结构

我们先设定具体的参数,再进一步理解 RNN 在多因子训练中的具体过程。

参数设定

回测时间: 年 5 月 1 日- 年 4 月 30 日,该时间区间下月度数据训练样本数超过 18w(每一个股票每一个月底代表一个样本)

策略时间: 5月 1日- 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 神经网络对多因子数据进行了有效的训练与特征抓取。

样本外检验

通过训练的最终结果,我们将样本外数据 - 输入,得到模型对未来 12个月的股票收益率的估计。其准确率的走势如下图:

Basic_LSTM样本外选股准确率

样本外的准确率最终收敛水平仅高于 50%,但是需要区分这一水平所能够反映的真实预测程度。为了直观的检验 LSTM 模型样本外的选股效果,我们选择模型给出的每个月个股的预测结果作为选股标准。

每月末,将样本外数据输入模型,并根据模型输出的对个股收益的三类(-3%、3%)预测,将全 A 股股票分为三个组合——高收益预测、低收益预测、中性预测。

全A股预测组合净值

可以看到,模型在最近一年,对高、低收益的预测胜率较高,但对于居中的中性组合预测效果较差。

全A股多空组合累计净值

多空超额收益在最近 12 个月的胜率为 75%。从多空累计净值上看,多空超额收益最近 12 个月在 4.5%。

为了进一步验证模型对于股票预测的准确性,我们把选股的标准从模型输出的预测变为模型最终预测前的激活值。由于我们将预测目标分为了三类(高、中、 低),神经网络会选择激活值最大的类别,作为预测类别。因此,激活值实际上 反映了模型对个股未来收益的预测概率。

基于此,我们重新构建三类股票组合,每一期,选择激活值最大的 30%的股票最 为对应组合:

30%多空组合净值

可以发现,模型对于中性收益的预测效果仍然没有改进,但是多空收益的预测效果比全 A 股更加准确。

多空组合的超额收益超过 9%,而最近 12 个月的月度胜率超过 90%。通过样本外数据的回测,我们发现,通过 LSTM 的 RNN 网络学习,对股票的收益率预测实际上是较为准确的,同时,模型对于不同收益类型的预测概率能够更进一 步的反映出股票上涨与下跌的概率大小。

结果分析

回顾 RNN 神经网络的结构,在基本的 LSTM 结构中,每一期的输入样本,其与隐层、隐层与输出层的 连接权重是共享的,也就是说,在 我们具体的模 型里,每一期 48 个因子的输入,都对应有 400 个权重连接到隐层 400 个神经元上, 每一期的循环都会对这 400 个权重进行更新。

下图是输入层的权重分布的更新过程:

输入层权重w分布变化

输入层bias分布变化

输入层权重w分布

输入层bias分布

与我们观察到的模型训练的损失率收敛特征一致,神经网络在较早的迭代次数时已经逐渐收敛,参数权重趋于稳定。

既然知道了输入层的权重,我们考虑观察训练结束时,模型得到的因子与隐层的连接权重,作为因子在系统中的贡献程度。

参数权重变化示意图

从示意图能够直观的理解因子的权重。X1、X2 代表实际模型中的因子,连接输入样本 X1、X2 与隐层神经元的曲线即为训练的权重,随着样本迭代,权重朝着最优解的方向变化,权重越大,则示意图中的曲线越粗。

由于我们观察到本报告中的参数分布较为稳定,因此我们认为,可以大致将输入层因子的权重总和作为该因子在模型中的贡献度。虽然因子真实的贡献度也 会受到隐层权重的影响,但输入层的最终结果仍然具有一定的参考意义。

输入层因子权重绝对值之和

总结

多因子模型的发展趋于成熟,因子的 alpha 收益出现了下降的趋势。如果维持多因子模型的收益是量化领域的一个核心问题。

我们认为 扩展的方向包括新的因子挖掘、股票池的区分,以及非线性因子特征的挖掘。而机器学习,正是非线性问题的一个有效解决途径。具体到本篇推文涉及的深度神经网络 RNN 来说,即是通过时间维度的扩展,以及空间深度的扩展,将目前的因子空间,扩散到更高维度的空间中去,并在其中找寻有效的路径,实现对因子模型的预测。

在严格区分了训练集、测试集、样本外数据集之后,我们通过训练能够得到较高准确度的收敛结果,并且在样本外数据回测中,得到显着的超额收益。交叉检验的准确度接近 90%,样本外多空收益最近 12 个月的胜率则超过 90%。

这些结果的意外之处在于,利用基本的 LSTM 结构,能够在参数未优化之前得到如此高的准确率与显着水平,对于模型的进一步改进和优化令人有所期待。同时,这些结果的意料之中在于,当我们不再将机器学习、神经网络当做复杂的 “黑箱”,其强大的数据处理能力必将在投资领域展露出来,也同样令人期待。

声明丨本文来源:量化侠,版权归原作者所有。若有所侵权,请后台联系并第一时间处理,非常感谢!

点击“阅读原文”咨询AQF课程及考试问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。