R語言風險價值:ARIMA,GARCH模型滾動估計,預測VaR和回測分析股票時間序列


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

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

介紹

此分析的目的是構建一個過程,以在給定時變波動性的情況下正確估計風險價值。風險價值被廣泛用於衡量金融機構的市場風險。我們的時間序列數據包括 1258 天的股票收益。為了解釋每日收益率方差的一小部分,我們使用 Box-Jenkins 方法來擬合自回歸綜合移動平均 (ARIMA) 模型,並測試帶下划線的假設。稍后,當我們尋找替代方案、最佳擬合分布形式時,我們會檢查收益率的正態性。我們使用廣義自回歸異方差 (GARCH) 方法估計殘差的條件方差,並將其與 delta-normal 方法進行比較。

數據

出於建模過程的目的,我們每天收集了 5 年(2013 年 2 月至 2018 年 2 月)的花旗公司股票(共 1259 個觀察樣本)。

  1.  
  2.  
     
  3.  
     
  4.  
    # 加載庫
  5.  
    library(tidyverse)
  6.  
     
  7.  
     
  8.  
    # 加載數據
  9.  
     
  10.  
    read.csv('stock.csv', header = T)
  11.  
     
  12.  
     
  13.  
     
  14.  
    # 每只股票一欄
  15.  
     
  16.  
     
  17.  
    plot( y = stok$C , geo = 'line')

紅線表示此特定時間范圍內的平均收盤價。

非平穩過程具有隨時間變化的均值、方差和協方差。使用非平穩時間序列數據會導致預測不可靠。平穩過程是均值回歸的,即它在具有恆定方差的恆定均值附近波動。在我們的例子中,平穩性是指平穩時間序列滿足三個條件的弱平穩性:

為了解決這個問題,我們主要使用差分法。一階差分可以描述為

對於平穩性變換,我們更傾向於計算簡單的日收益,表示如下

  1.  
    ret = diff(stoks$C) / socs$C[-legth]
  2.  
     
  3.  
    plot(x = 1:length, y = res )

為了驗證收益率的平穩性,我們使用了 Dickey-Fuller 檢驗,其中零假設表示非平穩時間序列。

adf.test(ret)

小的 P 值 (<0.01) 表明有足夠的證據拒絕原假設,因此時間序列被認為是平穩的。

Box-Jenkins 方法

對於時間序列分析,Box-Jenkins 方法應用 ARIMA 模型來找到代表生成時間序列的隨機過程的時間序列模型的最佳擬合。該方法使用三階段建模方法:a) 識別,b) 估計,c) 診斷檢查

識別

要使用 Box-Jenkins 方法,我們必須確保時間序列是平穩的。在我們的例子中,我們使用我們在前一部分中已經檢查過平穩性的股票的收益率。此外,基於自相關函數 (ACF) 和偏自相關函數 (PACF),可以確定 ARIMA 模型的 p、d 和 q 階。識別模型的另一種方法是 Akaike 信息准則 (AICc)。AIC 估計每個模型相對於其他每個模型的質量。

其中

  • ∑u^2= 殘差平方和
  • T = 觀察次數
  • k = 模型參數的數量 (p + q + 1)

很明顯,當模型中加入額外的滯后參數時,殘差總和會減少,但可能會出現過擬合的問題。AIC 處理過擬合和欠擬合的風險。將選擇 AIC 最低的模型。

auto.arima(rets )

可以通過上面的過程觀察到我們計算了各種 ARIMA 模型的 AIC ,並且我們推斷出合適的模型是 二階自回歸 (AR(2))

估計

為了估計參數的系數,我們使用最大似然。使用ARIMA(2, 0, 0)作為選擇模型,結果如下: 

model

因此,該過程可以描述為:

rt=0.0437∗rt−1−0.0542∗rt−2+ϵt 其中 ϵt 是白噪聲

診斷檢查

該程序包括觀察殘差圖及其 ACF & PACF 圖,並檢查 Ljung-Box 測試結果。如果模型殘差的 ACF 和 PACF 沒有顯示顯着滯后,則所選模型是合適的。

ggtsdisplay(plot)

ACF 和 PACF 圖很相似,自相關似乎為零。右下角圖表示殘差與正態分布 N(0, σ2σ2) 相比的直方圖。

為了進一步檢驗殘差不相關的假設,我們執行 Ljung-Box 檢驗。

QLB統計量不對稱地遵循具有 mpq 自由度的 X2 分布。零假設是指 H0:ρ1=ρ2=⋯=ρm=0

Box.test(resiuas)

我們不能拒絕原假設,因此殘差的過程表現得像白噪聲,所以沒有可能被建模。

GARCH 實現

盡管殘差的 ACF 和 PACF 沒有顯着滯后,但殘差的時間序列圖顯示出一些集群波動。重要的是要記住,ARIMA 是一種對數據進行線性建模的方法,並且預測寬度保持不變,因為該模型不會反映最近的變化或包含新信息。為了對波動性進行建模,我們使用自回歸條件異方差 (ARCH) 模型。ARCH 是時間序列數據的統計模型,它將當前誤差項的方差描述為先前時間段誤差項實際大小的函數。

我們假設感興趣的時間序列 rtrt 被分解為兩部分,可預測和不可預測部分,

其中 It−1 是時間 t−1 的信息集,並且  ϵt 是不可預測的部分。

不可預測的成分,可以表示為以下形式的 GARCH 過程:

其中 zt 是一個均值為零且方差等於 1 的獨立同分布隨機變量序列。 ϵt的條件方差是 σt,它是時間 t−1信息集的時變函數。

下一步是定義誤差項分解的第二部分,即條件方差 σt。對於這樣的任務,我們可以使用 GARCH(1, 1) 模型,表示為:

當殘差平方相關時,GARCH 過程有效。ACF 和 PACF 圖清楚地表明顯着相關性。

另一種檢驗平方殘差異方差性的方法是對 a1 和 β1參數進行顯着性檢驗。 

  1.  
    #模型定義
  2.  
    ugarchpec(varin ,
  3.  
    mean.model
  4.  
     
  5.  
    fit(sec = model.spec ')
  6.  
     

a1和 β1都顯着不同於零,因此假設殘差隨時間變化的波動率是合理的。

 σt−12 項的連續替換,GARCH 方程可以寫為:

當我們用優化給出的系數估計替換時,我們得到以下等式:

鑒於 0<β1<1,隨着滯后的增加,殘差平方的影響減小。

風險價值

風險價值(VaR)是一種基於當前頭寸的下行風險的統計量度。它估計在正常的市場條件下,一組投資在設定的時間段內可能會有多少損失。 

VaR 統計具有三個組成部分:a) 時間段,b) 置信水平,c) 損失金額(或損失百分比)。對於 95% 的置信水平,我們可以說最壞的每日損失不會超過 VaR 估計。如果我們使用歷史數據,我們可以通過取 5% 的分位數值來估計 VaR。對於我們的數據,這個估計是:

quante(res , 0.05)

qplot(ret)

紅色條表示低於 5% 分位數的收益率。

分布特征

為了估計 VaR,我們需要正確定義假設分布的相應分位數。對於正態分布,對應於 a = 5% 的分位數為 -1.645。經驗證據表明,正態性假設通常會產生較弱的結果。Jarque-Bera 檢驗可以檢驗股票收益服從正態分布的假設。

其中 S 是偏度,C 是峰度。正態分布樣本將返回JB 分數。低 p 值表明股票收益不是正態分布的。

ja.tst(rets)

qplot(ret , gom = 'desity') + geom_density

在上圖中,顯示了股票收益(藍色)和正態分布數據(紅色)的密度圖。下圖的垂直線代表 a = 0.05(淺綠色)和 a = 0.01(深綠色)的正常對應分位數。下圖表明對於 95% 的顯着性,使用正態分布可能會高估風險值。但是,對於 99% 的顯着性水平,正態分布會低估風險。

學生的 t 分布

為了更充分地模擬尾部的厚度,我們可以對股票收益使用其他分布假設。t 分布是對稱的鍾形分布,就像正態分布一樣,但尾部較重,這意味着它更容易產生遠離其均值的值。我們使用rugarch 包中的 fitdist 函數  來獲取 t 分布的擬合參數。

fitdispars

  1.  
    cat("對於 a = 0.05,正態分布的分位數值為:" ,
  2.  
    qnorm(p = 0.05) , "\n" ,
  3.  
    )

正如我們所觀察到的,95% 顯着性水平的分位數表明正態分布高估了風險,但 99% 未能發現異常值的存在,因此發生了對風險的低估。

Garch VaR 和Delta-normal 方法

Delta-normal 方法假設所有股票收益都是正態分布的。這種方法包括回到過去並計算收益的方差。風險價值可以定義為:

其中 μ 是平均股票收益,σ 是收益的標准差,a 是選定的置信水平,N−1 是逆 PDF 函數,生成給定 a 的正態分布的相應分位數。

這種簡單模型的結果常常令人失望,如今很少在實踐中使用。正態性和恆定每日方差的假設通常是錯誤的,我們的數據也是如此。

之前我們觀察到收益率表現出隨時間變化的波動性。因此,對於 VaR 的估計,我們使用 GARCH(1,1) 模型給出的條件方差。我們使用學生的 t 分布。對於此方法,風險價值表示為:

  是給定 t−1 信息的條件標准偏差,並且  是 t 分布的逆 PDF 函數。

qplot(y = rets , gom = 'point') + gem_pnt(col = 'lihtgrson')

紅線表示 GARCH 模型產生的 VaR,藍線表示 delta-normal VaR。

VaR預測

該 ugarchroll 方法允許執行的模型/數據集組合的滾動估計和預測。它返回計算預測密度的任何所需度量所需的分布預測參數。我們將最后 500 個觀測值設置為測試集,並對條件標准偏差進行滾動移動 1 步預測, . 我們每 50 次觀察重新估計 GARCH 參數。

  1.  
    roll = garhrol(spec = model.spec )
  2.  
     
  3.  
    #測試集 500 個觀察
  4.  
    mean(ret) + rolldesiy[,'Siga']*qdist(dis='std',

回測

讓  是 T 期間股票收益率低於 VaR 估計值的天數,其中如果  It 為 1,  和 如果  , It 為 0 . 因此,N 是樣本中觀察到的異常數。正如 Kupiec (1995) 所論證的那樣,失敗數遵循二項式分布 B(T, p)。

  1.  
     
  2.  
    for(i in 1:50 p[i]= (pbinom(q = (i-1 ) - pbinom(q ))
  3.  
     
  4.  
    qplot(y = p )

上圖表示由二項式分布給出的異常概率分布。預期數量為 25 (=500obs. x 5%)。兩條紅線表示 95% 的置信水平,較低的是 16  ,較高的是 35。因此,當我們檢查測試集上的異常時,我們期望 16 到 35 之間的數字表明 GARCH 模型預測成功。 

  1.  
    plot(VaR95, geom = 'line') +
  2.  
    geom_point

黑線代表 GARCH 模型給出的每日預測 VaR,紅點代表低於 VaR 的收益率。最后一步是計算異常的數量,並將其與使用 delta-normal 方法生成的異常進行比較。

cat('delta-normal 方法的異常數:', (sum(rets[759:1258] < (mean(r]

正如我們之前所說,我們預計 delta-normal 方法會高估風險。回測時,只有 14 倍的收益率低於 VaR 低於 95% 顯着性水平 (<16)。另一方面,在這種特殊情況下,GARCH 方法(23 個例外)似乎是一種有效的預測工具。

參考

Angelidis T., Benos A. and Degiannakis S. (December 2003). The Use of GARCH Models in VaR Estimation.


最受歡迎的見解

1.R語言基於ARMA-GARCH-VaR模型擬合和預測實證研究

2.R語言時變參數VAR隨機模型

3.R語言估計時變VAR模型時間序列的實證研究

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

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

6.R語言用向量自回歸(VAR)進行經濟數據脈沖響應

7.R語言實現向量自動回歸VAR模型

8.R語言隨機搜索變量選擇SSVS估計貝葉斯向量自回歸(BVAR)模型

9.R語言VAR模型的不同類型的脈沖響應分析


免責聲明!

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



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