Skip to content
All library documents

Estimating Asymmetric DCC When Standardized Residuals Are Available

Article Quant Q&A · Author: Kondo

Summary

The document asks how to estimate the parameters of an asymmetric dynamic conditional correlation model from already standardized residuals, without fitting meaningful univariate GARCH models. The model updates a covariance proxy using lagged residual products, a persistence term, and an additional term for negative innovations, then rescales it to obtain correlations.

The answer explains a package limitation: the R implementation described requires univariate GARCH specifications as inputs to DCC or asymmetric DCC estimation. It suggests a workaround using near-constant conditional variance models, with very small ARCH response, very high persistence, and variance targeting at the unconditional variance. This lets the multivariate fitting workflow proceed while making the univariate variance filtering effect negligible. The response is a practical package workaround, not a standalone derivation or a full estimation recipe; it does not provide code for estimating the asymmetric parameters directly from the residual matrix or discuss diagnostics and constraints for the fitted model.

Key ideas

  • The asymmetric DCC update adds a term based on negative standardized innovations.
  • The cited R package workflow requires univariate GARCH specifications before fitting DCC models.
  • Near-constant variance specifications can serve as a workaround when standardized residuals are already available.
  • Variance targeting at the unconditional variance helps keep the preliminary univariate filtering effect small.
  • The answer does not describe a direct standalone estimator or model diagnostics.

Tags

Full text
# How to estimate an Engle's asymmetric DCC model in R?


# How to estimate an Engle's asymmetric DCC model in R?












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.

## Answer by Richard Hardy (score 1, accepted)

https://quant.stackexchange.com/a/29569

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.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.