De las piezas a un optimizador que funciona
Una cartera de mínima varianza sobre el papel no tiene reglas. Un mandato real es solo largo, totalmente invertido y paga por operar, y la única forma de ver qué hacen esas reglas es construir uno mismo el optimizador y probarlo en días que no vio. Este proyecto final usa tres ideas de la habilidad: el descenso de gradiente para el bucle, una proyección para la regla de presupuesto solo largo y un límite L1 sobre las operaciones. Solo hace falta NumPy y no se permite ningún solucionador de biblioteca.
El descenso de gradiente proyectado da un paso de gradiente ordinario sobre la varianza wᵀΣw, cuyo gradiente es 2Σw, y luego devuelve el resultado a la cartera solo larga y totalmente invertida más cercana con la proyección Π. El paso 1/L, con L=2λₘₐₓ(Σ) el mayor valor propio del hessiano, siempre es estable. La proyección sobre {w≥0, Σw=1} tiene una respuesta exacta: ordenar el vector de mayor a menor, tomar las sumas acumuladas menos uno, hallar la última posición ρ en que el valor ordenado aún supera su suma acumulada dividida por k, fijar θ como esa suma acumulada entre ρ+1 y devolver max(v-θ,0). Todos los pesos se desplazan la misma cantidad y los que quedarían negativos se cortan en cero.
La rotación es la norma L1 de la operación, ‖w-w₀‖₁. Para mantenerla bajo un límite τ sin dejar de ser factible, se recorre solo la fracción α del camino entre la cartera actual w₀ y el objetivo wₜ del optimizador. Un punto del segmento entre dos carteras solo largas y totalmente invertidas es de nuevo solo largo y totalmente invertido, y la norma L1 crece linealmente a lo largo del segmento, de modo que la operación es exactamente min(brecha,τ). Cada reequilibrio cuesta entonces c veces su rotación, que el backtest resta del primer día del bloque de tenencia. Los pesos de un bloque solo pueden usar los días anteriores, y el resultado que se informa es la volatilidad y el rendimiento de los días fuera de muestra, netos y concatenados.
- Descenso de gradiente proyectado: paso de gradiente 2Σw con paso 1/L y luego proyección sobre el símplex.
- Límite de rotación: avanzar la fracción α=min(1,τ/brecha) hacia el objetivo; la cartera sigue siendo factible.
- Backtest honesto: estimar con los últimos
windowdías, mantenerstepdías, restar los costes e informar las cifras fuera de muestra concatenadas.
Lab: qué se califica
- Proyección sobre el símplex20 pts
- Descenso de gradiente proyectado25 pts
- Un límite de rotación15 pts
- Un backtest móvil con costes25 pts
- Comparar las políticas15 pts