9 votos

Simulación a partir de una cópula multivariante de Clayton

Recientemente me he interesado por las cópulas para las finanzas, he leído varios ejemplos de cómo generar variables aleatorias dependientes con la mayoría de las cópulas. El problema para mí es que todos los libros describen el caso con 2 variables aleatorias $(X_1,X_2)$ pero quiero generar $n$ r.v. dependiente $(X_1,X_2,\ldots,X_n)$ .

El caso me parece fácil para las cópulas gaussianas, ya que sólo hay que expandir la matriz de correlación, aplicar la descomposición cholesky y calcular la multiplicación de matrices.

Pero no pude encontrar una manera de aplicar esto para el caso de una cópula de Clayton, ya que los ejemplos del libro siempre utilizan la densidad de la cópula condicional de la v.r. #1 para generar la v.r. #2. Esto no parece un enfoque práctico para la v.r. múltiple.

¿Existe algún enfoque como el de la cópula gaussiana?

Saludos cordiales

5 votos

La cópula de Clayton es un ejemplo de cópula arquimediana. Eche un vistazo a "Quantitative Risk Management" de Embrechts, Frey, McNeil, capítulos 5.4.2 y 5.4.3. En ellos se definen las cópulas de Arquímedes multivariadas, se proporcionan algoritmos de simulación y se dan referencias a la literatura.

5voto

Milan Nankov Puntos 678

Como creo que esto es de interés para otras personas, voy a publicar el enfoque que encontré:

En primer lugar, dejemos que $C_n(u_1,\ldots,u_n)$ ser un $n$ - cópula dimensional de Clayton con función generadora $F$ y la inversa $F^{-1}$ . Entonces,

  1. Generar $n$ r.v. independiente de $U (0,1)$

  2. Calcular $n-1$ derivados de $F$ , donde $F_{n-1}$ denota el $n-1$ -derivada de orden de $F$

  3. Establecer $v_1 = u_1$

  4. Establecer $u_2 = C_2(v_2|v_1) = \frac{F_1(F^{-1}(v_1)+F^{-1}(v_2))}{F_1(F^{-1}(v_1)}$ y resolver para $v_2$

  5. Repetir hasta que $u_n = C_n(v_n|v_1,v_2,\ldots,v_{n-1)} = \frac{F_{n-1}(F^{-1}(v_1)+F^{-1}(v_2)+\ldots+F^{-1}(v_n))}{F_{n-1}(F^{-1}(v_1)+F^{-1}(v_2)+\ldots+F^{-1}(v_{n-1}))}$ y resolver para $v_n$ .

Para la pregunta sobre el código de matlab para simular a partir de la cópula gaussiana, aquí una codificación rápida:

%% Simulations of bivariate Gaussian copulas 

%Example for rho=0.5
n=30000;
rho=0.5;
x1=norminv(rand(1,n));
x2=norminv(rand(1,n));
X = [x1; x2];

C = [1, rho; rho,1]; %2x2 Correlation matrix

cholesky = chol(C,'lower'); %lower triangular matrix of C using Cholesky decomposition

Copsims = cholesky*X;

c1 = Copsims(1,:);
c2 = Copsims(2,:);

plot(c1,c2,'.')

corrcoef(c1,c2) %check for empirical rho, not on point the initial rho because of sampling error

2voto

Justin Alan Ryan Puntos 141

Código Clayton Copula-Matlab

    %% Simulations of Clayton copulas using conditional cdf

%Example for theta=4
n=3000;
theta=5;
u=rand(1,n);
y=rand(1,n);
v=((y.^(1/(1+theta)).*u).^(-theta)+1-u.^(-theta)).^(-1/theta);

x1=norminv(u);
x2=norminv(v);

plot(x1,x2,'.')

Aunque para mí, la gaussiana parece incómoda, ¿puedes compartir un código, sobre cómo hacer la cópula gaussiana en Matlab?

0 votos

He añadido algo de código a la respuesta original

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X