24 votos

¿Cómo ajusto una matriz de correlación cuyos elementos son generados a partir de diferentes regímenes de mercado?

Digamos que quiero calcular una matriz de correlación para 50 acciones utilizando datos diarios históricos de 3 años. Y hay algunas acciones que se han listado recientemente durante un año.

Esto no es técnicamente desafiante porque la función de correlación en R puede ignorar opcionalmente los datos faltantes al calcular la correlación pareja por pareja. Pero honestamente me preocupó después de pensarlo profundamente: todas las correlaciones para las acciones recién listadas se sesgarán hacia el régimen en el que se encuentren.

Por ejemplo, una acción que existe solo en los últimos meses inevitablemente tendrá una correlación más alta que las acciones que tienen un historial completo de 3 años. Y pienso que esto causará sesgos y problemas molestos en las aplicaciones siguientes que utilicen esta matriz de correlación.

Entonces, mi pregunta es: ¿cómo ajusto mi matriz de correlación cuyos elementos se generan a partir de diferentes regímenes de mercado? Siento un dilema. Para asegurarme de que toda la matriz esté en el mismo régimen, parece que necesito usar la menor cantidad de muestras posible, o tengo que desechar esa acción. Pero de cualquier manera me parece un desperdicio.

Sé que las correlaciones para esa acción tienen que ser más bajas, ¿pero cuánto más bajas? ¿Hay algún enfoque o fórmula derivados de argumentos sólidos?

Investigué un poco y encontré sorprendentemente que toda la investigación pública sobre la matriz de correlación asume la adecuación de los datos. ¿Cómo puede ser posible en la práctica?! Un misterio para mí ver que este problema aparentemente común no ha sido abordado públicamente.

18voto

mendicant Puntos 489

Hay algunas investigaciones que tienen una relevancia directa sobre el problema de estimar la covarianza en presencia de historiales de retorno desiguales y cambios de régimen.

El profesor de Wharton Robert Stambaugh (de fama en primas de liquidez) escribió un documento en el '97 llamado "Analyzing Investments Whose Histories Differ in Length". Antes de este documento, la mayoría de los académicos y profesionales solían utilizar la "truncación" (es decir, restringir a una historia igual), o estimadores de máxima verosimilitud (similar al enfoque de pares completos que mencionas). Algunos también usarían regresión para imputar la variable faltante.

Stambaugh propone un enfoque bayesiano conocido popularmente como el algoritmo Expectation-Maximization para imputar rendimientos de longitud desigual. Discute la estimación de covarianza/correlación en la sección 2.4.

En un enfoque práctico, resulta que hay excelentes paquetes para realizar este método de imputación de faltantes en R -- Amelia II: Un Programa para Datos Faltantes (que utiliza el algoritmo E-M). También existe un paquete llamado monomvn que estima matrices de covarianza directamente cuando faltan datos de longitudes desiguales también a través de E-M. El algoritmo E-M es la respuesta "convencional" para muchos académicos y profesionales cuando se genera una matriz de covarianza en presencia de datos faltantes con longitudes desiguales.

Sin embargo, en mi experiencia personal, el algoritmo E-M tiene limitaciones.

Dado que esta es una opinión poco convencional, te animaría a probar el algoritmo y ver si cumple con tus expectativas. Por ejemplo, puedes empezar con un conjunto de datos completo, truncar las historias artificialmente y los faltantes, ajustar una matriz de covarianza usando monomvm o imputar vía Amelia, y comparar los valores con faltantes con el conjunto de datos prístino. También deberías explorar largos períodos de historia vs. períodos más cortos. Nota: Dado que todas las matrices de covarianza son representaciones de una distribución multi-variante normal, tal vez sea ingenuo esperar grandes resultados del E-M. Podrías usar el algoritmo E-M para ajustar una mezcla de gaussianas (alto-vol, bajo-vol, régimen normal digamos) pero entonces esto se convierte más en un ejercicio de investigación que en un parche.

Aquí tienes algunas alternativas:

Un método simple y fiable es imputar los rendimientos de seguridad a los rendimientos promedio de la industria o sector (opcionalmente con algo de ruido gaussiano para preservar la varianza del sistema). La lógica es que el rendimiento del sector es el factor dominante para explicar la mayoría del riesgo y el rendimiento de un valor. Si tus faltantes son aleatorios, no tienen estructura, y la distribución de rendimientos de valores con faltantes no es muy diferente de la distribución de rendimientos de valores sin faltantes, entonces esto merece consideración.

También podrías ajustar un modelo de factores de sección transversal e imputar los faltantes a través de las exposiciones de las acciones.

Una técnica más avanzada (probablemente excesiva) sería utilizar un método de aprendizaje automático como bosques aleatorios o un algoritmo de agrupación como k-nn para imputar faltantes. (Para evaluar si estos métodos son necesarios, puedes consultar una serie de literatura llamada Análisis de Influencia y Regresión Robusta).

Si decides imputar faltantes, luego puedes estimar una matriz de covarianza ponderada exponencialmente (usa cov.wt en R). La matriz de covarianza EW tiene una relación especial con los modelos GARCH -- una característica deseable ya que la volatilidad es auto-correlacionada.

Estos métodos (así como la contracción de Ledoit-Wolf y RMT) superan la estimación a través de la matriz de covarianza de muestra. El uso de una simple matriz de covarianza ponderada exponencialmente es bastante común. Las opciones populares de factores de decaimiento van desde (.94 si preguntas a JP Morgan Risk Metrics, hasta .99). El documento "Selección de cartera utilizando matrices de covarianza variables en el tiempo" te ayudará a explorar las matrices de covarianza ponderadas exponencialmente para que puedas enfrentar mejor el cambio de régimen.

Otra forma de crear matrices de covarianza que se adapten al cambio de régimen es desarrollar una matriz para cada régimen y tomar expectativas. Básicamente, divides tus datos en función de la distancia euclidiana (o Mahalanabois) y construir matrices de covarianza separadas para cada régimen y tomar un promedio ponderado por probabilidad de cada una. Mark Kritzman tiene un enfoque intuitivo para esto en su artículo Riesgo, Regímenes y Sobreconfianza.

18voto

Vasil Puntos 141

¡La lista de Quant Guy es realmente impresionante! Sin embargo, ¡no estoy seguro de que resolverán fácilmente tu problema específico? Creo que hay una pieza faltante.

Ten en cuenta que la imputación de datos faltantes es un tema muy amplio. Hay muchas recetas para imputar valores faltantes, pero estas son para sus 'suposiciones' específicas y propósitos. No necesariamente pretenden abordar bien tu problema específico: el cambio de régimen.

Para abordar mejor tu problema específico, debes definir cuantitativamente el régimen de mercado como parte de tu fórmula de ajuste. De lo contrario, no tendría sentido lógico que tu modelo esté consciente y pueda reaccionar adecuadamente.

En la investigación de Stambaugh del '97 (que creo que es la referencia más relevante que mencionó Quant Guy), la fórmula de Stambaugh realmente utilizó B = V21*V11^(-1), es decir, Beta, para hacer el ajuste. Debo decir que poco después, la historia nos ha enseñado lo vulnerable que es el beta varias veces, especialmente en un entorno de mercado que cambia rápidamente (¿pero supongo que la aplicación de Beta aún era novedosa y no tan frágil en la época de los '90?).

Ahora definamos el régimen de mercado cuantitativamente. En sentido común, la correlación promedio es un indicador de régimen bastante útil. Simple e intuitivo, fácil de aplicar en un modelo propio (y siento que por eso el modelo de Ledoit-Wolf es tan popular :)). Pero sí, como Branson señaló en la respuesta de Ian, hay posibilidad de que obtengamos resultados muy indeseables.

Una de las soluciones potenciales es mapear el indicador intuitivo a un espacio/dimensión adecuados para operaciones, y luego transformarlo de vuelta. Esta es una técnica muy útil que comúnmente se emplea en el aprendizaje automático. La correlación vive en un espacio muy restringido [-1,1] y esto limita en gran medida lo que podemos hacer al respecto. (Por favor no pienses que la covarianza estará menos restringida. Cuando las colocas juntas en una matriz, créeme, será tan restringido como la correlación. De hecho, la correlación es más fácil de trabajar para identificar posibles problemas)

Ahora, ¿qué tal si mapeamos la correlación a un espacio igualmente intuitivo (al menos para mí) pero menos restringido,

Razón Señal-Ruido (SNR) = Correlación^2 / (1 - Correlación^2)

** Correlación = sqrt(snr/(1+snr))

y refinamos mi indicador de régimen como la mediana del SNR. (*Raramente uso promedios en aplicaciones financieras)

No sé cómo se siente la gente acerca del SNR, pero me siento muy cómodo con una formación en EE. En sistemas de comunicación, el SNR es exactamente el indicador de régimen (entorno) que caracteriza un canal. Siento una analogía significativa aquí.

El trabajo restante será sencillo. Utilizaré el cociente de mis indicadores de régimen como un multiplicador para ajustar los SNR emparejados de activos jóvenes contra otros activos. Luego mapearé el ajuste final de vuelta a las correlaciones.

Obtendrás al menos los siguientes beneficios al utilizar este enfoque:

  • Las correlaciones no se dispararán como en tu primer intento
  • El ranking original de correlaciones emparejadas (con activos de corta duración) se conserva
  • Mucho más fácil de implementar. No es necesario imputar datos faltantes.
  • Intuitivo (para mí), fácil de entender qué está sucediendo en tu código.
  • Este enfoque es compatible con muchas otras técnicas en las referencias de Quant Guy como el Encogimiento de Ledoit-Wolf, RMT, y matrices de covarianza representativas ponderadas.

Por último, pero no menos importante, esta es una idea de colaboración con uno de mis colegas más brillantes y amigos cercanos, Manish Agarwal.

9voto

tenfour Puntos 118

Hay dos funciones para estimar matrices de varianza con valores faltantes (y dirigidas a finanzas, por cierto) en el paquete R BurStFin.

Disponible a través de:

install.packages('BurStFin', repos="http://www.burns-stat.com/R")

pero aún no para 2.14.x.

Por supuesto, puedes obtener una matriz de correlación a partir de la matriz de varianza.

Una función estima un modelo de factor estadístico, la otra realiza un encogimiento de Ledoit-Wolf para igualar la correlación. El tratamiento de los valores faltantes es bastante ad hoc en las funciones. Ha habido algún estudio al respecto (no recuerdo referencias), pero estoy de acuerdo en que no tanto como uno esperaría.

Creo que el meollo de la cuestión es correcto: cómo se tratan los valores faltantes puede tener un efecto significativo en los resultados. Por ejemplo, en el caso del modelo de factores, es importante considerar si quieres encoger hacia cero o hacia los factores.

3voto

nardi Puntos 58

¿Qué tal adaptar la contracción de Ledoit-Wolf a la correlación promedio? Calculas la ratio de correlaciones promedio en dos regímenes para tener una idea de la magnitud del cambio de régimen. Utiliza esta ratio para ajustar las correlaciones de las acciones de corta duración con otras. El método es simple y los resultados definitivamente tendrán sentido para ti.

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