Estoy usando MATLAB para hacer una optimización. El problema de minimización de la QP se establece en la forma estándar que se muestra a continuación. La optimización se utiliza para calcular los pesos (vector x en la ecuación siguiente) de una cartera.
Min 0.5 (x'Fx) + c'x
x
st
x_low <= x <= x_up
b_low <= Ax <= b_up
where
c is a n x 1 vector in the objective function
x is a n x 1 vector (weights of the stocks in the portfolio)
F is a n x n matrix in the objective function
A is the linear constraint matrix
b_low & up are the lower and upper bounds for the linear constraints
Intento de seguir un ejemplo pero tengo dos problemas. En primer lugar, digamos que la cartera tiene 500 acciones, el vector x que se pasa al optimizador (x es nuestra suposición inicial) tendrá la dimensión de 1000 x 1. Los segundos 500 tendrán el signo opuesto a los primeros 500, no entiendo a qué se debe esto.
También la matriz F hace algo parecido. Digamos que tengo una matriz R que contiene algunos factores de riesgo, que es 500 x 500.
Entonces F se ajusta a lo siguiente (lo siento, no estoy seguro de cómo mostrar las matrices en este sitio correctamente)
F = R -R
-R R
De nuevo, ¿por qué harías esto?
Actualización
El solucionador es en realidad Tomlab (la guía de usuario del solucionador está aquí enlace ).
Más información
Sólo estoy revisando el código.
x0 se pasa como un vector inicial de conjeturas 1000 x 1. Los primeros 500 pesos son los pesos anteriores. Los siguientes 500 pesos se ponen a cero.
x_up es obviamente también un vector de 1000 x 1 para. Mirando más allá en el código. Los primeros 500 pesos son los límites superiores de las compras, los siguientes 500 son los límites superiores de las ventas.
x_low es lo mismo pero para los límites inferiores. Los primeros 500 pesos son los límites inferiores de las compras y los siguientes 500 son los límites inferiores de las ventas.