Copulas have become a popular multivariate modeling tool in many fields where multivariate dependence is of interest and the usual multivariate normality is in question.
A copula is a multivariate distribution whose marginals are all uniform over (0, 1).
For a p-dimensional random vector \(U\) on the unit cube, a copula \(C\) is \[ C(u_1,...,u_p)=Pr(U_1 \leq u_1,...,U_p \leq u_p). \]
Combined with the fact that any continuous random variable can be transformed to be uniform over (0, 1) by its probability integral transformation, copulas can be used to provide multivariate dependence structure separately from the marginal distributions
Let \(F\) be a \(p\)-dimensional distribution function with margins \(F_1,..., F_p\).
Sklar(1959) first showed that there exists a p-dimensional copula \(C\) such that for all \(x\) in the domain of \(F\), \[ F(x_1, ... , x_p) = C\{F_1(x_1), ... , F_p(x_p)\}. \]
Different kinds of Copula: Elliptical Copula : (i) Multivariate Gaussian Copula, (ii) Multivariate t-Copula
Clayton (1978), Frank (1979), Gumbel (1960) are three cases of Archimedean Copulas
Ref : Jun Yan, (2007) Enjoy the Joy of Copulas: With a Package copula
, Journal of Statistical Software
library(PortRisk)
# load the data 'SnP500Returns'
data(SnP500Returns)
# consider the portfolio containing the stocks of the companies
# Apple, IBM, Intel, Microsoft
pf <- c("AAPL","IBM","INTC","MSFT")
# suppose the amount of investments in the above stocks are
# $10,000, $40,000, $20,000 & $30,000 respectively
wt <- c(10000,40000,20000,30000) # weights
# risk attribution for the portfolio 'pf' with weights 'wt'
# for the time period January 1, 2013 - January 31, 2013
fit<-risk.attrib.Copula(tickers = pf
, data = SnP500Returns
, start = "2013-01-01"
, end = "2013-01-31"
, sim.size = 1000
, df=15)
fit$Volatility
## weight vol mctr cctr
## AAPL 0.2137888 0.03505336 2.4552664 0.52490840
## IBM 0.0000000 0.01169305 0.7533587 0.00000000
## INTC 0.0747648 0.01948613 0.9964611 0.07450022
## MSFT 0.7114464 0.01194353 0.9379433 0.66729642
fit$`Portfolio Volatility`
## [1] 1.266705
fit$`Portfilio VaR`
## 1% 5%
## -3.136417 -1.791881
fit$`Total Portfolio Value`
## NULL