Despite their relative simplicity I've found it quite difficult to find a straightforward guide to copulas besides this [short blog post][1]. I went back through your code, fixed it up a bit and annotated *what* the steps were doing, but not *why*, as best I could if it should be of any use to others just starting out. Update: After a bit more research I found [this pdf][2], section 5 / pg 18 of which outlines pseudo code for a number of different copulas. #a tcopula using rho = 0.8 #done from first principles require(mvtnorm) numObs <- 10000 #NX2 shaped matrix initialObservations <- rmvnorm(numObs,mean=rep(0,2)) #this is a 2X2 symmetric matrix based off of rho=0.8 and is positive definite psdRhoMatrix <- matrix(c(1,0.8,0.8,1),2,2) #the transpose of the cholesky decomposition of the psdRhoMatrix #which gives us a lower triangle matrix for some particular reason lowerTriangleCholesky <- chol(psdRhoMatrix) #this lower triangle matrix (for whatever reason) is able to make #the observations in each column correlated # NX2 = NX2 %*% 2X2 correlatedObservations <- initialObservations %*% lowerTriangleCholesky degreesOfFreedom <- 2 #the meaning of this step eludes me, it's a vector of random chi-square observations. #Maybe something to do with applying the inverse CDF. randomChiSqrStep <- degreesOfFreedom/rchisq(numObs,degreesOfFreedom) #transforming the correlated variables #the random chiSquaredStep is applied to each column of the correlatedObservations #for element wise multiplication to be properly applied the data needs to be #sorted into columns rather than rows. NX2 = NX1 * NX2 penultimateTransformation <- sqrt(randomChiSqrStep) * correlatedObservations plot(penultimateTransformation[,1],penultimateTransformation[,2]) #run the fully transformed and correlated observations through the t-dist PDF and that's it tCopulaOutPut <- pt(penultimateTransformation,degreesOfFreedom) plot(tcopulaOutPut[,1],tcopulaOutPut[,2]) [1]: http://www.r-bloggers.com/copulas-made-easy/ [2]: https://www.tu-chemnitz.de/mathematik/fima/publikationen/TSchmidt_Copulas.pdf