拓端tecdat|R語(yǔ)言乘法GARCH模型對(duì)高頻交易數(shù)據(jù)進(jìn)行波動(dòng)性預(yù)測(cè)
原文鏈接:http://tecdat.cn/?p=22692?
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
在過(guò)去十年中,人們對(duì)高頻交易和模型的興趣成倍增長(zhǎng)。雖然我對(duì)高頻噪音中出現(xiàn)信號(hào)的有效性有一些懷疑,但我還是決定使用GARCH模型研究一下收益率的統(tǒng)計(jì)模型。與每日和較低頻率的收益不同,日內(nèi)高頻數(shù)據(jù)有某些特殊的特點(diǎn),使得使用標(biāo)準(zhǔn)的建模方法是無(wú)效的。在這篇文章中,我將使用花旗集團(tuán)2008年1月2日至2008年2月29日期間的1分鐘收益率。這個(gè)數(shù)據(jù)集刪除了異常值??紤]的日內(nèi)時(shí)間范圍是09:30至16:00,即證券交易所的正式交易時(shí)間。與大多數(shù)此類(lèi)關(guān)于日內(nèi)數(shù)據(jù)建模的研究一樣,當(dāng)天的第一個(gè)收益被刪除。每日數(shù)據(jù)從雅虎財(cái)經(jīng)下載。
getSymbols('C')
C = adjustOHLC(C, use.Adjusted = TRUE)
R_d = ROC(Cl(C), na.pad = FALSE)
考慮一下花旗集團(tuán)在上述樣本期間的1分鐘絕對(duì)收益的相關(guān)圖。
acf(abs((R_i))
有規(guī)律的模式非常明顯,大約每 390 個(gè)周期(1 天)重復(fù)一次,并顯示出開(kāi)盤(pán)和收盤(pán)時(shí)的波動(dòng)性增加。GARCH,以及更普遍的ARMA模型只能處理指數(shù)衰減,而不是這里看到的那種模式。為了使絕對(duì)收益去季節(jié)化,文獻(xiàn)中提出了幾種方法,如Andersen和Bollerslev(1997)的靈活傅里葉方法,以及Bollerslev和Ghysels(1996)的定期GARCH模型。但是,我發(fā)現(xiàn)這些模型都不太容易操作。Engle和Sokalska(2012)(以下簡(jiǎn)稱(chēng)ES2012)引入了乘法分量GARCH模型作為一種簡(jiǎn)單的替代方法。本文討論了它的實(shí)現(xiàn)、挑戰(zhàn)和使用這個(gè)模型的具體細(xì)節(jié)。
模型
考慮連續(xù)復(fù)利收益率 r_{t,i}? ,其中? t? 表示一天, i 表示計(jì)算收益率的定期間隔時(shí)間。在這個(gè)模型下,條件方差是每日和隨機(jī)(日內(nèi))成分的乘積,因此,收益可以表示為:。
其中 q_{t,i}是隨機(jī)的日內(nèi)波動(dòng)率,sigma_t是每日外生確定的預(yù)測(cè)波動(dòng)率, s_i是每個(gè)定期間隔 i 的日波動(dòng)率。預(yù)測(cè)波動(dòng)率 sigma_t是由外部的多因素風(fēng)險(xiǎn)模型得出的,但是同樣可以從每日 GARCH 模型中產(chǎn)生這種預(yù)測(cè)。該過(guò)程的季節(jié)性部分定義為:。
用殘差除以波動(dòng)率和日波動(dòng)率,就得到了歸一化殘差。
然后可以用它來(lái)生成波動(dòng)率的隨機(jī)分量 q_{t,i} 與 GARCH 的動(dòng)態(tài)關(guān)系。接下來(lái)的章節(jié)提供了一個(gè)使用花旗集團(tuán)數(shù)據(jù)集的模型演示。
?
估算
模型要求用戶(hù)傳遞一個(gè)xts對(duì)象,即所考慮時(shí)期的數(shù)據(jù)的預(yù)測(cè)日方差。
# 定義一個(gè)日模型
spec(list(armaOrder = c(1, 1)))
# 使用ugarchroll方法創(chuàng)建一個(gè)滾動(dòng)的預(yù)測(cè)
roll(spec)
#提取sigma 預(yù)測(cè)
sigma = as.xts(df[, 'Sigma'])
#現(xiàn)在估計(jì)日內(nèi)模型
spec( list(model = 'mcsGARCH'))
# DailyVar是預(yù)測(cè)日方差的必要xts對(duì)象
fit(data = R, spec, Var = sigma^2)
下面的圖表顯示了將波動(dòng)率分解為其不同的組成部分。使用標(biāo)準(zhǔn)的 GARCH 模型不可能捕捉到總波動(dòng)率的規(guī)律模式。
plot(fit@DiurnalVar^0.5))
預(yù)測(cè)
為預(yù)測(cè)編寫(xiě)代碼的最大挑戰(zhàn)是處理時(shí)間的對(duì)齊和匹配問(wèn)題,特別是未來(lái)的時(shí)間/日期,因?yàn)樵撃P鸵蕾?lài)于日內(nèi)分量,而日內(nèi)分量是特定的。與估計(jì)方法一樣,預(yù)測(cè)程序也要求提供所考慮的時(shí)期的預(yù)測(cè)波動(dòng)率。
我們用ugarchforecast估算。
forecast(fit2, n.ahead = 10, n.roll = 299, f_sigma^2)
仿真
與標(biāo)準(zhǔn)的GARCH仿真不同,區(qū)間時(shí)間在日內(nèi)GARCH中很重要,因?yàn)槲覀兩傻穆窂绞亲裱浅>唧w的定期抽樣的時(shí)間點(diǎn)。此外,需要再次提供所考慮的模擬期的模擬或預(yù)測(cè)日方差。這是一個(gè)xts對(duì)象,也可以選擇有m.sim列,這樣每個(gè)獨(dú)立的模擬都是基于日方差獨(dú)立模擬的調(diào)整殘差。下面的示例代碼顯示了對(duì)未來(lái)1分鐘間隔的10,000個(gè)點(diǎn)的模擬,并說(shuō)明了季節(jié)性成分的影響。
# dtime包含了數(shù)據(jù)集中唯一的區(qū)間點(diǎn)的集合
# (可從mcsGARCH模型的所有rugarch對(duì)象中獲得)
sim = sim(fit, n.sim = 10000,Var = var_sim)
#
plot(as.numeric(sim@simulation$DiurnalVar^0.5), type = 'l')
滾動(dòng)的回測(cè)和風(fēng)險(xiǎn)值
ugarchroll函數(shù)對(duì)于在回測(cè)應(yīng)用中測(cè)試模型的充分性非常有用,下面的代碼說(shuō)明了模型在數(shù)據(jù)期間的情況。
n = length(index(R_d['2008-01-01/2008-03-01']))
roll(spec, data = R, refit.window = 'moving')
效果比較理想。
如下圖所示,VaR能很好地處理日內(nèi)數(shù)據(jù)。觀察到的VaR峰值是開(kāi)盤(pán)前后的季節(jié)性因素造成的。
D = as.POSIXct(rownames(roll@forecast$VaR))
VaRplot(0.01, actual = xts(roll@forecast$VaR[, 3], D), VaR = xts(roll@forecast$VaR[,1], D))
展望
在乘法模型中增加額外的GARCH模型是非常 "容易 "的,如eGARCH、GJR等。另一個(gè)可能的擴(kuò)展方向是分別處理一周中每一天的晝夜效應(yīng)。
最后,這個(gè)模型不是 "上手即用 "的,需要在準(zhǔn)備日內(nèi)收益率數(shù)據(jù)時(shí)進(jìn)行一些思考。
?
參考文獻(xiàn)
Bollerslev, T., & Ghysels, E. (1996). Periodic autoregressive conditional heteroscedasticity. Journal of Business & Economic Statistics, 14(2), 139–151.
Andersen, T. G., & Bollerslev, T. (1997). Intraday periodicity and volatility persistence in financial markets. Journal of Empirical Finance, 4(2), 115–158.
最受歡迎的見(jiàn)解
1.在python中使用lstm和pytorch進(jìn)行時(shí)間序列預(yù)測(cè)
2.python中利用長(zhǎng)短期記憶模型lstm進(jìn)行時(shí)間序列預(yù)測(cè)分析
3.使用r語(yǔ)言進(jìn)行時(shí)間序列(arima,指數(shù)平滑)分析
4.r語(yǔ)言多元copula-garch-模型時(shí)間序列預(yù)測(cè)
5.r語(yǔ)言copulas和金融時(shí)間序列案例
6.使用r語(yǔ)言隨機(jī)波動(dòng)模型sv處理時(shí)間序列中的隨機(jī)波動(dòng)
7.r語(yǔ)言時(shí)間序列tar閾值自回歸模型
8.r語(yǔ)言k-shape時(shí)間序列聚類(lèi)方法對(duì)股票價(jià)格時(shí)間序列聚類(lèi)
9.python3用arima模型進(jìn)行時(shí)間序列預(yù)測(cè)