rugarch и дисперсионный таргетинг в R

Я использую библиотеку rugarch и пытаюсь найти "вручную" те же выходы, что и библиотека, чтобы убедиться, что я все правильно понимаю. Я хотел бы, чтобы мой перехват дисперсии (омега) был равен безусловной дисперсии моего набора данных. Поэтому я устанавливаю variance.targeting = TRUE в функции ugarchspec.

Я мог бы проверить, что моя безусловная ковариация почти равна: omega/(1-alpha1-beta1). Однако я не могу найти «вручную» тот же временной ряд условной дисперсии с помощью уравнения GARCH: sigma(t)² = omega + альфа1 * X (t-1) ^ 2 + бета1 * сигма (t-1)²

Вот воспроизводимый пример, иллюстрирующий мою проблему:

data(sp500ret)

sp500ret <- scale(sp500ret, scale = FALSE, center = TRUE) # de-mean
model <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1), variance.targeting = TRUE),
mean.model = list(armaOrder = c(0, 0), include.mean = FALSE), distribution.model = "norm")
fit <- ugarchfit(model, sp500ret)

omega <- fit@fit$coef[3]
alpha <- fit@fit$coef[2]
beta <- fit@fit$coef[1]

var(sp500ret)
# 0.0001426482
omega / (1 - alpha - beta)
# 0.0001426587 

var_rugarch <- fit@fit$var
var_manual <- c()
var_manual[1] <- var_rugarch[1]
for (t in 2:5523) {
   var_manual[t] <- omega + alpha * sp500ret[t-1]^2 + beta * var_manual[t-1]
}

which(var_rugarch == var_manual)
# [1] 1

Однако, когда variance.targeting = FALSE, последняя строка указывает, что var_rugarch = var_manual. Почему эти две переменные не совпадают, если variance.targeting = TRUE?


person Petreius    schedule 03.08.2016    source источник


Ответы (1)


Ну, я сделал ошибку. По какой-то причине rugarch изменил индексы параметров в fit@fit$coef, а Microsoft Visual Studio не обновил предварительный просмотр переменных.

person Petreius    schedule 03.08.2016