Supongamos que tenemos A a T×N matriz de rendimientos diarios para un universo de activos de N artículos, b a (T,) vector de rendimientos diarios de un activo objetivo, x a (N,) vector de ponderación. Queremos una cartera que replique los rendimientos diarios b lo más cerca posible, con la restricción de que las ponderaciones de la cartera x suman 1 y x es no negativo (no hay cortocircuito). Se podría utilizar para cosechar pérdidas fiscales o como cobertura.
Si consideramos primero el caso sin restricciones:
min
Esto no es más que una aproximación/regresión por mínimos cuadrados, cuyo objetivo puede reescribirse como
|Ax-b|^2 = (Ax-b)^T(Ax-b) = x^T{A^T}Ax - 2x^TA^Tb + b^2
Tomando la derivada wrt x y ponerlo a 0,
2A^TAx - 2A^Tb = 0 \\ x = (A^TA)^{-1}A^Tb
Para manejar las restricciones de igualdad como x que suman 1, y las restricciones de desigualdad como x siendo no negativo, se puede plantear un problema de mínimos cuadrados restringidos, resolver la matriz KKT y obtener una solución de forma cerrada, aunque con una complejidad cúbica debido a la necesidad de invertir las matrices.
Sin embargo, el gestor de la cartera puede tener otras limitaciones: tal vez prefiera mantener x relativamente escaso, por lo que pueden limitarse a comprar unos 3-4 activos en lugar de asignar un pequeño porcentaje entre miles de activos. Existen técnicas más complejas, como la regresión de cresta, la regresión de lazo, etc., pero éstas empiezan a implicar una optimización por pasos (por ejemplo, el descenso de coordenadas).
Mi pregunta es sobre cómo la industria de la optimización de carteras optimiza realmente en la práctica: ¿es más similar a la optimización convexa analítica con simples restricciones de desigualdad / igualdad, y tal vez un poco de hacks en la parte superior de la regresión de mínimos cuadrados (por ejemplo, el redondeo de los valores pequeños de x ), ¿o lo normal es una optimización más escalonada? Si el objetivo es lo suficientemente complejo, ¿tendría sentido pasar a un algoritmo de optimización más "negro", como un algoritmo genético o algún tipo de optimizador de descenso de gradiente estocástico?