推荐|北大:一种基于新闻特征抽取和循环神经网络的股票预测方法

2017 年 7 月 26 日 全球人工智能

欢迎加入AISDK开发者社群>>

张泽亚,陈维政,闫宏飞 (北大计算机科学与技术系)


摘 要:本文提出了一种预测股票涨跌的方法。在特征抽取方面,除了股价信息,我们还提取了与股票相 关的新闻特征。我们先依据经验选取了一些能代表新闻利好和利空性质的种子单词,然后基于最优化方法 计算出所有单词的利好极性。之后通过单词的利好极性构造出新闻的特征。模型方面,考虑到价格的时序 性以及新闻影响的持续性,我们提出了一种循环神经网络模型。在实验中,我们发现相对于基于价格特征 的 SVM 分类器,我们提出的方法在股票涨跌预测方面能有超过 5%的提升。 

关键词:股票预测,特征抽取,循环神经网络 


1、引言股票价格的预测在商业和金融领域具有重要的意义。股票市场的预测在商业界和学术界 都受到了广泛的关注。Fama 于 1965 年提出了有效市场假说(Efficient Market Hypothesis)[1], 他认为,股票市场是一个“有效信息”市场,股票价格充分反映了已经发生的事件,以及那些 尚未发生但市场预期会发生的事件对股票价格的影响。这一假设为之后的股票预测工作提供 了依据。 


然而,预测股票价格依然十分困难,因为股票价格受到众多因素的影响。对于单个股票 而言,除了国家的货币政策,行业的景气状况等宏观因素,股票上市公司的相关事件等微观 因素也会对股票价格产生影响。因此,除了股票自身的价格信息,许多相关工作[2][3][4]中 都将股票相关的新闻信息作为预测股票价格的重要依据。 


GPC Fung 等在文献[5]中利用实时的新闻信息对股票价格作出预测。他们首先利用线性 回归和聚类方法对股票的价格曲线分段,每段时间区间对应价格的上升期和下降期。然后将 上升期和下降期内的新闻分别标注为利好消息和利空消息,通过统计方法选择出新闻中的利 好和利空特征。最后依据这些新闻中的特征对股票价的涨跌做出预测。该方法忽视了新闻对于股价影响的持续性。TH Nguyen 等利用主题模型来预测股票价格。在文献[6]中,他们提 出了一个融合情感和话题的主题模型,并将该模型运用到股票相关新闻的主题分析中。在获 得了每个新闻的主题分布向量后,他们将这个主题分布向量加入到股票预测的特征中,最终 获得了不错的预测效果。这种主题模型特征是一种通用的文本特征,忽视了金融市场新闻的 特殊性。近几年来,深度学习方法在自然语言处理领域取得了许多进展,Xiao Ding 等将深 度学习方法运用到股票预测领域。在文献[7]中,他们提出了一种新的事件抽取方法,从新 闻中抽取出结构化的事件。这些结构化的事件成为神经网络的输入,用于预测股票价格。随 后,在事件抽取工作的基础上,他们在文献[8]中进一步学习出结构化事件的 event embedding1,并使用卷积神经网络模型去预测股票价格。这种模型虽然考虑了事件对于股价 的持续影响,但是忽略了多个事件对于股价的综合作用。 


除了与股票相关的新闻信息,大众媒体与社交媒体上的内容也被用于股票预测。不过这 些媒体上的内容一般不适用于单个股票的预测,只能对股市整体的情况(道琼斯工业指数、 上证指数等)作出预测。Johan Bollen 等在文献[9]中运用 Twitter 上的内容对股市的涨跌作出 预测。他们使用 OpinionFinder2等工具分析 Twitter 上每天的大众情感,然后将这些情感特征 加入到预测模型中,对股市的涨跌作出预测。 


2 问题描述和方法综述 

股票价格预测是指利用股票价格的历史信息以及与股票相关的市场信息,预测股票在未 来一段时间内的涨跌情况或者价格情况。本文的研究主要针对在上海证券交易所3挂牌的 A 股4股票,也即“上证 A 股”。 


2.1 股票预测问题 

股票在一个交易日会有一些交易特征,例如开盘价,收盘价5,最高价,交易量等,其 中收盘价一般被用于代表股票在这一天的价格。于是在一段连续的时间内,某只股票会产生 一个收盘价格的序列。我们记这段连续的价格序列为: 

 我们进一步定义股票在每天的涨跌情况为:  


1. 类似于 word2vec 中 word embbeding 是对单词的表示,event embedding 是对结构化事件的表示 

2.OpinionFinder 网站:http://mpqa.cs.pitt.edu/opinionfinder/,一个开源情感极性分析工具 

3.上海证券交易所官网:www.sse.com.cn 

4.A 股:人民币普通股票,它是由我国境内的公司发行,供境内机构、组织和个人以人民币认购和交易的 普通股票。 

5.指股票在交易日里最后一笔买卖的成交价格 

6.与股票相关的新闻事件:上市公司公告、收购、内幕丑闻等事件 



2.2 预测方法总览 

本文提出了一种基于单词点互信息的新闻特征抽取方法,然后将该特征运用到股票价格 的预测中,并提出了一种基于循环神经网络7的股票预测模型。预测方法的流程如图 1 所示。 特征抽取方面,首先选取利好关键词和利空关键词的种子集合,然后使用最优化方法选 出利好与利空的标准关键词集合,并用标准关键词集合计算其他单词的利好极性。之后,基 于单词的利好极性构造出新闻文本的利好利空特征。 股票预测模型方面,使用循环神经网络有着直观的考虑。首先股票价格在短期内有着一 定的时序相关性,其次新闻事件对于股票价格的影响具有持续性,即新闻事件会在一段时间 内对股票价格产生持续的影响。

图 1:股票价格涨跌预测流程图 

Fig 2:flow chart of stock price prediction 


3 特征和模型 

股票涨跌预测问题可以看作一个二分类问题。股票预测问题的输入中包含两种不同类型 的数据,即新闻文本数据和股票价格数值数据。由于新闻文本数据不能直接作为分类器的输 入,因此人们一般对新闻文本进行一些处理,抽取出文本中的特征作为输入。 


3.1 单词的利好极性分析 

新闻对于股票的影响可分为利好和利空两类。利好新闻是指推动股价上升的消息,比如 中央银行降息降准,上市公司收购其他公司等。利空新闻是指促使股价下降的消息,比如上 市公司经营业绩恶化,银行利率调高等。 


为了分析一则新闻是利好新闻还是利空新闻,本文首先分析新闻中单词的利好极性,然 后基于单词的利好极性构造出新闻的利好利空特征,将这一特征作为分类模型的输入。 


7 循环神经网络,即 Recurrent Neural Network(RNN) 


 

3.2 新闻的特征构造 

抽取新闻特征有多种方法。One-Hot 是一种简单的文本表示方法,它将新闻看作|V|维向 量,向量的每一维对应词汇表 V 上的一个单词。One-Hot 表示方法的缺点在于特征向量比较 稀疏,维度非常大。情感分析特征也可以作为新闻的特征[11][12],但是这种在文本上的通 用情感特征忽视了股票预测领域的特殊性。  


在 3.1 节中,我们在最优标准集 和 上定义了所有单词的利好极性(18),在此基础上, 可以构造新闻特征。综合考虑新闻的维度大小以及新闻特征的表示能力,我们将利好极性 数值范围划分为若干段,然后将每段数值对应的单词捆绑,以此表示每一篇新闻。具体描述 如下: 

式子(22)中定义的新闻特征是新闻中的单词在利好极性维度上的分布的直方图近似,直 方图的区间数量为 L。这种特征可以通过调节 L 的大小来控制特征维度的大小,并且直观地 反映了新闻对于股票价格的利好利空影响。我们将它作为后续预测模型的输入,如图 1 所示。 


3.3 股票价格的差分处理 

除了与股票相关的新闻信息,股票价格自身的历史信息也很重要。相对于股价的绝对数 值,股价的涨跌幅对于预测股价的涨跌更加有效。对于不同的股票,股价的绝对数值差异很 大,但是股价在单个交易日内的涨跌幅都在-10%到 10%之间。在实验中,我们使用的价格 特征是股价在每个交易相对前一个交易日的涨跌幅。 假设股票价格在一段连续的交易日内的价格序列为:


3.4 循环神经网络预测模型 

从股票价格的涨跌预测问题(2)中可以发现,不论是股价信息还是新闻信息,都是和时 间相关的序列。相对于其他的分类器(支持向量机[13],决策树[14]等),循环神经网络能够 有效地描述特征在时序上的影响[15]。在股票预测问题中,一则新闻对于股价的影响往往不 局限于一个交易日,而是在一段交易日内。本文中的循环神经网络预测模型如图 2 所示。

图 3:循环神经网络预测模型 

Fig 4: Recurrent Neural Network model 

神经网络的输入层包含两个部分,一部分是式子(23)中定义的股价差分序列 , 该序列利用上一个交易日股价涨跌信息预测下一个交易日的涨跌,体现了价格信息对股票预 测的作用。另一部分是和新闻相关的特征序列,即式子(22)中定义的 。 这部分输入表示了新闻特征对股价的影响。


神经网络的第一个隐含层包含两部分,分别对应于输入层的两个部分。第一部分 由 经过变换得到,表示第 t 个交易日价格信息的隐含向量。第二部分 表示前 t 个交易日新 闻信息的综合隐含向量,它由当前交易日的新闻特征 ,以及上一个交易日的综合隐 含向量 经过叠加变换得到。通过将上一个交易日的新闻特征保留到下一个交易日,预 测模型能够有效地体现新闻信息对于股价的持续性影响。 


神经网络的第二个隐含层对第一个隐含层的信息进行综合,将价格信息 和新闻信息 融合,形成一个综合考虑了价格与新闻的特征向量。 


神经网络的输出层 包含两个单元,分别对应股价在下个交易日上涨和下跌的概率。 


模型的隐含层使用的非线性变换为 ReLU 函数8,输出层使用的变换是 Softmax 函数9。 循环神经网络的预测过程如表 1 所示。 


表 1:循环神经网络的预测 

Tab 1: prediction process of recurrent neural network 


3.5 模型的参数学习 

为了获得模型中的参数,我们需要定义模型的损失函数。 



式子(24)中的损失函数包含两个部分,前一部分是交叉熵损失函数,表示模型预测错误 的代价,后一部分是 L2 正则化项,代表对模型自身复杂度的惩罚。参数 是模型的超参数, 表示模型正则化部分的比重。 


参数的学习采用随机梯度下降(SGD)[16]的方法。实验中循环神经网络的代码实现以及 梯度的具体计算使用了 Python 中的 Theano10库。  



8 ReLU,即 Rectified Linear Units,ReLU(x)=max(0,x) 

9 Softmax 函数将 K 维向量 x 变换为 K 维向量 Softmax(x),其中 

10 Theano 库是 Python 中一个支持数学表达式的符号计算的库,网址为 http://deeplearning.net/software/theano/ 


4 实验 

4.1 数据集描述 

数据集分为股票价格和新闻语料两部分。我们从投资之家11上抓取了上证 A 股市场从 2013 年 1 月到 2015 年 10 月的股票价格信息,从搜狐证券版块12获取了这段时间内的新闻页 面。为了将新闻与股票对齐,我们保留标题中出现股票名称的新闻,并认为这则新闻与该只 股票相关。对于标题中没有出现股票名称的新闻,我们将其过滤。最后新闻集中包含了 85060 篇与上证 A 股市场相关的新闻。数据集的基本信息如表 2 所示。 

表 2:数据集概况 

Tab 2: Overview of dataset 

数据集包含了上证 A 股市场 1000 多只股票从 2013 年 1 月到 2015 年 8 月的价格信息。 每个交易日都有开盘价、收盘价、最高价和交易量等信息。实验中我们按照股票相关新闻的 数量,选取了两组股票,分别对它们进行预测。如表 3 所示,前 5 只股票是相关新闻数量较 多的股票,后 5 只股票是相关新闻数量较少的股票。 

表 3:新闻密度较高的股票 

Tab 3: stocks with lots of related news 

表 3 中前 5 只股票在搜狐证券中有较多的相关新闻,比如“中信证券”, 644 个交易日 中有 304 天出现了与之相关的新闻,平均每两个交易日有一则相关新闻。而后 5 只股票相关 新闻数量较少,比如“中国铁建”,613 个交易日中只有 94 天出现相关新闻。 

表 4:利好种子集与利空种子集 

Tab 4: Good and bad set of seed words 

11 http://www.inv.org.cn/ 

12 http://stock.sohu.com/ 

特征抽取方面,为了获得每个单词的利好极性,需要通过经验选取式子(7)(8)中的利好 种子集以及利空种子集。实验中选取的种子集如表 4 所示。容易发现,利好种子集中单词是 常用的对上市公司进行正面评价和预期的词汇,而利空种子集中的内容包含了对上市公司的 负面评论。 


4.2 实验结果 

为了检验论文中提出的新闻特征的效果,以及 RNN 预测模型的作用,我们设计了几组 不同的特征和模型。第一种方法使用股票价格作为特征,使用 SVM 分类器作为预测模型(记 为 Price+SVM)。这种方法使用前 3 个交易日的涨跌幅度作为特征,使用 SVM 分类器预测 下个交易日股价的涨跌情况。 第二种方法使用股票价格以及新闻序列作为特征,使用 SVM 分类器作为预测模型(记为 Price+News+SVM)。该方法使用前 3 个交易日的涨跌幅度,以 及当天的新闻作为特征,以 SVM 分类器作为模型,预测下一个交易日股价的涨跌。第三种 方法使用股票价格以及新闻序列作为特征,使用 RNN 模型作为预测方法(记为 Price+News+RNN)。 


对于每只股票,数据集有 644 个交易日的价格信息和新闻信息。我们把较早的 80%的 交易日作为训练数据,剩余的 20%的交易日作为测试数据。我们用预测模型的分类准确率 作为判断模型优劣的标准。我们按照股票相关新闻数量,将股票分为两组,便于比较模型在 不同新闻密度的股票上的效果。 


三种不同的方法在新闻密度较高的 5 只股票上的结果如表 5 所示,在新闻密度较低的 5 中股票上的结果如表 6 所示。 


表 5:高新闻密度股票上不同模型的准确率 

Tab 5: Accuracy of different models on stocks with lots of news 

表 6:低新闻密度股票上不同模型的准确率 

Tab 6: Accuracy of different models on stocks with few news 

从表 5 中可以发现,方法一(Price+SVM)使用价格特征作为唯一的特征来预测股价涨跌, 在 5 只股票上的平均准确率为 50.4%,与随机预测相比几乎没有提升。第二种方法 (Price+News+SVM)除了价格信息,还将新闻信息融入到特征中,并使用 SVM 分类器进行预 测。其平均准确率为 53.6%,相对于方法一提升了 3.2 个百分点,这说明了文中提出的新闻 特征对于股票预测有一定的作用。方法三(Price+News+RNN)与方法二在特征选择方面相同, 在模型选择方面,方法三使用文中提出的 RNN 模型,而方法二使用 SVM 分类器。从效果 来看,方法三的平均准确率为 55.84%,比方法二高出 2.24 个百分点。 


在表 6 中,方法一(Price+SVM)在 5 只股票上的平均准确率为 49.6%。而方法二和方法 三的平均准确率分别为 50.9%和 52.2%,相对于方法一的结果,分别有 1.3%和 2.6%的提升。 综合分析表 5 和表 6 的结果,新闻密度对于股票预测的效果有影响。股票的相关新闻密度越 高,文中提出的新闻特征以及预测模型的预测效果越明显。 


5 总结 

本文在股票预测方面,提出了一种基于点互信息分析的新闻特征,以及一种将价格特征 和新闻特征相结合的循环神经网络预测模型。实验中,我们发现在相关新闻数量较多的股票 上,文中提出的新闻特征能帮助提升 3.2%的准确率,而文中提出的预测方法能提升 5.44% 的准确率。 

热门文章推荐

重磅|腾讯公布首批25个人工智能加速器项目名单!

国家战略:国务院发布“新一代人工智能发展规划”

京东发布登月机器学习平台:为第四次零售革命输出AI能力

重磅|中国870家的AI公司融资905亿人民币!

浙大女科学家解密:从最后一面逆袭第一名!

资料|麻省理工课程:深度学习数据基础(PPT)

推荐| 40张动态图详解全部传感器关注原理!

!警惕中国人工智能有一只推荐算法叫:莆田系算法!

百度阿波罗:无人驾驶技术发展成熟仅需3年左右!

阿里出了个Take Go无人便利店,比亚马逊还厉害!

登录查看更多
14

相关内容

基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
【华侨大学】基于混合深度学习算法的疾病预测模型
专知会员服务
96+阅读 · 2020年1月21日
【论文推荐】文本分析应用的NLP特征推荐
专知会员服务
33+阅读 · 2019年12月8日
金融时序预测中的深度学习方法:2005到2019
专知会员服务
165+阅读 · 2019年12月4日
赛尔原创 | 基于新闻标题表示学习的超额收益预测
基于深度交叉特征的推荐系统
微信AI
9+阅读 · 2019年2月1日
推荐 :一文带你读懂特征工程
数据分析
16+阅读 · 2018年8月26日
情感分析的新方法,使用word2vec对微博文本进行情感分析和分类
数据挖掘入门与实战
22+阅读 · 2018年1月6日
基于机器学习方法的POI品类推荐算法
全球人工智能
3+阅读 · 2017年11月22日
赛尔原创 | 基于时间序列网络的谣言检测研究
哈工大SCIR
5+阅读 · 2017年6月19日
Arxiv
21+阅读 · 2019年8月21日
Arxiv
10+阅读 · 2018年4月19日
VIP会员
相关资讯
赛尔原创 | 基于新闻标题表示学习的超额收益预测
基于深度交叉特征的推荐系统
微信AI
9+阅读 · 2019年2月1日
推荐 :一文带你读懂特征工程
数据分析
16+阅读 · 2018年8月26日
情感分析的新方法,使用word2vec对微博文本进行情感分析和分类
数据挖掘入门与实战
22+阅读 · 2018年1月6日
基于机器学习方法的POI品类推荐算法
全球人工智能
3+阅读 · 2017年11月22日
赛尔原创 | 基于时间序列网络的谣言检测研究
哈工大SCIR
5+阅读 · 2017年6月19日
Top
微信扫码咨询专知VIP会员