Dada una serie temporal de un conjunto de N activos (digamos 100), ¿cómo puedo encontrar la cartera óptima, con la restricción de que sólo n<N activos (digamos 10) pueden estar en la cartera? Con "cartera óptima" me refiero a la "cartera eficiente" (es decir, la varianza mínima para un rendimiento determinado, o el rendimiento máximo para una varianza determinada). En el marco de la teoría moderna de carteras se pueden encontrar las ponderaciones para todos los N activos, pero ¿qué pasa si sólo quiero n<N activos?
Respuesta
¿Demasiados anuncios?Generalmente se considera un problema difícil de resolver porque es un ejemplo de un problema de programación no lineal de enteros mixtos, y normalmente requeriría el acceso a una rutina de optimización comercial para resolverlo. El problema requiere la adición de N variables ( $v_i, i=1,N$ ) al problema general de optimización de Markowitz. $v_i$ puede tomar el valor 0 o 1 dependiendo de si un activo se incluye en la cartera final. Cada activo tiene límites variables modificados $= l_iv_i < x_i < u_iv_i$ y tenemos una última restricción sobre el número de variables totales $\Sigma_i v_i <= n$ .
Mathworks muestra algunos de los antecedentes teóricos en https://uk.mathworks.com/help/optim/ug/mixed-integer-quadratic-programming-portfolio-optimization-solver-based.html . La solución de MATLAB requiere múltiples llamadas a una rutina de programación lineal entera mixta.
La gente también ha resuelto esto utilizando métodos más ad-hoc en el pasado ( algoritmos genéticos , heurística simple). Así, por ejemplo, se puede optimizar con los N activos completos, eliminar la posición más pequeña y repetir hasta que sólo queden n activos. No se garantiza que este enfoque sea óptimo, pero puede ser factible en la práctica. En particular, si se tiene en cuenta que hay un error de estimación significativo en el error de seguimiento, cualquier otra mejora hasta llegar a una solución realmente óptima puede no merecer la pena.
0 votos
Creo que es un problema difícil, matemáticamente hablando. Y probar todos los posibles subconjuntos de activos sería muy lento. Pero no conozco un método más inteligente.
0 votos
Creo que necesitas una formulación de programación entera para hacerlo. Busca algunos hilos relacionados porque escribí algo hace un mes o así cuando alguien hizo una pregunta bastante similar. Por desgracia, no recuerdo cuál era el título de la pregunta. Comprobaré si está en mi lista de respuestas de usuarios ?
0 votos
Lo encontré. No es exactamente la misma pregunta y no obtuvo una marca ( obtuvo un 1 pero no estoy seguro de lo que significa ). pero tiene sentido para mí. Creo que podrías usar la misma idea con tu pregunta. quant.stackexchange.com/questions/64047/
2 votos
Además del Ansatz de @markleeds, podría probar los métodos LASSO con un parámetro de penalización decreciente hasta obtener un número suficiente de conjuntos óptimos de inversión con exactamente $n$ se ha producido.
0 votos
¿Tiene más detalles/referencias sobre el uso del método LASSO?