Why Copula Simulations Miss the Observed Dependence
Summary
The document describes fitting a bivariate copula to two stock return series, then comparing simulated and observed Kendall rank correlations. The fitting step selects a BB8 copula, but the later simulation instead uses a Clayton copula with parameter 1.48 and gamma margins. That change of family and parameter is the main mismatch: for a Clayton copula, the parameter implies Kendall tau of about 0.43, consistent with the reported simulated correlation and far above the sample value of about 0.20. The margins shape simulated values but do not repair this rank-dependence mismatch.
To make a meaningful comparison, simulate from the fitted copula using its estimated parameters, or estimate a Clayton model directly if that is the intended family. Also check that parameter estimates are obtained with a method supported by the chosen copula and that the same observations and pseudo-observations are used. The document presents a troubleshooting question rather than a verified correction, so it does not establish model fit or account for sampling variability.
Key ideas
- The fitted model is BB8, while the simulation uses Clayton, so the compared dependence structures differ.
- A Clayton parameter of 1.48 corresponds to Kendall tau near 0.43, explaining the simulated result.
- Use the selected copula family and its fitted parameters when generating comparison samples.
- Marginal distributions affect simulated values but do not set the copula's rank dependence.
Tags
Full text
# Problem in copula fitting
# Problem in copula fitting
I have returns of 2 stocks: stock1 and stock2. And I want to fit pair copula. I use this libraries
```
library(VineCopula)
library(copula)
```
then I select an appropriate bivariate copula family
```
u <- pobs(as.matrix(cbind(stock1,stock2)))[,1]
v <- pobs(as.matrix(cbind(stock1,stock2)))[,2]
selectedCopula <- BiCopSelect(u,v,familyset=NA)
```
And result is
```
Bivariate copula: BB8 (par = 1.78, par2 = 0.86, tau = 0.19)
```
then i fit
```
copula <- BB8Copula(param = c(1.78,0.86))
m <- pobs(as.matrix(cbind(stock1,stock2)))
fit <- fitCopula(copula,m,method='itau')
coef(fit)
```
And when I simulated and compared Kendall tau
```
my_dist <- mvdc(claytonCopula(param = 1.48, dim = 2), margins = c("gamma","gamma"), paramMargins = list(list(shape = x_shape, rate = x_rate), list(shape = y_shape, rate = y_rate)))
sim <- rMvdc(306, my_dist)
cor(cbind(stock1,stock2), method = "kendall")
cor(sim, method = "kendall")
```
I have bad results
```
> cor(cbind(stock1,stock2), method = "kendall")
stock1 stock2
stock1 1.0000000 0.1955256
stock2 0.1955256 1.0000000
> cor(sim, method = "kendall")
[,1] [,2]
[1,] 1.0000000 0.4441659
[2,] 0.4441659 1.0000000
```
Where is the problem and to fix it?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.