python時間序列預(yù)測股票走勢

數(shù)據(jù)源來自“tushare”的包歪赢,安裝方法參考如下鏈接:https://pypi.org/project/tushare/

提示:這只是個訓(xùn)練模型呼奢,技術(shù)不具備實際意義,入市需謹慎切平。


首先調(diào)用tushare包

import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt

查自己比較感興趣的股票握础,這里我查找的是新能源/燃料電池/氫燃料,在數(shù)據(jù)庫里查找下

concept = ts.get_concept_classified()
df = concept[concept.c_name=='燃料電池']

我們就用金龍汽車作為我們的股票分析對象吧悴品。

data=ts.get_hist_data('600686')

將開盤價open作為我們的分析對象禀综,在這里截取了一段相對趨勢唯一的數(shù)據(jù)作為train_data简烘。并且選取了最后的一部分數(shù)據(jù)作為test_data。如下圖定枷。


在導(dǎo)入數(shù)據(jù)的過程中遇到一個很奇怪的現(xiàn)象孤澎,那就是數(shù)據(jù)的行index是時間逆序排列,剛開始沒注意欠窒,后來才發(fā)現(xiàn)覆旭,用DataFrame.sort_index()進行調(diào)整。

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)

我們想對該時間序列數(shù)據(jù)進行預(yù)測岖妄,我們需要先對該數(shù)據(jù)進行分析型将,判斷它到底是不是平穩(wěn)性數(shù)據(jù)。

#使用ADF單位根檢驗法檢驗時間序列的穩(wěn)定性
#先做一個編譯器
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

我們調(diào)用python的統(tǒng)計包

import statsmodels.api as sm
import statsmodels.tsa.stattools as sts

這里會涉及到迪基-福勒檢驗的概念荐虐,后面我會抽時間補充這塊知識七兜。

adf_Data = sts.adfuller(data.open)
tagADF(adf_Data)

我們的前提假設(shè)是該數(shù)據(jù)是非平穩(wěn)性數(shù)據(jù),從p-value上我們看出福扬,有78.68%的可信度證明這條假設(shè)腕铸。

接下來利用差分法構(gòu)建平穩(wěn)時間序列。

diff = data[['open']].diff(1).dropna()
plt.figure(figsize=(10,6))
plt.plot(diff, label='Diff')
plt.legend(loc=0)

驗證是否是平穩(wěn)性數(shù)據(jù)铛碑,重復(fù)上面的動作

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

p-value很小狠裹,我們的假設(shè)失效,因此亚茬,diff數(shù)據(jù)序列符合平穩(wěn)性要求酪耳。

ic = sm.tsa.arma_order_select_ic(
    diff, 
    max_ar=4, 
    max_ma=2, 
    ic='hqic'
)

計算結(jié)果,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,還是不行
試了一下數(shù)字index梢夯,將就著用吧

p = ARMAModel.predict(
    start=98, 
    end=127
)

還原數(shù)據(jù)

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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末言疗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子颂砸,更是在濱河造成了極大的恐慌噪奄,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件人乓,死亡現(xiàn)場離奇詭異勤篮,居然都是意外死亡,警方通過查閱死者的電腦和手機色罚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門碰缔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戳护,你說我怎么就攤上這事金抡∑俳梗” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵梗肝,是天一觀的道長榛瓮。 經(jīng)常有香客問我,道長巫击,這世上最難降的妖魔是什么禀晓? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮喘鸟,結(jié)果婚禮上匆绣,老公的妹妹穿的比我還像新娘。我一直安慰自己什黑,他們只是感情好崎淳,可當我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著愕把,像睡著了一般拣凹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恨豁,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天嚣镜,我揣著相機與錄音,去河邊找鬼橘蜜。 笑死菊匿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的计福。 我是一名探鬼主播跌捆,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼象颖!你這毒婦竟也來了佩厚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤说订,失蹤者是張志新(化名)和其女友劉穎抄瓦,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陶冷,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡钙姊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了埂伦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞额。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出立镶,到底是詐尸還是另有隱情,我是刑警寧澤类早,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布媚媒,位于F島的核電站,受9級特大地震影響涩僻,放射性物質(zhì)發(fā)生泄漏缭召。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一逆日、第九天 我趴在偏房一處隱蔽的房頂上張望嵌巷。 院中可真熱鬧,春花似錦室抽、人聲如沸搪哪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晓折。三九已至,卻和暖如春兽泄,著一層夾襖步出監(jiān)牢的瞬間漓概,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工病梢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留胃珍,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓蜓陌,卻偏偏與公主長得像觅彰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子护奈,可洞房花燭夜當晚...
    茶點故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 簡介 用簡單的話來定義tcpdump缔莲,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 5,956評論 1 13
  • 問題:引入base64模塊霉旗,結(jié)果出現(xiàn)如下問題: AttributeError: 'module' object h...
    Tester_miao閱讀 20,004評論 0 3
  • 又是一個擁堵的國慶痴奏!對,還有今天是我的生日厌秒! 記得小時候我們最開心的除了過年就是過生日吧读拆。像女兒這么大的時...
    靡一生90閱讀 154評論 0 0
  • 年末是一個不用我們自己提醒自己都會受到重視的時間。 年度總結(jié)鸵闪,年度計劃檐晕,期末考,跨年晚會,元旦節(jié)辟灰,這些事情在不斷地...
    努力的coskie閱讀 937評論 0 3
  • 友友們早安个榕! 今天是個特殊的日子,枯葉也”潮它”一把芥喇? 也大方一把西采,枯葉把愛分給所有喜歡枯葉的友友,不喜歡枯葉的友...
    枯葉蕭瑟閱讀 1,455評論 46 34