6. Data snooping y p-hacking: el overfitting con nombre y apellido estadístico
Nivel 6: Contraste de hipótesis y sus trampas en backtesting
Mueves la fecha de inicio del backtest unos meses. Ahora sí sale significativo.
Nadie ha mentido, nadie ha falsificado un dato y el motor de backtest es impecable, pero el resultado ya no vale absolutamente nada.
El curso de teoría de mercados ya te presentó el overfitting de forma intuitiva: una estrategia demasiado ajustada a su historia concreta, que se derrumba en cuanto se enfrenta a datos nuevos.
El módulo anterior te dio el mecanismo estadístico exacto de por qué probar muchas variantes genera ganadores falsos casi garantizados. Este módulo nombra, con precisión, el proceso que produce ese resultado, a veces deliberado y a veces no: data snooping y p-hacking.
Data snooping: los mismos datos para las dos cosas
El data snooping consiste en usar el mismo conjunto de datos, de forma repetida y exploratoria, para dos tareas que deberían ir separadas:
- Generar una hipótesis, es decir, qué reglas o parámetros podrían funcionar.
- Testar esa misma hipótesis, sobre esos mismos datos.
Y aquí está el problema de fondo. La lógica de un contraste de hipótesis asume que la hipótesis se fijó antes de mirar los datos que se usarán para ponerla a prueba.
Cuando son los propios datos los que sugirieron la hipótesis, esa lógica se rompe por completo.
El p-valor resultante queda vaciado de significado real, porque en esencia buscaste, entre muchas posibilidades, exactamente el patrón que iba a puntuar bien en esa muestra concreta, en algo que es casi una profecía autocumplida.
P-hacking: la versión activa
El p-hacking es la versión más activa, y a veces más consciente, de lo mismo. Consiste en ajustar la forma del análisis hasta que el p-valor cruza la línea de significativo, y entonces detenerse y presentar esa versión concreta como si fuese el único análisis realizado.
Los ajustes disponibles son muchos más de los que parece:
- La ventana temporal concreta que se elige para hacer el backtest.
- Qué activos, o qué subconjunto de activos, se deciden incluir.
- Qué días atípicos se acaban excluyendo del cálculo final.
- Cuál de entre varias métricas bastante parecidas se acaba reportando.
- Si el contraste se plantea de una o de dos colas.
- En qué momento exacto se deja de recopilar más datos.
Tácticas que aparecen constantemente
Vale la pena enumerar tácticas concretas de p-hacking que aparecen constantemente en backtests de aficionados, porque reconocerlas es ya la mitad del trabajo de evitarlas:
- Elegir las fechas de inicio y fin del backtest de forma que se excluya convenientemente un tramo de pérdidas incómodo.
- Probar la estrategia sobre diez acciones distintas y reportar solo las tres en las que funcionó.
- Probar varios niveles de stop-loss o take-profit hasta que uno cruza el umbral.
- Repetir el mismo test tras eliminar unos pocos días atípicos que, casualmente, eran los peores días de pérdidas.
- Cambiar el índice de referencia usado para la comparación después de comprobar que el primero no daba un resultado significativo.
Dónde acaba la investigación legítima
Conviene separar con claridad esta práctica de la investigación iterativa legítima, porque explorar, probar cosas y refinar ideas es completamente normal y necesario.
Lo que convierte esa exploración en data snooping o p-hacking son dos cosas muy concretas:
- Tratar los mismos datos usados para explorar y afinar como si fuesen también evidencia independiente de confirmación.
- Reportar solo el p-valor final pulido, sin revelar el camino exploratorio que llevó hasta ahí.
El jardín de senderos que se bifurcan
Existe además una versión más sutil e involuntaria de este problema, conocida coloquialmente como el jardín de senderos que se bifurcan.
Incluso un único investigador, actuando con total buena fe, sobre un único conjunto de datos, toma docenas de decisiones pequeñas y en apariencia razonables a lo largo del análisis:
- Cómo definir exactamente lo que cuenta como una señal.
- Qué desfase temporal usar entre el dato y la operación.
- Cómo tratar los datos que faltan dentro de la serie.
Para cada una de esas decisiones existen varias alternativas igual de defendibles, así que el investigador termina explorando, sin darse cuenta y sin ninguna mala intención, un espacio oculto de comparaciones múltiples.
Esa es la razón por la que el data snooping puede colarse incluso en el trabajo de gente cuidadosa, competente y perfectamente honesta.
El antídoto, en cuatro pasos
El antídoto tiene una estructura concreta, que amplía la validación fuera de muestra del módulo anterior con más disciplina de procedimiento:
- Primero, algo parecido a un pre-registro. Anotar, antes de tocar los datos de prueba, exactamente qué única estrategia, qué única métrica y qué ventana temporal exacta se van a testar.
- Segundo, mantener una separación estricta entre los datos usados para explorar y afinar ideas, que son los de dentro de muestra, y los usados para confirmarlas, que son los de fuera de muestra. Sin dejar jamás que los resultados del conjunto de confirmación retroalimenten nuevos ajustes.
- Tercero, si de verdad hace falta comparar varias ideas, aplicar el umbral combinado más estricto del módulo anterior, en lugar de reportar el p-valor bruto de la mejor.
- Cuarto, sospechar más, no menos, de un resultado que llevas mucho tiempo deseando que sea verdad tras una larga búsqueda.
Ese último punto merece una frase aparte, porque el entusiasmo propio no es evidencia, y suele ser precisamente la señal de alarma de que conviene mirar con más lupa, no con menos.
Datos honestos no es lo mismo que proceso honesto
Queda una última precisión importante para el contexto de quant500, y conviene leerla despacio.
Usar un motor de backtest honesto, construido sobre datos de presentación puntual sin sesgo de anticipación, elimina el look-ahead bias. Pero no te protege por sí solo del data snooping.
Puedes perfectamente data-snoopear sobre un conjunto de datos perfectamente honesto si iteras y ajustas repetidamente contra la misma muestra histórica una y otra vez.
La honestidad de los datos y la honestidad del proceso de búsqueda son dos problemas distintos, y hay que resolver los dos.