python数据预测_python时间序列预测股票走势

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

首先调用tushare包

import tushare as ts

import pandas as pd

import matplotlib.pyplot as plt

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

concept = ts.get_concept_classified()

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

32uYv2.png

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

data=ts.get_hist_data('600686')

MnY3I3.png

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

VNfAbq.png

在导入数据的过程中遇到一个很奇怪的现象,那就是数据的行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)

3eMfui.png

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

#使用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)

Z7RRz2.png

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

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

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

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

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

plt.legend(loc=0)

63Qvie.png

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

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

tagADF(adf_Data1)

iqIzem.png

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()

6vYJfi.png

遇到一个很诡异的事情,

p = ARMAModel.predict(

start='2017-02-16',

end='2017-03-29'

)

3QZbUj.png

跑了四遍代码,重启了两遍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()

BZfeQb.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30.Android之百度地图简单学习

今天用了下百度地图,简单写了一个例子,记录下。 一、申请AK(API Key) 要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。 首先注册成为百度的开发者,然后打开http://lbsyun.baidu.…

在datatable中,在指定位置插入列

假如dataset ds 里面已经存在了数据,当我们想在datatable中插入一列数据,可以用以下方法实现:ds.Tables[0].Columns.Add("star");ds.Tables[0].Columns["star"].SetOrdinal(0);这样“star”列就添加到datatable的第一列了…

python爬取b站弹幕_爬取B站弹幕并且制作词云

目录 SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 爬取弹幕 1. 从手机端口进入网页爬取找到接口 2.代码 import requests from lxml import etree import numpy as np urlhttps://api.bilibili.com/x/v1…

myeclipse始终build workspace

之前我的myeclipse运行某个项目的时候&#xff0c;总是不停的buildworkspace&#xff0c;而且稍微改动一个(不管是java类还是jsp)都会加载接近1分钟甚至更久&#xff0c;从网上搜了好久&#xff0c;先总结下搜的多数方法 1、叫你去掉.project文件的一段话 <buildCommand>…

python控制灯_Python 控制树莓派 GPIO 输出:控制 LED 灯

树莓派 GPIO 控制输出的入门应该都是从控制 LED 灯开始的吧。 树莓派版本&#xff1a;Model 3B 树莓派系统&#xff1a;Raspbian Stretch with desktop and recommended software&#xff0c;April 2019 连接装置 准备一个 LED 灯&#xff0c;两个两头都为母的杜邦线。对照下图…

图论:弦图最小点染色

弦图的定义&#xff1a;当图中任意长度大于3的环都至少有一个弦时&#xff0c; 一个无向图称为弦图 不存在四角、五角等关系就说明这个图是一个弦图 题目问的是&#xff0c;任何一对相互认识的人不可以组一队&#xff0c;问最多可以组多少对 所有的人构成的关系图是一个弦图&am…

报错型sql注入原理分析

0x00&#xff1a;前言关于sql注入&#xff0c;经久不衰&#xff0c;现在的网站一般对sql注入的防护也相对加强了&#xff0c;2016年的***测试报告中&#xff0c;出现最多的是xss&#xff08;跨站脚本***&#xff09;和明文传输等&#xff0c;但是对sql注入的利用方式&#xff0…

matlab矩阵 0,matlab zeros初始化为0矩阵

zeros为创建一个值为零的数组&#xff1b;如matrix1zeros(4,5);%4*5的矩阵&#xff0c;矩阵中每个元素都为0matrix2zeros(4,5,3);%4*5*3的数组&#xff0c;数组中每个元素都为0下面举一个将图像存到数组的例子对RGB图片1.jpg&#xff0c;2.jpg&#xff1b;大小为700*500*3创建4…

HDU 2199

人生中第一道搜索题 精度精度、&#xff01;&#xff01;&#xff01; 1 #include<iostream>2 #include<algorithm>3 #include<cmath>4 #include<cstdio>5 using namespace std;6 double f(double x)7 {8 return 8*pow(x,4.0)7*pow(x,3.0)2*pow(x,…

python文件编译_编译Python文件

编译Python文件 一、编译Python文件 为了提高加载模块的速度&#xff0c;强调强调强调&#xff1a;提高的是加载速度而绝非运行速度。python解释器会在__pycache__目录中下缓存每个模块编译后的版本&#xff0c;格式为&#xff1a;module.version.pyc。通常会包含python的版本号…

SDN-博客收集

1、云网融合的多云网络转载于:https://www.cnblogs.com/snowwhite/p/9624404.html

php cookie 字串,php入门(字符串,cookie,session)

php入门(字符串,cookie,session)&#xff0c;有需要的朋友可以参考下。字符串获取字符串的长度: strlen()函数获取中文字长echo mb_strlen($str,”UTF8”);英文字符串截取$stri love you;复制代码//截取love这几个字母echo substr($str, 2, 4);//为什么开始位置是2呢&#xff0…

批处理命令Start

2019独角兽企业重金招聘Python工程师标准>>> 运行hello.exe&#xff08;最小化&#xff09; start /MIN hello.exe 用记事本打开readme.txt&#xff08;最大化&#xff09; start /MAX notepad readme.txt 打开网页 start http://www.baidu.com/ 调用另外一个脚本&…

vim乱码的解决

解决vim文件乱码&#xff0c;打开文件乱码&#xff0c;菜单&#xff0c;提示信息乱码&#xff1a; 有四个跟字符编码方式有关的选项&#xff0c;encoding、fileencoding、fileencodings、termencoding 在linux中修改.vimrc&#xff08;在win中是_vimrc&#xff09;A&#xff0c…

arcgis python实例_arcgis二次开发_arcgis二次开发python_arcgis二次开发实例

[1.rar] - QQ连连看的源码.单消秒杀挂机等功能喜欢的朋友请拿去研究 [qqCHAR.rar] - qq 验证码识别程序 可以叫准确的识别出qq登陆前的验证码 [1.rar] - 本书以Visualc作为开发语言&#xff0c;结合大量实例&#xff0c;详细介绍了利用Arcobjects组件进行GIS二次开发的方法和过…

Linux命令-自动挂载文件/etc/fstab功能详解

一、/etc/fstab文件的作用磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中&#xff0c;否则下次开机启动时仍然需要重新挂载。系统开机时会主动读取/etc/fstab这个文件中的内容&#xff0c;根据文件里面的配置挂载磁盘。这样我们只需要将磁盘的挂载信息写入这个文…

微分方程在matlab中的实现,Matlab微分方程参数优化的Forcal实现

FCC文件缺省设置&#xff1a;(XNote请修改为X轴单位) (YNote请修改为Y轴单位)(AutoY1) (XMin0) (XMax1) (YMin0) (YMax1)(BorderPixels60) (MultiplyX1) (MultiplyY1) (Grid0) (DivideXY10) (XYNumWidth3) (DataMax2)(ForMax50) (LoadDll)[CODE]// 通用设置&#xff1a;// (XNo…

常用命令

1.在控制台下关闭Java进程&#xff1a;taskkill /f /im java.exe转载于:https://www.cnblogs.com/super90/p/5133906.html

一、在windows环境下修改pip镜像源的方法(以python3为例)

在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下&#xff0c;在该目录下新建pip文件夹&#xff0c;然后到pip文件夹里面去新建个pip.ini文件 3.在新建的pip.ini文件中输入以下内容&#xff0c;搞定 [glob…

得到选择框句柄 怎么操作_电脑版微信怎么多开?最简单的三种电脑版微信多开教程...

​在现实中的我们在网络上却又很多张脸&#xff0c;多开微信很多人都是需要的&#xff0c;这里就介绍3个方法给大家多开。方法1&#xff1a;BAT文件鼠标右键单击微信图标选择 属性在属性选项夹内复制 “目标”例如我的是("D:Program Files (x86)TencentWeChatWeChat.exe&q…