摘要 本文介紹時間序列分析中的 GARCH 模型,闡述使用 mean model 和 volatility model 對收益率序列聯(lián)合建模的方法,。 1 引言之前,,我們推出了《寫給你的時間序列分析》系列,通過四篇文章介紹了金融數(shù)據(jù)時序分析建模的基礎(chǔ)知識,。這四篇文章的內(nèi)容分別為: 基礎(chǔ)篇:介紹金融時序特性和進行時間序列分析的目的,;解釋時間序列分析中的核心概念:自相關(guān)性。 初級篇:說明時間序列建模的過程,;介紹時間序列分析中的最基本模型:白噪聲和隨機游走,。 進階篇:介紹時間序列分析中常用的線性模型:AR、MA 以及 ARMA,。 應(yīng)用篇:利用 ARMA 對上證指數(shù)收益率序列建模,,并以此產(chǎn)生交易信號、構(gòu)建投資策略,,以此說明時間序列分析在量化投資領(lǐng)域的應(yīng)用,。 通過前述四篇文章的介紹可知,金融時間序列分析的核心是找到資產(chǎn)收益率之間的相關(guān)性,,并利用它,。以 2012 年 1 月 1 日到 2019 年 7 月 31 日上證指數(shù)日頻對數(shù)收益率為例,假設(shè)使用 ARMA(3, 2) 對其建模,,并考察其殘差,。下圖展示了殘差時序以及它的 ACF 和 Partial ACF(PACF)。 從 ACF 和 PACF 上不難看出,,在很多 lags 上,,自相關(guān)系數(shù)是超過 95% 的置信區(qū)間的;而從最上面一副圖中也能明顯看出收益率序列的一大特征 —— 波動率聚類,。如果把殘差取平方,,并再次作圖,上述波動率聚類則會變得更加直觀,。它在數(shù)學(xué)上被稱為條件異方差(conditional heteroskedasticity),。 上述結(jié)果意味著,僅使用 ARMA 對收益率序列建模是不夠的,,它對條件異方差無能為力,。為了解決這個問題需要對波動率建模,即使用 Generalized Autoregressive Conditional Heteroskedasticity(GARCH)模型,。 不介紹 GARCH 的時間序列分析系列大抵是不完整的,;此外也有小伙伴留言說能不能寫寫 GARCH。所以今天就來補作業(yè)了,,也因此給這篇文章起了個“補完篇”的名字,。 考慮到本系列前四篇參考了 上相關(guān)文章的“優(yōu)良傳統(tǒng)”,我在本文第 3 小節(jié)介紹 GARCH 的數(shù)學(xué)模型時也會再次借鑒(參考文獻中有鏈接),。最后,,再給 打個 call(必須給足它 credits),它上面的所有文章都非常值得一讀,。 下文以資產(chǎn)收益率序列作為研究對象,,介紹相關(guān)概念:第 2 節(jié)解釋模型的結(jié)構(gòu);第 3 節(jié)介紹 ARCH 和 GARCH 的數(shù)學(xué)背景知識,;第 4 節(jié)說明如何使用 ARMA 和 GARCH 對收益率的條件均值和條件方差進行聯(lián)合建模,;第 5 節(jié)針對上證指數(shù)做簡單實證;第 6 節(jié)總結(jié)全文,。 2 模型的結(jié)構(gòu)首先來看看“條件異方差”一詞,。 波動率聚類說明不同階段收益率的方差是不同的,這就是異方差性(heteroskedastic),。而很多時候,,資產(chǎn)收益率表現(xiàn)出高波動伴隨著高波動時期(大牛市或者股災(zāi)的時候),而低波動又往往伴隨著低波動,,因此波動率之間是存在序列相關(guān)性的,,這就是“條件”一詞的來源。將二者結(jié)合就有了條件異方差,。 使用 GARCH 建模,,是為了在 r_t 的線性自相關(guān)性之上考慮其方差之間的相關(guān)性,即把均值模型和波動率模型放在一個整體框架中考慮(Tsay 2010),。假設(shè) t – 1 時刻所有已知的信息為 F_{t-1},,則當(dāng)給定 F_{t-1} 時,t 時刻收益率的條件均值和條件方差可寫為: 對于條件均值 μ_t,,它可以是一個常數(shù),,也可以使用我們已經(jīng)掌握的 ARMA 模型對其建模。一旦有了 μ_t 的模型,,r_t 可以寫作: 上式中 ε_t 是 t 時刻的擾動或者新息,。結(jié)合上式和條件方差的定義可知,t 時刻收益率 r_t 的條件方差由 ε_t 的方差決定: 從模型結(jié)構(gòu)不難看出,,為了考慮條件異方差則需要對 ε_t 建模,,而這正是 GARCH 的目標(biāo),。 3 ARCH 和 GARCH在介紹 GARCH 之前不妨先來看看 ARCH,畢竟 GARCH 只是在它前面加了一個 G(generalized)從而將其推廣了,。ARCH 由 Engle (1982) 提出,,它是第一個對波動率建模的系統(tǒng)性框架。 對于 ε_t,,考慮如下模型(其中 ω_t 表示均值為 0,、方差為 1 的白噪聲): 把 σ_t 的表達式帶回到 ε_t 中可得: 這個關(guān)于序列 {ε_t} 的模型稱作一階自回歸條件異方差模型,,也就是最簡單的 ARCH(1) 過程 —— 括號里的系數(shù) 1 表明自回歸模型中只考慮了 lag = 1 階,。為了直觀看出方差序列之間的關(guān)系,,將上式兩邊平方: 上式清晰的顯示了 var(ε_t) 和 var(ε_{t-1}) 之間的關(guān)系。前面我們提到,,{ε_t} 的模型是一個 ARCH(1) 過程,。從 var(ε_t) 和 var(ε_{t-1}) 的關(guān)系可知,一個 ARCH(1) 過程的方差 —— 即 var(ε_t) —— 正是一個 AR(1),,即一階自回歸過程,。 接下來我們照貓畫虎,將 ARCH(1) 簡單推廣到多階 lags,,就得到 ARCH(p) 過程: 類似的,,我們可以說一個 ARCH(p) 過程的方差是一個 AR(p),即 p 階自回歸過程,;這相當(dāng)于對方差使用 AR(p) 來建模,。既然能對方差用 AR(p) 來建模,那么很自然的一個問題就是,,為什么不把 MA(q) 也加上得到方差的 ARMA(p, q) 模型呢,?如此便引出了 GARCH(p, q)。 對于 ε_t,,考慮如下模型: 這就是大名鼎鼎的 GARCH(p, q) 模型 —— (p, q) 階的廣義自回歸條件異方差模型,。有了 GARCH 我們就可以用它對收益率建模了。 4 使用 ARMA + GARCH 對收益率建模本小節(jié)來看看如何在第二節(jié)介紹的體系下使用 ARMA(p, q) 和 GARCH(p', q') 來對 r_t 進行聯(lián)合建模,。為了區(qū)分條件均值模型和條件方差模型中的自回歸階數(shù),,我特意用了 (p, q) 和 (p', q') 表示。 將前面的內(nèi)容整合到一起得到關(guān)于 r_t 的模型如下: 當(dāng)我們對 r_t 建模時,,需要同時指定 mean model(對 μ_t 建模)以及 volatility model(對 ε_t 建模),。上式使用了 ARMA(p, q) 作為 mean model,但根據(jù)實際問題也可以使用更簡單的模型,,比如 μ_t = 常數(shù),;使用了 GARCH(p', q') 作為 volatility model。最后使用已有的數(shù)據(jù)對這兩個模型的參數(shù)進行聯(lián)合估計,。 在實際應(yīng)用中,,無論使用 python 還是 R 的相關(guān) package,,在調(diào)用時都要指定 mean model 和 volatility model。舉個例子,,在 上一篇使用 ARMA 對 mean 建模,、用 GARCH 對 volatility 建模來交易 S&P500 指數(shù)的例子中,作者對兩個模型同時進行了設(shè)定,。 在具體 GARCH 建模時可以遵如下步驟(Tsay 2010):
以上五步構(gòu)成了對條件均值和條件方差的聯(lián)合建模,,使用得到的模型就可以對未來的 r_t 以及 var(r_t) 進行預(yù)測。 在離開本節(jié)之前,,我們再來介紹兩個使用 GARCH 建模時不十分正確的做法(希望能幫你排雷),。 錯誤做法一:用 ARMA(p, q) 的階數(shù)作為 GARCH(p', q') 的階數(shù) 網(wǎng)上一些資料中提過這樣的做法:首先是用 ARMA 對 r_t 建模、確定最優(yōu)的參數(shù) p 和 q,;然后將它們作為波動率模型的階數(shù),,即 GARCH(p, q),同時在聯(lián)合建模時僅假設(shè) mean model = constant,。這種做法使用從 r_t 線性關(guān)系找到的 p 和 q 去對 r_t 的波動率的關(guān)系建模,,然后又假設(shè) mean model 是常數(shù),著實令人費解,。 錯誤做法二:將 mean model 和 volatility model 拆開估計 這種做法聽上去更“靠譜”一些,。首先是用 ARMA 對 r_t 建模,確定最優(yōu)參數(shù) p 和 q,;然后使用 ARMA 模型的殘差為被解釋變量,,對其進行 GARCH(p', q') 建模;第二步中因為被解釋變量是殘差,,因此 GARCH 模型的 mean model = 0,,即假設(shè)殘差均值為零。 這種做法看似合理,,但是從條件均值角度來說,,它也僅僅是利用了 ARMA 這一步(第二步的 GARCH 建模由于假設(shè) mean model = 0 因此對條件均值不再有影響),而沒有利用 ARMA + GARCH 的聯(lián)合估計考察異方差對收益率序列的影響,。通常來說,,就 ARMA 的參數(shù)而言,,僅使用 ARMA 和聯(lián)合使用 ARMA + GARCH 的結(jié)果是有差異的。 舉個例子:使用 AR(2) 和 AR(2) + GARCH(1, 1) 兩種方法對收益率建模,。 插播一句:有小伙伴可能會問,,為什么用 AR 不用 ARMA。這是因為 python 中的 arch package 目前所支持的 mean model 中不包括 ARMA 模型,,但包括 AR 模型,。R 在這方面支持的更強大一些。 OK,,回到例子,。下表展示了兩種方法建模時,AR(2) 的參數(shù),,可以看出它們之間的差異,。 所以,GARCH 模型雖好,,但是 use with care,。我們應(yīng)時刻搞清楚是在對什么建模、怎么建模,,mean model 是什么,、volatility model 又是什么。 5 簡單實證最后通過一個 toy example 來介紹 ARMA + GARCH 的應(yīng)用,。 以下對上證指數(shù)自 2012 年 1 月到 2019 年 7 月的日頻對數(shù)收益率進行時間序列建模,,并使用該模型預(yù)測下一個交易的收益率。如果預(yù)測為正則選擇持有上證指數(shù),,反之則空倉,;假設(shè)以收盤價成交且不考慮任何交易成本。 在構(gòu)建策略時,,采用長度為 T 的滾動窗口歷史數(shù)據(jù),。首先是用 AR 對收益率建模(因為 python arch package 不支持 ARMA 作為 mean model,所以僅使用 AR(p) 模型),,并根據(jù) AIC 選擇最優(yōu) p 值(p 取值范圍為 0 到 5),;然后以該 AR(p) 作為 mean model,并使用 GARCH(1, 1) 模型為 volatility model,,進行聯(lián)合參數(shù)估計,。使用最終的模型預(yù)測下一個交易日收益率。此外作為比較,,我們也考慮僅采用 AR(p) 來對收益率建模,,而不考慮條件異方差的影響。 首先來看 T = 60 個交易日的情況。下圖展示了 AR 和 AR + GARCH 兩種策略的凈值和回撤曲線,。就表現(xiàn)而言,,它們均戰(zhàn)勝了上證指數(shù)本身(benchmark)。但是在股災(zāi)之后(波動率變大了),,這兩種模型的表現(xiàn)發(fā)生了分化,,就這個簡單實證而言,AR 的效果比 AR + GARCH 更好,。 再來看看把滾動窗口長度換到 T = 252 的情況,。結(jié)果和上面接近,依然是 AR 戰(zhàn)勝了 AR + GARCH 的組合,。 從本小節(jié)的例子來看,,加入了 GARCH 的策略似乎并沒有僅使用 AR 的策略優(yōu)異。我在最后的結(jié)語部分對此做簡單評價,。 6 結(jié)語作為“補完篇”,,本文填了《寫給你的時間序列分析》最后一個大坑 —— GARCH,;寫作的重點在于闡述使用 mean model 和 volatility model 對收益率序列聯(lián)合建模,,以及在一個整合的框架下對兩種模型的參數(shù)進行聯(lián)合估計。 本文的第 5 節(jié)給出了一個簡單實證,。因 python arch package 的功能所限,,實證中的 mean model 僅采用了 AR 模型。感興趣的小伙伴不妨嘗試 R 的相關(guān) packages,。 從實證結(jié)果來看,,加入 GARCH 似乎沒什么效果。但不要忘了,,我們并沒有對 GARCH 的參數(shù)進行任何優(yōu)化,,也沒有額外利用其對波動率的建模來添加更加復(fù)雜的規(guī)則 —— 比如 volatility scaling。因此,,僅僅基于這個簡單的例子難以對 GARCH 的貢獻做出任何正確的評判,。 對于量化投資的研究來說,構(gòu)建出策略并看到回測出來的凈值曲線無疑是最令人激動的,。然而,,真正研究工作的核心卻在于搞懂每個模型的原理以及它的作用,而這個過程注定是枯燥的,。Quantstart Team 在其時間序列分析系列文章(以及其他系列)中不厭其煩的介紹每個基礎(chǔ)模型,,從簡單到復(fù)雜,像搭積木一樣為讀者構(gòu)建知識體系,,令人敬佩,。 現(xiàn)在,我們有了時間序列分析的各個 building blocks。但是,,能夠用它們做什么,、如何去更科學(xué)的對收益率分析、預(yù)測,,還需有經(jīng)驗的積累,。最后,我想以下面這段出自 Quantstart 的話作為本系列的結(jié)束,,也希望與各位共勉,。
參考文獻
|
|