Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

LSTM择时+StockRanker选股的可视化策略实现

摘要:本文将为大家构建一个AI驱动的量化投资策略样例,策略用LSTM算法进行择时,StockRanker算法进行选股,并用可视化的方式实现,文末附上策略源码,感兴趣的朋友可以直接前往BigQuant人工智能量化投资平台进行实现。

一、LSTM算法简介

LSTM Networks是递归神经网络(RNNs)的一种,该算法由Sepp Hochreiter和Jurgen Schmidhuber在Neural Computation上首次公布。后经过人们的不断改进,LSTM的内部结构逐渐变得完善起来(图1、图2)。在处理和预测时间序列相关的数据时会比一般的RNNs表现的更好。目前,LSTM Networks已经被广泛应用在机器人控制、文本识别及预测、语音识别、蛋白质同源检测等领域。

image

图1LSTM层结构

image

图2典型LSTM层结构

这里ht 代表神经元的输出,而Ct 代表神经元的状态。系统的运行分为以下步骤:

A.计算需要被细胞丢弃的信息:

B.计算需要添加到细胞中的信息:

image

C.更新细胞状态:

D.计算输出信息:

image

LSTM模型构建:作为循环层的一种神经网络结构,只使用LSTM并不能构建出一个完整的模型,LSTM还需要与其他神经网络层(如Dense层、卷积层等)配合使用。此外,还可以构建多层LSTM层来增加模型的复杂性,学习描述更高层次的时域特征(如图3)。

image

图3LSTM的组合运用

二、LSTM在股票预测中的应用

经济学家靠ARMA 模型预测的时间序列模型。该模型对小数据集效果很好,可容纳时间序列的记忆效应,如持久性、均值回归、季节性等。在深入学习中,长短期记忆(Long short-term memory,LSTM)可类比于ARIMA长期短期记忆模型。LSTM 对RNN 进行了结构上的修改,来避免长期依赖问题。LSTM在股票预测中通常分为两类应用:一是直接将LSTM输出结果作为做单信号在个股上进行回测,二是将LSTM的预测结果作为一种择时信号,再配合其他选股模型(如BigQuant平台的StockRanker)进行回测。社区中已经在LSTM Networks应用于股票市场探究一文中提到LSTM更适用于处理个股/指数,将LSTM作为择时模型与其他选股模型配合使用效果较好。

三、策略流程

本文策略在BigQuant平台AI可视化模板的基础上建立,使用stockranker作为选股器,针对沪深300指数采用LSTM构建择时模型作为仓位风控控制,流程图见图4。

关于LSTM模型中涉及的参数含义可以参考《[量化学堂-机器学习]基于LSTM的股票价格预测模型》一文中的描述。

  • 开始时间:2017-07-01
  • 结束时间:2018-04-30
  • 选股策略:stockranker
  • 优质股数量:10只
  • 换仓周期:每日
  • 止盈止损:使用沪深300指数LSTM的涨跌预测值进行仓位控制

LSTM的模型参数

  • 每段input预测数据的长度seq_len: 5日数据
  • 输入特征:[‘close’,‘open’,‘high’,‘low’,‘amount’,‘volume’]
  • 预测集长度:10*seq_len
  • 神经网络结构: 1层LSTM层+3层Dense层
  • 模型训练:优化器adam,损失函数mse
  • 模型输出: 涨跌预测值(正数为持仓信号,负数为空仓信号)

图4策略流程图

四、回测结果

回测时间是2017年7月以来,总收益接近30%,超过沪深300基准指数近27.5%。从图5可以看出,在2017年12月以及2018年2月中旬在大盘指数下跌期间,策略的净值回撤明显小于沪深300基准指数,这说明LSTM算法的仓位管理起到了作用。策略源代码在附录,欢迎大家克隆研究。

image

图5模型预测结果

五、参考文献

1.《LSTM Networks应用于股票市场探究
2.《LSTM Networks应用于股票市场之Functional Model
3.《LSTM Networks应用于股票市场之Sequential Model
4.《[量化学堂-机器学习]基于LSTM的股票价格预测模型
5.《2018/03/08 中信建投证券:零基础python 代码策略模型实战:——大数据人工智能研究之七 》

六、附录

策略完整代码:可视化策略—LSTM大盘择时+Stockranker选股

本文由BigQuant人工智能量化投资平台原创推出,版权归BigQuant所有,转载请注明出处。  

宽邦科技
宽邦科技

提供金融行业人工智能平台和服务解决方案,研发了全国首个人工智能量化投资平台BigQuant,拥有全栈人工智能平台和大规模机器学习和深度学习框架与算法,为券商、银行、保险、资管等金融机构以及更多企业提供AI技术方案和业务解决方案,实现机构及企业的AI转型和升级。

工程LSTM机器学习StockRanker量化投资
7
相关数据
Sepp Hochreiter人物

Sepp Hochreiter 是一名德国计算机科学家。 1991 年,Sepp Hochreiter 发表了德语论文,探讨了循环神经网络的梯度随着序列长度增加倾向于消失或爆炸。与 Yoshua Bengio 的相关工作几乎同时,并且开发了 LSTM 的雏形。

相关技术
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

优化器技术

优化器基类提供了计算梯度loss的方法,并可以将梯度应用于变量。优化器里包含了实现了经典的优化算法,如梯度下降和Adagrad。 优化器是提供了一个可以使用各种优化算法的接口,可以让用户直接调用一些经典的优化算法,如梯度下降法等等。优化器(optimizers)类的基类。这个类定义了在训练模型的时候添加一个操作的API。用户基本上不会直接使用这个类,但是你会用到他的子类比如GradientDescentOptimizer, AdagradOptimizer, MomentumOptimizer(tensorflow下的优化器包)等等这些算法。

推荐文章
暂无评论
暂无评论~