R語言自學日記(19)-介紹ARCH/GARCH模型
The introduction of ARCH-GARCH Model
前言
如果我們想要估計一個資產的報酬率,很自然地我們會想要對其波動性做出一些調整,而波動性實際上就是估計式/實際資產資料的條件變異數(Conditional Variance),我們在先前談時間序列就一直有一個重要特徵是,序列的條件變異數並不會隨著時間 t 改變,但是到了資產報酬序列,事情就完全不同了,我們大概可以觀察到一些現象:
- 條件變異數會因為時點 t 而改變
- 波動具有持續性,也就是出現群聚現象(Volatility Clustering)
- 資產報酬的分配具有肥尾現象(Heavy Tail),也就是極端值較多
我們可以看到因為時間變化,以及跟電腦模擬出來的常態分配比較,股價報酬率的分配都有些許的差異。因此,我們在估計之前會希望有一個比標準常態分配更能夠用來模擬資產報酬變化的模型出現,這也是我們今天要介紹的兩個模型最主要的功能。
ARCH模型 (AutoRegressive Conditional Heteroskedasticity Model)
ARCH模型的主要概念就是,如果波動容易有群聚現象,那就令波動的條件變異數與前期波動的平方有正相關,也就是:
此外,我們必須限制c與係數alpha都大於等於0來確保變異數為正值,而且係數的總和必須小於1(自然,這是AR模型的性質,也就是之後的)。其中均數方程式你可以隨意設計,比方說你希望用一個ARMA模型來估計等等。最後,我們可以改寫我們的方程式,會得到以下性質:
ARCH模型被廣泛用於金融數據分析的原因是,可以集中反映變異數的變化,透過對於條件變異數的落後期數預測來最大程度上處理金融數據波動率的問題。接下來我們透過R語言來試著模擬ARCH模型,跟AR模型一樣,我們用ARCH(p)來代表擬合的落後期數,這邊我們使用fGarch套件包:
GARCH模型 (Generalized-ARCH Model)
接下來我們對ARCH做出一些擴充,就得到GARCH模型:
也就是說,不僅僅是誤差與過去q期誤差平方有正相關,其條件變異數也與過去p期的條件變異數有相關,我們就稱為GARCH模型,或是一般化的自迴歸條件變異數模型,這個模型在處理金融數據上特別的強大,因為對於ARCH模型來說,為了確保係數為正的限制,常常就必須與模型精準度做出相對的取捨,而GARCH的好處在於可以用更簡便的方式描述高落後期數的ARCH模型,並且細心的讀者可以發現,實際上GARCH模型就是對ARMA的誤差項進行一些可預測的擬合。
GARCH模型本身被提出了非常多的擴充:
GARCH-M模型:這個模型處理了均數的假設問題,假設均數是條件變異數的函數,等同於說均數是會受到波動影響的變化函數。
EGARCH指數模型:我們進一步針對資產報酬率在正負不同的時候,對財務波動產生的效果並非對稱的問題,根據觀察,資產報酬率為負的時候對於未來波動的影響往往比正報酬率來得大,因此我們將函數改寫成:
這個模型的概念除了透過將條件變異數改寫成對數形式以外,也應用衝擊函數,也就是誤差去除以條件變異數的根號值,這樣的改寫在於當衝擊是負數的時候,就會出現一個斜率係數 θ-1的函數去模擬原本的條件變異數(正數則為 θ+1),就可以解決上述的報酬率不對稱問題:
模擬E-GARCH模型
接下來,作為ARCH模型的延續,我們要來創建GARCH模型,這邊採用EGARCH模型來模擬我們的資料:
上面的參數基本上很好理解,我們必須指定GARCH以及均數要使用的階數或模型,唯一要注意的是我們使用ugarchfit時候所帶到的solver = solnp這一段,solnp是非線性問題的優化器,也就是當我們求解對象帶有非線性約束(Nonlinear Constraint)時候針對log-liklihood求解的函數。
結尾
GARCH模型的應用非常複雜,我這邊也並沒有花費很多篇幅講解諸如期數的設定以及各種優化函數的問題,且GARCH目前被不斷擴充,詳細的可以看以下的官方文件說明就可以了解。單純以商業應用而言,該模型的發揮之處似乎比較窄一點,因此,我們也就停在這裡,至於還有一些專題沒有提到比方像是DSGE模型或是抽樣、檢定方法等,因為大多都是在大規模的總體經濟分析上比較有發揮餘地,我也就不會詳述下去。
下一篇開始我會談到機器學習與深度學習在預測時間資料上面一些比較常見的方法,由於本系列的主題是R語言自學,我沒有打算從頭架構ML/DL的相關知識,僅擷取部分有關的知識放到Medium上,預計大概寫到25篇就該結束了,還請大家不吝幫忙點Clap唷~