拓端tecdat:Python金融時間序列模型ARIMA 和GARCH 在股票市場預(yù)測應(yīng)用
原文鏈接:http://tecdat.cn/?p=24407
原文出處:拓端數(shù)據(jù)部落公眾號
這篇文章討論了自回歸綜合移動平均模型 (ARIMA) 和自回歸條件異方差模型 (GARCH) 及其在股票市場預(yù)測中的應(yīng)用。
介紹
一個?ARMA (AutoRegressive-Moving Average)?有兩部分,AR(p)部分和MA(q)部分,表示如下


其中 L 是滯后算子,?i 是白噪聲。它可以通過?Box-Jenkins method. 我們可能會使用?PACF?繪制識別 AR 滯后階數(shù) p,和?ACF?圖以識別 MA 滯后階數(shù) q;或使用信息,例如?AIC?和?BIC?做模型選擇。
ARIMA (AutoRegressive Integrated Moving Average)?是 ARMA 的拓展,通過為非平穩(wěn)過程添加階數(shù)為 d 的積分部分。
ARIMA是針對價格水平或收益率的,而GARCH(廣義自回歸條件異方差)則試圖對波動率或收益率平方的聚類進(jìn)行建模。它將ARMA項擴(kuò)展到方差方面。
?


作為隨機(jī)波動率模型的離散版本,GARCH也能捕捉到股票市場的厚尾效應(yīng)。因此,將ARIMA和GARCH結(jié)合起來,預(yù)計在模擬股票價格時比單獨一個模型更適合。在這篇文章中,我們將把它們應(yīng)用于標(biāo)普500指數(shù)的價格。
ARIMA
首先,眾所周知,股票價格不是平穩(wěn)的;而收益可能是平穩(wěn)的。ADF單位根檢驗結(jié)果。
# 價格是已知的非平穩(wěn)的;收益是平穩(wěn)的
import adfuller
rsut = aduler(close)
prnt(f'ADF Satitic: {reslt[]}, pale: {rslt1]}') ?# null 假設(shè):單位根存在;不能拒絕 null。
relt = adfler(histet)
prnt(f'ADF Statistic: {reut[0]}, pvaue: {rslt[1]}') ? # 拒絕單位根的空假設(shè) ==> 平穩(wěn)
收益序列的 ADF p 值為 0,拒絕單位根的原假設(shè)。因此,我們在 ARIMA(p, d, q) 中接受 d=1,下一步是識別滯后 p 和 q。ACF 和 PACF 圖表明滯后最多 35 個工作日。如果我們按照圖表進(jìn)行擬合,將有太多參數(shù)無法擬合。一種解決方案是使用每周或每月圖表。在這里,我們將最大滯后時間限制為 5 天,并使用 AIC 選擇最佳模型。

for p in rage(6):
for q in rage(6):
ry:
mft = fit(disp=0)
ic[(p, q)] = fiaic
except:
pass
下一步是擬合模型并通過殘差統(tǒng)計評估模型擬合。殘差仍然顯示出一些自相關(guān),并且沒有通過正態(tài)性檢驗。由于滯后階數(shù)限制,這在某種程度上是預(yù)料之中的。
盡管如此,讓我們繼續(xù)最后一步并使用模型進(jìn)行預(yù)測。下面比較了對測試集的收益率預(yù)測和實際收益率。

收益率預(yù)測以 0% 為中心,置信區(qū)間在 ±2% 之間。結(jié)果并不是特別令人印象深刻。畢竟,市場正在經(jīng)歷一個動蕩的階段,在預(yù)測時間窗口內(nèi)甚至下跌了 6%。
GARCH
讓我們看看加入GARCH效果是否會產(chǎn)生更好的結(jié)果。建模過程類似于ARIMA:首先識別滯后階數(shù);然后擬合模型并評估殘差,最后如果模型令人滿意,就用它來預(yù)測。
我們將 AR 滯后和 GARCH 滯后都限制為小于 5。結(jié)果最優(yōu)階為 (4,2,2)。
for l in rage(5):
for p in rage(1, 5):
for q in rage(1, 5):
try:
mdl = arch(is_et, man='ARX', ?vol='Garch', p=p, o=0, q=q, dist='Nomal')
fit(last_obs=spldat)
dc_ic[(l, p, q)] =aic
except:
pass
接下來讓我們根據(jù)選擇的最佳參數(shù)來擬合模型,如下所示。證實了均值模型是AR(4),方差模型是GARCH(2, 2)。一些系數(shù)在統(tǒng)計上不顯著。

最后但并非最不重要的是,預(yù)測區(qū)間從±4%下降到±3%,然后又反彈到±5%,這清楚地表明了模型的波動性集群。請注意,這里是單步滾動預(yù)測,應(yīng)該比靜態(tài)的多期預(yù)測要好。
?

趨勢平穩(wěn)和差分平穩(wěn)
趨勢平穩(wěn),即確定性趨勢,具有確定性均值趨勢。相反,差分平穩(wěn)具有隨機(jī)趨勢。前者可以用OLS估計,后者需要先求差分。
考慮一個簡單的過程

如果 φ<1,則過程是趨勢平穩(wěn)的;也就是說,如果我們減去趨勢 at,則過程變得平穩(wěn)。若φ=1,則差分平穩(wěn)。將第二個方程代入第一個方程很容易看出隨機(jī)性,并將方程改寫為


最受歡迎的見解
1.R語言對S&P500股票指數(shù)進(jìn)行ARIMA + GARCH交易策略
2.R語言改進(jìn)的股票配對交易策略分析SPY—TLT組合和中國股市投資組合
3.R語言時間序列:ARIMA GARCH模型的交易策略在外匯市場預(yù)測應(yīng)用
4.TMA三均線期指高頻交易策略的R語言實現(xiàn)
5.r語言多均線量化策略回測比較
6.用R語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例
7.r語言預(yù)測波動率的實現(xiàn):ARCH模型與HAR-RV模型
8.R語言如何做馬爾科夫轉(zhuǎn)換模型markov switching model
9.matlab使用Copula仿真優(yōu)化市場風(fēng)險