###################################################### # Time-varying covariance modeling # # Copyright by Hedibert Freitas Lopes, PhD # Date: March 22th 2019. ###################################################### # install.packages("bayesDccGarch") # install.packages("stochvol") # install.packages("factorstochvol") library("bayesDccGarch") library("factorstochvol") library("stochvol") data = read.table("pbr-vale-google.txt",header=TRUE) price = data[,4:6] y = apply(log(price),2,diff) n = nrow(y) names = c("Petrobras","Vale","Google") pdf(file="dccgarch-fsv.pdf",width=12,height=7) par(mfrow=c(1,3)) for (i in 1:3) ts.plot(y[,i],ylim=range(y),xlab="days",main=names[i],ylab="Log-returns") # Fitting univariate and multivariate # time-varying covariance models fit.garch1 = bayesDccGarch(y[,1]) fit.garch2 = bayesDccGarch(y[,2]) fit.garch3 = bayesDccGarch(y[,3]) fit.dccgarch = bayesDccGarch(y) fit.sv1 = svsample(y[,1]) fit.sv2 = svsample(y[,2]) fit.sv3 = svsample(y[,3]) fit.fsv = fsvsample(y,runningstore=5) par(mfrow=c(1,1)) ts.plot(sqrt(fit.garch1$H[,1]),xlab="days",ylab="standard deviation") lines(apply(exp(fit.sv2$latent/2),2,median),col=2) lines(sqrt(fit.dccgarch$H[,1]),col=3) lines(sqrt(fit.fsv$runningstore$cov[,1,1]),col=4) legend("topleft",legend=c("garch","sv","dccgarch","fsv"),col=1:4,lty=1) title("Petrobras") par(mfrow=c(1,1)) ts.plot(sqrt(fit.garch2$H[,1]),xlab="days",ylab="standard deviation") lines(apply(exp(fit.sv2$latent/2),2,median),col=2) lines(sqrt(fit.dccgarch$H[,5]),col=3) lines(sqrt(fit.fsv$runningstore$cov[,4,1]),col=4) legend("topleft",legend=c("garch","sv","dccgarch","fsv"),col=1:4,lty=1) title("Vale") par(mfrow=c(1,1)) ts.plot(sqrt(fit.garch3$H[,1]),xlab="days",ylab="standard deviation") lines(apply(exp(fit.sv3$latent/2),2,median),col=2) lines(sqrt(fit.dccgarch$H[,9]),col=3) lines(sqrt(fit.fsv$runningstore$cov[,6,1]),col=4) legend("topleft",legend=c("garch","sv","dccgarch","fsv"),col=1:4,lty=1) title("Google") cor.dccgarch1 = fit.dccgarch$H[,2]/sqrt(fit.dccgarch$H[,1]*fit.dccgarch$H[,5]) cor.dccgarch2 = fit.dccgarch$H[,3]/sqrt(fit.dccgarch$H[,1]*fit.dccgarch$H[,9]) cor.dccgarch3 = fit.dccgarch$H[,6]/sqrt(fit.dccgarch$H[,5]*fit.dccgarch$H[,9]) Sy = cov(y) Ry = cor(y) par(mfrow=c(2,3)) ts.plot(fit.dccgarch$H[,2],ylab="covariance") lines(fit.fsv$runningstore$cov[,2,1],col=2) title(paste(names[1]," x ",names[2],sep="")) legend("topright",legend=c("dccgarch","fsv"),col=1:2,lty=1) abline(h=Sy[1,2],lty=2,col=3) ts.plot(fit.dccgarch$H[,3],ylab="covariance") lines(fit.fsv$runningstore$cov[,3,1],col=2) title(paste(names[1]," x ",names[3],sep="")) abline(h=Sy[1,3],lty=2,col=3) ts.plot(fit.dccgarch$H[,6],ylab="covariance") lines(fit.fsv$runningstore$cov[,5,1],col=2) title(paste(names[2]," x ",names[3],sep="")) abline(h=Sy[2,3],lty=2,col=3) ts.plot(cor.dccgarch1,ylab="correlation",ylim=c(-0.2,1)) lines(fit.fsv$runningstore$cor[,1,1],col=2) abline(h=Ry[1,2],lty=2,col=3) ts.plot(cor.dccgarch2,ylab="correlation",ylim=c(-0.2,1)) lines(fit.fsv$runningstore$cor[,2,1],col=2) abline(h=Ry[1,3],lty=2,col=3) ts.plot(cor.dccgarch3,ylab="correlation",ylim=c(-0.2,1)) lines(fit.fsv$runningstore$cor[,3,1],col=2) abline(h=Ry[2,3],lty=2,col=3) dev.off()