Как использовать ARIMA в модели GARCH - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть финансовые данные, и моя цель - уметь прогнозировать. Я запустил модель аримы и обнаружил, что лучше всего подходит арима (1,1,1) с дрейфом. Я хочу использовать GARCH для набора данных, потому что это лучшая модель из-за волатильности, и когда я возводил в квадрат мои остатки, это имело эффект арки. Но я знаю, что GARCH принимает ариму с 2 параметрами, и я не уверен, как это переводится с аримой с 3 параметрами, которую я имею в настоящее время.

library(dplyr)
library(tidyr)
library(lubridate)
library(ggplot2)
library(TSA)
library(forecast)
spnew<-read.csv(file="~/Desktop/SPNEW.csv", header=T, 
sep=",",check.names=FALSE)
sfts1=ts(sp$`Adj Close`, 
freq=260,start=decimal_date(ymd("2009-01-02")))
arsf1=auto.arima(sfts1, trace=T)

У меня есть код для запуска GARCH, но я не уверен, что ввести для части аримы.

model1 <-  ugarchspec(variance.model = list(model="sGARCH",         
                                                 garchOrder=c(_,_)), 
                           mean.model = list(armaOrder=c(_,_)), 
                           distribution.model = "norm")        
mod2 <- ugarchfit(spec=model1, 
                          data=sfts1)

Я оставил пробелы для того, что мне нужно будет ввести. Я поиграю с орденом Гарча, как только узнаю, как положить ариму. Если известен лучший способ кодирования модели GARCH, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 16 апреля 2020

Ниже я ссылаюсь на модель, которую вы называете 2-параметрическим аримом, как ARMA.
rugarch::ugarchspec() может рассматривать модель ARMA (p, q) или ARFIMA (p, d, q) как mean.model.
(ПРИМЕЧАНИЕ: когда d целое число, ARFIMA (p, d, q) эквивалентно ARIMA (p, d, q))

Вот мой пример;

p <- 1
q <- 1
# d <- 1    # if you want to fix d

model1 <-  ugarchspec(variance.model = list(model="sGARCH",         
                                            garchOrder=c(_, _)), 
                      mean.model = list(armaOrder=c(p, q),
                                        arfima = T),    # using arfima model
                      # fixed.pars=list(arfima = d),    # If you want to fix d
                      distribution.model = "norm"))
...