p = read.csv('stocks.csv')
y=apply(log(p),2,diff) # calculate returns
y = y[,1:2] # consider first two stocks
y[,1] = y[,1]-mean(y[,1]) # subtract mean
y[,2] = y[,2]-mean(y[,2])
TT = dim(y)[1]
using CSV, Statistics, DataFrames;
p = CSV.read("stocks.csv", DataFrame);
y1 = diff(log.(p[:,1])).*100; # consider first two stocks
y2 = diff(log.(p[:,2])).*100; # convert prices to returns
y1 = y1 .- mean(y1); # subtract mean
y2 = y2 .- mean(y2);
y = hcat(y1,y2); # combine both series horizontally
T = size(y,1); # get the length of time series
## create a matrix to hold covariance matrix for each t
EWMA = matrix(nrow=TT,ncol=3)
lambda = 0.94
S = cov(y) # initial (t=1) covar matrix
EWMA[1,] = c(S)[c(1,4,2)] # extract var and covar
for (i in 2:dim(y)[1]){
S = lambda*S+(1-lambda)* y[i-1,] %*% t(y[i-1,])
EWMA[i,] = c(S)[c(1,4,2)]
}
EWMArho = EWMA[,3]/sqrt(EWMA[,1]*EWMA[,2]) # calculate correlations
print(head(EWMArho))
print(tail(EWMArho))
## create a matrix to hold covariance matrix for each t
EWMA = fill(NaN, (T,3))
lambda = 0.94
S = cov(y) # initial (t=1) covar matrix
EWMA[1,:] = [S[1], S[4], S[2]] # extract var and covar
for i in 2:T # loop though the sample
S = lambda*S + (1-lambda)*y[i-1,:]*(y[i-1,:])'
EWMA[i,:] = [S[1], S[4], S[2]] # convert matrix to vector
end
EWMArho = EWMA[:,3]./sqrt.(EWMA[:,1].*EWMA[:,2]); # calculate correlations
library(rmgarch)
spec = gogarchspec(mean.model = list(armaOrder = c(0, 0),
include.mean =FALSE),
variance.model = list(model = "sGARCH",
garchOrder = c(1,1)) ,
distribution.model = "mvnorm"
)
fit = gogarchfit(spec = spec, data = y)
show(fit)
## No OGARCH code available in Julia at present
xspec = ugarchspec(mean.model = list(armaOrder = c(0, 0), include.mean = FALSE))
uspec = multispec(replicate(2, xspec))
spec = dccspec(uspec = uspec, dccOrder = c(1, 1), distribution = 'mvnorm')
res = dccfit(spec, data = y)
H=res@mfit$H
DCCrho=vector(length=dim(y)[1])
for(i in 1:dim(y)[1]){
DCCrho[i] = H[1,2,i]/sqrt(H[1,1,i]*H[2,2,i])
}
using ARCHModels, Plots;
## Multivariate models in ARCHModel package
dcc = fit(DCC{1, 1, GARCH{1, 1}}, y; meanspec = NoIntercept);
## Access covariances
H = covariances(dcc);
## Getting correlations
DCCrho = [correlations(dcc)[i][1,2] for i = 1:T];
plot(DCCrho, title = "Correlations", legend = false)
matplot(cbind(EWMArho,DCCrho),type='l',las=1,lty=1,col=2:3,ylab="")
mtext("Correlations",side=2,line=0.3,at=1,las=1,cex=0.8)
legend("bottomright",c("EWMA","DCC"),lty=1,col=2:3,bty="n",cex=0.7)
## No OGARCH code available in Julia at present