本節書摘來異步社群《量化金融r語言進階教程》一書中的第1章,第1.2節,作者: 【匈牙利】edina berlinger(艾迪娜•伯林格) , 等 譯者: 高蓉 責編: 胡俊英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
金融時間序列的波動率會随着時間變化,這在實證金融中已經是廣為熟悉和被接受的典型事實。但是,波動率的不可測性使得測量和預測它成為一項挑戰性任務。通常,以下3種經驗觀察推動了波動率模型的演變。
波動性聚集:它指金融市場上的這樣一種經驗觀察,平靜期常常跟着平靜期,而波動期常常跟着波動期。
資産收益率的非正态性:實證分析顯示,相對于正态分布,資産收益率分布趨向于厚尾性。
杠杆效應:這會導緻一種現象,波動率對正價格變動或負價格運動的反應往往不同。價格下降時波動率的增加幅度大于相似規模的價格上漲帶來的波動率變動。
在下列代碼中,我們示範了基于s&p資産價格的典型化事實。用我們已掌握的方法,從雅虎财經下載下傳資料:
我們的興趣目标是日收益率序列,是以從收盤價計算對數收益率。其實quantmod包提供了一種更簡單的方法,收益率可以直接計算:
ret <- dailyreturn(cl(snp), type='log')
波動率分析始于觀察自相關和偏自相關函數。我們希望對數收益率序列無關,但對數收益率的平方值或者絕對值都顯示出了顯著的自相關性。這意味着對數收益既不相關,也不獨立。
注意下列代碼中的par(mfrow=c(2,2))函數。通過它,可以重寫r中預設的圖形參數,把4張圖形組織成友善的表格形式:
上述代碼輸出如圖1-4所示。
接下來,我們來看s&p的日度對數收益率的直方圖和(或)經驗分布,并與同均值同标準差的正态分布進行比較。我們使用函數density(ret)計算正态分布的非參數經驗分布函數。再使用帶有附加參數add=true的函數curve()在剛剛畫好的圖形上繪出第二條線,如圖1-5所示。
很明顯可以看出尖峰厚尾性。但我們還得在數值上确認(使用moments包)樣本經驗分布的峰度超過正态分布的峰度(等于3)。和其他的軟體包不同,r報告名義峰度,而非超額峰度,結果如下:
放大圖形的上尾和下尾可能有用,僅改變圖形比例就可以,效果如圖1-6所示。
另一種有用的可視化練習是觀看對數尺度上的密度(圖1-7的左側部分)或者q-q圖(圖1-7的右側部分),它們是密度比較的常用工具。q-q圖描繪了經驗分位數對理論(正态)分布的圖形。如果樣本取自正态分布,它應該繪出一條直線。對這條直線的偏離表示存在厚尾性:
上述代碼的輸出如圖1-7所示。
現在,我們可以把注意力轉向波動率模組化。
廣義地說,金融計量經濟學文獻中有兩類模組化技術可以捕捉波動率的變化本質:garch族方法[engle(1982);bollerslev(1986)]和随機波動模型(stochastic volatility,sv)。garch類模型和(純粹的)sv類模組化技術的主要差別在于,給定曆史觀測後,前者的條件方差是可以找到,而在sv模型中,考慮所有可得資訊後,波動率依然無法預測。是以,sv模型的波動率本質上是隐性的,必須由測量方程濾出[比如,見andersen–benzoni(2011)]。換句話說,garch類模型意味着,可以通過曆史觀測值估計波動率,而在sv模型中,波動率自身有隐性的随機過程,是以推斷潛在的波動率過程需要已實作收益率作為觀測方程。
在本章中,基于兩種原因我們介紹garch方法的基本模組化技術。首先,它在應用工作中有更廣泛的使用。其次,由于方法背景上的多樣性,sv模型還不能被r包本地支援,而經驗分析的使用需要大量的定制。
r提供了多個包用于garch模組化,其中最著名的包是rugarch包、rmgarch包(處理多變量模型)以及fgarch包。但是,基本的tseries包也包含了一些garch功能。在本章中,我們會展示rugarch包的模組化能力。本章中的标記方法遵從rugarch包中各自的輸出和文檔慣例。
标準garch模型
garch(p,q)過程可以如下表示:
我們的實證案例是對蘋果公司股票日收盤價收益率序列的分析,時間跨度從2006年1月1日開始,到2014年3月31日結束。在分析開始之前,作為一種有益的練習,我們建議你重複本章中的資料探索分析,以便确定蘋果公司資料中的典型事實。
顯然,第一步是安裝包,如果它還未安裝:
通常,為了擷取資料,我們通過quantmod包和getsymbols()函數,基于收盤價計算收益率序列:
rugrach包的程式設計邏輯可以如下了解:無論你的目标是什麼(拟合、濾波、預測還是模拟),你首先需要指定一個模型作為系統對象(變量),再依次将它插入各個函數。模型可以通過調用ugrachspec()函數設定。下文的代碼設定了一個簡單的garch(1,1)模型(sgarch),均值方程中僅有一個常數mu :
一種很自然的處理方法是用日收益率時間序列資料拟合模型,即通過極大似然方法估計未知參數。
這個函數在一系列輸出中提供了
的參數估計:
我們可以通過生成對象(即僅僅通過鍵入這個變量名)的show()方法,獲得估計和多種診斷檢驗。我們也可以通過鍵入适當的指令得到一大批的其他統計量、參數估計、标準誤差和協方差矩陣估計。通過查閱ugarchfit對象類,可以得到完整的輸出清單,下文代碼展示了最重要的一部分:
标準的garch模型可以捕捉厚尾性和波動聚集性。但是,要想解釋杠杆效應引起的非對稱性,我們還需要更進階的模型。為了圖示非對稱性問題,我們接下來描述資訊沖擊曲線的概念。
資訊沖擊曲線,這一概念由pagan和schwert(1990)以及engle和ng(1991)提出,是一種圖示波動對沖擊反應的變化度量的有用工具。這個名字源于把新資訊影響市場運動看成沖擊的通常解釋。它們畫出了在不同規模沖擊下條件波動的變化,可以簡明地表達出波動的非對稱影響。在如下的代碼中,第一行對應着之前garch(1,1)模型定義計算的數值化的資訊沖擊,第二行建立了圖形:
上述代碼的輸出截圖如圖1-8所示。
正如我們所料,無論對正沖擊還是負沖擊,波動的響應都不存在非對稱性。現在,我們轉向也能相容非對稱性的模型。
指數garch模型(egarch)
nelson(1991)提出了指數garch模型。這種方法直接對條件波動率的對數進行模組化:
其中,e是期望算子。這個模型形式允許在變化的波動過程中存在乘法的動态。非對稱性是由參數{{alpha }_{i}} 刻畫。負值表示過程對負沖擊反應更大,正如在實際資料集的觀察。
為了拟合egarch模型,模型設定中唯一需要改變的參數是設定egarch模型類型。通過運作fitting函數,可以估計出其他參數[見coef()]。
如圖1-9所示,資訊沖擊曲線反映了條件波動對于沖擊反應的強烈非對稱性,并且證明了非對稱性模型的必要性。
門限garch(tgarch)
另一個著名的例子是tgarch模型,解釋更容易。tgarch設定了模型參數在一個确定的門限之上和之下是不同的。tgarch也是一種更一般的類(非對稱的幂arch類)的子模型,因為它在應用金融計量經濟學文獻中的廣泛深入的運用,我們單獨地讨論它。
tgarch模型的方程式如下:
其中
模型解釋很直接。arch系數依賴于曆史誤差項的符号。如果{{gamma }_{i}} 為正,負的誤差項會對條件波動率有更高的影響,正如我們之前在杠杆效應所見。
在r的rugarch包中,門限garch模型在一類更一般的garch模型架構中應用,稱為garch模型族[ghalanos(2014)]。
由于特定的函數形式,門限garch的資訊沖擊曲線在表示不同響應時變化更小。運作下列指令,會看到在零點處有一個扭結,如圖1-10所示。
rugarch包允許從指定的模型以一種簡單的方式模拟。當然,為了模拟,我們還需指定ugarchspec()内的模型參數,這可以通過fixed.pars參數完成。指定garch模型和給定條件均值之後,僅用ugarchpath()函數,就可以模拟出一個相應的時間序列:
一旦我們估計好嚴格拟合的模型,再來預測條件波動率隻剩一步之遙:
預測序列的繪圖方法給使用者提供了一個可選菜單,可以畫出預測的時間序列或者預測的條件波動率,如圖1-11所示。