0
$\begingroup$

I have a $N x d$ matrix of standardized residuals, and I want to estimate the parameters $\alpha$, $\beta$ and $\gamma$ of the asymmetric version (Cappiello, Engle, Sheppard, 2006) of the usual dynamic conditional correlation model (Engle, 2002): $$ Q_t = (1-\alpha-\beta) \bar{Q}-\gamma \bar{N} + \alpha z_{t-1}z_{t-1}' + \beta Q_{t-1}+\gamma n_{t-1}n_{t-1}'$$ $$R_{ij,t}=\frac{Q_{ij,t}}{ \sqrt{Q_{ii,t}Q_{jj,t}}}$$

where $Q_t$ is a proxy process, $R_t$ the correlation matrix, $z_t$ a matrix with vectors $[z_1, ..., z_d]$, $n_t$=$I_{\{z_t<0\}}z_t$ the asymmetric innovation, and $\bar{N}=E[n_t n_t']=T^{-1}\sum_{t=1}^T n_tn_t'$.

I want to set the "empirical" covariance matrix over the sample as starting value, i.e. as lagged proxy for estimating $Q_2$, i.e. $$Cov(z)=Q_1$$ and as the "true" unconditional covariance matrix, i.e. $$Cov(z)=\bar{Q}$$ and estimate how the $Q_{t+1}$ forecast depends on past $Q_t$ and past realizations $z_tz_t'$.

QUESTION: How can such estimation procedure be implemented in R without having to specify the individual GARCH models? I already have the standardized residuals, therefore I don't need univariate GARCH.

#data for example
library(rmgarch)
data(dji30retw)
Dat = dji30retw[, 1:6, drop = FALSE]

#specify garch specification (the given parameters come from previous analysis)
models <- list()
for (i in 1:6){
models[[i]]=ugarchspec(variance.model = list(model = "gjrGARCH", garchOrder = c(1, 1),
                                            submodel = NULL, external.regressors = NULL, variance.targeting = TRUE),
                      mean.model = list(armaOrder = c(0,0), include.mean = FALSE, archm = FALSE,
                                        archpow = 1, arfima = FALSE, external.regressors = NULL, archex = FALSE),
                      distribution.model = "norm", start.pars = list(), fixed.pars = list(alpha1=8.81e-02,
                                                                                          beta1=9.41e-01 ,
                                                                                          gamma1=-8.46e-02,
                                                                                          omega=5.016982e-07))
}

#by filtering data with the specification, I create 1-step ahead volatility forecast
filter <- list()
for (i in 1:6){
  filter[[i]]=ugarchfilter(models[[i]],Dat[,i])
}

#standardized residuals (1141 x 6)
st.res <- matrix(ncol=6, nrow=1141)
for (i in 1:6){
  st.res[,i]=residuals(filter[[i]])/sigma(filter[[i]])
}

Assuming st.res is the matrix I'm working on, how would I proceed in estimating the required parameters? If someone can explain how to estimate the aDCC parameters with given data I'd appreciate it very much.

$\endgroup$
  • $\begingroup$ Kondo, what do you think of my answer? $\endgroup$ – Richard Hardy Aug 14 '16 at 11:57
  • $\begingroup$ This seems to be a very practical solution, thank you for your answer Richard. I haven't tried to use this yet because I'm working on another part of my paper right now, I'll get back to your answer and accept it as soon as I'll be applying aDCC to my standardized residuals. $\endgroup$ – Kondo Aug 14 '16 at 14:40
  • $\begingroup$ No problem, was just wondering if you noticed the answer. Thanks! $\endgroup$ – Richard Hardy Aug 14 '16 at 18:08
1
$\begingroup$

The "rmgarch" package in R requires specifying univariate GARCH models before a DCC (or asymmetric DCC, aDCC) can be fitted. The workaround is to specify models that essentially "do nothing", e.g. a GARCH model with $\alpha=0.00001$ and $\beta=0.99999$ and variance targetting at the unconditional variance. These models will produce roughly constant conditional variance so their effect will be negligible. I have done it before, it worked alright.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.