分别基于SVM和ARIMA模型的股票预测 Python实现 附Github源码

SVM 支持向量机

原理就不赘述了,相关文章可以看这里

支持向量机(SVM)用于上证指数的预测

支持向量机(SVM)入门详解(续)与python实现

支持向量机SVM入门详解:那些你需要消化的知识

SVM是一种十分优秀的分类算法,使用SVM也能给股票进行一定程度上的预测。

核心

因为是分类算法,因此不像ARIMA一样预测的是时序。分类就要有东西可分,因此将当日涨记为1,跌记为0,作为分类的依据。使用历史数据作为训练数据。

处理数据:

  1. 股票历史数据来源于yahoo_finance api,获取其中Open,Close,Low,High,Volume作为基础。因为除去Volume以外,其余数据都是Price,基于Price并不能很好的表达股票的特性,或者说并不太适用于SVM分类算法的特性。基于SVM算法的特性,股票并不是到达一个价格范围就有大概率涨或跌(不知道我这个表达大家能不能看懂)。

2.基于上述原因,我决定将Price转换成另一种形式的数据。例如:High-Low=全天最大价格差,Open-YesterdayOpen=当天Open价格变动,Open-YesterdayClose=开盘价格变动。(我也并不太懂经济学,仅仅是为了寻找另一种更好的方案)

3.单纯地基于历史数据是完全不够的,因此还使用了R语言和tm.plugin.sentiment包,进行语义分析,进行新闻正面负面的判定。这块不是我做的,了解的并不多。新闻并不是每天都有的,这样的话新闻数据就显得有些鸡肋,无法在分类算法中起到作用,但是我们能在多个站点中提取,或是直接将关键字定为Debt(判断大众反应)。

4.这里仅仅是进行了两个站点的新闻挖掘,然后可通过rpy2包在Python中运行R语言,或是R语言得到的数据导出成Json,Python再读取。至此,数据处理告一段落。

SVM算法:

股票数据不能完全基于历史数据,因此需要一定数量的历史数据推出预测数据,例如这边使用了70天的数据训练,来推出后一天的股票涨跌,而不是所有的历史数据。

最后的成绩是53.74%的正确率,对于一个基本使用历史数据来预测股市的方法而言已经是个不错的结局了。

ARIMA

全称为自回归积分滑动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA)。核心函数是ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。所谓ARIMA模型,是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。

相关文章

时间序列ARIMA模型详解:python实现店铺一周销售量预测

核心

整个算法的核心,就是ARIMA中d差分将时序差分成平稳时序或是趋于平稳时序,然后基于PACF设置p自回归项,基于ACF设置q移动平均项数。

但因为包是基于statsmodels的,而其中的ARIMA(p,d,q),d不能>2,因此选用ARIMA(p,q)函数,d则使用pandas.diff()来实现。

步骤

本系统使用yahoo_finance,pandas,numpy,matplotlib,statsmodels,scipy,pywt这些包

1.从yahoo_finance包中获取股票信息,使用panda存储及处理数据,只提取其中Close属性,按照时间排序为时间序列。

2.对Close时序进行小波分解处理,选用DB4进行小波分解,消除噪音。

3.进行差分运算,使用panda包的diff()方法,并使用ADF检验进行平稳性检验,保证时间序列是平稳或趋于平稳的。

4.输出ACF,PACF图,确定p,q的值。

5.运用ARIMA模型对平稳序列进行预测,ARIMA(p,q)。

6.还原差分运算,得到股票预测时序。

输出图

本图顺序与步骤顺序无关,仅仅是作为一种直观的展示:

总结

ARIMA是一种处理时序的方法模型,可以作用于股票预测,但是效果只能说是一般,因为股市预测有一定的时序关系,却又不完全是基于时序关系,还有社会关系,公司运营,新闻,政策等影响,而且ARIMA使用的数据量仅仅只有一阶的Close属性。因此本模型可以作用在平稳发展,没有什么负面新闻和政策干扰的公司。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2017-09-09

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技评论

郑文琛:基于网络功能模块的图特征学习 | AI 研习社79期大讲堂

AI研习社按:图是一种常见的数据结构,可以被用于许多不同的预测任务。如何从图数据学习有效特征是个重要的问题。我们的新概念是从点和边出发,拓展到更高阶的子图结构(...

13240
来自专栏AI启蒙研究院

PID巡线机器小车

36310
来自专栏机器之心

学界 | DeepMind等机构提出「图网络」:面向关系推理

该论文作者之一,DeepMind 研究科学家 Oriol Vinyals 表示,该研究的代码也将在近期公开。

18900
来自专栏量化投资与机器学习

强化学习在量化投资中应用(理论简介)

什么是强化学习? 强化学习任务通常用马尔科夫决策过程(MarkovDecision Process,MDP)来描述:机器处于环境E中,状态空间为S,其中每个状...

40080
来自专栏新智元

【智驾深谈】George Hotz 开源代码复现与分析(80G数据云盘下载)

【新智元导读】上周GeoHot开源代码那篇文章一发,反响还是很强烈的,好多兄弟问我这事儿靠谱么,代码怎么样,论文怎么样,索性上周末抽时间找了赵李二位无人车老司机...

397130
来自专栏PPV课数据科学社区

只需七步就能掌握Python数据准备

摘要: 本文主要讲述了如何在python中用七步就能完成中数据准备。 上图为CRISP-DM模型中的数据准备   下面七个步骤涵盖了数据准备的概念,个别任务...

34070
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/8/5

视频列表链接:https://www.youtube.com/playlist?list=PLBgogxgQVM9v0xG0QTFQ5PTbNrj8uGSS-

9210
来自专栏开源优测

大数据测试学习笔记之Python工具集

这是2018年度业余主要学习和研究的方向的笔记:大数据测试 整个学习笔记以短文为主,记录一些关键信息和思考 预计每周一篇短文进行记录,可能是理论、概念、技术、工...

50060
来自专栏机器之心

入门 | 通过 Q-learning 深入理解强化学习

选自Medium 作者:Thomas Simonini 机器之心编译 参与:Geek AI、刘晓坤 本文将带你学习经典强化学习算法 Q-learning 的相关...

28950
来自专栏程序员互动联盟

【专业技术】图像格式转化规律探秘

存在问题: 搞视频编解码的童鞋对此深刻理解,但是好多小伙伴在andriod或其他嵌入上做启动动画时候图像是如何转化存在一定的疑惑。 解决方案: 针对这些问题我们...

35560

扫码关注云+社区

领取腾讯云代金券