提示:这只是个训练模型,技术不具备实际意义,入市需谨慎。

首先调用tushare包

import tushare as ts

import pandas as pd

import matplotlib.pyplot as plt

查自己比较感兴趣的股票,这里我查找的是新能源/燃料电池/氢燃料,在数据库里查找下

concept = ts.get_concept_classified()

df = concept[concept.c_name=='燃料电池']

我们就用金龙汽车作为我们的股票分析对象吧。

data=ts.get_hist_data('600686')

将开盘价open作为我们的分析对象,在这里截取了一段相对趋势唯一的数据作为train_data。并且选取了最后的一部分数据作为test_data。如下图。

在导入数据的过程中遇到一个很奇怪的现象,那就是数据的行index是时间逆序排列,刚开始没注意,后来才发现,用DataFrame.sort_index()进行调整。

data= ts.get_hist_data('600686', start='2016-09-13',end='2017-02-15').sort_index()

testdata=ts.get_hist_data('600686',start='2017-02-16',end='2017-03-29').sort_index()

plt.figure(figsize=(10,6))

plt.plot(data.open, label='Raw')

plt.legend(loc=0)

我们想对该时间序列数据进行预测,我们需要先对该数据进行分析,判断它到底是不是平稳性数据。

#使用ADF单位根检验法检验时间序列的稳定性

#先做一个编译器

def tagADF(t):

result = pd.DataFrame(index=[

"Test Statistic Value", "p-value", "Lags Used",

"Number of Observations Used",

"Critical Value(1%)", "Critical Value(5%)", "Critical Value(10%)"

],columns=['value']

)

result['value']['Test Statistic Value']=t[0]

result['value']['p-value']=t[1]

result['value']['Lags Used']=t[2]

result['value']['Number of Observations Used'] = t[3]

result['value']['Critical Value(1%)']=t[4]['1%']

result['value']['Critical Value(5%)']=t[4]['5%']

result['value']['Critical Value(10%)']=t[4]['10%']

return result

我们调用python的统计包

import statsmodels.api as sm

import statsmodels.tsa.stattools as sts

这里会涉及到迪基-福勒检验的概念,后面我会抽时间补充这块知识。

adf_Data = sts.adfuller(data.open)

tagADF(adf_Data)

我们的前提假设是该数据是非平稳性数据,从p-value上我们看出,有78.68%的可信度证明这条假设。

接下来利用差分法构建平稳时间序列。

diff = data[['open']].diff(1).dropna()

plt.figure(figsize=(10,6))

plt.plot(diff, label='Diff')

plt.legend(loc=0)

验证是否是平稳性数据,重复上面的动作

adf_Data1 = sts.adfuller(diff.iloc[:,0])

tagADF(adf_Data1)

p-value很小,我们的假设失效,因此,diff数据序列符合平稳性要求。

ic = sm.tsa.arma_order_select_ic(

diff,

max_ar=4,

max_ma=2,

ic='hqic'

)

计算结果,order=(1,1)

ARMAModel = sm.tsa.ARMA(diff, order).fit()

delta = ARMAModel.fittedvalues - diff

score = 1 - delta.var()/diff.var()

plt.figure(figsize=(10, 6))

plt.plot(diff, 'r', label='Raw')

plt.plot(ARMAModel.fittedvalues, 'g',label='ARMA Model')

plt.legend()

遇到一个很诡异的事情,

p = ARMAModel.predict(

start='2017-02-16',

end='2017-03-29'

)

跑了四遍代码,重启了两遍kernel,还是不行

试了一下数字index,将就着用吧

p = ARMAModel.predict(

start=98,

end=127

)

还原数据

def revert(diffValues, *lastValue):

for i in range(len(lastValue)):

result = [];

lv = lastValue[i];

for dv in diffValues:

lv = dv + lv

result.append(lv)

diffValues = result

return diffValues;

r = revert(p, data.open[-1])

plt.figure(figsize=(10,6))

plt.plot(r,'g',label='Predict')

plt.plot(testdata.open,'r',label='Raw')

plt.legend()

python 时间序列预测 币价_python时间序列预测股票走势相关推荐

  1. 平均股价的时间序列图形_数据可视化——pandas绘制股票走势图

    python数据可视化工具除了matplotlib底层绘图包,还有在matplotlib基础上分装的seaborn绘图包,此外,数据分析报pandas也在matplotlib基础上分装内置了绘图功能. ...

  2. python股票数据分析_Python数据分析之股票走势

    本篇文章讲了用python爬取六家公司的股票数据,分析股票走势.波动性.涨幅等,最终得出一点点结论. 一.包的安装 Python进行数据分析时,有几个包比较重要,所以需提前把这几个包安装好. pand ...

  3. python统计窗口函数怎么处理_python时间序列:移动窗口函数前篇

    在移动窗口(可以带有指数衰减权数)上计算的各种统计函数也是一类常见于时间序列的数组变换.它们称为移动窗口函数,其中还包括那些窗口不定长的函数(如指数加权移动平均).跟其他统计函数一样,移动窗口函数也会 ...

  4. 亏的裤子都没了!才知道那些币价预测图,居然是这么搞出来的!

    内容 | Rafael Schultze-Kraft 编译 | Aholiab 深谙币圈的你,对于那些出现在币价预测文章里的走势图想必不陌生.这些图往往旨在对未来n天的币价做预测,并声称是结果基于大数 ...

  5. python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客数量预测...

    Python深度学习教程:LSTM时间序列预测小练习-国航乘客数量预测 参考数据: 数据一共两列,左边是日期,右边是乘客数量 对数据做可视化:import math import numpy as n ...

  6. python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势

    公司平台上有不同的api,供内部或外部调用,这些api承担着不同的功能,如查询账号.发版.抢红包等等. 日志会记录下每分钟某api被访问了多少次,即一个api每天会有1440条记录(1440分钟),将 ...

  7. python预测算整理集合 python根据历史数据,预测未来数据 神经网络时间序列预测python 销售收入分析与预测 神经网络预测控制 Python 源码 4个lstm做数据预测的案例源代码

    python 预测未来/神经网络/负荷/飞机零件故障/链路预测程序源码 1.python实现TensorFlow2股票股价预测(源码) 2.负荷预测(py thon例子,实时负荷预测,15分钟到4小时 ...

  8. 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法)

    ** 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法) ** 多变量/单变量预测程序 多变量/单变量预测程序 多变量/单变量预测程序 A ABC-LSTM--人工蜂群 ...

  9. Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列

    最近我们被客户要求撰写关于时间序列的研究报告,包括一些图形和统计输出. 相关视频:时间序列分析:ARIMA GARCH模型分析股票价格数据 时间序列分析模型 ARIMA-ARCH GARCH模型分析股 ...

最新文章

  1. 什么是CommonJS?
  2. 基于Oracle11gR2 GRID的单实例库备份恢复
  3. 在进行正式托管之前,服务器托管用户需要做哪些准备?
  4. Zookeeper3.4.11+Hadoop2.7.6+Hbase2.0.0搭建分布式集群
  5. C# winform DataGridView 属性说明
  6. SAP Fiori应用没能从Fiori Launchpad启动的一个可能原因及分析过程
  7. CentOS 6.5 安装配置Tomcat7服务器
  8. python 消息框但不影响程序执行_还在用print()查找错误?日志消息不香嘛?| 原力计划...
  9. 14005.xilinx移植spi版本flash
  10. 关于触摸方向判断的bug
  11. python如何使用ppip安装xlwt_如何安装python xlwt
  12. udp java 实例_udp例子,javaudp简单实例分享
  13. android ppsspp 存档位置,小鸡模拟器游戏存档在哪个文件夹
  14. 批量创建文件夹-批处理(一)
  15. 一个完整的HTTP请求过程详细
  16. GNU autotools 下载和安装
  17. 两台计算机直接相连教程,两台电脑怎么连接一起_如何让两台电脑相连-win7之家...
  18. 缺少所需的CD/DVD驱动器设备驱动程序
  19. 计算机网络(3)--应用层协议--HTTP与HTTPS
  20. 学习跃动小球小游戏(cocos creator)

热门文章

  1. mysql variables 大记录 查询 慢_MySQL - 慢查询
  2. python找房源_python抓取贝壳房源信息
  3. linux进程调度周期,Linux进程组调度机制学习
  4. 【机器学习算法专题(蓄力计划)】三、机器学习中的概率论基础精讲
  5. 六十二、Js中的冒泡和捕获点击事件和Vue组件绑定原生事件
  6. 七十四、SpringBoot 的数据缓存cache(一)
  7. ​从熵不变性看Attention的Scale操作
  8. java实验3 2020.4.6
  9. 【深度学习】通过python画出loss曲线
  10. Python基础知识-优雅的with as语句