Backtesting como prueba
Buscar entre 253 reglas corrientes de medias móviles sobre los sesenta cierres de este curso saca un ganador que hace 9,84 dólares por acción después de costes, frente a 5,68 de mantener, en 7 operaciones, con un estadístico t de 3,65. Ahora baraja esos mismos sesenta movimientos de vela a vela para que no sobreviva ninguna estructura temporal, conserva la deriva y la volatilidad tal cual estaban y vuelve a lanzar la misma búsqueda. En el 52,5 por ciento de esas series sin estructura la mejor regla bate a mantener por al menos tanto como lo hizo la real, y en el 77,2 por ciento la bate en absoluto. El resultado queda por debajo de la mediana de lo que produce un mercado que no contiene nada. Un backtest de una regla es una medición; un backtest de la mejor de 253 es una medición de la búsqueda.
Requisitos previos: Lección 62, por la frase de cuatro partes en que hay que escribir una regla antes de poder ponerla a prueba siquiera, la lección 19, por lo que siete operaciones pueden y no pueden sostener, y la lección 11, por el coste de ida y vuelta que esta página resta de todos los números que hay en ella.
La afirmación, dicha como se quiere decir
Los argumentos a favor del backtesting son buenos y merecen enunciarse bien antes de hacerles nada. Una regla es un conjunto de instrucciones. La historia es un registro de lo que hicieron los precios. Se pueden, por tanto, ejecutar las instrucciones sobre el registro y averiguar qué habría hecho la regla, lo cual es una prueba de ingeniería corriente y no una superstición. Si perdió, lo has aprendido barato. Si ganó, al menos has establecido que la idea no está obviamente vacía. Nadie sensato afirma que un backtest prediga el futuro. La afirmación es más estrecha y suena irreprochable: un backtest te dice si la regla funcionó.
Esto es lo que de verdad te dice, sobre datos que este curso ya ha impreso. Toma los sesenta cierres y una familia de reglas: ponte largo cuando una media móvil rápida de los cierres cruce por encima de una lenta, y plano cuando vuelva a cruzar por debajo. Longitudes rápidas de 2 a 12, lentas de 3 a 30, la lenta siempre más larga que la rápida. Eso son 253 configuraciones, que es una búsqueda pequeña para cualquier criterio, y cada una de ellas es una regla que una persona razonable podría haber propuesto.
La convención de ejecución pesa más de lo que parece, así que va en la página. Un cruce solo es visible una vez que una vela ha cerrado, de modo que la señal se lee al cierre de la vela i y la operación se hace al cierre de la vela i más uno. Ejecutar en la propia vela de la señal es el sesgo de anticipación que hace funcionar la mitad de los backtests de internet, y aquí vale alrededor de un tercio de la ventaja aparente. Los costes son un centavo de spread, cinco puntos básicos de slippage por lado sobre un precio cercano a 103 y medio centavo por acción de comisión, lo que da 0,1230 por acción para una ida y vuelta. Cualquier posición todavía abierta en la última vela se cierra ahí.
Lanza las 253 y la mejor es una media rápida de 2 velas contra una lenta de 5. Hace 7 operaciones y 10,70 por acción en bruto, 9,84 después de costes, frente a 5,68 de comprar en el primer cierre y vender en el último. Su tasa de acierto es 6 de 7, su operación media vale 0,910 de una desviación típica de vela, y el estadístico t sobre su propio registro de operaciones es 3,65. Cada uno de esos números es de los que consiguen financiación para una estrategia.
Lo que la misma búsqueda encuentra en un mercado que no contiene nada
La prueba es barata. Toma los 59 movimientos de vela a vela que componen esta serie, extrae 59 de ellos al azar con reemplazo y colócalos uno tras otro desde el mismo precio de partida. El resultado tiene la misma deriva y la misma volatilidad que el original, construido literalmente con los mismos movimientos, y ninguna estructura temporal: nada en él puede ser explotado por una regla que dependa del orden de nada, porque el orden fue destruido. Haz eso 4.000 veces desde la semilla 20260903 y lanza sobre cada una la misma búsqueda de 253 celdas.
| Medida | Valor |
|---|---|
| Mejor de 253, en bruto | 10,70 |
| Mejor de 253, después de costes | 9,84 |
| Comprar y mantener, después de costes | 5,68 |
| Ventaja sobre mantener | 4,16 |
| Series sin estructura cuya mejor celda bate a mantener | 0,772 |
| Series sin estructura que superan la ventaja real | 0,525 |
En el 77,2 por ciento de las series sin estructura dentro, la mejor de 253 reglas bate a comprar y mantener. En el 52,5 por ciento la bate por al menos los 4,16 que encontró la búsqueda real. El resultado medido no es meramente poco impresionante frente a esa distribución: queda por debajo de su mediana. Encontrara lo que encontrara la búsqueda sobre los cierres reales, una búsqueda del mismo tamaño encuentra más que eso, más de la mitad de las veces, en datos que no contienen nada que encontrar.
Fíjate en lo que esto no dice. No dice que la regla sea mala, y no dice que la serie no tenga estructura. Dice que el número 9,84 lo produjo un procedimiento que produce números como 9,84 de todas formas, así que el número no sirve como prueba sobre el mercado. Eso es una afirmación sobre la medición, y es la razón de que casi nadie contra quien operas haya comprobado nunca la suya: la comprobación cuesta una tarde y un bucle de remuestreo, y solo puede quitarte un resultado.
Dos columnas van a la hoja que este módulo empezó en la lección 62, al lado de la frase. Lo que devolvió el backtest, que aquí es 4,16 por encima de la referencia. Y lo que devolvió la misma búsqueda sobre datos que no contienen nada, que aquí es 4,16 o más en el 52,5 por ciento de los intentos. Una fila cuya segunda columna no sea cómodamente mayor que la tercera no ha ganado nada, y el par vale más que cualquiera de las dos cifras por separado, porque ninguna significa gran cosa sin la otra.
Las dos restas que van antes
Los costes primero, porque son la única parte de esto que es segura. Una ida y vuelta cuesta aquí 0,1230 por acción, y una desviación típica de vela en esta serie es 1,5443, así que una ida y vuelta es 0,0796 de una R. Suena pequeño hasta que se multiplica. La regla ganadora hace 7 operaciones y por tanto paga 0,557R en costes; mantener hace una y paga 0,0796R. La regla que opera a menudo arranca media R por detrás antes de que ninguna de las dos acierte en nada, y el mismo coste es 0,0398R contra un stop de dos sigmas y 0,1593R contra uno de media sigma, porque el coste está fijado en centavos y la R no.
La referencia después, y es la resta que casi siempre falta. La mejor celda hizo 9,84. Mantener hizo 5,68. La aportación de la regla no es 9,84, es 4,16, porque la serie subió y cualquier regla que pase tiempo comprada recoge esa subida haya entendido algo o no. Un backtest que informa de la curva de capital de la estrategia y nunca de la de la referencia ha escondido el mayor de los dos números.
La fila que la prueba de muestra partida no puede ver
La defensa habitual contra todo esto es la prueba fuera de muestra, y merece la pena de verdad, así que hazla aquí. Optimiza solo sobre los treinta primeros cierres. La mejor celda en esa ventana es otra vez el par 2 y 5, que hace 5,53 neto en 3 operaciones, sobre un tramo en el que comprar y mantener perdió 0,82. Eso parece una regla encontrando algo en un mercado que no ofrecía nada. Congela los parámetros, no toques nada y lánzalos sobre los últimos treinta cierres.
| Ventana | Mejor regla, neto | Comprar y mantener, neto | Operaciones |
|---|---|---|---|
| Velas 1 a 30, optimizado aquí | 5,53 | -0,82 | 3 |
| Velas 31 a 60, parámetros congelados | 4,29 | 6,88 | 5 |
Pasa. El rendimiento cayó de 5,53 a 4,29, una degradación del 22 por ciento, y todas las listas de comprobación del campo tratan cualquier cosa por debajo del 30 por ciento como aprobado. La regla no estaba sobreajustada en el sentido que la lista quiere decir: de verdad siguió funcionando sobre datos que nunca había visto.
Y sobre esas mismas velas nunca vistas, no hacer nada hizo 6,88. La regla validada perdió contra la referencia por 2,59 precisamente en la ventana que debía justificarla, y la prueba fuera de muestra no pudo informar de eso, porque no hay ninguna referencia en ninguna parte de ella. La prueba pregunta si un resultado se repite. Nunca pregunta si el resultado merecía la pena.
Los mismos sesenta cierres, en cuatro niveles de honestidad
Nada de lo que sigue cambia los datos ni la regla. El cruce 2 y 5 es la misma regla en cada nivel, ejecutada sobre los mismos sesenta cierres. Lo único que cambia es contra qué se la mide, y cada nivel es aquel en el que se detienen la mayoría de los backtests.
Párate en el primer nivel y la regla hizo 10,70 por acción en 7 operaciones con 6 ganadoras. Párate en el segundo y los costes la dejan en 9,84, que es un recorte del 8 por ciento y se siente como diligencia, porque una página que resta costes parece cuidadosa. Párate en el tercero y la referencia la deja en 4,16, lo que vuelve a partirla por más de la mitad, y con eso ya se ha ido más lejos que la mayoría de los backtests publicados.
El cuarto nivel es el que cambia el veredicto y no el tamaño. Vuelve a extraer los movimientos, vuelve a lanzar la búsqueda, y el 52,5 por ciento de las series sin estructura producen una mejor celda que bate a mantener por 4,16 o más. El estadístico t de 3,65 de la propia regla no está equivocado: responde a otra pregunta. Mide con qué seguridad las 7 operaciones de esa celda se apartan de cero, y no tiene manera de saber que otras 252 celdas hicieron la prueba y fueron descartadas. El estadístico t se calcula dentro del ganador. La búsqueda ocurrió fuera de él.
Un backtest mide la búsqueda que lanzaste, no el mercado sobre el que la lanzaste.
Lo que sobrevive es más de lo que suena. Un backtest sigue matando reglas, barato y para siempre: una regla que pierde dentro de muestra, antes de costes, está muerta, y averiguarlo en una tarde es la mayor parte de para lo que sirve la técnica. Lo que no puede hacer por sí sola es ascender una. El ascenso necesita la referencia, los costes y la distribución nula remuestreada, y la nula es un bucle de código.
Así que lanza esta noche los cuatro niveles sobre tu propia regla, en ese orden, y párate en el primero que se lleve el resultado.
Lo que esto no resuelve
Que el backtesting no funcione. La página probó una familia de reglas sobre una serie de sesenta velas con una búsqueda de 253 celdas, y un programa de verdad corre sobre miles de velas y muchos instrumentos, donde el ruido muestral que esta página está explotando es muchísimo menor. El argumento sobre la inflación por búsqueda no depende del tamaño de ninguno de los dos, pero el 52,5 por ciento concreto sí, y sobre una serie más larga la misma búsqueda fabricaría una ventaja proporcionalmente menor. Nada de aquí muestra que la técnica sea inútil: muestra lo que un resultado tiene que sobrevivir antes de significar algo.
Que la prueba de remuestreo sea la distribución nula correcta. Extraer movimientos con reemplazo destruye toda la estructura temporal a la vez, lo que la convierte en una prueba de si la regla explota el orden, y de nada más. También destruye el agrupamiento de volatilidad, que es real y que una regla de cruce sí puede operar, así que en ese aspecto la nula es demasiado fácil de batir y la fracción verdadera está más bien por encima del 52,5 por ciento que por debajo. Un bootstrap por bloques conservaría parte de esa estructura y es el siguiente paso honesto; esta página no lo ejecuta.
Que los costes sean los tuyos. Un centavo de spread y cinco puntos básicos de slippage describen un instrumento líquido a tamaño pequeño. En algo más ancho son gravemente optimistas, y en una gran capitalización profunda a cien acciones son pesimistas. Todas las cifras de esta página se mueven con esa suposición, y la regla de 7 operaciones se mueve unas siete veces más deprisa que la referencia, que es la dirección que favorece a mantener.
Que comprar y mantener sea la referencia correcta. Lo es aquí porque la regla es solo larga sobre una serie que sube, y es la equivocada para una regla que se pone corta, o para un tramo que cayó. Sobre una serie que cae, toda regla solo larga parece pobre frente a mantener por un motivo que nada tiene que ver con la regla, y elegir una referencia que te favorece es el mismo error que elegir una ventana que lo haga. La referencia hay que elegirla antes de la prueba, y esta página la eligió después, porque la serie ya estaba escrita.
Que el resultado de la muestra partida se generalice. Treinta velas por mitad son demasiado pocas, la ventana dentro de muestra contiene 3 operaciones y la de fuera 5, y con muestras así de pequeñas la cifra del 22 por ciento de degradación no lleva casi ninguna información. El hallazgo que sí sostiene no es que las pruebas fuera de muestra aprueben normalmente reglas malas; es el más estrecho y más firme de que pueden aprobar una regla que pierde contra la referencia, porque no contienen ninguna referencia. Ese defecto es estructural y no depende en absoluto del tamaño de la muestra.
Y la concesión que más cuesta: esta página te dice que restes lo que habría producido la búsqueda, y no da manera de hacerlo para la búsqueda que de verdad lanzaste. Las 253 celdas son contables porque se programaron. Las reglas que miraste en un gráfico y abandonaste, el parámetro que moviste dos veces y devolviste a su sitio, el instrumento que probaste primero y dejaste caer porque era feo — también son configuraciones, no están registradas y son casi con seguridad más numerosas que 253. La corrección de esta página solo se puede calcular para la parte de la búsqueda que fue lo bastante honesta como para quedar escrita. La lección 64 aborda ese problema de frente y encuentra que la inflación es predecible de antemano a partir del recuento solo: para una búsqueda de 15.000 configuraciones sobre 156 operaciones, la mejor celda muestra 0,351R de ventaja antes de que el mercado haya hecho absolutamente nada.
Problemas
- Pon precio a una ida y vuelta en R. Toma el spread de tu instrumento, la comisión de tu bróker y una cifra de slippage que defenderías, súmalas para una ida y vuelta y divide por una desviación típica de vela en el marco temporal que operas. Diez minutos, y acabas con un número, el coste de una operación en R, que es la cantidad que todos los backtests que has leído en tu vida dejaron fuera.
- Pon la referencia al lado de tu regla. Toma una regla que ya operes o que ya creas, lánzala sobre doscientas velas neta del coste que acabas de calcular, y sobre las mismas doscientas velas calcula lo que habría hecho comprar en el primer cierre y vender en el último. Media hora, y acabas con un número, la distancia entre ambos, que es la única parte de tu curva de capital de la que la regla es responsable.
- Lanza la distribución nula. Toma los cambios de vela a vela de esas mismas doscientas velas, extrae doscientos al azar con reemplazo, colócalos uno tras otro y vuelve a lanzar toda tu búsqueda sobre la serie sintética. Hazlo mil veces con una semilla que escribas, y cuenta cuántas veces el mejor resultado bate a la referencia por al menos lo que encontró tu búsqueda real. Una tarde, y acabas con un número, la fracción, que es la probabilidad de que un mercado que no contiene nada te hubiera entregado lo que encontraste.
Fuentes. Halbert White, «A Reality Check for Data Snooping» (Econometrica, 2000), por el procedimiento bootstrap que esta lección ejecuta en miniatura, y por el argumento de que la distribución de la mejor regla, y no la de una regla, es aquella contra la que hay que juzgar una búsqueda. Ryan Sullivan, Allan Timmermann y Halbert White, «Data-Snooping, Technical Trading Rule Performance, and the Bootstrap» (The Journal of Finance, 1999), por el mismo experimento llevado a cabo a escala completa sobre un siglo de datos diarios y miles de reglas, que es el estudio del que esta página es una imitación a sesenta velas. David H. Bailey, Jonathan M. Borwein, Marcos López de Prado y Qiji Jim Zhu, «Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance» (Notices of the American Mathematical Society, 2014), por el resultado de que el número de configuraciones probadas basta por sí solo para predecir cuánta ventaja aparente asoma, que es lo que calcula la lección siguiente. Bradley Efron, «Bootstrap Methods: Another Look at the Jackknife» (The Annals of Statistics, 1979), por el método de remuestreo con el que está construida la distribución nula de esta lección.
Qué tendría que pasar
La frase de cuatro partes en que hay que escribir una regla antes de poder ponerla a prueba siquiera.
Leer la lección →Cuánto tardarás en saberlo
Lo que siete operaciones y un estadístico t de 3,65 pueden y no pueden sostener.
Leer la lección →Slippage e impacto a tamaño minorista
El coste de ida y vuelta que esta lección resta de todos los números de la página.
Leer la lección →Solo con fines educativos. Operar conlleva un riesgo sustancial de pérdida. No es asesoramiento financiero. Los resultados pasados no garantizan resultados futuros.
💬 Debate (0 comentarios)
Cargando comentarios…
¿Listo para operar con Signal Pilot?
Aplica tu formación con indicadores profesionales y herramientas de análisis de mercado en tiempo real.
Volver a Signal Pilot →