# Aggregating Multiperiod DCC-GARCH Forecast Covariance Matrices

Say I fit a $$DCC$$-$$GARCH(1,1)$$ model to a dataset of weekly returns for four assets.

I forecast the covariance matrix for the next month (so four weekly steps ahead). This gives me four $$4 \times 4$$ covariance matrices, one for each of $$t+1$$, $$t+2$$, $$t+3$$ and $$t+4$$, where each covariance matrix is of 'weekly' data.

How do I aggregate these four weekly covariance matrices into a single covariance matrix for the forecast month? Is it as simple as just element-wise summing the matrices?:

$$\widehat{\Sigma}_{t+1, t+4} = \widehat{\Sigma}_{t+1} + \widehat{\Sigma}_{t+2} + \widehat{\Sigma}_{t+3} + \widehat{\Sigma}_{t+4}$$

In case it matters, the underlying returns are log returns.

Any help is appreciated. Apologies for my lack of knowledge here. Thank you!!

While this isn't really a programming question, here's my code in case it helps.

library(mvtnorm)
library(rmgarch)
library(rugarch)

# make dummy returns
means <- c(0.05, 0.02, 0.08, 0.10)
stdevs <- c(0.10, 0.07, 0.15, 0.25)
returns <- rmvnorm(1000, mean=means, sigma=diag(stdevs^2))

# GARCH(1,1) Specification
garch_spec <- ugarchspec(
variance.model=list(model="fGARCH", submodel = "GARCH", garchOrder=c(1, 1)),
mean.model=list(armaOrder=c(0, 0), include.mean=F),
distribution.model="norm"
)

# create multispec--a set of GARCH(1,1) specifications on each series
ms <- multispec(replicate(ncol(returns), garch_spec))

# turn multispec into a DCC spec
dcc_spec <- dccspec(ms)

# fit the DCC spec to returns
dcc_fit <- dccfit(dcc_spec, returns)

# 1 month forecast (i.e 4 weeks ahead)

# variance covariance matrices, one for each forecast week
vcvs <- rcov(month_forecast)[[1]]

### This produces the below 4 covariance matrices:
, , T+1

Asset_1      Asset_2      Asset_3      Asset_4
Asset_1 0.013089899 0.0011057502 0.0024347432 0.0019650439
Asset_2 0.001105750 0.0053824805 0.0005703209 0.0003636192
Asset_3 0.002434743 0.0005703209 0.0284183605 0.0062753705
Asset_4 0.001965044 0.0003636192 0.0062753705 0.0664394251

, , T+2

Asset_1      Asset_2      Asset_3      Asset_4
Asset_1 0.013089760 0.0011048251 0.0024324506 0.0019626789
Asset_2 0.001104825 0.0053825861 0.0005702948 0.0003628085
Asset_3 0.002432451 0.0005702948 0.0284176578 0.0062705168
Asset_4 0.001962679 0.0003628085 0.0062705168 0.0664401546

, , T+3

Asset_1      Asset_2      Asset_3      Asset_4
Asset_1 0.013089622 0.0011039007 0.0024301600 0.0019603159
Asset_2 0.001103901 0.0053826916 0.0005702688 0.0003619984
Asset_3 0.002430160 0.0005702688 0.0284169559 0.0062656673
Asset_4 0.001960316 0.0003619984 0.0062656673 0.0664408834

, , T+4

Asset_1      Asset_2      Asset_3     Asset_4
Asset_1 0.013089484 0.0011029771 0.0024278715 0.001957955
Asset_2 0.001102977 0.0053827970 0.0005702427 0.000361189
Asset_3 0.002427872 0.0005702427 0.0284162546 0.006260822
Asset_4 0.001957955 0.0003611890 0.0062608221 0.066441611
###

# aggregate into single 1-month variance covariance matrix
aggregated_vcv <- rowSums(vcvs, dims = 2) # Is this allowed???

### This produces the below:
Asset_1     Asset_2     Asset_3     Asset_4
Asset_1 0.052358766 0.004417453 0.009725225 0.007845994
Asset_2 0.004417453 0.021530555 0.002281127 0.001449615
Asset_3 0.009725225 0.002281127 0.113669229 0.025072377
Asset_4 0.007845994 0.001449615 0.025072377 0.265762074
###

• Great question! Have you tried simulating the behaviour of sums of unstandardized error vectors so that you could empirically check your hunch? May 30, 2022 at 15:49

Is it as simple as just element-wise summing the matrices?:

$$\widehat{\Sigma}_{t+1, t+4} = \widehat{\Sigma}_{t+1} + \widehat{\Sigma}_{t+2} + \widehat{\Sigma}_{t+3} + \widehat{\Sigma}_{t+4}$$

Yes, I think it is that simple. This is because the standardized innovations $$z$$ are assumed to be i.i.d. and thus uncorrelated across time: $$\rho(z_{i,s},z_{j,t})=0$$ for all pairs $$(i, j)$$ whenever $$s\neq t$$. (Here, $${i, j}$$ denote the assets and $$s,t$$ denote time periods / time points.) The unstandardized innovations are still conditionally uncorrelated because the conditional variances of each innovation are a function of the conditioning information and so can be treated as multiplicative constants. I think that is sufficient to prove the equality you have proposed above.

• Your logic makes sense to me--thank you for your help! May 30, 2022 at 19:16
• Is the solution you have found any different from mine, and if so, how? @jackt247 Jul 5, 2022 at 16:14
• The Hlouskova et. al. (2009) solution makes explicit reference to the impact of the conditional covariances of the multistep predictions over time. That is, previously we assumed that the forecasts are uncorrelated over time and thus they can be summed directly, whereas the paper's solution relaxes that assumption. Jul 11, 2022 at 15:41
• I should read the paper, but it is not immediately clear why this should be the case. I did not assume lack of correlation, I derived it from the model. Does the difference stem from the fact the model is estimated rather than given? (I made that assumption implicitly; should have stated it explicitly.) Would removing the VARMA part change anything? (It should not.) @jackt247 Jul 11, 2022 at 16:34
• thanks for your response here. My apologies for the delayed response. I have confirmed that your solution is indeed correct for models without an ARMA component; working through the solution in the Hlouskova paper assuming p and q = 0 produce the same output as simply summing the matrices along the time dimension. Aug 13, 2022 at 16:42

I was able to find a closed form solution in a paper from Hlouskova, Schmidheiny and Wagner (2009) entitled "Multistep predictions for multivariate GARCH models: Closed form solution and the value for portfolio management". The paper provides a solution for the aggregated multi-step-ahead covariance matrix from a multivariate GARCH forecast with variable ARMA orders.

Edit: here's the summary of Hlouskova et. al. (2009)'s findings:

$$r_t = \mu + \sum_{j=1}^p A_j r_{t-j} + \sum_{k=1}^q B_k \epsilon_{t-k} + \epsilon_t$$

where $$r_t$$, $$c$$ and $$\epsilon_t$$ are $$N \times 1$$ vectors and $$A_j$$ and $$B_k$$ are $$N \times N$$ diagonal matrices.

The authors re-write the mean model in its companion form:

$$\begin{pmatrix} r_t \\ r_{t-1} \\ \vdots \\ r_{t-p+1} \\ \epsilon_t \\ \epsilon_{t-1} \\ \vdots \\ \epsilon_{t-q+1} \\ \end{pmatrix} = \begin{pmatrix} c \\ 0 \\ \vdots \\ 0 \\ 0 \\ 0 \\ \vdots \\ 0 \\ \end{pmatrix} + \begin{pmatrix} A_1 & & \ldots & & A_p & B_1 & \ldots & & B_q \\ I & 0 & \ldots & & 0 & 0 & \ldots & & 0 \\ \vdots & & \ldots & & \vdots & \vdots & \vdots& & \vdots \\ 0 & & \ldots & I & 0 & 0 & \ldots & & 0 \\ 0 & & \ldots & & 0 & 0 & \ldots & & 0 \\ 0 & & \ldots & & 0 & I & \ldots & & 0 \\ \vdots & & \ldots & & \vdots & \vdots & \dots & & \vdots \\ 0 & & \ldots & & 0 & 0 & \ldots & I & 0 \\ \end{pmatrix} \begin{pmatrix} r_{t-1} \\ r_{t-2} \\ \vdots \\ r_{t-p} \\ \epsilon_{t-1} \\ \epsilon_{t-2} \\ \vdots \\ \epsilon_{t-q} \\ \end{pmatrix} + \begin{pmatrix} \epsilon_t \\ 0 \\ \vdots \\ 0 \\ \epsilon_t \\ 0 \\ \vdots \\ 0 \\ \end{pmatrix}$$

or,

$$R_t = K_1 c + \Phi R_{t-1} + K \epsilon_t$$

where $$K_i \, i \in 1, 2, \ldots ,(p + q)$$ is a block matrix of $$0_{N \times N}$$ submatrices except the $$i$$-th submatrix which is $$I$$, and $$K = K_1 + K_{p+1}$$.

Assume we forecast $$h$$ steps ahead, yielding $$h$$ mean vectors and $$h$$ covariance matrices. The $$h$$-step cumulative forecast means are simply:

$$r_{[t+1; t+h]} = r_{t+1} + r_{t+2} + \cdots + r_{t+h}$$

Let $$\Sigma_{t+i}$$ represent the $$i$$-th step ahead forecast of the covariance matrix. The $$h$$-step cumulative covariance matrix is:

$$Var(r_{[t+1;t+h]}) = K_1' \sum_{i=1}^h \left[ \sum_{k=0}^{i-1} \Phi^k K \Sigma_{t+i-k} (\Phi^k K)' \right] K_1 + K_1' \sum_{i,j=1; i \neq j}^h \left[ \sum_{k = \max\{0, i-j \}}^{i-1} \Phi^k K \Sigma_{t+i-k}( \Phi^{j-i+k} K)' \right] K_1$$