基于百度指数和随机森林的上证综指预测
2020-08-13张程周恬恬
张程 周恬恬
摘 要: 股市走势预测是金融学、统计学、机器学习等多学科交叉研究的热点学术问题。股市走势并不完全由自身内在规律决定,也会受到投资者的关注度的影响。本文研究了投资者关注与上海证券综合指数之间的波动效应,提出了一种基于百度指数并结合随机森林模型的上证指数走势预测方法。基于已有的初始搜索关键词词库在百度指数网站获取相应的关键词的百度指数,通过时差相关分析法筛选出具有预测意义的关键词,将筛选后的关键词的百度指数数据和上证指数的相关属性数据作为预测模型的输入数据,通过随机森林建立预测模型并实现对上证指数的预测。对比实验证明引入百度指数后的预测模型比传统的预测模型具有更高的准确率。
关键词: 上证指数预测;百度指数;随机森林;时差相关分析法
中图分类号: TP391 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.06.012
本文著录格式:张程,周恬恬. 基于百度指数和随机森林的上证综指预测[J]. 软件,2020,41(06):5662
【Abstract】: Stock market trend forecast is a hot academic issue that has attracted many researchers and participants in multiple disciplines such as economics, statistics, and machine learning. Stock market trend is not entirely determined by its own internal laws, and it will also be affected by the investors' attention. This paper studies the ripple effect between investors' attention and the Shanghai Composite Index, and proposes a Shanghai Composite Index forecast method based on the Baidu Index and random forest. Firstly, obtain the corresponding Baidu index of the existing initial search keyword thesaurus based on the Baidu Index website, and then screen the keyword with predictive significance by the method of time difference correlation analysis. Finally, use the keywords Baidu index and the relevant attribute data of the Shanghai Composite Index as input of forecast model that based on random forest to realize Shanghai Composite Index forecasting. The experiment results show that the proposed forecasting method has higher accuracy than the traditional method.
【Key words】: Shanghai composite index forecast; Baidu index; Random forest; Time difference correlation analysis
0 引言
时间序列预测、灰色模型和机器学习是常用的股市预测方法。时间序列预测是通过分析股票价格的过去收益来预测未来股价(Michel Ballings 2015)[1]。传统的灰色模型数学虽然容易理解且计算简单。但是,其原始模型的线性特性导致无法预测本质为非线性的急剧变化的数据(Chun-I Chen a2010)[2]。Bruno Miranda Henrique使用了支持向量机(Bruno Miranda Henrique 2018)[3],Yi Zuo使用贝叶斯网络(Zuo Y 2012)[4],Leonel A.Laboissiere基于人工神经网络进行最高和最低股价预测研究(Laboissiere L A 2015)[5]。Hsu M W证实了最好的机器学习方法比最好的计量经济学方法产生更准确的预测(Hsu M W 2016)[6]。
事實上,这些预测方法可能使用着相似的技术指标,随着时间的变化,这些技术指标的收益率将会有较为明显的下降。此外,行为金融理论表明,股价不仅受历史数据的影响,同时受投资者情绪的影响。在股票价格预测中,研究者开始考虑投资者情绪(Barberis等人,1998)[7]。如何获取投资者的情绪呢?随着越来越多的股票市场的投资者通过搜索引擎获取股市相关的信息。搜索引擎记录的用户行为成为研究者研究投资者情绪的重要数据来源。2006年,Google公开发布了任意搜索关键词的查询数据,引起了学术界和企业界的关注。Google数据尤其适用于2008-2009年“全球衰退”之后的预测者,这次“全球衰退”带来了宏观经济动荡,(巨大的)不确定性。纽带和独特的冲击使得传统的历史数据通常以滞后的方式发布,以反映经济中正在进行的结构性变化(Bangwayo-Skeete P F,2015)[8]。Google的搜索数据能够领先反映这种结构性变化,因此在流行病学(Ginsberg J,2009)[9]、失业(Askitas N,2009)[10]和私人消费(Vosen S,2011)[11]以及汽车购买(Yan Carrière㏒wallow,2013)[12]等方面的预测研究中都显得尤为重要。Bijl L等人也开始调查谷歌搜索量数据和股票收益预测的关系(Bijl L,2016)[13]。
百度指数与谷歌趋势相类似,是以百度网页搜索和百度新闻搜索为基础的免费海量数据分析服务, 用以反映关键词在过去一段时间里的“用户关注度”和“媒体关注度”。通过百度指数可以发现、共享和挖掘互联网上最有价值的信息和资讯,直接、客观地反映社会热点、网民的兴趣和需求。百度于2006年正式推出百度指数的数据分析功能模块。基于百度指数的股票搜索数据蕴含了我国股民的兴趣与关注,对推断我国投资者情绪具有良好的信息参考价值。孟雪井等发现我国股票市场的投资者情绪与市场指数之间存在联动机制(孟雪井,2016)[14]。缪杰使用百度指数对 A 股 148 家公司进行分析,王京晶使用百度指数对深圳个股进行回归分析,他们都证实了投资者关注度与股票市场存在相关性(缪杰(2014)[15],王京晶(2012)[16])。
总体来看,当前以百度指数为衡量指标的文献,主要集中在投资者关注与股票市场流动性、波动性、收益率、市场表现及个股与市场整体之间的关系上。然而,百度指数对于股票指数影响的国内外文献都非常少,而百度指数与股票指数之间的研究具有不可替代性。本文以百度指数作为投资者关注的衡量指标,结合随机森林模型,以上海证券综合指数预测为背景,研究了投资者关注与上海证券综合指数之间的波动效应。实验数据表明,本方法在上证指数T+1日预测上具有较好的效果。
1 论文数据概述
1.1 上海证券综合指数
上海证券综合指数简称“上证指数”或“上证综指”,其样本股是在上海证券交易所全部上市股票,包括A股和B股,综合反映了上海证券交易所上市股票价格的变动情况,自1991年7月15日起正式发布。上证指数系列均以“点”为单位。本研究选取的上证指数的相关属性为最高点,最低点,开盘,收盘,涨跌额,涨跌幅,成交量,成交额数据,属性说明如表1所示(孙文存,2012)[17]。
1.2 百度指数描述
百度指数基于百度海量数据,一方面进行关键词搜索热度分析,另一方面深度挖掘舆情信息、市场需求、用户特征等多方面的数据特征。百度指数每天更新,并且提供自2006年6月至今任意时间段的PC端和移动端搜索指数,2011年1月至今的移动端无线搜索指数。百度指数反映网民的主动搜索需求,所有影响网民搜索行为的活动都可能影响百度指数。搜索指数是以网民在百度的搜索量为数据基础,以关键词为统计对象,科学分析并计算出各个关键词在百度网页搜索中搜索频次的加权和。
2 基于随机森林的股指预测方法
2.1 预测流程
本论文的研究流程如图1所示:首先是数据获取部分,主要获取两个部分的数据:股票指数每日的属性数据、搜索关键字对应的百度指数每日数据。
然后进行数据处理和特征约简。数据处理的工作主要是为了使上证指数的数据和关键词的百度指数数据对应。搜索关键词的百度指数数据每天产生,而上证指数在周末和节假日期间会出现休市,即没有对应的股市相关的数据,因此需要经过数据处理对齐两类数据。此外,不同关键词和上证指数走势的相关性不同,且关键词跟上证指数走势呈现出领先、同步及滞后三种关系,只有与上证指数走势具有强相关性的领先关键词对预测有意义。所以,本文使用时差相关分析法从初始关键词库中选取对预测有意义的关键词,不仅能提高预测精度,还能实现对特征向量的精简和定义。
最后是进行模型训练和模型评估。使用筛选后的关键词的百度指数数据,和结合对應的上证指数相关属性数据,建立加权树并通过随机森林模型进行训练,最终实现了基于随机森林的上证指数预测。
2.2 数据特征提取
2.2.1 搜索关键词
本文在构建搜索关键词时选取了孟雪井等人[14]在《基于文本挖掘和百度指数的投资者情绪指数研究》研究中整理出的与上证指数相关的关键词词库,选取其中的55个关键词,构成初始关键词库,如表2所示。
2.2.2 搜索关键词的百度指数
打开百度指数(http://index.baidu.com/)的网页,在趋势研究搜索栏中输入待查询的关键词,输入后点击查询,能够得到该关键词的百度指数信息,该信息即关键词当日在百度浏览器上被搜索的次数。本文针对表2中提及的55个初始关键词,提取了其从2015年1月5日到到2018年7月26日期间每个关键词每天对应的百度指数数据。表3是部分搜索关键字在2017.1.9(周一)-2017.1.15(周日)一周内的百度指数数据示例。
由表3可知,“今日大盘”这个关键词在周一的搜索量为1413次,其他四个工作日分别为1342次,1310次,1478次,1423次。在周六周日只有314次和253次。
2.2.3 搜索关键词筛选
使用时差相关分析法计算得到搜索关键词的百度指数和大盘指数的之间的时滞阶数,同时找出对股市走势预测有意义的有强相关性的搜索关键词。根据不同关键词的不同时差关系,可以将关键词分为三类:先行关键词,即趋势领先于上证指数走势的关键词;一致关键词,即趋势与上证指数基本保持一致的关键词;滞后关键词,即滞后于上证指数趋势的关键词。通过选取其中的先行关键词,可以降低在预测算法中的参数量,提高预测效率和准确性。
搜索关键词筛选算法如下:
Step1:确定基准指标序列。通常选取能够综合反映出当前的经济活动的时间序列指标作为基准指标,本实验中选取上证指数的收盘数据作为基准指标序列。
Step2:根据时差相关分析法的计算公式计算被选择的分析指标序列和基准指标序列的时差相关系数和时滞性阶数。本实验中分析指标序列是初始关键词词库中55个关键词的百度指数数据。
Step3:根据时差相关分析法的计算结果,筛选出时滞性阶数小于0,相关系数大于0.5的关键词,即为与上证指数走势具有强相关性的领先关键词。
时差相关系数的计算公式如下:
式中,时间序列x关键字的百度指数数据序列,时间序列y为上证指数的收盘数据,r 为时差相关系数,l 为时滞性阶数,取值在[-L,+L]区间上,l 取负数时表示超前,取正数时表示滞后。L 是最大延迟数。L的取值可以根据实验设定,计算出不同时滞性阶数下对应的时差相关系数值,选取时差相关系数最大时的时滞性阶数作为最终结果。
以关键词“主力”为例计算时滞性阶数和相关系数,基准指标为上证指数数据,分析指标为“主力”对应的百度指数数据,最大延迟数L设定为2,计算结果如下。
在时滞性阶数为–1时,相关系数的值最大,所以关键词的“主力”时滞性阶数为–1,即领先一天。
同样对初始关键词词库的关键词计算时滞性阶数和最大相关系数如表5所示。
其中,时滞性阶数为负数的代表该关键词为领先关键词,选出时滞性阶数为负数且相关系数大于0.5的关键词,即领先且具有强相关性的关键词作为最终使用的关键词如表6所示。
2.3 随机森林模型
随机森林(RF)是一种组合分类器,它利用 bootstrap 重抽样方法从原始样本中抽取多个样本,对每个 bootstrap 样本进行决策树建模,然后将这些决策树组合在一起,通过组合方法得出最终预测的结果(曹正凤,2014)[18]。随机森林的数学定义如下:
设一系列决策树 …… 构成的随机森林,X 为样本的特征属性, H(x)表示组合分类模型,I为指示函数。随机森林结果如下:
回归预测的组合方法是以所有决策树的结果的加和平均值为最终结果作为输出的。
本算法使用随机森林模型进行回归预测,预测大盘指数次日收盘价。其具体构建流程如下:
Step1: 选取训练集。把原始样本集分为原始训练集(M个样本)和原始测试集,通过Bootstrap 方法有放回的随机抽取 N个自助样本集(即N个决策树),每个样本集的样本数量与原始训练集的样本数量相等都为M。
Step2: 生成决策树。N个决策树使用自己的M个样本进行独立训练,每颗决策树随机选择K(K<=总特征数)个特征进行分裂,训练完成后的N个决策树组合成为随机森林。在分类预测时,每颗训练完成的决策树收到輸入测试数据独立完成涨跌预测。在回归预测时,每颗训练完成的决策树收到输入测试数据独立完成次日收盘价价格预测。
Step3: 决策树结果组合决策。对所有决策树结果求平均值为最终输出结果。
3 实验
3.1 实验环境及数据描述
本文实验输入数据包括从2015年1月5日到2018年7月26日的股指数据(属性分类见表1)和筛选后的13个搜索关键词(见表6)的2015年1月5日到2018年7月26日的百度指数数据。除去股市休市时缺失的数据,本文样本数据集共870条,选取其中从2015年1月5号到2018年5月2号的共810条数据作为原始训练集,剩余从2018年5月3号到2018年7月26号共60条数据作为测试集。
另外,使用无搜索关键词的百度指数的输入数据作为对比实验,即对比实验为仅含有从2015年1月5日到到2018年7月26日的股指数据(属性分类见表1)作为随机森林模型的输入。实验结果对比分析见下图2和图3。
设置bootstrap=true,代表Bootstrap采样过程是有放回的进行的,max_features=0.5,决策树分裂时选取int(总特征值*0.5)=int(21*0.5)=10,n_estimators=400,即随机森林中的决策树个数为400。
3.2 评价指标
均方根误差(Root Mean Squared Error,RMSE),均方根误差能够准确的反映出预测值和实际状况之间的差距,是对平均的预测误差值做开方处理的结果,在实际分析过程中常常使用 RMSE 来对模型的预测误差进行分析,计算公式如下(其中,n为预测次数, 为预测值, 为真实值):
平均绝对百分误差(Mean Absolute Percentage, MAPE),主要反映预测值和真实值的偏差,计算公式如下:
MAPE的值越小,说明预测模型拥有更好的精度。
决定系数 ,也称为拟合优度,即回归拟合的曲线的拟合优度,表征回归方程在多大程度上解释了因变量的变化。该值的变化区间在[0,1]上,该值越大模型越好。
解释方差回归得分(explained_variance_score),解释回归模型的方差得分,其值取值范围是[0,1],越接近于1说明自变量越能解释因变量的方差变化,值越大则说明效果越好。
3.3 实验结果分析
各项指标结果如下表7。
本次实验和对比实验的预测结果与实际值的对比散点图分别对应如下图2和图3。
横坐标是从1到60的自然数,代表从2018年5月3号到2018年7月27号的日期,纵坐标表示大盘指数收盘值,蓝色的散点为模型预测结果,黄色的散点为实际值。图2为包含搜索指数数据的实验结果,图3为不包含百度指数数据的实验结果。由图可知,在加入百度指数后预测值走势与真实值的走势更为接近,比如在横坐标为50的数据附近,真实值是一直呈下跌趋势,加入百度指数后的预测值呈相同趋势,但是没有百度指数的预测值走势不稳定。从RMSE和MAPE指标来看,加入百度指数的实验结果都比不加百度指数的实验结果低,也就是具有更高的准确率。总的来说,实际的上证指数的收盘值在某些时候有较大波动,这些波动会影响RMSE和MAPE指标,但是从实验的数据集来看上证指数的涨跌幅,有98%的数据的涨跌幅在5%以内,也就是基本波动不会超过5%,本实验使用百度指数的数据来预测的收盘值和真实值的误差百分比都在5%以内,表明预测值具有一定可靠性和准确性。
4 结语
搜索指数能够反映投资者的关注度,同时行为金融理论表明股票市场会受到投资者的情绪的影响,因而本文提出了一种基于搜索指数和随机森林的股市走势预测模型,以上證指数为股市背景,从预测上证指数的收盘值和涨跌情况两个方面来验证模型的准确率,结果都表明加入百度指数后的预测方法比直接使用股市历史数据的效果更优。证明了考虑投资者的情绪对研究股市走势具有重要意义,搜索指数是衡量投资者情绪的一个有效指标。然而,本文也存在一定不足之处,衡量投资者情绪的指标不仅是搜索指数,还包括与股市相关的论坛、贴吧、微博评论等信息。本文仅对搜索指数进行了相关验证,为进一步提高模型准确率还可以考虑在预测模型中加入更多有用的情绪指标。另外,随着随机森林研究的进一步发展,越来越多的基于随机森林的回归预测和分类预测的改进算法被提出,如何结合改进的随机森林算法来提高预测模型准确率也是值得思考的问题。
参考文献
[12] Michel Ballings, Dirk Van den Poel, Nathalie Hespeels, Ruben Gryp. Evaluating multiple classifiers for stock price direction prediction[J]. Expert Systems with Applications, 2015, 42(20): 7046-7056.
[13] Chen C I, Hsin P H, Wu C S. Forecasting Taiwans major stock indices by the Nash nonlinear grey Bernoulli model[J]. Expert Systems with Applications, 2010, 37(12): 7557-7562.
[14] Henrique, Bruno Miranda, Sobreiro, Vinicius Amorim, Kimura, Herbert. Stock Price Prediction Using Support Vector Regression on Daily and Up to the Minute Prices[J]. The Journal of Finance and Data Science,2018,4(3): 183-201.
[15] Zuo Y, Kita E. Stock price forecast using Bayesian network[J]. Expert Systems with Applications, 2012, 39(8): 6729-6737.
[16] Laboissiere L A, Fernandes R A S, Lage G G. Maximum and minimum stock price forecasting of Brazilian power distribution companies based on artificial neural networks[J]. Applied Soft Computing, 2015, 35: 66-74.
[17] Hsu M W, Lessmann S, Sung M C, et al. Bridging the Divide in Financial Market Forecasting: Machine Learners vs. Financial Economists[J]. Expert Systems with Applications, 2016, 61: 215-234.
[18] Barberis, Nicholas, Shleifer, Andrei, Vishny, Robert. A model of investor sentiment[J]. Journal of Financial Economics, 1998, 49(3): 307-343.
[19] Bangwayo-Skeete P F, Skeete R W. Can Google data improve the forecasting performance of tourist arrivals? Mixed-data sampling approach[J]. Tourism Management, 2015, 46: 454-464.
[20] Ginsberg J. Detecting influenza epidemics using search engine query data[J]. Nature, 2009, 457(7232): 1012-4.
[21] Askitas N, Zimmermann K F. Google Econometrics and Unemployment Forecasting[J]. Economics Quarterly, 2009, 55(2): 107-120.
[22] Vosen S, Schmidt T. Forecasting private consumption: survey-based indicators vs. Google trends[J]. Journal of Forecasting, 2011, 30(6): 565-578.
[23] Carriere-Swallow Y, Labbe F. Nowcasting with Google Trends in an Emerging Market[J]. Journal of Forecasting, 2013, 32(4): 289-298.
[24] Bijl L, Kringhaug G, Molnár, Peter, et al. Google searches and stock returns[J]. International Review of Financial Analysis, 2016, 45: 150-156.
[25] 孟雪井, 孟祥兰, 胡杨洋. 基于文本挖掘和百度指数的投资者情绪指数研究[J]. 宏观经济研究, 2016, 206(01): 146-155.
[26] 缪杰. 基于百度指数的投资者关注度对于股票市场表现的影响[D]. 厦门大学, 2014.
[27] 王京晶. 关注度对股票收益率的影响—中国证券市场的实证研究[D]. 上海交通大学, 2012.
[28] 孙文存. 基于搜索关键词关注度的中国股票市场波动研究[D]. 2012.
[29] 曹正凤. 随机森林算法优化研究[D]. 北京: 首都经济贸易大学统计学院博士论文, 2014.