Буду очень признателен, если кто-нибудь поможет мне прояснить некоторые сомнения относительно GARCH из пакета rugarch, условного распространения и VaR. Я вычисляю VaR со студенческим и асимметричным распределением. Я использую пакет rugarch. Должен ли я стандартизировать остатки или rugarch сделать это для меня?
Мой вопрос: правильный ли следующий код? Под этим я подразумеваю, если мне нужно стандартизировать пакет остатков или пакет rugarch, сделайте это для меня. Я думаю, что квантиль QT стандартизирован. Я точно знал, что мой код был верным, но сейчас я не уверен. Этот же пример можно использовать для асимметричного распределения t, но изменив квантиль и добавив новый параметр: skew
Спасибо!
##ARMA(1,0) GARCH(1,1) STUDENT T##
model=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(1,0), include.mean = TRUE),
distribution.model = "std"
)
gt11= ugarchfit(spec=model, solver = "hybrid", data=return)
Я извлекаю параметры для вычисления условного среднего и условного отклонения.
mu11=gt11@fit$coef[1]
ar11=gt11@fit$coef[2]
omega11=gt11@fit$coef[3]
alpha11=gt11@fit$coef[4]
beta11=gt11@fit$coef[5]
nut11=gt11@fit$coef[6]
arma_t11[t+1]= mu11 + ar11*(return- mu11)
sigma2_t11[t+1]= omega11 + alpha11 *(return- arma_t11[t+1])^2 +
beta11*sigma2_t11[t]
sigma_t11[t+1]=sqrt(sigma2_t11[t+1]) * sqrt((nut11-2)/nut11)
VaRt1[t+1]= arma_t11[t+1] + sigma_t11[t+1] * qt(p1, df=nut11) * value
#ARMA(1,0) GARCH(1,1) SKEWED T##
modelsst=ugarchspec(variance.model = list(model = "sGARCH", garchOrder =
c(1, 1)),
mean.model = list(armaOrder = c(1,0), include.mean =
TRUE),
distribution.model = "sstd"
)
gsst11= ugarchfit(spec=model, solver = "hybrid", data=return)
Я извлекаю параметры для вычисления условного среднего и условного отклонения.
mu11=gsst11@fit$coef[1]
ar11=gsst11@fit$coef[2]
omega11=gsst11@fit$coef[3]
alpha11=gsst11@fit$coef[4]
beta11=gsst11@fit$coef[5]
skewst11=gsst11@fit$coef[6]
nut11=gsst11@fit$coef[7]
arma_st11[t +1]= mu11 + ar11*(return-mu11)
sigma2_st11[t+1]= omega11 + alpha11 *(return- arma_st11[t+1])^2 +
beta11*sigma2_st11[t]
sigma_st11[t+1]=sqrt(sigma2_st11[t+1])
VaRst1[t+1]= arma_st11[t+1] + sigma_st11[t+1] * qsstd(p1, nu=nust11,
xi=skewst11) * value