Skip to content
All library documents

Recursive DCC Correlations for a Time-Varying Gaussian Copula

Article Quant Q&A · Author: Kondo

Summary

The document outlines a proposed procedure for generating observations from a Gaussian copula whose correlation matrix changes over time. It describes the Dynamic Conditional Correlation recursion for updating an intermediate matrix from its long-run value, the previous matrix, and lagged transformed observations. A normalization step converts that matrix into correlations, which can then parameterize the copula for random draws at each time point.

The question asks how to implement this sequence recursively in R and how to extend the approach to other copula families. It supplies the mathematical relationships but no implementation, worked output, or empirical evaluation; it is therefore a formulation of a modeling task rather than a demonstrated trading strategy. Practical use requires choosing and estimating model parameters and initializing the recursion, details not resolved in the document. The cited reference is not assessed here.

Key ideas

  • DCC updates a latent covariance-like matrix using past values and lagged observations.
  • Normalizing the updated matrix produces the time-varying correlation matrix.
  • The resulting correlations can parameterize Gaussian copula draws at each time step.
  • The document poses an R implementation question but provides no code or empirical results.
  • Extending the recursion to other copula families requires additional modeling choices.

Tags

Full text
# How to write time-varying functions in R? Applied example


# How to write time-varying functions in R? Applied example












Let's say I want to use a Gaussian copula $$C_{R_t}(\eta_1, ..., \eta_n) = N_{R_t}(N^{-1}(\eta_1), ...,N^{-1}(\eta_n))$$ with a time-varying correlation matrix $R_t$. Through DCC we model the correlation which evolves as $$Q_t=(1-\alpha-\beta)\overline{Q}+\beta Q_{t-1} + \alpha \epsilon^{*}_{t-1} \epsilon^{*T}_{t-1}$$ where $\epsilon_t^*=N^{-1}(\eta_t)$. The components $r_{ij,t}$ of $R_t$ is then obtained after normalization $$r_{ij,t}=\frac{q_{ij, t}}{\sqrt{q_{ii,t}q_{jj,t}}}$$ (see http://www.frbsf.org/economic-research/files/christoffersen.pdf)

Say that, instead of using some built-in commands in R (such as cgarchspec and cgarchfit from `rmgarch` package), I'd want to write a function in R to do this. Specifically, I want R to i) compute $Q_t$, which is measurable at time $t-1$ given previous initial values; ii) convert it in $R_t$ as defined above; iii) and use it as input to generate $N$ random draws from the Gaussian copula at time $t$. Next, I would like R to repeat steps i-iii for $t+1$ using values estimated in $t$, in $t+2$ using $t+1$ data, and so on until $t+d$.

How would something like this look like? Anyone has a hint, or any link that would introduce me to such multi-level equation? I beg you to pardon my R ignorance but I've never come across such an exercise during my studies and now I'm totally lost. Moreover, I'd like to implement something similar using other copula families, that's why I want to get the basics writing down the equation for the Gaussian one rather than just using the built-in commands.

Any hint is appreciated, thank you in advance!

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.