Estoy tratando de implementar el análisis de estilo basado en el retorno de Sharpe en Python. El problema está formulado de la siguiente manera:
min Var(M-(c1a1 + c2a2 + c3a3 + c4a4))
subject to c1 + c2 + c3 + c4 = 1
c1 >=0, c2 >= 0, c3 >= 0, c4 >= 0
where M = monthly or daily return of an investor's portfolio
a1, a2, a3, a4 = monthly or daily return of an index
and c1, c2, c4, c4 are the optimization decision variables.
Por supuesto, la función objetivo (Varianza) hace que el problema no sea lineal. Estoy tratando de usar Scipy para implementar esto, pero no puedo encontrar un buen ejemplo de optimización cuadrática/no lineal similar a este problema.
¿Qué biblioteca de Python debería usar para hacer esto? El ejemplo anterior tiene sólo 4 índices, pero quiero hacerlo más general y flexible como para manejar muchos índices.
También agradecería mucho si alguien pudiera mostrar un código Python para el problema de optimización anterior.
¡¡¡Gracias!!!
0 votos
Intente buscar en google cvxopt
0 votos
Attack68, por razones personales, no puedo instalar cvxopt. ¿Es posible utilizar Scipy para resolver esto?
0 votos
Sí sólo puede utilizar scipy.optimize.minimize y pasar sus propias funciones y restricciones. Querrás utilizar el método 'SLSQP'. Con 4 variables no necesitas preocuparte por el cálculo de las funciones jacobianas, pero si tuvieras muchas más variables sería mucho más rápido si proporcionas una función para calcular las derivadas de tu función objetivo y las restricciones (que en realidad no son tan complicadas)
0 votos
Muchas gracias. Así que en realidad estoy teniendo un tiempo difícil escribir la función objetivo, porque es la varianza..
0 votos
Puede que te interese esto: stackoverflow.com/questions/44515880/ . Tenga en cuenta también que $Var(aX-bY) = a^2Var(X) + b^2Var(Y) - 2ab Cov(X,Y)$ por lo que necesita conocer todas las varianzas y covarianzas de su cartera e índices