#************************************************************ 
# GARCH Type Models Spurious R 
# IBM Stock Returns
# A daily time series of percentage returns 
# install.packages("tseries")
# install.packages("fGarch")
# install.packages("AER")
# install.packages("rugarch")
#------------------------------------------------------------
library(quantmod)
library(fBasics)
library(TSPred)
library(tseries)
library(fGarch)
library(forecast)
library(rugarch)

# Yahoo Data in R

getSymbols("IBM",from="2000-01-02", to="2017-06-30")
IBM.rtn = 100*diff(log(IBM$IBM.Adjusted))
N <- nrow(IBM.rtn)
tobs <- 30 # Observation for test 

y <- as.data.frame(IBM.rtn[2:N,])
#GARCH(1,1)
g1 <- ugarchspec(variance.model = list(garchOrder = c(1,1),model="sGARCH") ,
                 mean.model = list(armaOrder = c(1,1), include.mean = TRUE))
f1 <- ugarchfit( g1, y,out.sample = tobs)

#MGARCH(1,1)
g2 <- ugarchspec(variance.model = list(garchOrder = c(1,1),model="sGARCH") ,
                 mean.model = list(armaOrder = c(1,1), include.mean = TRUE,archm=TRUE) )
f2 <- ugarchfit( g2, y,out.sample = tobs)

#GJRGARCH(1,1)
g3 <- ugarchspec(variance.model = list(garchOrder = c(1,1),model="gjrGARCH") ,
                 mean.model = list(armaOrder = c(1,1), include.mean = TRUE,archm=TRUE) )
f3 <- ugarchfit( g3, y,out.sample = tobs)


#TGARCH(1,1)
g4 <- ugarchspec(variance.model = list(garchOrder = c(1,1),model="fGARCH",submodel="TGARCH") ,
                 mean.model = list(armaOrder = c(1,1), include.mean = TRUE,archm=TRUE) )
f4 <- ugarchfit( g4, y,out.sample = tobs)


f1@fit$coef
f2@fit$coef
f3@fit$coef
f4@fit$coef

infocriteria(f1)
infocriteria(f2)
infocriteria(f3)
infocriteria(f4)

ugarchforecast(f1, n.ahead = tobs , out.sample = tobs,n.roll=0)
