2 votos

Matriz de varianza con valores 'nan'

Estoy tratando de optimizar un portafolio simple usando varios pesos aleatorios y eligiendo el mejor. Cuando el número de activos es grande obtengo una matriz de covarianza con valores 'nan' porque algunas pares de activos no tienen días de negociación en común.

¿Cómo debo tratar los valores 'nan'?

2 votos

Parece que la "matriz de covarianza" no es definitivamente positiva, es decir, no es una matriz de covarianza. ¿De dónde proviene cov_matrix?

0 votos

¿Obtienes valores NaN para los pesos de tu cartera? ¿O durante la computación de la matriz de covarianza? Estoy confundido. No veo ningún NaN en el vector de pesos de la cartera $\mathbf{w}$. ¿Estás diciendo que $\mathbf{w}' \Sigma \mathbf{w}$ te da un NaN pero que $\Sigma$ no tiene un NaN y $\mathbf{w}$ no tiene un NaN?

0 votos

@MatthewGunn Sí, w'w me da un NaN pero no tiene un NaN y w no tiene un NaN? Y solo sucede a medida que aumenta el número de activos.

4voto

Corey Goldberg Puntos 15625

Este es un problema común en la estimación de matrices de covarianza, con varias posibles soluciones. Una de las más simples implica dos pasos:

(1) Se calcula cada elemento de la matriz de covarianza de la mejor manera posible, lo que significa que se toma la covarianza de las dos series temporales involucradas después de ELIMINAR cualquier par de datos con un valor N/A. (Tenga en cuenta que esto significa que cada elemento de la matriz se basará en un número diferente de observaciones, lo que significa que la matriz resultante no es una matriz de covarianza estándar, por ejemplo, puede que no sea definitivamente positiva). Supongo que para cualquier par de series temporales hay al menos algunas observaciones en común, de lo contrario, es un problema mal planteado como señaló Matthew Gunn.

(2) Se "masajea" la matriz resultante para hacerla definitivamente positiva (y por lo tanto aceptable para usar como matriz de covarianza) utilizando el procedimiento nearPD que está disponible en R enlace

[Incluso después de todo este trabajo, una gran matriz de covarianza será muy 'ruidosa' y de mala calidad. Debería considerar pasos adicionales como 'encogimiento' enlace antes de utilizar los resultados para encontrar una cartera óptima].

0 votos

NearPD es una funcionalidad muy útil.

1 votos

La versión actual de Pandas.cov ya calcula la covarianza "excluyendo valores NA/nulos", que es la base de "mejores esfuerzos" a la que te refieres.

0 votos

Un ejemplo de nearPd que hice el año pasado: stackoverflow.com/questions/36153022/…

1voto

YviDe Puntos 18
  • Su matriz de covarianza estimada incluye entradas nan.
  • La función actual de Pandas.cov ya hace un esfuerzo para estimar la covarianza basándose en los datos disponibles al ignorar valores nan/null.

Esto implica que para obtener un nan en la estimación de la covarianza, ¡debes tener al menos dos series de retornos que no tengan periodos de tiempo en común!

Tu pregunta está mal planteada

  • ¿Cuál es la correlación entre los retornos de la Compañía de las Indias Orientales Holandesas (1602-1799) y Google (2004 - ahora)? Es una pregunta sin respuesta y sin sentido.
  • Y si tu optimizador de portafolio dice que pongas $\frac{1}{2}$ de tu portafolio en la Compañía de las Indias Orientales Holandesas y $\frac{1}{2}$ en Google, ¿cómo vas a hacer eso?

Una dirección para avanzar

Si vas a trabajar con valores que entran y salen de tu muestra, necesitas hacer algo más sofisticado que estimar una matriz de covarianza incondicional con sigma = mydata.cov() y usar eso para elegir los pesos del portafolio.

  • Si el objetivo es crear pesos del portafolio para el tiempo $t$, ¡no tiene sentido incluir valores en los que no se puede invertir en el tiempo $t$!
  • Necesitas alguna noción de $\Sigma_t$, una estimación diseñada para el tiempo $t$.

¡Y reemplazar nan con 0 no es algo sensato! El término de covarianza promedio no es cero. Existe riesgo agregado sistemático y esto se manifiesta en términos de covarianza mayores que cero.

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