3 votos

El estimador de contracción de Ledoit-Wolf no da una matriz de covarianza positiva definida

Utilicé datos diarios de diez años para 407 acciones y calculé las matrices de covarianza diarias y mensuales. Como tengo más variables que observaciones para la matriz mensual, no me sorprendió que la matriz no fuera invertible (y, por tanto, inútil para la optimización de la cartera). Me sorprendió ver que la matriz de covarianza diaria no era invertible. Entonces intenté reducir la matriz con el estimador de reducción de Ledoit-Wolf utilizando el paquete tawny. No sirvió de nada. Hace que la matriz de covarianza sea muy, muy pequeña, pero no invertible.

¿Alguien tiene alguna sugerencia sobre cuál podría ser el problema? ¿Cómo podría mejorar la matriz de covarianza?

3voto

John Haager Puntos 116

El problema de Ledoit-Wolf es que es muy sensible a los valores atípicos.

Deberías probar estos:

  1. DCC GARCH
    • lamentablemente, no está disponible en Python
  2. Media móvil ponderada exponencialmente (EWMA)
    • da resultados ligeramente peores que DCC-GARCH
  3. Determinante mínimo de la covarianza
    • sugerido por Scikit-Learn
  4. bootstrap
    • podría utilizarse para calcular el intervalo de confianza, entonces puede decidir cuán conservador quiere ser

Aquí hay algunas buenas referencias:

3voto

Tom Puntos 236

En teoría, se supone que el estimador de contracción de Ledoit y Wolf garantiza una matriz positiva-definida, dado que añade una matriz positiva-definida (el objetivo) a una semi-positiva (la covarianza de la muestra).

Veo cuatro razones por las que no has conseguido una matriz positiva-definida:

  1. Su verdadera covarianza no es efectivamente de rango completo, es decir, usted tiene multicolinealidad perfecta

  2. ¿Su objetivo no está definido positivamente? Eso es algo que puedes comprobar fácilmente. Sin embargo, tomar (un múltiplo de) la identidad garantizará que es

  3. Su matriz de covarianza de la muestra no es semipositiva definida: esto puede ocurrir cuando tenía valores perdidos, y utilizó un cor(x, "pairwise.complete.obs") acercarse a

  4. Hay errores en el código ( tawny tiene efectivamente errores en el estimador Ledoit Wolf, a partir de la versión 2.1.7). Compruebe alternativas como nlshrink::linshrink_cov() y CovTools::CovEst.2003LW()

2voto

scottishwildcat Puntos 146

¿Sus 407 acciones son todas diferentes? ¿No hay listados A y B que estén fuertemente correlacionados, si no perfectamente? La observación de que la matriz de covarianza diaria es singular me hace dudar.

Puede probar el paquete corpcor para otro estimador de la contracción.

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