技术 | 深度学习预测股票系列-1

深度学习在预测股票走向上的应用越来越火了。加以正确应用,能在预测股票趋势上大有收获!那么今天我们来分享一个“深度学习预测股票”的技术科普系列。

图1. 用深度学习预测股票走向的总体架构图

首先来看一组该系列科普文要用到的深度学习技术/模型:

RNN (Recurrent Neural Network) 递归神经网络: 传统的神经网络,输入和输出都是相互独立的,如一张图片的猫和狗是分隔开的,但有些任务后续输出和之前内容是相关的,局部信息不足以使得后续任务进行下去。递归神经网络的出现,就是为了弥补上述不足,它带有一个指向自身的环,用来表示可以传递当前时刻处理的信息给下一时刻使用。如图1所示,一条链状神经网络代表一个递归神经网络,可认为它是对相同神经网络的多重复制,每一时刻的神经网络会传递信息给下一时刻。其中Xt为网络层的输入,A表示模型处理部分,ht为输出,A的细节实现如图1下部分图所示:

图2. RNN示意图,下部分为模型处理部分A的细节放大图

GAN (Generative Adversarial Network) 生成式对抗网络: 非监督式深度学习方法,让两个神经网络相互博弈的方式进行学习,由一个生成网络和一个判别网络组成。

LSTM (Long Short-Term Memory) 长短时记忆网络: 一种特殊的循环时间网络,为了解决RNN中存在的长期依赖问题。原始RNN的隐藏层只有一个状态,即h,它对于短期的输入非常敏感。如果再增加一个状态,即c,让它来保存长期的状态,这就是长短时记忆网络,如图3上图所示。其中新增加的单元c被称之为“单元状态”。将图3上图展开即得到了图3的下图展开示意图

图3. LSTM示意图

CNN (Convolutional Neural Networks) 卷积神经网络: 是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习的代表算法之一。主要是由输入层、卷积层、激活函数、池化层、全连接层、损失函数组成,其实质就是特征提取以及决策推断 。

DRL (Deep Reinforcement Learning) 深度强化学习: 将深度学习的感知能力和强化学习的决策能力相结合,可以直接根据输入的图像进行控制,是一种更接近人类思维方式的人工智能方法。

Rainbow: 深度强化学习领域的最新算法之一。

PPO (Proximal Policy Optimization) 近端策略优化算法: 是一种新型的Policy Gradient算法,Policy Gradient算法对步长十分敏感,但是又难以选择合适的步长,在训练过程中新旧策略的的变化差异如果过大则不利于学习。PPO提出了新的目标函数可以再多个训练步骤实现小批量的更新,解决了Policy Gradient算法中步长难以确定的问题。

NLP (Natural Language Processing) 自然语言处理: 机器理解并解释人类写作、说话方式的能力,目标是让计算机/机器在理解语言上像人类一样智能,弥补人类交流(自然语言)和计算机理解(机器语言)之间的差距。

BERT (Bidirectional Embedding Reformations from Transformation): NLP领域的最新进展,本质是一个两段式的NLP模型。

SAE (Stacked Autoencoders) 堆栈自动编码器: 在简单自动编码器的基础上,增加其隐藏层的深度, 以获得更好的特征提取能力和训练效果。一般来讲,其隐层是对称的,如下图4所示,有两个Encoder和两个Decoder:

图4. SAE示意图

ARIMA (Autoregressive Integrated Moving Average) 自回归滑动平均模型: 时间序列的一种,由“自回归模型”(AR模型)与“滑动平局模型”(MA模型)为基础混合而成,具有适用范围广、预测误差小的特点。

MXNet: 亚马逊选择的深度学习库。

在用深度学习预测股价的领域,我们用GAN+LSTM(RNN的一种)作为生成器(generator),用CNN作为判别(discriminator)。 最难的技术操作在于如何训练一个好的GAN模型,其关键是要找到合适的超参数组。高斯处理和贝叶斯优化(Bayesian optimization + Gaussian process)加上深度强化学习(Deep reinforcement learning)被用来解决何时及怎样改变GAN超参数,解决“拓展”vs. “过度开发”的两难困境。深度强化学习(DRL)领域中的最新进展Rainbow、PPO等会被应用到。

在股票预测中,我们会选择大量的多种类型的输入数据。再获得了大量的股票历史数据及技术指标基础上,我们用BERT进行情感分析,用傅里叶变换进行整体趋势方向分析,用SAE进行更高层的特征提取,用Eigen Portfolios寻找相关联资产,用ARIMA做股票方程近似,用以获取更多股票信息,模式及相关性等。 在预测中所有关于神经网络的建立,我们用MXNet及更高阶的API – Gluon,并在多种GPU上训练神经网络模型。

预测股票价格是件非常复杂的工作,收集的数据越多,对于预测越有利,从不同角度获得的股票信息越多,相应要做出的模型及决策改变也就越多。

本系列科普文将从“简介”、“数据”、“GAN”、“超参数优化”、“结果”、“下一步要做什么”进行介绍。

01│简介

股市上每天发生数以百万计的事件,要让某一只特定的股票沿着一个特定的趋势走向,需要千万个准确的前提条件,因此股票预测是个非常复杂的工作。我们的当务之急是要捕获尽可能多的前提条件。当然股票预测模型的建立也需要我们给定一些重要的前提假设和约束条件:1)市场并不是100%随机的;2)历史会重演;3)市场的发展遵循人类的理性行为;4)市场是“完美”的。

在本系列文章中,我们尝试预测“Goldman Sachs”(NYSE: GS)的股价走向。我们选取2010年1月1日到2018年12月31日的当日收盘价作为输入数据,选择这段时间的数据原因:7年的当日收盘价数据用来训练模型,2年的当日收盘价数据用来验证模型是否准确。

02│数据

为了研究影响GS股票价格走向的因素,我们需要收集尽可能多的信息,从多个方面和角度对股价进行分析。1585天的当日收盘价(占据我们拥有的70%数据量)用来训练模型,预测未来680天的股价走向(测试数据)。将预测结果和真实的680天股价数据进行比较,用于模型验证和后续优化。每种数据类型都是一个特征,每类特征在本章节中都会得到详细的解释,我们先看看有哪几类数据类型/特征:

相关联资产 – 像Goldman Sachs这样的大公司,必定不可能只有“股票”这一类标的资产,还有其他类似于“大宗商品”,“外汇”,“指数”,“证券类”等资产,其他资产的价格波动可能会影响到GS的股价。许多外部因素,如GS的竞争对手、客户、宏观经济形势、地理及政治政策、货币及财政政策、资本的获取难易程度等。

技术指标 – 我们将纳入最流行的技术指标做股票分析,如7日移动平均,21日移动平均,指数移动平均,MOM动量线,及MACD。

基本面分析 – 有两大类基本面分析对于股票研究非常有用:1)看上市公司的10-K及10-Q表格,用来研究上市公司的表现,分析ROE、P/E等;2)新闻 – 尤其是要发生的会影响公司股价走向的事件新闻。我们会仔细阅读Goldman Sachs的每日信息,从中提炼出对GS股票的看法,以0-1之间的打分来表示群众当日对GS股票是看跌还是看涨。我们还会加入一个“特征重要性”因子,用于判别该类特征的改变对其他类特征的影响有多大。 NLP用来分析准确的情绪信息,尤其是Google主推的NLP最新研究进展BERT会被用来从股票消息中提取股民对于GS股票的情绪分析。

傅里叶变换 – 基于当日收盘价,我们用傅里叶变换去除收盘价信息中的噪音,得到股票短期和长期走向的趋势,以建立真实股价的大致走向。趋势近似可以帮助LSTM网络更精确得选择预测趋势。

ARIMA – 预测时间序列数据未来值最流行的模型之一。

SAE – 技术指标分析和基本面分析等都是人们基于大量股票数据,事件和消息等的事后分析,说不定有些隐藏关联信息,人类无法分析得知。可以利用计算机超强的运算能力和信息处理能力来得到隐藏的关联信息。SAE就是为了从海量数据中寻找出隐藏规律和关联,但其得出的结论可能无法用人类的自然语言来理解,只能用GAN等深度学习神经网络模型来去理解这些隐藏关系。

非监督深度学习 – 用于发现期权定价中的不合理现象。我们再加入一条数据类型/特征:在每日GS的股价上再加入当日90天的call option价格。Call option的定价取决于股票未来的看涨/跌价格,如果用非监督深度学习模型发现出call option的定价不合理信息,有可能意味着有些影响GS股价的事件/信息要出现,对于用LSTM来分析股价模式是有帮助的。

在获得了很多上述数据类型后,我们需要采取以下三个重要步骤,基于数据对股价进行分析,对每一类数据类型/特征的分析将会在系列2中进行说明。小伙伴们请听下回分解!