#clear rm(list=ls()) #set directory getwd() setwd("C:/Users/Isariya/Desktop") ############################################################## #ARMA-GARCH MODELING ############################################################## library(xlsx) library(fGarch) # import data temp <- tempfile() download.file("http://freakonometrics.free.fr/oil.xls",temp) oil=read.xlsx(temp,sheetName="DATA",dec=",") # plot the first few lines of data head(oil) # set time variable and plot Time=as.Date(oil$Date,"%Y-%m-%d") plot(oil[,2]) # ARIMA model fitting fit2_101=arima(x=oil[,2],order=c(1,0,1)) fit2_111=arima(x=oil[,2],order=c(1,1,1)) fit2_112=arima(x=oil[,2],order=c(1,1,2)) m_res <- apply(dat_res, 2, mean) v_res <- apply(dat_res, 2, var) dat_res_std =cbind((dat_res[,1]-m_res[1])/sqrt(v_res[1]),(dat_res[,2]-m_res[2])/sqrt(v_res[2]),(dat_res[,3]-m_res[3])/sqrt(v_res[3]) # ARMA-GARCH model fitting fit1 = garchFit(formula = ~ arma(2,1)+garch(1, 1),data=oil[,2],cond.dist ="std") fit2 = garchFit(formula = ~ arma(1,1)+garch(1, 1),data=oil[,3],cond.dist ="std") fit3 = garchFit(formula = ~ arma(1,1)+garch(1, 1),data=oil[,4],cond.dist ="std") dat_res = cbind(residuals(fit1),residuals(fit2),residuals(fit3)) m_res <- apply(dat_res, 2, mean) v_res <- apply(dat_res, 2, var) dat_res_std =cbind((dat_res[,1]-m_res[1])/sqrt(v_res[1]),(dat_res[,2]-m_res[2])/sqrt(v_res[2]),(dat_res[,3]-m_res[3])/sqrt(v_res[3])) # DCC-GARCH (Multiple GARCH series + Dynamic Correlation) library(MTS) ?dccFit m2=dccFit(dat_res_std,type="TseTsui") m2 m3=dccFit(dat_res_std,type="Engle") m3 R2=m2$rho.t R3=m3$rho.t #Mulivariate t-Copula Volatility Model m4=mtCopula(dat_res_std, 0.5, 0.2) m4