46 votos

¿Cómo puedo representar gráficamente la evolución de una matriz de covarianza en el tiempo?

Estoy trabajando con un conjunto de matrices de covarianza evaluadas en varios puntos del tiempo a lo largo de cierta historia. Cada matriz de covarianza es $N\times N$ para $N$ series temporales financieras a lo largo de $T$ periodos. Me gustaría explorar algunas de las propiedades de la evolución de esta matriz a lo largo del tiempo, en particular si la correlación en su conjunto aumenta o disminuye, y si ciertas series se correlacionan más o menos con el conjunto. Estoy buscando sugerencias en cuanto a los tipos de análisis a realizar en este conjunto de datos, y en particular el análisis gráfico / pictórico. Lo ideal sería evitar tener que profundizar en cada serie como $N$ es bastante grande.

Actualización

Los siguientes gráficos fueron generados en base a la respuesta aceptada de @Quant-Guy. PC = componente principal = vector propio. El análisis se hizo sobre correlaciones en lugar de covarianzas para tener en cuenta las varianzas muy diferentes de los $N$ serie. Principal Component Angle with Previous Month Principal Component Angle with Present Principal Component Angle with Initial

23voto

mendicant Puntos 489

Yo consideraría un gráfico de movimiento que traza los valores propios de la matriz de covarianza a lo largo del tiempo.

Para una vista estática se puede crear una tabla: las filas representan fechas y las columnas representan vectores propios. Las entradas de la tabla representan cambios en el ángulo del vector propio desde la fila anterior. Esto mostrará lo estable que es su estructura de covarianza.

También puede crear una segunda tabla, esta vez con los valores propios como columnas ordenadas de mayor a menor (y los valores correspondientes abajo para cada fecha). Esto muestra la varianza descrita por cada vector propio para que pueda ver si la correlación en su conjunto está aumentando o disminuyendo

Actualización: También se puede medir la distancia entre las dos matrices de covarianza mediante alguna medida de distancia como Kullback-Leibler divergencia, distancia euclidiana, Mahalanabois, etc.

10voto

Vasil Puntos 141

He aquí una posibilidad interesante: análisis de redes de correlación + gráfico de movimiento.

Gracias a los candentes esfuerzos de investigación en el análisis de redes sociales (SNA), el análisis de redes y las bibliotecas gráficas como R y Gephis son ahora fácilmente accesibles. Estoy muy versado en el análisis de correlación, y tengo la sensación de que el SCN puede adaptarse eficazmente para ello. Al fin y al cabo, la correlación "lineal" no es más que una relación especial entre muchas otras. Dado que el SCN es un área de gran actualidad. Se dedican muchos esfuerzos y se dispone de muchos recursos. No puedo evitar imaginar que podemos aprovecharlo en las finanzas.

Entonces, el concepto de gráfico de movimiento puede aprovechar aún más el poder de la representación de la red. Me imagino que cuando un régimen se desplaza hacia una alta correlación, deberíamos ver la dinámica de los efectos de "agrupación", mientras que los regímenes de baja correlación mostrarían nodos dispersos. Por ejemplo, si se produce un evento a nivel sectorial, veríamos que los nodos de ese sector empiezan a agruparse más estrechamente en torno a unos pocos nodos de referencia. En un macroevento, veríamos que todos los puntos de referencia o vectores propios se agrupan.

En cualquier caso, creo que el gráfico de la red de movimiento será una representación mucho más rica que la matriz de movimiento, donde la dinámica suele representarse en números, colores o ángulos. Si uno sigue prefiriendo visualizar la "covarianza", entonces el tamaño del nodo será un lugar natural para la volatilidad (aunque sigo prefiriendo separar la visualización de la correlación y la varianza). La anchura de la línea / el color / la distancia pueden representar algo más intuitivamente.

Por último, supongo que la razón por la que los gráficos de red en evolución no se utilizan a menudo para las correlaciones financieras es que muchas de las aplicaciones financieras tradicionales son estáticas, en cuyo caso las ventajas de los gráficos de red sobre la representación matricial son limitadas.

4voto

Antonio Haley Puntos 2588

Yo miraría la evolución de un mapa de calor basado en la estructura de correlación (literalmente el triángulo inferior). Probablemente escribiría un script en R o python que escribiera el mapa de calor por t en el disco, y luego usaría un programa de línea de comandos como imagemagick para unir las imágenes en un gif animado, por ejemplo. Estoy seguro de que podría hacerlo completamente en Processing también, y allí sería capaz de pasar el ratón por encima de los pares, etc. Tal vez las técnicas de seriación podrían agrupar conjuntos a posteriori dentro del triángulo.

2voto

fredley Puntos 274

A nivel conceptual, hacer un análisis de clústeres o kmeans, para una k elegida arbitrariamente (en el análisis de clústeres con métodos jerárquicos simplemente cortaríamos el dendrograma en k trozos/subárboles) y luego copmutar las correlaciones medias es mucho más sencillo que el PCA.

Pero hay algunos problemas con el análisis de conglomerados en la matriz de correlación de las series temporales. Si, para cada día, tenemos una matriz de correlación de los cambios de precios con una resolución de tiempo de 15 minutos y luego la agrupamos en K piezas, entonces para cada día podríamos tener diferentes conjuntos de acciones en cada grupo, podemos luchar o utilizarlo.

Lucha: si los datos son de un periodo de 6 meses, entonces encontramos clusters fusionando las series temporales diarias de cada acción en una sola serie temporal y luego agrupamos y calculamos los promedios o alguna medida diferente. En el caso de los datos futuros, podemos mantener la pertenencia de las acciones a los clusters o fusionar las nuevas observaciones con el conjunto anterior o realizar el análisis en ventana móvil.

Utilícelo : calcule el número total de cambios en la pertenencia de las acciones - el primer día tenemos los grupos A,B A={stock1,stock2} B={stock3,stock4,stock5} al día siguiente : A={stock1,stock3,stock4} B={stock2,stock5} por lo que 3 acciones han cambiado sus racimos. Cuantos más valores hayan cambiado de grupo, más inusual será el comportamiento del mercado ese día. Esto podría hacerse fácilmente con kmeans: tomamos las medias del día T y atribuciones de las acciones T y T+1 día, y luego contar las diferencias.

y la matriz de distancia =(2*(1-corelationMatrix))^0.5

Algunas visualizaciones geniales de la matriz de correlación por análisis de redes : http://www.maths.tcd.ie/~coelhor/Palermo_Presentación_v1.0.pdf

1voto

naumcho Puntos 2830

Otra opción son los árboles de extensión mínima, cuyas aristas entre nodos se basan en las distancias euclidianas de la matriz o en otra medida de distancia de su elección. Pueden ser más eficaces para ilustrar la estructura subyacente de la matriz que otros métodos (p. ej., mapas térmicos, gráficos de relación de valores propios), pero pueden no ser prácticos si T es grande.

No has especificado en qué entorno estás trabajando, pero R tiene varios paquetes (ver vegan:spantree, ape:mst, igraph:minimum.spanning.tree, ade4:mstree y fAssets:assetsDendrogramPlot o fAssets:assetsCorEigenPlot) que permiten trazar tanto árboles de extensión mínima (con varios tipos de diseño) como dendrogramas. Gephi también produce gráficos que pueden ser más agradables estéticamente (y es de código abierto), aunque requiere que el procesamiento de datos se haga en otro lugar y hay un poco de curva de aprendizaje.

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