arima模型的建模步驟_基於ARIMA預測股指期貨價格走勢

2021-01-19 CSDN技術社區

 常用的時間序列模型有四種:自回歸模型 AR(p)、移動平均模型 MA(q)、自回歸移動平均模型 ARMA(p,q)、自回歸差分移動平均模型 ARIMA(p,d,q), 可以說前三種都是 ARIMA(p,d,q)模型的特殊形式。本文主要圍繞著如何使用ARIMA模型實現對股指期貨價格走勢的預測。

01

ARIMA模型

ARIMA模型(英語:Autoregressive Integrated Moving Average model),差分整合移動平均自回歸模型,又稱整合移動平均自回歸模型(移動也可稱作滑動),是時間序列預測分析方法之一。ARIMA(p,d,q)中,AR是「自回歸」,p為自回歸項數;MA為「滑動平均」,q為滑動平均項數,d為使之成為平穩序列所做的差分次數(階數)。「差分」一詞雖未出現在ARIMA的英文名稱中,卻是關鍵步驟。

百度百科本文主要使用ARIMA模型實現對股指期貨價格走勢的預測,而使用ARIMA的模型主要包括以下四大步驟

02

數據獲取和平穩性檢驗

ARIMA 模型是在平穩的時間序列基礎上建立起來的,因此時間序列的平穩性是建模的重要前提。檢驗時間序列模型平穩的方法一般採用 ADF 單位根檢驗模型去檢驗。當然如果時間序列不穩定,也可以通過一些方法使得時間序列穩定

定義基礎函數

# 獲取數據def getData(filename): IF = pd.read_csv(filename,encoding='utf-8',index_col = 'date',parse_dates = True) IF_price = IF[['close']]    return IF_price    # 單位根檢驗:ADF是一種常用的單位根檢驗方法# 原假設為:序列具有單位根,即非平穩,# 對於一個平穩的時序數據,就需要在給定的置信水平上顯著,拒絕原假設。# ADF只是單位根檢驗的方法之一def testStationarity(timeSeries): # 單位根檢驗方法 adf = adfuller(timeSeries) adf_result = pd.Series(adf[0:4], index=['Test Statistic','p-value','Lags Used','Number of Observations Used']) for key,value in adf[4].items(): adf_result['Critical Value (%s)'%key] = value return adf_result

獲取數據、平穩性檢驗

# 獲取原始的數據,從2010年4月16日至2017年9月13日IF = getData('data/IF-100416-170913.csv')# 將去除最後80天的數據集作為模型訓練的數據源train = IF.iloc[:-80]# 按照線性差值的方式對訓練數據重分布,填充非交易日部分的數據,# 以滿足後續ARIMA模型訓練的要求trainInterpolate=train.resample('D').interpolate('linear')# 對原始時間序列進行平穩性檢驗testStationarity(trainInterpolate)

通過對比Test Statistic值和Critical Value的值,以及p值可以確定上述時間序列是非平穩序列。

差分

既然原始數據是非平穩序列,則需要對數據進行一定的處理,如差分和取對數等等,本文主要採取差分的方法,持續差分直到序列滿足平穩性要求。

# 一階差分trainInterpolate_diff1 = trainInterpolate.diff(1).dropna()# 對一階差分序列進行平穩性檢驗testStationarity(trainInterpolate_diff1)

通過對比Test Statistic值和Critical Value的值,以及p值可以確定上述一階時間序列是平穩序列。

可視化一階差分後的時間序列圖

trainInterpolate_diff1.plot()

圖1、股指期貨IF一階差分後的收盤價格走勢

03

模型定參

要使用ARIMA 模型,必須確定模型的階數 p、q以及d 。d的確定是比較簡單的,完全是差分後的數據是否是平穩序列。對於p和q,p或者q越大,則模型的參數越多,越有可能捕捉到時間序列中不同間隔K的自相關性。但是,參數太多的話容易造成過擬合。因此在選擇階數時,必須同時考慮擬合的準確性和避免過擬合。

通過前面的差分過程,已經可以確定d的值是1(因為是一階差分序列)。後面需要確定的就是p和q的值。

在確定模型p和q的階數時,常用的工具是使用信息量準則,包括赤池信息量準則(Akaike information criterion,簡稱 AIC,由日本統計學家赤池弘次創立)以及貝葉斯信息量準則(Bayesian information criterion,簡稱 BIC)。

上述兩個信息量準則的目的都是尋找可以最好地解釋數據但包含最少自由參數的模型。它們均使用模型的似然函數、參數個數以及觀測點個數來構建一個標量函數,以此作為評價模型好壞的標準。它們的區別是標量函數的表達式有所不同。

除了使用上述的信息量準則以外,畫ACF(自相關圖)和PACF(偏自相關圖)圖也是一種解決定階的方法。

ACF(自相關序列)

plot_acf(trainInterpolate_diff1)

圖2、自相關圖

PACF(偏自相關序列)圖

plot_pacf(trainInterpolate_diff1)

圖3、偏自相關圖

模型定階

其實很多時候不太容易通過自相關圖和偏自相關圖看出p和q的階數,所以個人更習慣用工具去選擇合適的p和q。本文主要選擇AIC指標(赤池信息量準則)。

pqselect = st.arma_order_select_ic(y=trainInterpolate,\ max_ar=4,max_ma=4,ic=['aic'])

當我們使用 AIC 或者 BIC 確定模型的最優p、q階數之後,便可以對時間序列建模。

# 把p、i、q分別傳入order中,設置數據的頻率為日線數據model = ARIMA(trainInterpolate,order=(3,1,2),freq="D" )

04

參數檢驗

Ljung-Box檢驗

時間序列中一個最基本的模型就是高斯白噪聲序列,對於ARIMA模型,其殘差就被假定為高斯白噪聲序列。所以當我們用ARIMA模型去擬合數據時,擬合後我們需要對殘差的估計序列進行是否是白噪聲的檢驗。

Ljung-Box檢驗恰是對時間序列是否存在滯後相關的一種統計檢驗,通過Ljung-Box檢驗判斷其是否是高斯白噪聲,如果不是,那麼說明ARIMA模型可能並不是一個合適的模型。

Ljung-Box檢驗的原假設,H0:原本的數據都是獨立的,即總體的相關係數為0。

# 殘差的白噪聲檢驗lj = acorr_ljungbox(result.resid,lags=10)[1]for i in range(len(lj)): print('lag = '+str(i)+', p-value='+str(round(lj[i],4)))

通過對比P值,可以發現在顯著性水平0.05或者0.01,無法拒絕原假設H0,所以殘差為獨立的數據。

05

模型預測

模型預測

對模型進行訓練,然後數據模型的匯總參數信息

# 對模型進行訓練result = model.fit()# 模型的匯總參數信息result.summary()

圖4、模型的參數

可視化預測結果

# 基於模型生成預測數據predict = result.predict('20170523', '20170917',dynamic=True, typ='levels')# 可視化預測結果plt.figure(figsize=(12, 6))# 將橫左邊旋轉45度plt.xticks(rotation=45)# 可視化預測結果plt.plot(predict)# 可視化原始指數點位plt.plot(IF)

圖5、模型預測結果可視化(紅色為原始數,藍色為預測數據)

通過圖5發現 ,使用ARIMA的預測效果還是非常差的,整體的偏差性非常大,得到這樣的結果也是正常的。影響指數走勢的因素非常多,如國內政策、國外市場情況等等,指數的歷史價格只是影響未來價格的一小部分因素。另外需要說明的是,ARIMA模型只能捕捉線性的影響因素,很多非線性的影響因素並不在模型內。 

感興趣的讀者可以多多關注本公眾號,後續會持續分享科技、金融方面的話題,尤其是金融大數據分析領域。

相關焦點

  • R語言ARIMA集成模型預測時間序列分析
    p=18493 本文我們使用4個時間序列模型對每周的溫度序列建模。第一個是通過auto.arima獲得的,然後兩個是SARIMA模型,最後一個是Buys-Ballot方法。 model1=auto.arima(Y)acf(residuals(model1),120)我們將這個模型保存在工作空間中,然後查看其預測。
  • SAS時間序列模型預測未來航班數量
    時間序列模型利用歷史資料進行延伸預測,也稱歷史引伸預測法。
  • R語言arma模型診斷_arma模型實現模型r語言 - CSDN
    ( m2=arima(prop, order = c(1,0,0),method="ML", include.mean = F) ) #用AR(1)模型擬合,不含截距項。")summary(fit3)【一些特殊的模型】#固定某些係數的值arima(dw,order=c(4,0,0),fixed=c(NA,0,0,NA,0),method="CSS")#乘積季節模型
  • 基於預測模型的COMEX黃金期價實證分析
    遇到突發事件時運用ARMA與多元回歸模型能夠更好地把握價格走勢  本文包含兩個計量模型——ARMA預測模型和多元回歸模型。建立ARMA預測模型的目的在於確定模型的係數之後,根據相對較少的數據集對COMEX黃金期貨價格走勢進行預測,但ARMA預測模型的缺點也同樣明顯,那就是未考慮其他相關變量的影響。在市場經濟活動中,黃金價格的變化往往受多種因素的影響,一個因變量和一個或幾個自變量有存在依存關係的情況,而且有時幾個影響因素主次難以區分,通常採用多元回歸模型進行分析。
  • 從時間序列ariam模型到Prophet模型的應用
    數據是2016年12月-2019年12月的脫敏數據,拿到的數據很簡單,我們的思路是按照價格段來分組,根據不同的價格段用前三年的數據劃分訓練集和測試集,預測2020年前6個月的趨勢走向。但是遇到的問題是數據中2017年整個6月份的數據是缺失的,各年的3月,5月,11月分別有零散缺失。其中每年份中6月18日,11月11日,12月12日等特殊日期的峰值特別的高。
  • 數據建模中分類與預測模型
    因此,本文基於上期數據預處理部分之後,介紹如何在清洗過後的數據基礎之上建立分類與預測模型,為此種模型的構建方法進行簡單介紹,輔助投資者對自身分析邏輯中的分析框架進行量化分析,方便其多元化的交易分析。  一、分類與預測的介紹  數據建模中分類與預測模型主要是尋求合適的分類模型並在此基礎之上進行未來預測。
  • 從六方面看股指期貨與A股市場波動性關係
    (二)數據的處理  期貨的特點使得期貨價格在時間上存在間斷點,為了保持期貨價格在時間上的連續性,本文選擇主力合約法。滬深300指數期貨交易的主力合約是當月合約,因此選取當月連續期貨合約作為研究對象。
  • 波動率研究對於期貨市場的意義
    在期貨交易價格分析上,對波動率的分析研究具有很高的關注度,對于波動率動態性的建模與預測越來越多,並與客觀性交易密不可分。而目前國內對于波動率的研究和運用很少,在此我談談波動率分析對於期貨市場的重要之處,分享自己的學習成果和體會。  波動率指數的發展   波動性在金融衍生品的定價、交易策略以及風險控制中扮演著相當重要的角色, 可以說沒有波動性就沒有金融市場。
  • 統計視角下的股指期貨
    從大數定律的角度來看全球股指期貨的發展,各主要市場的期指產品均取得了成功。   377個股指期貨品種均告成功   目前,全球已有38家交易所上市了377個股指期貨產品,主要市場經濟國家均已上市了以本國主要股票指數為標的的股指期貨。上市股指期貨的國家和地區經濟總量佔全球87%以上。
  • 這個模型告訴你哪些才是預測黃金價格的關鍵因素
    由於影響金價的因素有很多,因此WisdomTree對黃金進行了多元建模。該機構已經能夠建立一個包含四個關鍵解釋變量的的基本模型。基於這些基礎變量的方向,金價的預測可以是正面的、負面的,也可以是中性的。要注意的是,該模型將黃金描述為貨幣資產,而非大宗商品。
  • 股指期貨到期日效應的形成原因
    到期日效應是指股指期貨合約臨近到期時,由於交易中買賣失衡而導致現貨價格交易量、波動性暫時扭曲的現象。很多實證研究表明,股指期貨所引致的股市「跳躍性」波動大多集中在股指期貨合約的到期日。  1.單一價格  包括兩種情況,開盤價或收盤價。理想狀態下,如果市場具有深度,即市場在開盤價、收盤價階段比其他交易時段具有更大交易量或深度,則基於單一價格的結算方式是比較合理的。  站在使用者的角度,單一價格具有明顯優勢。套利與套保活動的效率依賴於現貨與期貨價格的收斂程度。
  • > 股指期貨投資入門
    凡是股指期貨交易,一定是既有買方又有賣方。在股指期貨交易中,買進期貨合約者稱為多頭,賣出股指期貨合約者稱為空頭。多頭認為股指期貨合約的價格會上漲,所以會買進;相反,空頭認為股指期貨合約的價格高了,以後會下跌,所以才賣出。請注意,在股票市場上,也將買進方稱為多頭,賣出方稱為空頭。然而,在股票交易中,賣方必須有股票才能賣,沒有股票的人是不能賣的。
  • 研究稱如果沒股指期貨 A股跌幅將更大
    原標題:研究稱如果沒股指期貨 A股跌幅將更大   文章導讀: 今年3月A股進入快牛階段,以彼時為分水嶺,滬深300的期現價差由升水轉為貼水(即滬深300期指合約價轉為低於滬深300指數),4月16日上證50股指期貨和中證500股指期貨上市後,三大股指期貨相對現貨貼水特徵更趨明顯。
  • 基於量化模型的期貨交易規律研究
    通過統計分析找到期望值為正的理念和方法  期貨價格是期貨交易的結果,所有交易者的決策行為共同作用是價格形成和波動的原因。由於市場中交易者的決策行為是隨機變量,不能被確定性地預測價格,所以價格波動也是隨機變量。
  • 巧用黃金分割線輔助股指期貨交易
    和訊特約  黃金分割線是期貨市場和股市中最常見、最受歡迎的切線分析工具之一,同樣也適用於目前交易的滬深300股指期貨的技術分析與操作。實際股指期貨操作中主要運用黃金分割來揭示上漲行情的調整支撐位或下跌行情中的反彈壓力位。