Paso 1: escribe reglas que un ordenador pudiera seguir

Un backtest no es mejor que sus reglas. «Comprar rupturas fuertes» es una idea; una regla dice exactamente qué significan fuerte y ruptura, para que cada operación del test sea una que de verdad habrías tomado. Un conjunto de reglas completo cubre las decisiones de la lista de abajo, las mismas que cubre un plan de trading.

Hipotético, una versión precisa de la ruptura del rango de apertura: en un gráfico de 5 minutos, después de las 9:45 (hora de Nueva York), compra cuando una vela cierre por encima del máximo del rango de los primeros 15 minutos con el precio sobre el VWAP; stop en el mínimo del rango; objetivo 2R; riesgo del 0.5% de la cuenta; sin operaciones en días de resultados; cierra cualquier operación abierta a las 15:55.

  • Mercado y marco temporal: qué valores, qué gráfico y qué horas.
  • Setup y disparador: la condición exacta, juzgada sobre una vela cerrada.
  • Stop y salida: dónde la operación deja de valer y cómo termina.
  • Tamaño: el riesgo por operación y cómo se calcula el número de acciones, como en la calculadora de tamaño de posición.
  • Filtros: lo que te mantiene fuera, como los días de noticias o un mercado bajista.

Backtesting manual con Bar Replay

Si tus reglas exigen criterio, como trazar niveles, pruébalas a mano. El Bar Replay de TradingView oculta el futuro y hace avanzar el gráfico barra a barra; la guía de Bar Replay muestra los controles. En cada barra cerrada, decide si el setup está ahí, marca la entrada, el stop y el objetivo antes de avanzar, y anota el resultado en R.

Empieza en fechas al azar, incluye tramos aburridos y laterales, y anota cada operación que cumpla las reglas, también las que preferirías saltarte. Un puñado de operaciones no demuestra nada, así que busca una muestra que cubra condiciones de mercado distintas.

Backtesting automático con el Strategy Tester de TradingView

Si las reglas son lo bastante exactas para programarlas, escríbelas como una estrategia de Pine Script, un script declarado con strategy() en lugar de indicator(), y añádela a un gráfico. El Strategy Tester, en el panel bajo el gráfico, simula entonces cada operación sobre el histórico cargado y muestra los resultados. Antes de leer nada, abre la configuración de la estrategia e introduce una comisión y un slippage realistas en la pestaña Propiedades; si no, el test supone que operar es gratis.

La pestaña con la lista de operaciones te deja revisar cada operación en el gráfico, la forma más rápida de detectar un error de código. De las muchas cifras del informe, cuatro responden a las primeras preguntas, y ninguna dice mucho por sí sola:

  • Beneficio neto (Total P&L en la pestaña Overview): el resultado después de la comisión y el slippage que introdujiste.
  • Drawdown máximo: la mayor caída del capital desde un pico. Pregúntate si podrías aguantarla, en dinero y en tiempo, en una cuenta real.
  • Profit factor: la ganancia bruta dividida entre la pérdida bruta. Por encima de 1, las ganadoras pesaron más que las perdedoras en total, en esta muestra y con estos costes.
  • Total de operaciones: el tamaño de la muestra. Una estrategia con una docena de operaciones apenas se ha probado, por buenas que parezcan las demás cifras.

Gira tu teléfono para leer el dibujo. Toca para cerrar.

Un informe del Strategy Tester dibujado a mano, sin números: cuatro casillas que solo muestran un guion como valor, tituladas beneficio neto (¿tras comisiones y slippage?), drawdown máximo (la peor caída desde un pico), profit factor (ganancia bruta ÷ pérdida bruta) y total de operaciones (¿suficientes para concluir algo?), bajo una cabecera con la nota léelas juntas, nunca una sola. Debajo, una curva de capital verde con una caída rayada en rojo marcada drawdown.

Sobreajuste: por qué un backtest perfecto es una señal de alerta

El sobreajuste (overfitting o curve-fitting) consiste en ajustar las reglas hasta que encajen con el ruido del pasado. Cada condición añadida y cada parámetro retocado pueden mejorar el backtest, y cada uno hace menos probable que el resultado se repita. El dibujo de abajo muestra el desenlace típico: una curva de capital suave en los datos con los que se ajustaron las reglas y luego una línea plana o descendente con datos nuevos. Defensas que ayudan:

  • Pocas reglas y parámetros redondos. Una media de 20 periodos inspira más confianza que una de 17 elegida por un optimizador.
  • Guarda datos aparte. Ajusta en un tramo del histórico y luego ejecuta una sola vez las reglas sin cambios en un tramo posterior que nunca vieron (fuera de muestra).
  • Mira los vecinos. Si el ajuste 20 funciona pero 18 y 22 se hunden, la ventaja probablemente es ruido.
  • Prueba otros valores y periodos, incluido un mercado lateral, y cuenta cuántas versiones probaste: la mejor de muchos intentos parece mejor de lo que es.

Gira tu teléfono para leer el dibujo. Toca para cerrar.

Dos curvas de capital dibujadas a mano a lo largo del tiempo, separadas por una línea vertical discontinua entre dentro de muestra: reglas ajustadas aquí (izquierda) y fuera de muestra: datos nuevos (derecha, sombreada). La curva roja sobreajustada sube de forma suave y empinada hasta la línea, marcada demasiado perfecta, y luego zigzaguea a la baja con los datos nuevos. La curva verde de reglas simples es irregular pero sigue subiendo despacio a ambos lados, marcada irregular, pero aguanta.

Otras trampas del backtesting: sesgo de anticipación, repainting, costes y muestras pequeñas

Incluso unas reglas honestas pueden dar un test engañoso. Las trampas habituales:

  • Sesgo de anticipación (look-ahead): el test usa información que no estaba disponible en ese momento, como el máximo del día en una vela de la mañana, o un valor de una temporalidad mayor tomado antes del cierre de su barra, un error frecuente en el análisis multi timeframe.
  • Repainting: las señales que se mueven o desaparecen a posteriori hacen que el histórico parezca mejor que el trading real. La guía de repainting explica cómo comprobarlo.
  • Costes y slippage: la comisión, el spread y el slippage se pagan en los dos lados de cada operación. Hipotético, como en el dibujo de abajo: una regla que gana de media $0.05 por acción y operación antes de costes, con $0.01 de comisión y $0.02 de slippage por acción en cada lado, deja −$0.01 por acción. Las estrategias rápidas con objetivos pequeños son las más afectadas.
  • Supuestos de ejecución: una estrategia que compra al cierre de la vela de señal, o que da por ejecutada cada orden limitada, puede parecer mejor que lo que conseguirías.
  • Muy pocas operaciones: un puñado de resultados puede ser suerte en cualquier dirección.
  • Sesgo de supervivencia: probar solo con las acciones que existen hoy deja fuera a las empresas que dejaron de cotizar o salieron de un índice, lo que embellece los resultados.

Gira tu teléfono para leer el dibujo. Toca para cerrar.

Un gráfico de cascada dibujado a mano, por acción y por operación de ida y vuelta, marcado hipotético: una barra verde de +0.05 antes de costes, un escalón rojo de −0.02 de comisión y un escalón rojo mayor de −0.04 de slippage + spread, que acaba en una pequeña barra roja neta de −0.01 por debajo de la línea del cero.

Prueba hacia delante antes del dinero real, y lleva un diario

Una prueba hacia delante aplica las reglas sin cambios a datos que no existían cuando las escribiste: en el Paper Trading de TradingView, a mano en gráficos en directo o con un tamaño real muy pequeño. Comprueba lo que un backtest no puede: las ejecuciones y los spreads reales, y si de verdad sigues las reglas cuando llegan las señales.

Anota cada operación de la prueba hacia delante en R en un diario de trading y compara los resultados con el backtest cuando tengas suficientes operaciones. Si son claramente peores, busca la causa, como los costes, las ejecuciones, una regla que te saltas o un mercado que cambió, antes de añadir dinero. Las mismas comprobaciones valen para las estadísticas integradas de cualquier indicador, incluida la tabla de resultados de UpTickFlow, nuestro propio indicador por invitación: sigue siendo una prueba del pasado.