2 votos

Covarianza para carteras de tamaño arbitrario

Estoy implementando un método en Java para calcular la varianza, la covarianza y el valor en riesgo de una cartera, que debería ser flexible para su uso con cualquier número de activos en una cartera. Estoy luchando con la forma de calcular la covarianza de los activos, ya que sólo puedo encontrar fórmulas para hacerlo para dos o tres conjuntos de valores.

Java tiene incorporado un biblioteca para calcular la covarianza de dos activos y también para calcular la matriz de covarianza. Sin embargo, no estoy seguro de cómo encontrar la covarianza para una cartera que puede contener cualquier número de activos.

8voto

Vitalik Puntos 184

Estoy implementando un método en Java para calcular la varianza, la covarianza y el valor en riesgo de una cartera, que debe ser flexible para su uso con cualquier número de activos en una cartera. I estoy luchando con la forma de calcular la covarianza de los activos ya que sólo puedo sólo puedo encontrar fórmulas para hacerlo para dos o tres conjuntos de valores.

¿Estás seguro de que estás a la altura? ¿Tiene acceso a R (oye, es gratis y de código abierto) o Matlab (oye, Octava es gratuito y de código abierto) o algo similar (pista: no, no es Excel) para crear un prototipo de esto?

Por lo demás, no sé ni por dónde empezar, ya que hay mucho más:

  • la no sincronización de los rendimientos (ya que sus activos pueden no negociarse todos al mismo tiempo),
  • las observaciones que faltan (lo que da lugar a matrices definidas no positivas),
  • error de redondeo,
  • cuestiones de modelado,
  • modelos de factores para la reducción de la dimensión como lo hace no quieren N x N para N realmente grande.

Se han escrito literalmente estantes llenos de disertaciones y libros profesionales sobre esto. Hace quince años, todos leímos el primer manual de RiskMetrics (ahora parte de MSCI), que era bastante novedoso e innovador. También tiene respuestas a sus preguntas.

Hace una década, hice algo así para un universo de 200 activos en Perl (no preguntes) y se puede hacer así. Eso no significa que deba hacerse así. Además de aprender sobre la matemática subyacente (econometría financiera), también deberías aprender sobre algunas bibliotecas numéricas para Java. No es necesario reinventar la rueda.

1voto

Terrapin Puntos 15061

Echa un vistazo a http://en.wikipedia.org/wiki/Covariance_matrix - especialmente la parte de las propiedades. Según http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_covariance_matrix.htm#Animation_covariance%20matrix si tiene una matriz $X$ de los activos (activos en las columnas, rendimientos en las filas), se puede calcular la matriz de covarianza como $\Sigma=[XX^T]/n$ , donde $n$ es el tamaño de la muestra. Esto debería ser bastante simple en Java, en R se vería algo como

Sigma <- function(X){
mu <- apply(X,1,mean)
n <- ncol(X)
Sigma <- X%*%t(X)/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