A quién va dirigido — A quien transforme datos históricos en señales, optimice parámetros, utilice machine learning o simule órdenes. Un modelo puede estar programado sin errores y aun así «conocer» el futuro porque se ha vulnerado la causalidad en una unión, una variable, una partición o un precio de ejecución.
El data leakage es la contaminación de un procedimiento de investigación
por información que no debería haber estado disponible en el punto en que se
utiliza. El sesgo de anticipación o look-ahead bias es el caso temporal:
una decisión en el momento t incorpora directa o indirectamente datos
conocidos solo después de t. El resultado no es simplemente optimista; simula
una estrategia diferente, equipada con un canal de información inexistente.
En palabras sencillas — Ordenar las filas por fecha no basta. Cada paso debe respetar esta cadena: información disponible → señal → orden → ejecución posible → posición → resultado.
Distinciones esenciales
| Problema | Qué sucede | Ejemplo |
|---|---|---|
| Look-ahead | un valor futuro entra en la decisión | utilizar el cierre de la barra para comprar a ese mismo cierre sin mecánica de subasta ni latencia |
| Target leakage | el objetivo de la previsión se filtra a las variables | una agregación incluye el periodo futuro del objetivo |
| Filtración de preprocesamiento (preprocessing leakage) | la estimación o selección utiliza entrenamiento y prueba conjuntamente | normalizar con la media y la desviación estándar de toda la muestra |
| Filtración entre muestras | observaciones correlacionadas atraviesan la frontera | etiquetas solapadas aparecen tanto en entrenamiento como en prueba |
| Información revisada | el valor definitivo sustituye al vintage disponible | una cifra macroeconómica corregida meses después |
| Simulación no causal | la orden recibe un precio imposible | señal al cierre con ejecución garantizada a ese mismo cierre |
El sesgo de supervivencia es distinto: nace de observar únicamente entidades que sobrevivieron o fueron seleccionadas a posteriori. Puede coexistir con una filtración, pero corregir solo las marcas temporales no recrea instrumentos fallidos, fondos cerrados ni antiguos componentes de un índice.
Tres relojes: señal, orden y ejecución
Una regla de trading debe declarar al menos tres momentos:
- Hora de la señal: la información más reciente permitida en el cálculo.
- Hora de la orden: el primer momento en que puede crearse y enviarse una orden.
- Hora de ejecución: el momento o intervalo en el que el modelo de ejecución puede asignar cantidad y precio.
Si una señal utiliza close[t], una ejecución a close[t] exige una mecánica
realmente disponible antes de la subasta o durante ella, y datos compatibles
con esa decisión. Sin esta evidencia, una convención más defendible consiste en
enviar la orden después de la señal y modelar una ejecución posterior. Del
mismo modo, el máximo y el mínimo completos de una barra no pueden decidir una
orden ejecutada dentro de esa misma barra sin una secuencia intrabar observable.
En publicaciones, presentaciones y datos macroeconómicos, el momento relevante es la marca temporal de difusión, no la fecha del periodo económico. Los datos point-in-time incluyen también el vintage, el retraso del proveedor y las correcciones posteriores.
Dónde se oculta la filtración
Variables y transformaciones
- medias centradas, filtros bidireccionales o interpolación que utiliza observaciones futuras;
- rankings transversales calculados sobre un universo reconstruido hoy;
- winsorización, imputación o estandarización estimadas en todo el conjunto de datos;
- datos fundamentales alineados con el cierre del trimestre en lugar de con la hora de presentación;
- splits y dividendos aplicados sin distinguir la fecha efectiva de la fecha en que se conocieron.
Investigación y selección
El conjunto de prueba puede contaminarse sin ninguna columna que mire al futuro. Consultar repetidamente su resultado para seleccionar variables, umbrales o modelos lo convierte poco a poco en datos de desarrollo. Out-of-sample no es una etiqueta de archivo, sino una función dentro del proceso. Deben registrarse el número de alternativas intentadas, las decisiones rechazadas y los criterios de selección.
Órdenes y ejecución
Un precio OHLC no demuestra que una orden se hubiera ejecutado. Los stops y límites pueden alcanzarse sin ejecución; la cantidad disponible puede ser insuficiente; la prioridad en la cola puede ser desconocida; los retrasos y las ejecuciones parciales modifican la posición. Asignar siempre el precio más favorable de la barra es una forma de retrospectiva, distinta pero conectada con los costes de transacción en backtests.
Protocolo causal
- Escribir la decisión antes que el código. Enumerar datos de entrada, marcas temporales, zonas horarias, horas de corte, frecuencia y acción producida.
- Versionar los datos brutos. Conservar instantáneas, vintages, universo y acciones corporativas sin sobrescribir la historia.
- Calcular cada variable «as of». Una consulta en
tdebe excluir todo registro conavailable_at > t. - Ajustar solo con entrenamiento. La imputación, el escalado, la selección de variables y la optimización deben aprenderse del subconjunto permitido y aplicarse después hacia delante.
- Respetar el orden temporal. Utilizar particiones cronológicas; cuando las etiquetas o posiciones se solapen, considerar purgas y gaps coherentes con el horizonte.
- Congelar la especificación. Registrar reglas, parámetros, universo, benchmark y métricas antes de la evaluación final.
- Separar señal, orden y ejecución. Aplicar retrasos, calendarios, tipos de orden y datos realmente observables.
- Conservar todos los experimentos. Un registro de experimentos reduce el data snooping invisible.
- Repetir desde una instantánea limpia. El resultado debe poder reproducirse sin archivos intermedios construidos con información futura.
Ejemplo ilustrativo — Una regla compra en la apertura cuando los beneficios trimestrales superan las expectativas. La base de datos asocia la cifra con el cierre del trimestre, pero la publicación llega seis semanas después. Por tanto, el test original compra antes de la publicación. La corrección conserva la marca temporal de difusión, espera la siguiente ventana negociable y utiliza el vintage disponible entonces. La secuencia temporal ilustra un control causal, no una estrategia recomendada.
Pruebas diagnósticas
| Prueba | Qué puede revelar |
|---|---|
| Desplazar cada variable una barra | dependencia oculta de la barra actual |
| Reconstruir el conjunto de datos a una fecha histórica | valores revisados o composición retrospectiva |
| Aumentar artificialmente la latencia y los gaps | fragilidad en la secuencia causal |
| Ajustar el preprocesamiento por separado en cada fold | contaminación entre entrenamiento y prueba |
| Eliminar el precio «perfecto» de la barra | ejecuciones imposibles o selección favorable |
| Ejecutar un placebo con el objetivo desplazado en el tiempo | correlaciones sospechosas en el flujo |
Un derrumbe después de estas pruebas es una señal de alerta, no una prueba automática de la causa. Tampoco un resultado estable demuestra que no exista filtración: algunas filtraciones pueden sobrevivir a las perturbaciones.
Limitaciones
Las particiones temporales, los procedimientos walk-forward y la validación cruzada no reparan datos ya contaminados. Las purgas y los embargos deben seguir la estructura de las etiquetas, no aplicarse como rituales. Un conjunto causal puede seguir sufriendo errores de medición, selección múltiple, cambio de régimen, poca potencia o un universo incompleto. Por ello, la validación exige tanto controles estadísticos como una auditoría de la ruta de la información.
Fuentes
- Halbert White, A Reality Check for Data Snooping, Econometrica, 2000 — inferencia cuando el resultado seleccionado surge de muchas especificaciones exploradas.
- Robert D. Arnott, Campbell R. Harvey y Harry Markowitz, A Backtesting Protocol in the Era of Machine Learning — separación entre investigación, selección y prueba holdout cuando los datos financieros son escasos.
- David H. Bailey, Jonathan M. Borwein, Marcos López de Prado y Qiji Jim Zhu, The Probability of Backtest Overfitting — riesgo de sobreajuste derivado de seleccionar entre muchas configuraciones.
- Federal Reserve Bank of St. Louis, FRED® versus ALFRED® — diferencia entre la información histórica disponible hoy y el vintage conocido en el pasado.
- scikit-learn, TimeSeriesSplit — validación cruzada ordenada en el tiempo y parámetro de gap; documentación técnica oficial.