Copula and Gaussian Copula

Chia Ying Lee
21 Jan 2017

What is a copula?

A copula is a multivariate random variable with standard uniform marginals and a specified correlation.

The name “copula” means “link” or “tie” in Latin, and refers to the concept of tying together multiple uniform random variables, in the sense of constructing correlation between the variates, to form a joint distribution.

Why are copulae useful?

In many real applications, it is often the case that marginal distributions are known but the joint distribution is not known.

Copulae provide a tractable way to construct a joint distribution, given just the marginals and the pairwise correlations between the variables.

This application of copulae has found applications in fields such as quantitative finance, insurance and risk analysis.

What is a Gaussian copula?

The Gaussian copula is a special class of copula.

  • Bivariate Gaussian copula case: given a desired correlation \( \rho \)
    1. Start off with a bivariate Gaussian variable with the desired correlation, \[ Z = (Z_1,Z_2) \sim N\left(0, \Sigma = \left(\begin{array}{cc} 1 & \rho \\ \rho & 1 \end{array}\right)\right) \]
    2. Apply the probability integral transform to each variate, \[ C_1 = \Phi(Z_1),\quad C_2 = \Phi(Z_2) \] where \( \Phi \) is the Gaussian CDF.
    3. \( C = (C_1,C_2) \) is a Gaussian copula with correlation approximately equal to \( \rho \).

From Bivariate Gaussian to Copula

This code shows how to sample from a Gaussian copula with \( \rho=0.9 \).

nSamples <- 1000; rho <- 0.9

z1 <- rnorm(nSamples)
z2 <- z1 * rho + rnorm(nSamples) * sqrt(1-rho^2)

c1 <- pnorm(z1); c2 <- pnorm(z2) # (c1, c2) are the Gaussian copula samples!

print(c(cor(z1, z2), cor(c1, c2)))
[1] 0.9035952 0.8934901

Explore more on copulae at https://lchiaying.shinyapps.io/Project3_app/