4
$\begingroup$

According to p. 150-151 of Cherubini et al. "Copula Methods in Finance" (2004), here are some $n$-variate Archimedean copulas:

Clayton copula
The generator is $\phi(u) = u^{-\alpha}-1$ and the Clayton copula is $$ C(u_1, u_2, \ldots, u_n)=\left( u_1^{-\alpha}+ \ldots + u_n^{-\alpha} - n+1\right)^{-1/\alpha}, \qquad \alpha > 0. $$

Gumbel copula
The generator is $\phi(u)=(-\ln(u))^\alpha$ and the Gumbel copula is $$ C(u_1, u_2, \ldots, u_n)=\exp \bigg ( -\Big[\big(-\ln(u_1) \big )^\alpha + \ldots + \big(-\ln(u_n) \big )^\alpha \Big]^{1/\alpha}\bigg ), \qquad \alpha > 1. $$

Frank copula
The generator is $\phi(u) = \ln \Big ( \frac{\exp(-\alpha u)-1}{\exp(-\alpha )-1} \Big )$ and the Frank copula is $$ C(u_1, u_2, \ldots, u_n)=-\frac{1}{\alpha} \ln \bigg [ 1 + \frac{(e^{-\alpha u_1}-1) \cdot \ldots \cdot (e^{-\alpha u_n}-1)}{(e^{-\alpha}-1)^{n-1}} \bigg ], \qquad \alpha > 0. $$

Question: Is there an equivalent expression for an $n$-variate Joe copula (if such copula exists in the first place)?

$\endgroup$
3
  • $\begingroup$ @dmi3kno, this is the document I cite in my answer. $\endgroup$ Commented May 9, 2023 at 12:30
  • $\begingroup$ Did not mean to steal the drum. Hope you don't consider my comment to be a threat to your excellent answer. Here's my upvote! $\endgroup$
    – dmi3kno
    Commented May 9, 2023 at 13:43
  • $\begingroup$ @dmi3kno, no I did not think about it as a threat. I was just quite surprised to discover that you have provided the exact same information as in the answer, though without giving a full reference. (It also took me a while to discover that.) I do not quite get why one would do that. But there is zero harm done :) And thanks for the upvote :) $\endgroup$ Commented May 9, 2023 at 16:41

1 Answer 1

1
$\begingroup$

My approach:

According to Theorem 4.10 and Definition 4.14 of Cherubini et al. (2004) (p. 149-150) as cited above, $n$-variate Archimedean copulas can be generated in a simple way. Let $\varphi$ be a strict generator, with $\varphi^{-1}$ completely monotonic on $[0,\infty]$. Then an $n$-variate Archimedean copula is the function $$ C(u_1, \dots, u_n) = \varphi^{-1}[ (\varphi(u_1) + \dots + \varphi(u_n)]. $$ Let us try to apply this to the Joe copula. According to Table 1 on p. 6 in Krouthen "Extreme joint dependencies with copulas A new approach for the structure of C-Vines" (2015), the generator of the Joe copula is $$ \varphi(u) = -\ln \Big( 1−(1−u)^\alpha \Big), \qquad \alpha\geq 1. $$ After some algebra I obtain the inverse generator to be $$ \varphi^{-1}(x) = 1-[1-\exp(-x)]^{1/\alpha}. $$ Then the $n$-variate Joe copula then should be $$ C(u_1, \ldots, u_n) = 1 - \bigg( 1 - \exp\big[(\ln\{1-(1−u_1)^\alpha\}+\ldots+ (\ln\{1-(1−u_n)^\alpha\}\big] \bigg)^{1/\alpha} $$ which after some algebra simplifies to $$ C(u_1, \ldots, u_n) = 1 - \bigg( 1 - \big[1-(1−u_1)^\alpha\big] \cdot\ldots\cdot \big[1-(1−u_n)^\alpha\big] \bigg)^{1/\alpha}. $$ This only holds for the values of $\alpha$ that make the inverse of the generator, $\varphi^{-1}(x) = 1-[1-\exp(-x)]^{1/\alpha}$, monotonic on $[0,\infty]$. The latter set of values seems to be $\alpha\in[0,\infty)$. Combined with the requirement $\alpha\geq 1$ above, we have $\alpha\in[1,\infty)$.

Does that look OK?


Update: the following anecdotal evidence suggests it is OK. I have compared 3-variate and 4-variate Joe copulas from the copula package in R with an implementation of what I have derived above. For a concrete parameter value and a couple of concrete data points, I get matching values of the copula (cumulative density).

library(copula)

u=seq(from=0.1,to=0.9,by=0.1) # hypothetical values of a probability integral transform of a 9-variate observation
alpha=2 # the copula parameter

# 3- and 4-dimensional Joe copulas from the [`copula`][2] package
joe.cop=joeCopula(param=alpha, dim=3); print(pCopula(u[1:3], joe.cop))
joe.cop=joeCopula(param=alpha, dim=4); print(pCopula(u[1:4], joe.cop))

# 3- and 4-dimensional Joe copulas based on the derivation in this post
pcop3=1-(1-(1-(1-u[1])^alpha)*(1-(1-u[2])^alpha)*(1-(1-u[3])^alpha)                   )^(1/alpha); print(pcop3)
pcop4=1-(1-(1-(1-u[1])^alpha)*(1-(1-u[2])^alpha)*(1-(1-u[3])^alpha)*(1-(1-u[4])^alpha))^(1/alpha); print(pcop4)
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.