波動率

rugarch:GARCH 外部回歸器

  • July 27, 2016

我目前正在使用 R 中很棒的 rugarch 包。但是,我嘗試測試外部回歸器功能。我實現了一個 GARCH(1,1) 過程並將其與一個 GARCH(0,1) 過程進行比較,在該過程中我將滯後平方收益添加為外部回歸量。結果應該是相同的,但不是。你們有誰知道我的錯誤在哪裡?非常感謝您的幫助。

library(rugarch)
library(quantmod)
getSymbols('C', from = '2000-01-01')
C = adjustOHLC(C, use.Adjusted = TRUE)
R_d = ROC(Cl(C), na.pad = FALSE)

extReg = R_d[1:length(R_d)-1]^2
spec = ugarchspec(mean.model = list(armaOrder = c(0, 0),include.mean = FALSE), variance.model = list(model = 'sGARCH', garchOrder = c(1, 1)), distribution = 'norm')
spec2 = ugarchspec(mean.model = list(armaOrder = c(0, 0),include.mean = FALSE), variance.model = list(model = 'sGARCH', garchOrder = c(0, 1),external.regressors=extReg), distribution = 'norm')

fit = ugarchfit(data = R_d[2:length(R_d),1], spec = spec)
fit2 = ugarchfit(data = R_d[2:length(R_d),1], spec = spec2)

擬合模型的係數為:

omega: 2.1038530309075e-06
alpha1: 0.0863073049030114
beta1: 0.912692551076183

fit2 模型的係數為:

omega: 8.17097079205033e-07
beta1: 0.999316873189476
vxreg1: 1.01005006640392e-08

我發現了錯誤。ugarchfit 函式自動為所有係數設置非負約束——這是有道理的,因為在我們的例子中 alpha 不應該是負的。但是,當將約束釋放為負值時,您會得到正確的結果。我能想到的唯一解釋是,在優化過程中,暫時出現了負係數估計。

setbounds(spec2)<-list(vxreg1=c(-1,1)) 

引用自:https://quant.stackexchange.com/questions/27491