拓端tecdat|R語言ARIMA-GARCH波動率模型預測股票市場蘋果公司日收益率時間序列


原文鏈接:http://tecdat.cn/?p=23934

原文出處:拓端數據部落公眾號

引言

在本文中,我們將嘗試為蘋果公司的日收益率尋找一個合適的 GARCH 模型。波動率建模需要兩個主要步驟。

  1. 指定一個均值方程(例如 ARMA,AR,MA,ARIMA 等)。
  2. 建立一個波動率方程(例如 GARCH, ARCH,這些方程是由 Robert Engle 首先開發的)。

要做(1),你需要利用著名的Box-Jenkins方法,它包括三個主要步驟。

  1. 識別
  2. 估算
  3. 診斷檢查

這三個步驟有時會有不同的名稱,這取決於你讀的是誰的書。在本文中,我將更多地關注(2)。

我將使用一個名為quantmod的軟件包,它代表量化金融建模框架。這允許你在R中直接從各種在線資源中抓取金融數據。

  1.  
     
  2.  
    #install.packages("quantmod") -需要先安裝該軟件包
  3.  
     
  4.  
    getSymbols(Symbols = "AAPL",
  5.  
    src="yahoo", #其他來源包括:谷歌、FRED等。
  6.  
     
  7.  
     

收益通常有一個非常簡單的平均數方程,這導致了簡單的殘差。

我們首先要測試序列依賴性,這是條件異方差的一個指標(序列依賴性與序列相關不同)。這是通過對原始序列的平方/絕對值進行測試,並使用Ljung和Box(1978)的Ljung-Box測試等聯合假設進行測試,這是一個Portmentau檢驗,正式檢驗連續自相關,直到預定的滯后數,如下所示。

其中T是總的周期數,m是你要測試的序列相關的滯后期數,ρ2k是滯后期k的相關性,Q∗(m)∼χ2α有m個自由度。

檢查

下面是AAPL對數收益時間序列及其ACF,這里我們要尋找顯著的滯后期(也可以運行pacf)或存在序列自相關。

通過觀察ACF,水平序列(對數收益)並不是真正的自相關,但現在讓我們看一下平方序列來檢查序列依賴性。

我們可以看到,平方序列的ACF顯示出顯著的滯后。這是一個信號,說明我們應該在某個時候測試ARCH效應。

平穩性

我們可以看到,AAPL的對數回報在某種程度上是一個平穩的過程,所以我們將使用Augmented Dicky-Fuller檢驗(ADF)來正式檢驗平穩性。ADF是一個廣泛使用的單位根檢驗,即平穩性。我們將使用12個滯后期,因為根據文獻的建議,我們有每日數據。 何:存在單位根(系列是非平穩的

  1.  
    ##
  2.  
    ## Title:
  3.  
    ## Augmented Dickey-Fuller Test
  4.  
    ##
  5.  
    ## Test Results:
  6.  
    ## PARAMETER:
  7.  
    ## Lag Order: 12
  8.  
    ## STATISTIC:
  9.  
    ## Dickey-Fuller: -14.6203
  10.  
    ## P VALUE:
  11.  
    ## 0.01
  12.  
    ##
  13.  
    ## Description:
  14.  
    ## Mon May 25 16:45:37 2020 by user: Florian

上面的P值為0.01,表明我們應該拒絕Ho,因此,該系列是平穩的。

結構突變檢驗

請注意,我從2008年底開始研究APPL序列。以避免08年大衰退,通常會在數據中產生結構性突變(即趨勢的嚴重下降/跳躍)。我們將對結構性突變/變化進行Chow測試。 AAPL的日收益率沒有結構性突變

該圖顯示,用於估計斷點(BP)數量的BIC(黑線)是BIC線的最小值,所以我們可以確認沒有結構性斷點,因為最小值是零,即零斷點。在預測時間序列時,斷點非常重要。

估計

在這一節中,我們試圖用auto.arima命令來擬合最佳arima模型,允許一個季節性差異和一個水平差異。

正如我們所知,{Yt}的一般ARIMA(p,d,q)。

根據auto.arima,最佳模型是ARIMA(3,0,2),平均數為非零,AIC為-14781.55。我們的平均方程如下(括號內為SE)。

Auto.arima函數挑選出具有最低AIC的ARIMA(p,d,q),其中。

其中Λθ是觀察到的數據在參數的mle的概率。因此,如果Auto.arima函數運行N模型,其決策規則為AIC∗=min{AICi}Ni=1

診斷檢查

我們可以看到,我們的ARIMA(3,0,2)的殘差是良好的表現。它們似乎也有一定的正態分布

  1.  
    ##
  2.  
    ## Ljung-Box test
  3.  
    ##
  4.  
    ## data: Residuals from ARIMA(3,0,2) with non-zero mean
  5.  
    ## Q* = 6.7928, df = 4, p-value = 0.1473
  6.  
    ##
  7.  
    ## Model df: 6. Total lags used: 10

現在我們將通過對我們的ARIMA(3,0,2)模型的平方殘差應用Ljung-Box測試來檢驗ARCH效應。

  1.  
    ##
  2.  
    ## Box-Ljung test
  3.  
    ##
  4.  
    ## data: resid^2
  5.  
    ## X-squared = 126.6, df = 12, p-value < 2.2e-16

我們可以看到,殘差平方的 ACF 顯示出許多顯著的滯后期,因此我們得出結論,確實存在 ARCH 效應,我們應該對波動率進行建模。

使用 GARCH 建立波動率模型

上面將我們的平均數方程中的殘差進行了平方,看看大的沖擊是否緊隨在其他大的沖擊之后(無論哪個方向,即負的或正的),如果是這樣,那么我們就有條件異方差,意味着我們有需要建模的非恆定方差。下面是一個GARCH(m,s)的樣子。

其中{ϵ2t}mt=1是我們通常的特異性沖擊,iid隨機變量,即ϵ2t∼WN(0,σ2ϵ)。我們可以更緊湊地寫成:

其中B是標准的后移算子Biϵ2t=ϵ2t-i,Biσ2t=σ2t-i。對於任何整數ii,以及α和β分別是度數為m和s的多項式

請注意,一個特殊情況是當s=0時,GARCH(m,0)被稱為ARCH(m)。

當我說GARCH家族時,它表明模型有變化。

  • SGARCH。普通GARCH
  • EGARCH。指數GARCH,允許波動率不為負值(這迫使模型只輸出正方差
  • FGARCH。這是為長記憶模型准備的。它使用了被稱為 ARFIMA 的 Fractionaly integrated ARIMA(即非整數整合)。
  • GARCH-M:這是GARCH的均值,適合你的均值方程中有波動率例如CAPM的方程中有σ。
  • GJR-GARCH。假設負面沖擊和正面沖擊之間存在不對稱性(金融數據幾乎都是這樣)。

為收益率序列建立波動率模型包括四個步驟:

  1. 通過測試數據中的序列依賴性來指定一個均值方程,如果有必要,為收益序列建立一個 計量經濟學模型(例如,ARIMA 模型)來消除任何線性依賴。
  2. 使用平均值方程的殘差來測試ARCH效應。
  3. 如果ARCH效應在統計上是顯著的,就指定一個波動率模型,並對均值和波動率方程進行聯合估計。
  4. 仔細檢查擬合的模型,必要時對其進行改進。

一個簡單的 GARCH 模型有以下成分。

均值: 

波動率方程:  

誤差假設: 

  1.  
     
  2.  
    #以下命令將計算GARCH(m,s)。請記住,對於某些m和s的組合,它可能不會收斂。
  3.  
     
  4.  
    garchlist(model="sGARCH", #其他選項有egarch, fgarch等。
  5.  
    garchOrder=c(1,2)), #你可以在這里修改GARCH(m,s)的階數
  6.  
    mean.model , #指定你的ARMA模型,暗示你的模型應該是平穩的。
  7.  
    distribution.model #其他分布是 "std "代表t分布,"ged "代表一般誤差分布
  8.  
     

我們的波動率方程由GARCH(1,2)給出,AIC:-5.5277(注意GARCH可能無法收斂)。

下面是使用我們的波動率模型對波動率進行的預測。這看起來是一個合理的波動率預測,但是你想改進你的模型。

現在讓我們使用rugarch的標准功能,使用估計的GARCH(1,2)模型來產生σt的滾動預測,並將它們與|rt|作對比。

最后,我們可以手動編寫代碼來查看隨時間變化的波動率和對數收益率rt,如下圖。

  1.  
     
  2.  
    # 這將有助於在對數收益率上繪制sigma隨時間變化的圖。
  3.  
     
  4.  
    sigma.t #這是你的波動率序列
  5.  
     
  6.  
    ggplot()
  7.  
    geom_line(aes(x=as.numeric(
  8.  
     
  9.  
    theme_bw()+
  10.  
     

結論

事實證明,GARCH系列是所謂確定性波動率模型的一部分。還有一個家族叫做隨機波動率模型,它允許模型中存在隨機性,而GARCH假設我們對波動率進行了完美的建模(如果你對你所分析的序列非常熟悉,這可能是一個好的假設,但實際情況並不總是這樣)。隨機波動率模型通常是用馬爾科夫鏈蒙特卡洛(MCMC)和准蒙特卡洛方法來估計的,如果你學過隨機過程的相關內容,你會知道這是什么。

參考文獻


最受歡迎的見解

1.HAR-RV-J與遞歸神經網絡(RNN)混合模型預測和交易大型股票指數的高頻波動率

2.R語言中基於混合數據抽樣(MIDAS)回歸的HAR-RV模型預測GDP增長

3.波動率的實現:ARCH模型與HAR-RV模型

4.R語言ARMA-EGARCH模型、集成預測算法對SPX實際波動率進行預測

5.GARCH(1,1),MA以及歷史模擬法的VaR比較

6.R語言多元COPULA GARCH 模型時間序列預測

7.R語言基於ARMA-GARCH過程的VAR擬合和預測

8.matlab預測ARMA-GARCH 條件均值和方差模型

9.R語言對S&P500股票指數進行ARIMA + GARCH交易策略


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM