Supongamos que tenemos $A$ a $T \times 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_x \sum_t^{T} (A \cdot x - b) $$
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?