Cómo evitar el sobreajuste en los backtests de estrategias

Por qué un backtest excelente puede no significar nada — y cómo distinguir entre una ventaja real y una ilusión de sobreajuste a la curva.

Última actualización 2026-09
Puntos clave
  • El sobreajuste es una estrategia que memoriza el ruido de la historia en vez de aprender una regla: el backtest parece excelente mientras que en real no se distingue del azar.
  • Barre 100 combinaciones de parámetros y, aunque la estrategia no tenga ninguna ventaja, unas 5 darán un Sharpe positivo solo por azar con un nivel de significancia del 5%.
  • No elijas el pico, elige la meseta: el find_plateau de Blave Agent toma la celda con el Sharpe medio más alto en su vecindad de 3×3, no el máximo de un solo punto.
  • El rango de barrido nace de la propia distribución del indicador: p5 y p95 como los dos extremos, su punto medio aritmético como divisoria, los umbrales de entrada se barren en la mitad superior y los de salida en la inferior.
  • Cinco señales de sobreajuste: un pico aislado, una caída fuerte fuera de muestra, menos de 30–50 operaciones, un rendimiento que viene de un único régimen de mercado, y parámetros añadidos para "eliminar" un tramo de pérdidas.

Terminas el barrido, eliges el juego de parámetros con el Sharpe más alto, y la curva del backtest queda demasiado bonita para ser cierta. Cuando lo pones a correr de verdad, su rendimiento no se distingue del azar. Lo que pasó en medio tiene nombre.

¿Qué es el sobreajuste?

Una estrategia está sobreajustada cuando sus parámetros se han ajustado con tanta precisión a los datos históricos que la estrategia, en esencia, está memorizando el pasado en lugar de aprender una regla generalizable. Se ve excepcional en el backtest y rinde mal — o de forma aleatoria — al operar en real.

El sobreajuste no siempre es intencional. Ocurre de forma natural cuando:

  • Haces un barrido de muchas combinaciones de parámetros y eliges la que tiene el Sharpe más alto
  • Modificas la estrategia después de ver los resultados del backtest y luego la vuelves a probar con los mismos datos
  • Añades condiciones específicamente para evitar los períodos de pérdidas que ves en el gráfico
  • Usas un período de backtest corto en el que una combinación de parámetros afortunada rinde mejor por pura casualidad
El problema central: Todo conjunto de datos de backtest contiene tanto patrones reales como ruido. Una estrategia suficientemente compleja siempre puede ajustarse al ruido. El ruido no se repetirá en el futuro.

La trampa del barrido de parámetros

Supón que haces un barrido de 100 combinaciones de parámetros. Incluso si tu estrategia no tiene ninguna ventaja, algunas combinaciones producirán un Sharpe positivo solo por casualidad — aproximadamente 5 de cada 100 con un nivel de significancia del 5%. Si eliges la mejor y la presentas como el rendimiento de tu estrategia, estás presentando ruido como si fuera señal.

Este problema empeora cuantos más parámetros barres. Una estrategia con 2 parámetros independientes en una cuadrícula de 20×20 tiene 400 combinaciones. Una estrategia con 4 parámetros en una cuadrícula de 10×10×10×10 tiene 10,000. Cada dimensión adicional multiplica la probabilidad de toparte con un pico afortunado.

Regla general: Por cada parámetro libre en tu estrategia, necesitas aproximadamente 10× más operaciones en tu backtest para que los resultados sean estadísticamente significativos. Dos parámetros = necesitas muchas operaciones. Cuatro parámetros = la longitud de backtest requerida suele ser poco realista.

El pico frente a la meseta

La técnica práctica más importante para evitar el sobreajuste es no elegir el pico.

Observa un mapa de calor de Sharpe de un barrido de parámetros. La mejor celda absoluta podría mostrar un Sharpe de 1.8. Un paso a la izquierda: 0.4. Un paso hacia arriba: 0.3. Ese pico es frágil — existe porque la combinación exacta de parámetros resultó ajustarse a unos pocos eventos de mercado específicos en tus datos de entrenamiento.

En su lugar, busca la meseta: la región donde el Sharpe es consistentemente alto en muchas combinaciones de parámetros vecinas. Si el Sharpe es de 1.2 en un vecindario de 3×3 de valores de parámetros, eso es una señal robusta — la ventaja existe en un rango de parámetros, no solo en un punto específico.

# Blave Agent's find_plateau: picks the neighborhood with the
# highest average Sharpe in a 3×3 window around each cell —
# not the single maximum cell.
best_idx = argmax(neighborhood_average_sharpe)

Por eso el script de barrido de parámetros — el scan.py que vive en la carpeta de cada estrategia — usa find_plateau en lugar de simplemente tomar el mejor Sharpe. Es mucho más probable que un conjunto de parámetros situado sobre una meseta suave se generalice bien, en comparación con uno situado en un pico agudo rodeado de mal rendimiento.

In-sample frente a out-of-sample

La única forma válida de medir el rendimiento real de una estrategia es probarla con datos que nunca ha visto. Si optimizas los parámetros usando datos de 2020–2023 y luego evalúas en 2024, el rendimiento de 2024 es una estimación genuina out-of-sample.

Si optimizas con 2020–2024 y presentas el rendimiento de 2020–2024: eso es in-sample. Aunque no hayas tenido la intención de sobreajustar, el proceso de optimización usó implícitamente los resultados de 2020–2024 para seleccionar los parámetros. El Sharpe presentado incluye el beneficio de la retrospectiva.

Método¿Válido?Notas
Optimizar con todo el historial y presentar el rendimiento de todo el historial✗In-sample — sobreajuste garantizado
Optimizar con el primer 70% y presentar el rendimiento del último 30%✓División simple entrenamiento/prueba — válido pero limitado
Walk-forward: optimizar con una ventana móvil y presentar el siguiente período✓✓El más realista — mismo método que operar en real

Rangos de barrido que evitan los extremos

Otra trampa común de sobreajuste es barrer todo el rango de valores posibles de los parámetros, incluidos los extremos que resultan producir un Sharpe alto en un período histórico inusual.

Blave Agent usa un enfoque distinto para las estrategias basadas en umbrales: deriva el rango de barrido de la propia distribución del indicador. Toma el p5 y el p95 de la distribución histórica del indicador como los dos extremos, y el punto medio aritmético de ambos — no la mediana — como divisoria; los candidatos de entrada caen en la mitad superior (del punto medio al p95) y los de salida en la mitad inferior (del p5 al punto medio). Esto mantiene ambos umbrales anclados en rangos de datos observados, evitando extremos obviamente poco realistas.

Señales de que tu estrategia está sobreajustada

1

Pico agudo en el mapa de calor de Sharpe. La mejor combinación de parámetros está rodeada de valores mucho más bajos. Un paso de parámetro en cualquier dirección reduce el Sharpe en 0.5+. La ventaja no es robusta — es local.

2

El Sharpe del backtest no sobrevive out-of-sample. La estrategia muestra un Sharpe de 2.0 en el período de entrenamiento y 0.2 en un período de prueba reservado. Cuanto mayor sea la brecha, más sobreajustada está la estrategia.

3

Muy pocas operaciones. Una estrategia con 12 operaciones en 3 años de backtest casi no tiene poder estadístico. Unas pocas operaciones afortunadas pueden producir un Sharpe de 2.0+ por pura casualidad. Exige al menos 30–50 operaciones completas antes de considerar significativas las métricas del backtest.

4

Parámetros sospechosamente redondos. Si tus mejores parámetros son SMA(50) / SMA(200) o RSI(14), o exactamente 1.0 / −1.0, estos suelen ser el resultado de un barrido que tuvo suerte en un valor "predeterminado" bien conocido. Pueden funcionar por las razones equivocadas.

5

La estrategia solo funciona en un régimen de mercado. Si el rendimiento del backtest está determinado enteramente por un período alcista o bajista, y es plano o negativo en todos los demás, es posible que la estrategia haya aprendido ese régimen específico en lugar de una regla general.

¿Cuántos parámetros son demasiados?

No hay un límite universal, pero sí un principio útil: cada parámetro libre adicional debe tener una razón previa para existir en la lógica de la estrategia. No añadas un parámetro porque te permita ajustar mejor los datos — añádelo porque representa una dimensión genuina del mecanismo de mercado que estás explotando.

Una estrategia con dos parámetros que representan conceptos significativos (una ventana de señal rápida y una ventana de confirmación lenta, por ejemplo) es más defendible que una estrategia de seis parámetros en la que varios de los parámetros se añadieron para "eliminar" períodos de pérdidas específicos visibles en el gráfico.

De qué no te salvan estas prácticas

  • La selección por meseta atiende a si la celda que elegiste es suerte; no atiende a si la estrategia tiene ventaja siquiera. Derivar el rango de barrido de la distribución es igual: solo evita que pruebes extremos que apenas ocurrieron en la historia, no convierte una regla sin ventaja en una que la tenga.
  • La tabla de dentro de muestra / fuera de muestra de arriba es un juicio de nivel conceptual. A nivel de producto hay que añadir una frase: en Blave no existe el ajuste «reservar el 30% como conjunto de prueba», la única herramienta fuera de muestra es el walk-forward rolling de la quinta pestaña del espacio de trabajo, y sus dos casillas se rellenan en días. Lo que valida no es lo mismo que una división simple: véase Cómo funciona la validación fuera de muestra: por qué aquí no hay «reservar el 30%».
  • Hay otra pregunta que este artículo no responde: aunque pase fuera de muestra, ¿ese registro es suerte? Ese es el trabajo de un test de significancia: véase ¿El backtest gana por habilidad o por suerte? Cómo leer el valor p de MCPT. Fuera de muestra y significancia no preguntan lo mismo, y tampoco hay garantía de que las dos herramientas te den la misma respuesta.