1 votos

Implementación del análisis de estilo basado en la rentabilidad de Sharpe en Python

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)

2voto

dotnetcoder Puntos 1262

Podría replantear su problema como:

$$ \min_x \quad Var \left (-\sum_{i=0}^n x_iR_i \right) $$ $$ \text{s.t.} \quad x_0 = -1, \quad \sum_{i=1}^n x_i = 1, \quad \text{non-negativity of }x_1:x_n $$ donde $R_i$ son los rendimientos esperados del activo $i$ y $x_i$ son sus variables de solución.

La función objetivo puede expresarse como $$ \min_x \quad - \sum_{i,j} x_i x_j Cov(R_i, R_j)= - \mathbf{x^TQx} $$ donde $\mathbf{x}=[x_0, ..., x_n]^T$ y $\mathbf{Q}$ es la matriz de covarianza de los rendimientos.

0 votos

Muchas gracias por su respuesta. Entonces, ¿la primera función objetivo (Var(- suma de xR)) es la misma que -X^TQX? La segunda función objetivo parece bastante fácil de calcular (sólo multiplicaciones de matrices).

0 votos

Sí lo es. y es por lo que sugerí cvxopt ya que es una biblioteca optimizada para programas cuadráticos, y esto es una ecuación cuadrática (matricial). Mira la covarianza en la wikipedia para ver las propiedades de las sumas lineales en expansión.

0 votos

Oh, ya veo. Esto es genial. Muchas gracias. Por cierto, ¿tiene experiencia con la optimización de scipy?

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