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.pswp.cn/news/396942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396942.shtml
英文地址,請注明出處:http://en.pswp.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…