专栏首页量化投资与机器学习NLP for Quant:使用NLP和深度学习预测股价(附代码)

NLP for Quant:使用NLP和深度学习预测股价(附代码)

摘要

美国证券交易委员会(SEC)的文件长期以来一直被用作出投资决策的宝贵信息来源。一些论文和项目已经演示了如何使用自然语言处理技术从SEC文件和新闻中提取信息,以预测股票波动。本文在其他工作的基础上,通过使用GloVE嵌入技术MLPCNNRNN深度学习体系结构,预测8-K文件发布后的股票价格变化。

全部代码文末下载

介绍

在金融服务和银行业,大量的资源致力于倾注、分析和试图量化新闻和SEC授权报告中的定性数据。随着新闻周期的缩短和对上市公司的报告要求变得更加繁重,这个问题也不断加剧。几项研究还表明,股票价格波动的最高质量信号并非来自第三方新闻报道,而是来自公司本身及其向SEC的报告。此外,几篇论文已经证明了神经网络在NLP中的效果,并且证明了使用NLP从SEC报告中做信息抽取,来预测股票价格变化的作用。

在这个项目中,我们试图用深度学习的方法证明,在SEC8-K文档中使用自然语言处理的词嵌入技术,来预测公司经历重大事件后股票价格波动的可行性。根据谷歌和斯坦福大学的一篇论文《文本分析对于股票价格预测的重要性》建立了这个项目,并通过探索预先训练过的单嵌入和深度学习的神经网络架构来构建它。

论文:

其他几篇论文下载地址如下:

1、https://www.aaai.org/ocs/index.php/FLAIRS/FLAIRS15/paper/download/10430/10279. 2、https://careeradvancement.uchicago.edu/sites/default/files/ucib-journal/filings-volume-and-volatility.pdf3 3、https://arxiv.org/pdf/1703.03091.pdf 4、 https://arxiv.org/abs/1702.01923 5 、https://nlp.stanford.edu/pubs/lrec2014-stock.pdf

数据收集

截至2018年5月,标准普尔500指数中所有公司的8-K文件都是从SEC Edgar数据库中使用BeautifulSoup python软件包获取的。文件发布的日期和时间,以及披露的类别,被提取出来,而表格和图表则被丢弃。由于数据的大小和收集所需的时间,最终设置了一个具有8个Intel Xeon内核和52 GB内存的Google云实例以及一个Google云。从AlphaVantage API收集了同一公司的历史开盘价和调整后收盘价数据。VIX和GSPC(S&P 500)的历史指数价格从雅虎金融(YahooFinance)下载。

部分代码:

特征工程

对于每份发布的文件,根据文件发布前的时间计算一年、一季度和一个月的历史滑动平均价格变动,并通过标准普尔500指数的变化进行归一化。所有窗口均指纽约证交所和纳斯达克实际营业的日期(非假日工作日)。

表1. 计算历史滑动价格的滑动平均窗口

目标特征计算为文件发布前后的股权价格变化,使用标准普尔500指数将其标准化。例如,对于于2018年2月5日发布文件的公司,计算其开盘价和调整后收盘价的变化,并减去标准普尔500指数同期的变化。标准化变化被标记为“向上”(>1%)、向下”(<1%)或“不变”(介于-1和1%之间)。

文本处理

所有的文本都是通过删除停用词、标点和数字、词形还原和转换为小写进行预处理的。这是通过使用NLTK WordNet语料库阅读器DASK结合来实现多线程加速的。

所有文件都用零填充,长度统一为34603个字。为了保留大多数文本信息,但防止数据集变得不必要的大,在文档长度的90%处选择了此截止值。斯坦福大学NLP维基百科2014+Gigaword 5100维度被选作欲训练词嵌入,前提是它将携带从维基百科语料库培训而来的文本中发现的专门的、行业特定的单词的信息。

表2. 数据特征列列表

在丢弃重复样品和无法提取发布日期的文本后,最终数据集包括2011年至2018年500家公司的约17000份文件。

图1&2 数据集样本规模为一年发布8K发布,运营部门公司

部分代码:

机器学习

所有分类特征都是一个热编码特征,连续特征。如最近的股票走势和VIX的收盘价,都被标准化为平均值为0,标准偏差为1。

图3 目标类别计数,数据集中类别不平衡

然后将数据集随机打乱,并分成80%的训练集和20%的测试集。数据集的类别不平衡,超过50%的样本被标记为“向上”(up),考虑到过去十年标准普尔500指数的稳步上升,这在直觉上是合理的。为了纠正这一点,我们使用了训练数据的过采样,在每一个类别中随机选择的样本进行了重复,以使三个类别中每个类别的样本数相等。

使用带有TensorFlow后端的Keras构建了四种不同的机器学习体系结构,包括两个输入层(一个用于文本文档,一个用于功能),一个带有预训练GloVE向量的嵌入层,以及:

  • 一个多层感知器完全连接的网络—MLP
  • 两个一维卷积层—CNN
  • 双向GRU层—RNN
  • 一维卷积层,然后是GRU层—CNN-RNN

每个网络在两个Nvidia K80 GPU上接受了10个时期的训练,每个批次大小为32。

表3. 10次训练后验证集上的评价

RNN和CNN-RNN网络在验证数据集上获得了最高的准确性和AUC ROC得分。然而,CNN-RNN模型需要RNN模型一半的训练时间。继续训练CNN-RNN模型,再进行15次,验证集上的损失最小。

部分模型代码:

Build & Train Models

Model Evaluation

结果

CNN-RNN网络在验证数据上的准确率为64.5%,AUC-ROC为0.90

表4. 23轮训练后CNN RNN模型的最好表现

这个模型比基线随机选择算法提高了94%,比斯坦福大学和谷歌的论文提高了16%。这些结果表明,虽然字嵌入和神经网络需要更多的时间和计算资源来建立和训练,但在准确性方面的有一定的提升。

讨论

本文触及了如何利用最新的自然语言处理技术和深度学习模型从SEC报告中提取有意义的信息以及公司股价的波动。为了从文本中收集更细微的信息,可以探索更专门的单词嵌入集或高级技术如Sense2Vec。

股票市场价格的变化只在文件发布前后立即进行测量,尽管市场很可能以不同的速度对不同类型的新闻作出反应。本文的拓展可以是在披露后的几天内考虑价格变动。

最后,尽管CNN、RNN和混合体系结构目前被认为是最先进的NLP模型,但在这些模型中,关于RNN、LSTM和GRU单元,以及关于RNN和CNN层的深度、大小和超参数,以及使用池化层还存在很多问题。时间和金钱的限制(使用多个GPU和处理大型数据集可以很快在谷歌云中累积)让我们不得不停止探索这些研究的可能性。尽管如此,64%的准确率表明,这些努力可能值得一试,即快速从大量文本数据中提取数据,并做出交易决策 。

本文其他的一些参考资料:

6、https://www.sec.gov/fast-answers/answersform8khtm.html

7、https://arxiv.org/abs/1511.06388

本文分享自微信公众号 - 量化投资与机器学习(Lhtz_Jqxx),作者:QIML编辑部

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习Matlab工具箱代码详解概览

    谢谢大家支持,可以让更多朋友和有兴趣志同道合的人关注这个公众号。让知识传播的更加富有活力,谢谢各位读者。 查看之前博文资料请点击右上角查看历史消息 最近研究了几...

    量化投资与机器学习微信公众号
  • 【原创精品】主题模型 - LDA学习笔记(一)

    本期编辑:Roy ● 复旦大学物理学士、计算机硕士 ● 文本挖掘、机器学习、量化投资 一、概述 1. LDA是什么? ‍‍主题模型(Topic Model) 2...

    量化投资与机器学习微信公众号
  • 【深度学习研究系列】之漫谈RNN(一)

    从今天起,量化投资与机器学习公众号将为大家带来一个系列的 Deep Learning 原创研究。本次深度学习系列的撰稿人为 张泽旺 。希望大家有所收获,共同进步...

    量化投资与机器学习微信公众号
  • 你玩《2048》能拿多少分?AI的最高分纪录:401912

    这操作,条理清晰到令人感到舒适。“1000,no;1024,yes”的强迫症们不禁纷纷点赞,给这只AI贡献了800+ reddit热度。

    量子位
  • 教育机构如何提升在线教育技术能力? | 云+社区技术沙龙

    腾讯技术工程官方号
  • 聚焦大数据,云上课堂新生态

    腾讯云结合自身优势,从在线教育的业务营销、教学业务应用与管理方面助力行业合伙发展。智能营销云以AI+大数据和基础资源为依托,提供精准流量获取、付费转化、持续服务...

    云加社区技术沙龙
  • 【ICCV2017 Tutorial】何恺明博士最佳论文Mask R-CNN Tutorial 报告(附下载)

    【导读】当地时间 10月 22 日到10月29日,两年一度的计算机视觉国际顶级会议 International Conference on Computer V...

    WZEARW
  • es|索引与段

    /Users/heidsoft/research/lucene-solr/lucene/luke/src/java/org/apache/lucene/luke...

    heidsoft
  • 如何吸引到第一批种子用户?第一批种子用户是怎么来的 找种子用户那么困难?

    获取种子用户,江湖上更多是采用豆腐丁法。豆腐丁法说的是将创新、新产品的卖点到处张贴的行为方式方法。豆腐丁法套路是不管三七二十一就到众多互联网平台上胡乱挣扎一下,...

    阿北8
  • 【TPAMI重磅综述】 SIFT与CNN的碰撞:万字长文回顾图像检索任务十年探索历程(下篇)

    本文是《SIFT Meets CNN: A Decade Survey of Instance Retrieval》的下篇。在上 篇中概述了图像检索任务极其发...

    机器学习算法工程师

扫码关注云+社区

领取腾讯云代金券