zhiaozhou 发布于2018-08-23
回复 0
浏览 83710
2
# 基于深度学习并利用上市公司新闻舆情的股价预测模型(一)
![china-stock.jpg][1]
大家都知道,在A股中许多股票深受舆论及新闻的影响,而因为舆论及新闻天然的难预测性,许多股票的股价便变得十分难以预测。而如今随着社交媒体的流行,人们开始在各类平台上表达自己的想法,其中亦包括对股市的评价,因此我们认为若能将上市公司相关的新闻舆论纳入股价的预测因子,那也许会使得模型产生长足的进步。因此我们通过对微博,新浪新闻中的上市公司相关舆论新闻进行舆情分析,并加入适量财务因子,建立神经网络模型对股价进行预测。最后我们的模型取得了不俗的表现(RMSE=0.002),可见新闻舆论对股价具有一定的影响效应。
# 数据集
因为新闻及舆论数据需要通过爬虫获得,因此我们仅选取了200个股票作为我们的训练样本中的股票,而时间窗口为从2018年1月1日至今。
1. 舆情指数
我们选取了新浪微博及百度新闻作为我们的新闻源,在进行了爬取后,我们使用了[Baidu NLP API](https://cloud.baidu.com/doc/NLP/NLP-API.html)对他们进行了舆情分析,并得到了相应的舆情指数,及置信度。
1.1. 微博
因为新浪微博自身的免费API对数据请求量有着极大的限制,因此我们使用python写了爬虫程序对包含各上市公司名称的微博进行了爬取。
1.2. 百度新闻
与新浪微博相同,我们使用了爬虫程序来爬取新闻数据。
3. 股票财务因子
因舆论并非影响股价的唯一因子,因此我们同时使用聚宽API下载了相应时间的股票的一些财务因子,包括:昨日收盘价,今日开盘价,流通市值,总市值,昨日收盘市盈率及市净率。
最后,通过数据预处理及整合,我们获得了4564个数据样本,包含了如下特征: *舆情分数总分,舆论数量,舆情分数平均值,舆情分数*置信度,舆情分数加权平均,昨日收盘价,实际昨日收盘价,今日开盘价,总市值,流通市值,昨日市盈率及市净率*,以及一个应变量:**明日平均股价相对于今日平均股价的增长率**。
# 神经网络结构
我们构建了一个典型的结构数据神经网络回归器:
![model.png][2]
# 模型训练
我们抽取了各10%的数据作为验证集及测试集。而除去神经网络的训练外,我们同时训练了一个随机森林模型作为基准模型,来对神经网络模型进行比较评价。具体训练过程可在下部notebook中查看。
# 结果
对于随机森林模型,我们获得了0.0015的均方误差根
![RF.png][3]
而对于神经网络模型,我们获得了0.002的军方误差根
![NN.png][4]
此处神经网络并未打败随机森林模型,大概率是因为数据集太小,通常数据样本大于1万时,神经网络才能较大发挥他的价值。
# 讨论及改进
- **希望国君量化平台能够尽早加入主流的机器学习及深度学习框架(tensorflow, keras, pytorch, ...)**
- 未来应加入雪球等主流财经类社交平台
- 适当加大数据集的数量
- 加大时间窗口的宽度,目前时间太短,模型时效性有限
- 对假期及周末后的第一个交易日,应对假期期间的舆情分数进行整合处理
[1]: https://quant.gtja.com/img/2ea9196984a2483436d4ca9ddbb666aa
[2]: https://quant.gtja.com/img/b45d0cd52054962af5adb899e001fa01
[3]: https://quant.gtja.com/img/4294eb9096aedbd9742014a3f8d7fca0
[4]: https://quant.gtja.com/img/2d4fbf4b9099f63af9821cd5c7b9a49e