R語(yǔ)言時(shí)間序列:ARIMA / GARCH模型的交易策略在外匯市場(chǎng)預(yù)測(cè)應(yīng)用
原文鏈接:http://tecdat.cn/?p=17622
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
?
?
最近,我們繼續(xù)對(duì)時(shí)間序列建模進(jìn)行探索,研究時(shí)間序列模型的自回歸和條件異方差族。我們想了解自回歸移動(dòng)平均值(ARIMA)和廣義自回歸條件異方差(GARCH)模型。它們?cè)诹炕鹑谖墨I(xiàn)中經(jīng)常被引用。
接下來(lái)是我對(duì)這些模型的理解,基于擬合模型的預(yù)測(cè)的一般擬合程序和簡(jiǎn)單交易策略的摘要。
?
這些時(shí)間序列分析模型是什么?
?
擬合ARIMA和GARCH模型是一種發(fā)現(xiàn)時(shí)間序列中的觀測(cè)值,噪聲和方差影響時(shí)間序列的方式。適當(dāng)?shù)財(cái)M合的這種模型將具有一定的預(yù)測(cè)效用,當(dāng)然前提是該模型在將來(lái)的一段時(shí)間內(nèi)仍非常適合基礎(chǔ)過(guò)程。
ARMA
ARMA模型是自回歸(AR)模型和移動(dòng)平均(MA)模型的線性組合。AR模型其預(yù)測(cè)變量是該序列的先前值。MA模型在結(jié)構(gòu)上類似于AR模型,除了預(yù)測(cè)變量是噪聲項(xiàng)。p,q階的自回歸移動(dòng)平均模型– ARMA(p,q)–是兩者的線性組合,可以定義為:

其中 w是白噪聲,而a和 b是模型的系數(shù)。
ARIMA(p,d,q)模型是ARMA(p,q)模型,它們的差值是d倍-或積分(I)-以產(chǎn)生平穩(wěn)序列。
GARCH
最后,GARCH模型還試圖說(shuō)明時(shí)間序列的異方差行為(即,波動(dòng)性聚類的特征)以及該序列先前值的序列影響(由AR解釋)和噪聲項(xiàng)(由MA解釋)。GARCH模型使用方差本身的自回歸過(guò)程,也就是說(shuō),它使用方差的歷史值來(lái)說(shuō)明方差隨時(shí)間的變化。
那么我們?nèi)绾螒?yīng)用這些模型?
有了這種背景,我接下來(lái)將ARIMA / GARCH模型擬合到EUR / USD匯率,并將其用作交易系統(tǒng)的基礎(chǔ)。使用擬合程序估算每天的模型參數(shù),然后使用該模型預(yù)測(cè)第二天的收益,并相應(yīng)保持一個(gè)交易日。
在每個(gè)交易日結(jié)束時(shí),會(huì)使用滾動(dòng)返回窗口來(lái)擬合最佳ARIMA / GARCH模型。擬合過(guò)程基于對(duì)參數(shù)的搜索,以最小化Aikake信息準(zhǔn)則,但是也可以使用其他方法。例如,我們可以選擇最小化貝葉斯信息準(zhǔn)則的參數(shù),這可以通過(guò)懲罰復(fù)雜模型(即具有大量參數(shù)的模型)來(lái)減少過(guò)度擬合。
我選擇使用1000天的滾動(dòng)窗口來(lái)擬合模型,但這是優(yōu)化的參數(shù)。有一種情況是在滾動(dòng)窗口中使用盡可能多的數(shù)據(jù),但這可能無(wú)法足夠快地捕獲不斷變化的模型參數(shù)以適應(yīng)不斷變化的市場(chǎng)。
這是代碼:
### ARIMA / GARCH交易模型
#獲取數(shù)據(jù)并初始化對(duì)象以保存預(yù)測(cè)
EURUSD <- read.csv('EURUSD.csv', header = T)
returns <- diff(log(EURUSD$C)) ## ROC也可以使用:默認(rèn)情況下計(jì)算對(duì)數(shù)
#遍歷每個(gè)交易日,從滾動(dòng)窗口中估計(jì)最佳模型參數(shù)
#并預(yù)測(cè)第二天的收益
for (i in 0:forecasts.length) {
??roll.returns <- returns[(1+i):(window.length + i)] #創(chuàng)建滾動(dòng)窗口
??# 估計(jì)最佳ARIMA模型
??for (p in 0:5) for (q in 0:5) { #將可能的階限制為p,q <= 5
????if (p == 0 && q == 0) next #將可能的階限制為p,q <= 5
??????current.aic <- AIC(arimaFit)
??????if (current.aic < final.aic) { #如果AIC降低則保留階數(shù)
????????final.aic <- current.aic
????????final.order <- c(p,0,q)
????????final.arima <- arima(roll.returns, order = final.order)
??????}
????}
????else next
??}
??# 指定并擬合GARCH模型
??spec = ugarchspec(
??# 指定并擬合GARCH模型
??# 模型并不總是收斂-在這種情況下,將0值分配給預(yù)測(cè)值和p.val
??if (is(fit, "warning")) {
????forecasts[i+1] <- 0
????directions[i+1] <- ifelse(x[1] > 0, 1, -1) #僅定向預(yù)測(cè)
????forecasts[i+1] <- x[1] # 預(yù)測(cè)的實(shí)際值
????print(forecasts[i])
????# 殘差分析
????resid <- as.numeric(residuals(fit, standardize = TRUE))
}
forecasts.ts <- xts(forecasts, dates[(window.length):length(returns)])
# 創(chuàng)建滯后的序列預(yù)測(cè)
ag.direction <- ifelse(ag.forecasts > 0, 1, ifelse(ag.forecasts < 0, -1, 0))
# 創(chuàng)建滯后的序列預(yù)測(cè)
ag.direction.returns <- ag.direction * returns[(window.length):length(returns)]
ag.direction.returns[1] <- 0 # remove NA
# 創(chuàng)建ARIMA / GARCH買入持有的回測(cè)
ag.curve <- cumsum( ag.direction.returns)
# 繪制兩條曲線:策略收益和累積收益
plot(x = both.curves[,"Strategy returns"], xl
首先,僅是方向性預(yù)測(cè):在預(yù)測(cè)正收益時(shí)購(gòu)買,在預(yù)測(cè)負(fù)收益時(shí)出售。這種方法的結(jié)果如下所示(不包含交易費(fèi)用): 在上面的模型擬合過(guò)程中,我保留了實(shí)際的預(yù)測(cè)收益值以及預(yù)測(cè)收益的方向。我想研究預(yù)測(cè)返回值的大小的預(yù)測(cè)能力。具體來(lái)說(shuō),當(dāng)預(yù)測(cè)回報(bào)的幅度低于某個(gè)閾值時(shí)進(jìn)行過(guò)濾交易會(huì)改善策略的性能嗎?下面的代碼以較小的返回閾值執(zhí)行此分析。為簡(jiǎn)單起見,我將預(yù)測(cè)對(duì)數(shù)收益率轉(zhuǎn)換為簡(jiǎn)單收益率,以便能夠控制預(yù)測(cè)的信號(hào)并易于實(shí)現(xiàn)。

# 僅在預(yù)測(cè)超過(guò)閾值幅度時(shí)測(cè)試進(jìn)入交易
simp.forecasts <- exp(ag.forecasts) - 1
ag.threshold.returns[1] <- 0 # 刪除缺失
ag.threshold.curve <- cumsum(ag.threshold.returns))
# 繪制兩條曲線:策略收益和累積收益
plot(x = both.curves[,"Strategy returns"], xlab = "Time", y
?結(jié)果覆蓋了原始策略:?在我看來(lái),我們擬合某段時(shí)間的ARIMA / GARCH模型可能比其他時(shí)間更好或更糟地表示了基礎(chǔ)過(guò)程。當(dāng)我們對(duì)模型缺乏信心時(shí),過(guò)濾交易可能會(huì)改善性能。這種方法要求評(píng)估每天模型擬合的統(tǒng)計(jì)顯著性,并且僅在顯著性超過(guò)特定閾值時(shí)才輸入交易。有許多方法可以實(shí)現(xiàn)這一點(diǎn)。首先,我們可以檢查模型殘差的相關(guān)圖,并在此基礎(chǔ)上判斷擬合優(yōu)度。理想情況下,殘差的相關(guān)圖類似于白噪聲過(guò)程,沒(méi)有序列相關(guān)性。殘差的相關(guān)圖可以在R中構(gòu)造如下:

?
acf(fit@fit$residuals,?main?=?'ACF of Model Residuals')
?

盡管此相關(guān)圖表明模型擬合良好,但顯然它不是一種很好的方法,因?yàn)樗蕾囉谥饔^判斷,更不用說(shuō)人類有能力審查每天的模型。更好的方法是檢查L(zhǎng)jung-Box統(tǒng)計(jì)量是否適合模型擬合。Ljung-Box是用于評(píng)估擬合模型殘差的自相關(guān)是否與零顯著不同的假設(shè)檢驗(yàn)。在該檢驗(yàn)中,零假設(shè)是殘差的自相關(guān)為零;另一種是我們的時(shí)間序列分析具有序列相關(guān)性。否定空值并確認(rèn)替代值將意味著該模型不是很好的擬合,因?yàn)闅埐钪写嬖跓o(wú)法解釋的結(jié)構(gòu)。Ljung-Box統(tǒng)計(jì)量在R中的計(jì)算方式如下:
Box-Ljung test
data: resid
X-squared = 23.099, df = 20, p-value = 0.284
在這種情況下,p值可以證明殘差是獨(dú)立的,并且該特定模型非常合適。作為解釋,為了增加殘差的自相關(guān),Ljung-Box測(cè)試統(tǒng)計(jì)量(在上面的代碼輸出中為X平方)變得更大。p值是在原假設(shè)下獲得大于或大于檢驗(yàn)統(tǒng)計(jì)量的值的概率。因此,在這種情況下,高p值是殘差獨(dú)立性的證據(jù)。
將Ljung-Box檢驗(yàn)應(yīng)用于每天的模型擬合可發(fā)現(xiàn)很少幾天獨(dú)立殘差的零假設(shè)被拒絕,因此將策略擴(kuò)展為過(guò)濾模型擬合不太可能增加太多價(jià)值:

時(shí)間序列分析結(jié)論和未來(lái)工作
在回溯測(cè)試期間,ARIMA / GARCH策略的表現(xiàn)優(yōu)于歐元/美元匯率的買入和持有策略,但是,該表現(xiàn)并不出色。似乎可以通過(guò)過(guò)濾諸如預(yù)測(cè)幅度和模型擬合優(yōu)度之類的特征來(lái)提高策略的性能,盡管后者在此特定示例中并沒(méi)有增加太多價(jià)值。另一個(gè)過(guò)濾選項(xiàng)是為每天的預(yù)測(cè)計(jì)算95%的置信區(qū)間,并且僅在每個(gè)信號(hào)相同時(shí)才輸入交易,盡管這會(huì)大大減少實(shí)際進(jìn)行的交易數(shù)量。
GARCH模型還有許多其他種類,例如指數(shù),積分,二次,閾值和轉(zhuǎn)換等。與本示例中使用的簡(jiǎn)單GARCH(1,1)模型相比,這些方法可能會(huì)或可能不會(huì)更好地表示基礎(chǔ)過(guò)程。
我最近發(fā)現(xiàn)非常有趣的一個(gè)研究領(lǐng)域是通過(guò)不同模型的智能組合對(duì)時(shí)間序列進(jìn)行預(yù)測(cè)。例如,通過(guò)取幾個(gè)模型的單個(gè)預(yù)測(cè)的平均值,或?qū)︻A(yù)測(cè)的信號(hào)進(jìn)行多數(shù)表決。要借用一些機(jī)器學(xué)習(xí)的術(shù)語(yǔ),這種“集合”模型通常會(huì)比任何組合模型產(chǎn)生更準(zhǔn)確的預(yù)測(cè)。也許有用的方法是使用經(jīng)過(guò)適當(dāng)訓(xùn)練的人工神經(jīng)網(wǎng)絡(luò)或其他統(tǒng)計(jì)學(xué)習(xí)方法來(lái)對(duì)此處提出的ARIMA / GARCH模型進(jìn)行預(yù)測(cè)。也許我們可以期望ARIMA / GARCH模型能夠捕獲時(shí)間序列的任何線性特征,而神經(jīng)網(wǎng)絡(luò)可能非常適合非線性特征。
如果您有任何想法可以改善時(shí)間序列分析模型的預(yù)測(cè)準(zhǔn)確性,歡迎在下方評(píng)論或聯(lián)系我們。
?
?

最受歡迎的見解
1.HAR-RV-J與遞歸神經(jīng)網(wǎng)絡(luò)(RNN)混合模型預(yù)測(cè)和交易大型股票指數(shù)的高頻波動(dòng)率
2.R語(yǔ)言中基于混合數(shù)據(jù)抽樣(MIDAS)回歸的HAR-RV模型預(yù)測(cè)GDP增長(zhǎng)
3.波動(dòng)率的實(shí)現(xiàn):ARCH模型與HAR-RV模型
4.R語(yǔ)言ARMA-EGARCH模型、集成預(yù)測(cè)算法對(duì)SPX實(shí)際波動(dòng)率進(jìn)行預(yù)測(cè)
5.GARCH(1,1),MA以及歷史模擬法的VaR比較
6.R語(yǔ)言多元COPULA GARCH 模型時(shí)間序列預(yù)測(cè)
7.R語(yǔ)言基于ARMA-GARCH過(guò)程的VAR擬合和預(yù)測(cè)
8.matlab預(yù)測(cè)ARMA-GARCH 條件均值和方差模型
9.R語(yǔ)言對(duì)S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略