基于金融时间序列和舆情分析的股票分析系统

  • 投稿
  • 更新时间2018-09-22
  • 阅读量4次
  • 评分0
  • 0
  • 0

  摘要:结合我国与美国的不同国情,利用舆情分析、金融时间序列分析,开发出一套针对上证(深证)和美市的股票分析系统,调用雅虎财经API,实现了实时数据获取,在获取有效的数据后,首先对股票进行“烛台”化处理,针对不同股市,美股更多的基于市场规律,美市则采用自回归积分滑动平均模型(ARIAM)进行预测,上证股票则受政策影响更大,对此从新浪网进行舆情收集,然后来利用自然语言处理(NLP)进行股民的情感分析。


  关键词:财经API;ARIMA;网络爬虫;NLP;舆情分析;


  作者:张旭等


  利用数据挖掘,金融时间序列算法,通过对金融数据进行学习和掌握其活动规律使得股票变得简单化规律化甚至在一定程度上预测未来的变化趋势,从而有效应对这“三大冲突”,是本文研究的主要方向。金融时间序列即以日期时间为索引的数据。本文根据诸多学者在金融时间序列方面的贡献,利用舆情分析,金融时间序列分析,自然语言处理,做出一套针对上证(深证)和美市的双入口股票预测系统,使股民更为理智合理的选股。


  1方案设计


  本文提出的股票分析系统的总体设计思路框图如图1所示。


  本系统针对两个入口,一是美股入口,美股即美国股票,是指在纽约证券交易所上市的股票,通过雅虎财经API可以实时获取某只股票的历史数据,在对数据进行预处理后,利用金融时间序列的基本特性,使用自回归积分滑动平均模型(ARIMA)对其进行预测;另一个则是上证入口,上证是指在上海证券交易所上市的股票,通过新浪财经可以获取所需某只股票在一定时间区间开盘价、收盘价、最高最低价、成交额、成交量等信息,即股票历史值;而另一方面,采取selenium测试工具,模拟微博登录,结合Firefox,分析DOM节点后,采用Xpath对节点信息进行获取,实现重要信息的抓取,将固定区间内微博网民对某只股票的评价进行爬取,存储在MySQ数据库中,再将其取出,利用自然语言处理(NLP)中snowNLP模块进行舆情的积极消极情感分析,并做出柱状图,给使用者直观的体验。有利于其从舆情中了解某只股的可能走向,结合舆情与历史数据,给股民予参考价值。


  2方案实现


  2.1美股分析


  2.1.1数据获取与“烛台”可视化


  由于是实时预测,则首先需要数据来源的实时性,雅虎财经为我们提供了时获取国内外股票的接口,利用Python的Pandas模块可以直接获取雅虎财经的数据,并选取所需时间段的每日股票开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume),得到第一条曲线图,给股民最为直接简单的可视化变化,对数据进行清洗后,制作日本蜡烛图,该技术由日本德川幕府时代的本间宗久提出,用来计算米价的涨跌,这就是股票最初K线图的由来。1990年,美国人史蒂夫·尼森以《阴线阳线》之书向西方引进日本的K线图,引来轰动。如今,K线图已成为股市分析预测不可分割的一部分,所谓牛市熊市也源于此图,所以,既是要做这一块的研究,必然不可少了这一部分。K线最上方细线称为上影线,中间的粗体为实体,下方的细线为下影线。当收盘价高于开盘价,也就是股市呈上升趋势,中间实体呈红色,上影线的长度表示最高价与收盘价的差价,实体长短表示开盘价与收盘价的差价,下影线的长短则表示开盘价与最低价的差价,以交易时间为横向图,每日交易价格为纵向图,将每日K线连接即可绘成K线图。


  2.1.2基于ARIMA的美股分析


  ARIMA模型全称为自回归积分滑动平均模型(AutoregressiveIntegratedMovingAverageModel,简记ARIMA),其中ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。对数据绘图,观测是否为平稳时间序列;对于非平稳时间序列要先进行d阶差分运算,化为平稳时间序列。具体计算过程如下:


  1)由于ARIMA模型要求的是平稳型,而股市的混沌性众所周知,所以第一步首先做差分,一阶差分后仍然是不稳定系统,所以再次做了二阶差分,即d=2;


  2)检查平稳时间序列的自相关图(acf)和偏相关图(pacf),得到ARIMA模型的参数,p和q;


  3)残差序列检验Ljung-Box检验,也叫Q检验,检查自相关性;


  4)代入ARIMA模型训练,预测,结果可视化。


  2.2上证/深证股票分析


  数据来源也是雅虎财经API,上证则用“股票代号”+“.ss”作为输入数据,深证则是用“股票代号”+“.sz”来作为查询数据,同时也将用日本烛台图做可视化分析。


  2.2.1微博模拟登录


  由于相对国外,美股更多可能是资本控股,国内则存在国家调控,因此,政策的颁布和国家的把控会影响其自身规律的变化。新浪微博作为国内最大信息分享和生活交流的平台之一,基本可以体现国内网民的舆论走势,所以,我们将从新浪微博爬取单只股票的股民意向,对此进行消极积极情感分析。新浪微博的搜索栏只有在登录以后才能获取更多的信息,针对登录,主要采用获取cookies和模拟登录两种,本文主要采用通过selenium进行模拟登录,以登录的身份打开微博。其次,微博登录时常需验证码验证,而火狐浏览器可以巧妙跳过这一点,利用selnium模块的webdriver驱动火狐浏览器的运行,登录成功后,通过加入datetime对象重新构造URL来实现时间范围的选取,本文选取的是从搜索当日向前推前20天,接下来就是对网页上每个节点的内容的获取。


  2.2.2网络爬虫


  网络爬虫基本流程如下:


  1)首先选取URL,网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。Web网络爬虫系统正是通过网页中的超连接信息不断获得网络上的其它网页;


  2)将这些URL放入待抓取URL队列;


  3)从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列;


  4)分析已抓取URL队列中的URL,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,通过dom节点获取内容,本文通过″//div[@class='WB_cardwrapS_bg2clearfix']″模块获取节点上博主昵称,博客首页,微博内容,点赞数,评论数,转发数,并将之存入数据库;


  5)再分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。


  2.2.3数据存储


  由于数据实时的,而且有可能庞大有可能数据量较小,则为了不必要的开销,本课题选择了MySQL数据库作为存储工具,增添减删都十分方便,数据库的结构如下:其中,名为“stock”的数据库是已经提前建好的,在微博爬虫过程中,表名是由GUI界面输入的股票代码决定,以“.ss”结尾股票将尾部截掉,在头部加上“SH”,以“.sz”结尾的则将尾部截掉加上“SZ”,用以区分上证和深证股票,根据每个表名新建一张表,该表包括ID,ID为主键,可以自增,非空nickname、homepage、content、dates、forward、reply、likes,字段类型分别为int(11)、varchar(90)、varchar(500)、varchar(10000)、varchar(40)、bigint(255)、bigint(255)、bigint(255),表创建好后,就可以往里面插入数据。


  2.2.4舆情分析


  自然语言处理,也就是我们常说的NLP。随着人工智能火爆带来的一个分支,简单点说,就是将人的语言转化为机器的语言,能够分词,了解语义,甚至能预测你下一个想说的词,我们都知道,每个国家的语言都有不同的语法,而中文是世界上最难学的语言之一,同一个词都有可能是不同的意思,而我们需要从微博网民的言谈中获取股民对待股票的态度,积极还是消极,则需要用到自然语言处理来判断情感的积极和消极。


  本课题采用snowNLP,是国人开发的python类库,可以方便的处理中文文本内容,由于现在大部分的自然语言处理库基本都是针对英文的,这是目前找到的唯一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK包,所有的算法都是自己实现的,并且自带了一些训练好的字典。从数据库中获取评论内容,对其进行分析,得出情感若是大于0.5则被判为积极情绪,小于0.5则被判为消极情绪,最后将所有结果汇总成柱状图和饼图,给股民以参考。


  3效果展示


  如图4所示,本系统分了两个入口,即美股和上证股票,美股选择了苹果的股票,输入其股票代码AAPL;图5左边是未来十天的收盘预测值,右上角是该股近百天的K线图,右下角黄色的线是利用ARIMA的预测值,蓝色的线则是实际收盘价;图6存储了从微博爬取的浦发银行近20天的舆情,搜索“sh6000000”,将博主昵称、主页、内容、时间、转发量、回复量、点赞数都存储到数据库中;图7的左下角是分析结果,横轴表示情绪分析,小于0.5则为消极情绪,大于0.5则为积极情绪,纵轴代表数量,每个数值的个数,可以很直观看出微博的股民对此呈消极情绪。


  4结束语


  该系统不同于传统的股票的研究,仅仅对历史数据进行反复模拟,而是紧紧跟随时代的步伐,充分利用网上散落的信息,进行归一利用,对股民的选股、买卖更有利用价值。