63 votos

¿Cómo se relacionan la correlación y la cointegración?

¿De qué manera (y en qué circunstancias) se relacionan la correlación y la cointegración, si es que se relacionan? Una diferencia es que normalmente se piensa en la correlación en términos de rendimientos y en la cointegración en términos de precio. Otra cuestión son las diferentes medidas de correlación (Pearson, Spearman, distancia/Brownian) y de cointegración (Engle/Granger y Phillips/Ouliaris).

0 votos

Entonces, mi pregunta es, ¿alguien sabe cómo generar precios correlacionados? Para generar series temporales correlacionadas hay que utilizar el enfoque de la cópula.

0 votos

@Dr.Mike Si quieres hacer una pregunta, tienes que hacer clic en el Preguntar en la esquina superior derecha y publíquelo allí.

0 votos

@Joshua Ulrich ¿es posible tener cointegración sin correlación de las tasas de retorno a largo plazo (o correlación de la diferencia de precios para un gran retardo de la diferencia)?

45voto

Dan Herbert Puntos 38336

Esto no es realmente una respuesta, pero es demasiado largo para añadirlo como comentario.

Siempre he tenido un verdadero problema con la correlación/covarianza de precio . Para mí, no significa nada. Me doy cuenta de que se usa (abusa) en muchos contextos, pero simplemente no saco nada en claro (con el tiempo, el precio tiene que subir, bajar o ir de lado, así que ¿no están todos los precios "correlacionados"?)

Por otro lado, la correlación/covarianza de devuelve tiene sentido. Estás tratando con series aleatorias, no con series aleatorias integradas.

Por ejemplo, a continuación se muestra el código necesario para generar dos series de precios que están correlacionadas devuelve .

A continuación se muestra un gráfico típico. En general, cuando la serie roja sube, es probable que la serie azul suba. Si ejecuta este código una y otra vez, tendrá una idea de los "rendimientos correlacionados".

 library(MASS)   

 #The input data     
 numpoi <- 1000  #Number of points to generate     
 meax <- 0.0002  #Mean for x     
 stax <- 0.010   #Standard deviation for x     
 meay <- 0.0002  #Mean for y     
 stay <- 0.005   #Standard deviation for y     
 corxy <- 0.8    #Correlation coeficient for xy     

 #Build the covariance matrix and generate the correlated random results     
 (covmat <- matrix(c(stax^2, corxy*stax*stay, corxy*stax*stay, stay^2), nrow=2))     
 res <- mvrnorm(numpoi, c(meax, meay), covmat)     
 plot(res[,1], res[,2])     

 #Calculate the stats of res[] so they can be checked with the input data     
 mean(res[,1])     
 sd(res[,1])     
 mean(res[,2])     
 sd(res[,2])     
 cor(res[,1], res[,2])     

 #Plot the two price series that have correlated returns      
 plot(exp(cumsum(res[,1])), main="Two Price Series with Correlated Returns", ylab="Price", type="l", col="red")      
 lines(exp(cumsum(res[,2])), col="blue")     

enter image description here

Si trato de generar una correlación precios (no devoluciones) Estoy perplejo. Las únicas técnicas que conozco se refieren a aleatorio normalmente distribuido entradas, no entradas integradas .

Entonces, mi pregunta es, ¿alguien sabe cómo generar precios correlacionados ?

No tengo tiempo, así que tendré que añadir mis comentarios sobre la cointegración más tarde.

Edición 1 (24/04/2011) ================================================

Lo anterior se refiere a la correlación de rendimientos pero, como se insinúa en la pregunta original, en el mundo real parece que correlación de precios es una cuestión más importante. Después de todo, aunque los rendimientos estén correlacionados, si las dos series de precios se separan con el tiempo, mi operación de pares me va a fastidiar. Ahí es donde entra la cointegración.

Cuando busco "cointegración":

http://en.wikipedia.org/wiki/Cointegration

Me sale algo así como:

"....Si dos o más series están integradas individualmente (en el sentido de serie temporal) pero alguna combinación lineal de ellas tiene un orden de integración inferior, entonces se dice que las series están cointegradas...."

¿Qué significa eso?

Necesito algo de código para poder jugar con las cosas y hacer que esa definición tenga sentido. Aquí está mi intento de una versión muy simple de cointegración. Voy a utilizar los mismos datos de entrada como en el código anterior.

#The input data  
numpoi <- 1000    #Number of data points  
meax <- 0.0002    #Mean for x  
stax <- 0.0100    #Standard deviation for x  
meay <- 0.0002    #Mean for y  
stay <- 0.0050    #Standard deviation for y  
coex <- 0.0200    #Co-integration coefficient for x  
coey <- 0.0200    #Co-integration coefficient for y  

#Generate the noise terms for x and y  
ranx <- rnorm(numpoi, mean=meax, sd=stax) #White noise for x  
rany <- rnorm(numpoi, mean=meay, sd=stay) #White noise for y  

#Generate the co-integrated series x and y  
x <- numeric(numpoi)  
y <- numeric(numpoi)  
x[1] <- 0  
y[1] <- 0  
for (i in 2:numpoi) {  
  x[i] <- x[i-1] + (coex * (y[i-1] - x[i-1])) + ranx[i-1]  
  y[i] <- y[i-1] + (coey * (x[i-1] - y[i-1])) + rany[i-1]  
}  

#Plot x and y as prices  
ylim <- range(exp(x), exp(y))  
plot(exp(x), ylim=ylim, type="l", main=paste("Co-integrated Pair (coex=",coex,",  coey=",coey,")", sep=""), ylab="Price", col="red")  
lines(exp(y), col="blue")  
legend("bottomleft", c("exp(x)", "exp(y)"), lty=c(1, 1), col=c("red", "blue"), bg="white")  

#Calculate the correlation of the returns.  
#Notice that for reasonable coex and coey values,  
#the correlation of dx and dy is dominated by  
#the spurious correlation of ranx and rany  
dx <- diff(x)  
dy <- diff(y)  
plot(dx, dy)  
cor(dx, dy)  
cor(ranx, rany)  

enter image description here

Observe que el "término de cointegración" para x e y aparece dentro del "bucle for":

x[i] <- x[i-1] + (coex * (y[i-1] - x[i-1])) + ranx[i-1]  
y[i] <- y[i-1] + (coey * (x[i-1] - y[i-1])) + rany[i-1]  

Un positivo coex determina la velocidad x tratará de reducir la dispersión con y . Asimismo, un positivo coey determina la velocidad y tratará de reducir la dispersión con x . Puede ajustar estos valores para generar todo tipo de gráficos y ver cómo esos términos de cointegración (y[i-1] - x[i-1]) y (x[i-1] - y[i-1]) trabajo.

Cuando hayas jugado un rato con esto, fíjate en que no responde realmente a la correlación de precios problema. Lo sustituye. Entonces, ¿ya me he librado de la cuestión de la correlación de precios?

\=========================================================

Obviamente, ahora es el momento de juntar los dos conceptos para obtener un modelo que se acerque a la negociación por pares. A continuación, el código:

library(MASS)  

#The input data  
numpoi <- 1000    #Number of data points  
meax <- 0.0002    #Mean for x  
stax <- 0.0100    #Standard deviation for x  
meay <- 0.0002    #Mean for y  
stay <- 0.0050    #Standard deviation for y  
coex <- 0.0200    #Co-integration coefficient for x  
coey <- 0.0200    #Co-integration coefficient for y  
corxy <- 0.800    #Correlation coeficient for xy  

#Build the covariance matrix and generate the correlated random results  
(covmat <- matrix(c(stax^2, corxy*stax*stay, corxy*stax*stay, stay^2), nrow=2))  
res <- mvrnorm(numpoi, c(meax, meay), covmat)  

#Generate the co-integrated series x and y  
x <- numeric(numpoi)  
y <- numeric(numpoi)  
x[1] <- 0  
y[1] <- 0  
for (i in 2:numpoi) {  
  x[i] <- x[i-1] + (coex * (y[i-1] - x[i-1])) + res[i-1, 1]  
  y[i] <- y[i-1] + (coey * (x[i-1] - y[i-1])) + res[i-1, 2]  
}  

#Plot x and y as prices  
ylim <- range(exp(x), exp(y))  
plot(exp(x), ylim=ylim, type="l", main=paste("Co-integrated Pair with Correlated Returns (coex=",coex,",  coey=",coey,")", sep=""), ylab="Price", col="red")  
lines(exp(y), col="blue")  
legend("bottomleft", c("exp(x)", "exp(y)"), lty=c(1, 1), col=c("red", "blue"), bg="white")  

#Calculate the correlation of the returns.  
#Notice that for reasonable coex and coey values,  
#the correlation of dx and dy is dominated by  
#the correlation of res[,1] and res[,2]  
dx <- diff(x)  
dy <- diff(y)  
plot(dx, dy)  
cor(dx, dy)  
cor(res[, 1], res[, 2])  

enter image description here

Se puede jugar con los parámetros y generar todo tipo de combinaciones. Observe que, aunque estas series reducen sistemáticamente el diferencial, no se puede predecir cómo o cuándo el diferencial se reducirá. Esta es sólo una de las razones por las que el comercio de pares es tan divertido. El resultado final es que, para llegar a modelar el comercio de pares, se requiere tanto los rendimientos correlacionados como la cointegración .

Un ejemplo típico. Exxon (XOM) frente a Chevron (CVX), donde se aplica el modelo anterior si se añaden algunos términos adicionales.

http://finance.yahoo.com/q/bc?s=XOM&t=5y&l=on&z=l&q=l&c=cvx

Así que, respondiendo a tu pregunta (como sólo mi opinión), la correlación de precios se suele utilizar/abusar como un intento de tratar la divergencia/cercanía a largo plazo de las trayectorias de las series, cuando lo que se debería utilizar es la cointegración. Son los términos de cointegración los que limitan la deriva entre las series. La correlación de precios no tiene ningún significado real. La correlación de los rendimientos de las series determina la similitud a corto plazo de las mismas.

Lo he hecho con prisas, así que si alguien ve un error, que no tema señalarlo.

8 votos

la respuesta con el código es tan buena....

0 votos

Acabo de ver este post en mi feed, ¿es este código un ejemplo de cómo se pueden generar datos de series temporales cointegradas?

25voto

titanous Puntos 1601

La correlación es un concepto mucho más utilizado y tiene significados mucho más "informales". Si tenemos sólo dos variables aleatorias $X$ y $Y$ entonces la correlación es simplemente una medida de dependencia lineal entre las dos variables:

$$corr(X,Y)=\frac{cov(X,Y)}{\sqrt{var(X)var(Y)}}=\frac{EXY-EX\cdot EY}{\sqrt{var(X)var(Y)}}$$

Si la correlación es -1 o 1, entonces las dos variables están perfectamente relacionadas linealmente, es decir, existen números reales $a,b,c$ para lo cual

$$P(aX+bY=c)=1$$

La correlación se denomina medida de dependencia lineal ya que si estandarizamos $X$ y $Y$ (restar las medias y dividir por las desviaciones estándar) entonces la correlación es la solución para lo siguiente

$$cor(X,Y)=argmin_a(E(Y-aX)^2)$$

Así que si $cor(X,Y)=0$ entonces puedes decir que no hay manera de explicar $Y$ utilizando la combinación lineal de $X$ . Para las variables aleatorias gaussianas esto tiene implicaciones más fuertes, si la correlación es cero, entonces las variables aleatorias gaussianas son independientes.

Cuando tenemos series temporales tenemos más de dos variables. Cada serie temporal es una secuencia de variables aleatorias $\{X_t,t=1,2,...\}$ . Naturalmente, podemos calcular la correlación entre dos períodos de tiempo cualesquiera $corr(X_t,X_s)$ . Esto nos da una gran cantidad de correlaciones para una serie temporal, que se caracterizan por la función de correlación $r(t,s)=corr(X_t,X_s)$ . Ahora bien, si esta función depende sólo de la diferencia $t-s$ es decir $r(t,s)=r(t-s)$ entonces la serie temporal $X_t$ se denominan estacionarias (para ser precisos esto se llama estacionariedad débil y también requiere que $EX_t$ debería ser constante, para ser más precisos la definición de estacionariedad en realidad implica la covarianza no la correlación).

Ahora, si introducimos otra serie temporal $Y_t$ de nuevo podemos definir un montón de correlaciones $corr(X_t,Y_s)$ . Y de nuevo podemos definir la estacionariedad. Ahora para las series estacionarias $(X_t,Y_t)$ la correlación $corr(X_t,Y_t)$ no depende de $t$ , por lo que como en el caso de dos variables aleatorias simples podemos hablar de relación lineal entre $X_t$ y $Y_t$ . Obsérvese que en el caso de las series temporales todavía nos quedan muchas correlaciones: $corr(X_t,Y_t+h)$ , $h=...,-1,0,1,...$ que puede interpretarse como una medida de linealidad entre los valores pasados y futuros de las series temporales $X_t$ y $Y_t$ .

Y sólo ahora podemos introducir el concepto de cointegración. Las series temporales estacionarias se denominan integradas de orden 0. Si la diferencia de la serie temporal es estacionaria, entonces dicha serie temporal se denomina integrada de orden 1.

Las series temporales integradas son no estacionarias, por lo que, por ejemplo $corr(X_t,Y_t)$ para las series temporales integradas dependen de $t$ que no es tan agradable. Si, por ejemplo, tenemos procesos estacionarios altamente correlacionados, sabiendo que la correlación no depende del tiempo, podemos pronosticar un proceso con gran precisión conociendo los valores del otro. Esto no es así en el caso de las series temporales integradas. Por supuesto, podemos diferenciar las series temporales integradas para obtener las series temporales estacionarias, pero si las diferenciamos sólo podemos investigar la llamada dinámica a corto plazo, es decir, lo que ocurre ahora o en un futuro próximo (aquí medimos el tiempo en número de periodos, el corto plazo suele significar de 1 a 10 periodos).

Ahora, finalmente, podemos introducir la definición de cointegración. El integrado (de orden 1) series temporales $X_t$ y $Y_t$ se llaman cointegrado si su combinación lineal $aX_t+bY_t$ es estacionario. Como la propiedad de estacionariedad se mantiene si multiplicamos la serie temporal por la constante obtenemos que $Y_t-a/(-b)X_t$ es estacionario. Lo que a su vez nos da

$$Y_t=cX_t+\varepsilon_t$$

donde $\varepsilon_t$ es una serie temporal estacionaria y $c$ es una constante apropiada. Esto también es útil para predecir lo que ocurre con $Y_t$ si sabemos $X_t$ y $\varepsilon_t$ no varía demasiado. Obsérvese que esta relación se mantiene para todos los $t$ y $c$ se puede estimar teniendo los datos adecuados ya que no depende de $t$ .

La confusión entre correlación y cointegración podría surgir del hecho de que para estacionario series temporales $Y_t$ y $X_t$ se mantiene exactamente la misma relación:

$$Y_t=cX_t+\varepsilon_t$$

donde $\varepsilon_t$ es un proceso estacionario. Además, si intentamos estimar $c$ utilizando los datos se puede demostrar que si aumentamos el número de puntos de datos indefinidamente, la estimación para $c$ convergerá a algún número significativo, que por ejemplo en caso de que $X_t$ y $Y_t$ son series temporales de varianza unitaria de media cero será exactamente la correlación $corr(X_t,Y_t)$ (que para las series estacionarias es la constante, como se ha comentado anteriormente).

Obsérvese que esto no es válido para las series temporales cointegradas: aunque $c$ puede ser estimado, en general no será la correlación $corr(X_t,Y_t)$ ya que $X_t$ y $Y_t$ están integradas (el caso particular especial se discute en el enlace más abajo). La historia empeora para las series temporales integradas, que no están cointegradas. Entonces, la misma estimación para $c$ que tiene buenas propiedades e interpretaciones bajo estacionariedad y cointegración pierde su sentido. Para más detalles matemáticos de lo que ocurre exactamente en este caso puedes mirar mi post en stats.SE .

Espero que esta respuesta sea útil. He sacrificado intencionadamente algo de rigor matemático para mejorar la claridad, espero que no demasiado.

0 votos

¿Por casualidad conoces un video tipo Khan-academy que muestre la derivación de lo anterior?

0 votos

¿Derivación de qué exactamente? En este post no se deriva nada, sólo se dan las definiciones. Como este post es puramente mi disposición de los hechos conocidos, no sé acerca de los videos donde alguien está hablando de esto.

14voto

Mike Puntos 1113

De Quantitative Trading por Ernie Chan :

"La correlación entre dos series de precios se refiere en realidad a las correlaciones de sus rendimientos en un determinado horizonte temporal (para concretar, digamos un día). Si dos valores están correlacionados positivamente, hay muchas posibilidades de que sus precios se muevan en la misma dirección la mayoría de los días. Sin embargo, tener una correlación positiva no dice nada sobre el comportamiento a largo plazo de los dos valores. En particular, no garantiza que los precios de las acciones no se distancien cada vez más a largo plazo, aunque se muevan en la misma dirección la mayoría de los días. Sin embargo, si dos valores están cointegrados y siguen estándolo en el futuro, es poco probable que sus precios (ponderados adecuadamente) diverjan. Sin embargo, sus rendimientos diarios (o semanales, o de cualquier otro horizonte temporal) pueden estar bastante descorrelacionados".

6 votos

La correlación entre dos series de precios no no en realidad se refieren a las correlaciones de sus rendimientos. Se puede calcular la correlación de dos series de precios, pero no es así como la gente suele pensar en la correlación entre instrumentos y es lo que quería decir con "un escollo". Estoy de acuerdo en que la correlación entre las primeras diferencias de una serie no te dice nada sobre la cointegración de sus niveles, pero no te ayuda a entender cómo se relacionan ambos conceptos.

10voto

Ed S. Puntos 70246

Antes de intentar responder a su pregunta, debemos establecer una diferencia entre lo que se quiere analizar. Es cierto que antes de que se desarrollaran las modernas metodologías de series temporales, los investigadores utilizaban la "correlación" entre los precios como medio de análisis. Sin embargo, dado que un precio (en un momento concreto del tiempo) es un valor, no tiene sentido comparar 2 precios entre sí utilizando la "correlación" (aunque hay algunos intentos: Robinson (2006) http://www.cemmap.ac.uk/wps/cwp107.pdf ) Y como ya se ha señalado antes, la mayoría de la gente de arriba menciona la correlación en el contexto de los rendimientos y demás.

La mayoría de las veces no nos interesa el precio, sino su movimiento. (es decir, es un concepto relativo/dinámico que implica el TIEMPO).

En este contexto de "series temporales", la cointegración es la herramienta adecuada para medir la relación entre los movimientos de los precios.

Permítame intentar responder a su pregunta de forma concreta explicando un poco la metodología de cointegración de Johansen a modo de ilustración. La estimación de máxima verosimilitud está en función del término determinista y de los efectos estacionarios. En otras palabras, consideramos las regresiones lineales multivariadas 1 y 2. Con transformaciones matemáticas básicas es fácil demostrar que los estadísticos de la prueba de Johansen están directamente relacionados con el ángulo (media(t)) entre los vectores de residuos en (1) y (2), ut y vt respectivamente. (Si quieres leer la prueba completa, no dudes en ponerte en contacto conmigo)

enter image description here

En otras palabras, cuanto menor sea el ángulo(t) entre los dos "vectores de error" ut y vt, más "conectados" o integrados estarán los movimientos de precios entre las series temporales 1 y 2. Lo cual es bastante intuitivo en realidad...

Además, con algunos conocimientos previos, creo que esta ilustración pone la cointegración en contraste con la correlación

Espero que esto no haya sido demasiado confuso (sin la prueba completa) y haya ayudado a responder a su pregunta en cierta medida.

0 votos

Ow, veo que como nuevo usuario no puedo añadir imágenes... mis disculpas (intentaré añadirlo más tarde cuando mi puntuación de reputación suba supongo)

10voto

desolat Puntos 226
  • La correlación es una propiedad de las colecciones de observaciones.
  • La cointegración es una propiedad de las series temporales.

La diferencia importante es que las observaciones temporales tienen un vecino a su izquierda y otro a su derecha. Las colecciones son como un conjunto: no hay relaciones implícitas de "vecindad".

La media móvil es una estadística inadecuada para aplicarla a experimentos de laboratorio o a datos de encuestas telefónicas. Es apropiada en el análisis de series temporales.

2 votos

Interesante punto de vista. Si estamos comparando dos series temporales, la correlación nos dice algo sobre la serie temporal completa en su conjunto, mientras que la cointegración nos dice algo sobre los puntos de coincidencia individuales.

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