Mi Modelo Estaba Leyendo el Periódico de Mañana

Durante un tiempo, uno de mis modelos parecía un genio. Su backtest era limpio, seguro, casi demasiado suave. Quería creer que por fin había construido algo que funcionaba.

No había aprendido nada que valiera la pena conservar. Había aprendido a hacer trampa — silenciosamente, a través de una fuga que yo mismo había construido, que le permitía leer información del futuro antes de decidir qué hacer en el pasado.

El alumno sospechosamente bueno

Un modelo que rinde un poco mejor de lo que esperabas es emocionante. Un modelo que rinde mucho mejor de lo que tiene derecho a rendir debería asustarte. El mío era del segundo tipo: suave donde los mercados reales son irregulares, seguro donde debería haber estado incierto.

En una entrada anterior escribí que el resultado más peligroso es el que te halaga. Esta era esa lección otra vez, con un disfraz más sutil. Los números no eran absurdos esta vez — simplemente eran demasiado buenos, y “demasiado bueno” es su propia clase de bandera roja, porque la ventaja genuina en los mercados es pequeña, ruidosa y se gana con esfuerzo. Un modelo que parece haber resuelto el mercado casi siempre ha encontrado, en cambio, una grieta en tu simulación.

Por dónde entró el futuro

La grieta estaba en la normalización — ese paso poco glamuroso en el que reescalas las entradas en bruto para que un modelo pueda aprender de ellas. Para normalizar, necesitas estadísticas: un centro, una dispersión. Y yo calculé esas estadísticas sobre el conjunto de datos entero de una sola vez.

Esa única decisión es donde se filtró el futuro. Cuando calculas estadísticas a lo largo de toda la historia y luego las aplicas a un punto del pasado, cada valor “normalizado” en ese momento pasado codifica silenciosamente información sobre datos que aún no habían ocurrido. Al modelo, mirando cualquier instante dado, implícitamente se le decía algo sobre la forma de toda la línea temporal — incluido su futuro. Nunca vio directamente los precios de mañana. No le hacía falta. Respiraba un aire que tenía el mañana mezclado dentro.

Por qué el look-ahead es tan fácil de construir

Lo que hace peligroso al sesgo de look-ahead no es que sea difícil de crear. Es que se cuela a través de un preprocesamiento por lo demás ordinario. La forma más natural y legible de escribir el código — ajustar tu scaler sobre los datos y luego transformar los datos — ya es incorrecta para series temporales, y nada se queja. No se lanza ninguna excepción. Ningún test se pone en rojo. Los números parecen completamente razonables. El único síntoma es que tu modelo es mejor de lo que debería ser, que es justo el único síntoma que menos motivado estás a investigar.

Esa es la trampa de la fuga: no parece un error. Parece un éxito.

La señal: brillante aquí dentro, muerto ahí fuera

Hay una señal reveladora, aunque no es prueba por sí sola. Un modelo corrompido por el look-ahead tiende a ser brillante con los datos contra los que fue ajustado y a desmoronarse en el instante en que se encuentra con datos que no puede espiar. Una gran brecha entre la gloria dentro de la muestra y el colapso fuera de la muestra es una señal de advertencia de fuga — aunque también puede provenir del sobreajuste, de un cambio de régimen o de costes que subestimaste. En mi caso, la fuga era la culpable.

Así que el test que importaba nunca fue “¿qué tan bueno es el backtest?” Fue “¿cuánto peor se pone cuando hago la simulación honesta?” Cuando cerré la fuga, el rendimiento cayó — y esa caída, por dolorosa que fuera, fue el primer número confiable que el sistema me había mostrado.

El arreglo: nunca uses nada que aún no pudieras haber sabido

La reparación es un principio, no una línea de código: en cualquier momento de la simulación, el modelo solo puede usar información que existía en ese momento o antes. Para la normalización, eso significa derivar estadísticas de una ventana móvil del pasado — ajustando sobre lo que estaba disponible hasta un momento dado, nunca sobre toda la línea temporal, y nunca sobre un único punto del futuro.

Es más lento. Es más quisquilloso. Produce backtests de peor aspecto. Las tres cosas son características, no costes, porque cada una es la simulación negándose a dejar que el modelo viaje en el tiempo. Una tubería honesta paga un impuesto en rendimiento aparente, y ese impuesto es el precio de números en los que realmente puedes confiar.

La fuga es una familia, no un solo error

La parte más difícil de arreglar esto no fue el normalizador. Fue darme cuenta de que el normalizador era solo una puerta, y el futuro podía entrar por muchas. El mismo error se esconde en cómo se construyen las etiquetas, en características que resumen secretamente una serie entera, en cualquier paso de preprocesamiento que toque pasado y futuro juntos. Cierra una fuga y no has cerrado la fuga; solo has aprendido cómo se ve, para poder ir a encontrar las demás.

Dejé de pensar en el look-ahead como un error que arreglar y empecé a tratarlo como una propiedad que auditar — algo que ahora cazo deliberadamente, bajo el supuesto de que si un resultado parece demasiado limpio, el futuro se está colando por algún sitio que aún no he revisado.

Por qué los backtests premian la trampa

Bajo todo esto hay una verdad incómoda sobre los backtests: no pueden distinguir la habilidad de la retrospección. Un backtest paga exactamente lo mismo por un modelo que genuinamente anticipa el mercado y por un modelo que silenciosamente está leyendo la hoja de respuestas. Ambos producen una curva hermosa. Datos estrictamente hacia adelante y no vistos son el test más fuerte que empieza a separarlos — aunque ni siquiera eso puede, por sí solo, probar que una tubería esté libre de fugas.

Por eso “le fue bien en el backtest” es el comienzo de una investigación, no el final de una. Una equity curve de buen aspecto es una pregunta: ¿se ganó esto el modelo, o accidentalmente le dejé hacer trampa? Toda la disciplina de la investigación honesta consiste simplemente en aprender a hacerse esa pregunta antes de que el mercado te la haga a ti.

Un modelo que lee el periódico de mañana siempre parecerá un genio. El genio es tuyo, no suyo — y vive enteramente en la fuga que olvidaste cerrar.

— Sin señales, sin retornos, no es asesoramiento de inversión.