Las matrices, la maquinaria de las carteras
Un problema de carteras es un problema de matrices. La matriz de covarianzas contiene las varianzas y los co-movimientos de los activos, y casi toda tarea pide hacer algo con ella. scipy.linalg.solve(A, b) resuelve para la incógnita . No se debe calcular la inversa inv(A) y multiplicar: la resolución directa hace menos trabajo y pierde menos precisión. La factorización de Cholesky, linalg.cholesky(S, lower=True), descompone una matriz de covarianzas como , donde es triangular inferior, es decir, con ceros sobre la diagonal. Si es un vector de números normales estándar independientes, entonces tiene covarianza , y así se simulan rendimientos correlacionados.
Los valores propios de dicen cuántas fuentes independientes de riesgo hay en realidad. linalg.eigvalsh(S) los devuelve para una matriz simétrica, del menor al mayor. Para dos activos con correlación , la matriz de correlación tiene valores propios y , así que activos muy correlacionados tienen un valor propio grande y uno diminuto. El cociente entre el mayor y el menor es el número de condición. Un número de condición grande significa que la matriz es casi singular, es decir, casi imposible de invertir, y un pequeño cambio en los datos puede mover mucho el resultado. Los optimizadores que toman la inversa de son sensibles justo a esto.
- Resolver, no invertir:
solve(A, b)es más rápido y preciso queinv(A) @ b. - Cholesky fabrica correlación: multiplique normales independientes por para obtener rendimientos con covarianza .
- Vigilar el número de condición: activos muy correlacionados hacen casi singular y las soluciones inestables.
Lab: qué se califica
- El factor de Cholesky20 pts
- Resolver un sistema10 pts
- Un número de condición10 pts
- La parte de varianza de un factor10 pts
- Para qué sirve cada rutina15 pts
- Simular rendimientos correlacionados10 pts
- Por qué no invertir25 pts