PLUS会员

DeepAlpha短周期因子研究系列之:LSTM在量化选股中的应用

由sgwang创建,最终由qxiao 被浏览 412 用户

更新

本文内容对应旧版平台与旧版资源,其内容不再适合最新版平台,请查看新版平台的使用说明

新版量化开发IDE(AIStudio):

https://bigquant.com/wiki/doc/aistudio-aiide-NzAjgKapzW

新版模版策略:

https://bigquant.com/wiki/doc/demos-ecdRvuM1TU

新版数据平台:

https://bigquant.com/data/home

https://bigquant.com/wiki/doc/dai-PLSbc1SbZX

新版表达式算子:

https://bigquant.com/wiki/doc/dai-sql-Rceb2JQBdS

新版因子平台:

https://bigquant.com/wiki/doc/bigalpha-EOVmVtJMS5

\

一、引言

DeepAlpha系列模型中,我们发现DNN全连接神经网络模型可以从基础的量价数据中有效提取出有效的选股能力。同时,股票的量价数据属于金融时序数据,对应的,在深度学习模型中LSTM具有较强的时序预测能力,因此我们将LSTM模型应用于量化选股模型,并分析和验证其效果。

二、LSTM长短期记忆神经网络

2.1 RNN循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络,相比一般的神经网络来说,RNN将状态在自身网络中循环传递,因此可以接受更广泛的时间序列数据。

基础的RNN结构如下图所示:

{w:100}{w:100}{w:100}{w:100}

RNN的公式为:

{w:100}{w:100}{w:100}{w:100}

2.2 LSTM长短期记忆神经网络

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

LSTM的结构如下图所示:

{w:100}{w:100}{w:100}{w:100}

总结而言,LSTM内部主要有三个阶段:

  1. 忘记阶段。这个阶段主要是对上一个节点传进来的输入进行 选择性 忘记。简单来说就是会 “忘记不重要的,记住重要的”。通过忘记门进行判断。
  2. 选择记忆阶段。这个阶段将对输入有选择性地进行“记忆”。哪些重要则着重记录下来,哪些不重要,则少记一些。通过输入门控制。
  3. 输出阶段。将上面两步得到的结果相加,即可得到传输给下一个状态的h_t。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过输出门控制。

2.3 LSTM短周期因子量化选股模型

DeepAlpha LSTM模型主要由:输入层,LSTM层,Dropout层和Dense层组成,模型结构如下图所示。

{w:100}{w:100}{w:100}{w:100}

模型各层的核心参数为:

  • LSTM层
    • units: 64
    • activation: tanh
    • recurrent_activation: sigmoid
  • Dropout层
    • rate: 0.5
  • Dense层
    • units: 128
    • activation: relu

三、实验

基于BigQuant人工智能量化投资平台(https://bigquant.com/),对LSTM在量化选股中的应用进行了研究。

3.1 实验方法

为了保证研究的客观性,我们采用《DeepAlpha短周期因子系列研究之一:DNN在量化选股中的应用》中同样的方法,利用基础量价因子预测股票未来5日的收益率。

3.2 数据准备

3.2.1 数据

选择2015年1月1日到2021年12月31日A股全市场的日线股票数据作为训练数据,股票未来5日的收益率为训练的Label。

3.2.2 因子

我们使用了开盘价、最高价、最低价、收盘价、换手率、当日收益率、成交量这7个基础数据,在量价行情基础数据中构建了98个因子。如下表所示:

表达式 含义 说明
mean 时序平均 共生成7个衍生因子,例如mean(close_0, 5)
ts_max 时序求最大 共生成7个衍生因子,例如ts_max(close_0, 5)
ts_min 时序求最小 共生成7个衍生因子,例如ts_min(close_0, 5)
std 时序标准差 共生成7个衍生因子,例如std(close_0, 5)
ts_rank 时序排序 共生成7个衍生因子,例如ts_rank(close_0, 5)
decay_linear 时序加权平均 共生成7个衍生因子,例如decay_linear(close_0, 5)
correlation 时序相关性 生成21个个衍生因子,例如correlation(close_0, volume_0, 5)
向前偏移 7*5=35个,例如close_4
衍生因子数 共计98个 (7*6+21+35)

3.2.3 数据预处理

(1)Label预处理

短周期选股策略的目标是预测股票未来5日的收益率,并选择预测出收益率较高的股票进行买入。

  • 极值处理:用1%和99%分位的值做clip
  • 标准化处理:ZScoreNorm截面标准化

(2)因子预处理

  • 标准化处理:ZScoreNorm截面标准化
  • 缺失数据处理:fillna
  • 极值处理:特征值剪裁{-3, 3}
  • 序列窗口滚动:向前取5日的特征

3.3 模型训练

(1)基准模型选择

神经网络需要确定模型的一些超参数,用2011年1月1日到2013年12月31日的数据对LSTM的units参数进行超参数寻优,并将该参数用于后期的滚动训练中。

我们分别测试了LSTM的units参数[64, 128, 256],从验证集的效果来看,units为256的效果最好,回测结果如下图所示:

标签

DeepAlphaLSTM量化选股DNN
{link}