Algoritmos Genéticos para Optimizar Estrategias de Trading
Un algoritmo genético (AG) es un método de optimización inspirado en la evolución: cruza, muta y selecciona soluciones candidatas a lo largo de muchas generaciones hasta que sobreviven las buenas. En trading, los "candidatos" suelen ser conjuntos de parámetros de una estrategia, y "bueno" significa una puntuación alta en la función de aptitud que elijas. Bien usado, un AG encuentra configuraciones robustas en un espacio de búsqueda enorme. Mal usado, es la máquina más rápida que existe para ajustar tu estrategia al ruido.
Cómo funciona un AG, en lenguaje llano
Por qué los traders recurren a los AG
La búsqueda exhaustiva por rejilla explota de forma combinatoria: cinco parámetros con veinte valores cada uno son 3,2 millones de backtests. Un AG explora ese espacio de forma inteligente, invirtiendo su presupuesto donde los resultados prometen. Además maneja paisajes de aptitud irregulares y no diferenciables —justo lo que son las métricas de trading— donde los métodos de gradiente fallan.
La función de aptitud lo es todo
La decisión más importante es qué optimizas. Maximizar el beneficio neto bruto produce monstruos frágiles y sobreapalancados. Es mejor premiar el rendimiento estable y ajustado al riesgo:
Diseña la función de aptitud para castigar el comportamiento que temes, o el AG explotará con gusto cualquier hueco que le dejes.
El problema del sobreajuste (léelo dos veces)
Un AG es un motor de optimización; no distingue entre señal y ruido. Dale suficientes parámetros y generaciones y encontrará una configuración espectacular dentro de muestra que muere al instante en real. Defensas que funcionan de verdad:
Una receta sensata
En resumen
Los algoritmos genéticos son una forma potente de explorar grandes espacios de estrategias, pero amplifican la disciplina —o la falta de ella— que aportes. El AG no es tu ventaja; tu función de aptitud y tu validación fuera de muestra sí lo son. Acierta en eso y el AG se vuelve una herramienta realmente útil. Fállalo y será un generador de números aleatorios muy caro.
¿Has optimizado alguna estrategia con un AG? ¿Con qué función de aptitud te quedaste?
Un algoritmo genético (AG) es un método de optimización inspirado en la evolución: cruza, muta y selecciona soluciones candidatas a lo largo de muchas generaciones hasta que sobreviven las buenas. En trading, los "candidatos" suelen ser conjuntos de parámetros de una estrategia, y "bueno" significa una puntuación alta en la función de aptitud que elijas. Bien usado, un AG encuentra configuraciones robustas en un espacio de búsqueda enorme. Mal usado, es la máquina más rápida que existe para ajustar tu estrategia al ruido.
Cómo funciona un AG, en lenguaje llano
- Codifica cada estrategia candidata como un "cromosoma" — normalmente un vector de parámetros (p. ej. media rápida = 12, media lenta = 30, stop = 1.8 ATR).
- Evalúa cada candidato haciendo backtest y puntuando el resultado con la función de aptitud.
- Selecciona a los mejores para que actúen como padres.
- Cruce (crossover) — combina los parámetros de dos padres para crear descendencia.
- Mutación — modifica al azar algunos genes para seguir explorando.
- Repite durante muchas generaciones; la población deriva hacia las zonas de mayor aptitud.
Por qué los traders recurren a los AG
La búsqueda exhaustiva por rejilla explota de forma combinatoria: cinco parámetros con veinte valores cada uno son 3,2 millones de backtests. Un AG explora ese espacio de forma inteligente, invirtiendo su presupuesto donde los resultados prometen. Además maneja paisajes de aptitud irregulares y no diferenciables —justo lo que son las métricas de trading— donde los métodos de gradiente fallan.
La función de aptitud lo es todo
La decisión más importante es qué optimizas. Maximizar el beneficio neto bruto produce monstruos frágiles y sobreapalancados. Es mejor premiar el rendimiento estable y ajustado al riesgo:
- Ratio de Sharpe o Sortino en lugar del retorno total.
- Penaliza el drawdown máximo y el bajo número de operaciones (una "estrategia" con 6 trades no demuestra nada).
- Premia la consistencia entre subperiodos, no un único año afortunado.
Diseña la función de aptitud para castigar el comportamiento que temes, o el AG explotará con gusto cualquier hueco que le dejes.
El problema del sobreajuste (léelo dos veces)
Un AG es un motor de optimización; no distingue entre señal y ruido. Dale suficientes parámetros y generaciones y encontrará una configuración espectacular dentro de muestra que muere al instante en real. Defensas que funcionan de verdad:
- Análisis walk-forward. Optimiza en una ventana, prueba en la siguiente ventana no vista, avanza y repite. Juzga la estrategia solo por los resultados fuera de muestra encadenados.
- Mantén el genoma pequeño. Menos parámetros, menos espacio para sobreajustar.
- Exige regiones robustas, no picos estrechos. Si mover un parámetro un 10% hunde el rendimiento, encontraste ruido. Prefiere mesetas amplias donde los vecinos también rinden.
- Reserva datos intactos que el AG nunca ve, para una comprobación final con la realidad.
Una receta sensata
- Define una aptitud ajustada al riesgo con penalizaciones por drawdown y por pocas operaciones.
- Restringe los rangos de parámetros a valores económicamente razonables.
- Ejecuta el AG dentro de un bucle walk-forward, no sobre todo el histórico de golpe.
- Examina la población, no solo el mejor cromosoma — un grupo de buenas soluciones es más fiable que un único caso aislado.
En resumen
Los algoritmos genéticos son una forma potente de explorar grandes espacios de estrategias, pero amplifican la disciplina —o la falta de ella— que aportes. El AG no es tu ventaja; tu función de aptitud y tu validación fuera de muestra sí lo son. Acierta en eso y el AG se vuelve una herramienta realmente útil. Fállalo y será un generador de números aleatorios muy caro.
¿Has optimizado alguna estrategia con un AG? ¿Con qué función de aptitud te quedaste?