La noche en que mi backtest me mintió
Una noche, un backtest me dijo que había convertido un saldo inicial modesto en 2.792 billones de wones — más que la producción anual de la mayoría de las economías del planeta. Me quedé mirándolo. Durante unos minutos, una parte callada y codiciosa de mí salió a buscar razones por las que podría ser real.
No era real. Era un bug. Y el bug resultó ser más instructivo que cualquier estrategia ganadora, porque era un bug sobre lo único que un backtest existe para respetar: la realidad.
El número que debería haberme asustado
Estaba ejecutando una búsqueda de parámetros — miles de configuraciones, cada una reproducida sobre datos históricos y clasificada por el resultado final. La mayoría volvían siendo ordinarias. Una volvió siendo demencial.
Demencial-a-tu-favor es la salida más peligrosa que un sistema puede producir, porque llega con el rostro del éxito. Una ejecución perdedora te hace depurar. Una ejecución que “funciona” te hace celebrar. El escrutinio es asimétrico, y corre exactamente en la dirección equivocada: interrogamos los resultados que nos desagradan y dejamos pasar los que amamos. Yo casi dejé pasar este.
El instinto que tuve que aprender — por las malas — es el contrario. Cuanto más espectacular es el resultado, más seguro es que algo está roto. Los mercados no le entregan a un constructor primerizo el PIB de un país pequeño. Si tu simulación dice que sí, la simulación está mintiendo, y tu único trabajo es averiguar cómo.
Error uno: apostar toda la cuenta, cada vez
El primer fallo estaba en el position sizing. Cada operación se dimensionaba como esencialmente toda la cuenta, y las ganancias se reinvertían directamente en la siguiente apuesta. En el momento en que haces eso, dejas de modelar el trading y empiezas a modelar una serie geométrica. Una racha suficientemente larga de resultados incluso ligeramente favorables — o puro ruido que casualmente cae del lado correcto las veces suficientes — no crece, detona. La matemática se escapa de la realidad y nunca mira atrás.
Esto es lo seductor de un backtest que se reinvierte por completo: no necesita una buena estrategia para producir un gran número. Solo necesita suficientes operaciones y un simulador lo bastante generoso como para dejar que la apuesta siga corriendo. La reinversión convierte una inclinación estadística tenue y carente de significado en una curva exponencial, y una curva exponencial a lo largo de miles de operaciones produce un número que parece destino y no significa nada. El saldo astronómico no era evidencia de una ventaja. Era evidencia de exposición total de la cuenta aplicada a la aleatoriedad.
Error dos: un simulador que no podía morir
El segundo fallo era peor, porque era filosófico. Mi backtester no tenía barrera absorbente — ningún punto en el que la cuenta estuviera simplemente muerta. Así que cuando una racha de malas operaciones hizo bajar el saldo un 99,99%, la simulación no se detuvo. Mantuvo el cadáver sobre la mesa y lo dejó seguir operando. Y desde ese saldo casi nulo, una racha de suerte “revivió” la cuenta y la llevó de vuelta hasta una altura absurda.
En una cuenta real, esa recuperación es imposible. Cero es cero. Un saldo liquidado no tiene un segundo acto — estás fuera del juego, permanentemente, y ninguna racha ganadora futura puede alcanzar hacia atrás en el tiempo para salvarte. Al dejar que una cuenta en bancarrota siguiera operando, mi código había borrado silenciosamente la regla más importante de todo el trading: que la ruina es definitiva. Todo lo que venía aguas abajo de eso — toda la fantasía — se seguía lógicamente de una sola restricción ausente. La simulación no estaba modelando una estrategia que sobrevivía. Estaba modelando una estrategia a la que se le había permitido morir, y luego se le había prohibido quedarse muerta.
El optimizador estaba cazando mi punto ciego
Aquí está la parte que más tardé en entender: la búsqueda de parámetros no tropezó con esa configuración absurda por accidente. Salió a buscarla.
Una búsqueda sobre miles de configuraciones no es un observador neutral. Es un adversario que optimiza para cualquier métrica que le entregues. Si tu métrica es “saldo final” y tu simulador tiene un punto débil — un lugar donde se permite silenciosamente que ocurran cosas poco realistas — la búsqueda encontrará ese punto débil y se apoyará en él con todo su peso. No premia la mejor estrategia. Premia la configuración que explota con mayor eficiencia la brecha entre tu simulación y la realidad.
Así que el resultado de billones de wones no era un bug desafortunado aflorando al azar. Era la consecuencia predecible de apuntar un optimizador potente hacia un simulador que podía ser engañado. Toda debilidad que dejes en un backtest se convierte, bajo búsqueda, en una estrategia. El optimizador es una máquina para descubrir precisamente los supuestos que olvidaste imponer.
La señal reveladora
Junta esos errores y obtienes una máquina que fabrica milagros. Puede sobrevivir a cualquier cosa, así que sobrevive a todo; lo apuesta todo, así que cuando sobrevive sobrevive enormemente; y una búsqueda lo está afinando silenciosamente para que haga ambas cosas con la máxima intensidad posible. La salida no es el rendimiento de una estrategia. Es la forma del propio bug, dibujada en números muy grandes.
Por eso “la supervivencia primero” no es un eslogan. Un backtest que no puede quebrar, dadas suficientes configuraciones para recorrer, siempre acabará por aflorar una que parece genialidad — no porque esa configuración sea buena, sino porque la búsqueda está minando pacientemente el punto ciego de tu simulador. El número impresionante es el síntoma. La bancarrota ausente es la enfermedad.
La corrección aburrida
La reparación fue poco glamorosa. Los tamaños de posición pasaron a ser una pequeña fracción fija de la cuenta en lugar de la cuenta entera, de modo que una victoria no pudiera convertirse en una bola de nieve disparatada y una pérdida no pudiera ser todo o nada. El simulador obtuvo una condición de ruina real: cae por debajo de un saldo mínimo de supervivencia y la ejecución termina, marcada como muerta, punto final. Y obtuvo un tamaño de orden mínimo, para que las operaciones demasiado pequeñas como para existir en el mercado real no pudieran mantener silenciosamente con respiración asistida a una cuenta moribunda.
Ninguna de estas son ideas ingeniosas. No hay perspicacia en ellas, ni ventaja. Son la simulación accediendo por fin a obedecer las restricciones que la realidad nunca relaja — costes que no te perdonan, liquidez que no es infinita, y un cero del que no puedes volver. La mayor parte del trabajo de construir un backtest honesto es exactamente esto: no hacerlo más inteligente, sino negarse a dejar que haga trampa. La primera responsabilidad de un backtest honesto no es mostrarte ganancias. Es ser capaz de mostrarte la ruina.
Por qué dejé de confiar en las buenas noticias
Aquí está la parte incómoda. El bug fue fácil. Lo difícil fue que casi no miré — porque el número estaba a mi favor, y yo quería que fuera verdad. Un resultado que te contradice se interroga. Un resultado que te halaga se cree.
Esa asimetría es donde vive la mayor parte del autoengaño en este trabajo. No es que la gente no pueda encontrar sus bugs; es que dejan de buscar en el momento en que un bug empieza a pagarles. El mercado acabará por cobrar el precio íntegro de cada supuesto cómodo que nunca verificaste — pero un backtest te dejará encantado sostener ese supuesto durante meses, porque es, por construcción, el único lugar donde equivocarse es gratis.
Lo que realmente cambió
Así que la disciplina que conservé de un billón de wones falso no tiene casi nada que ver con el position sizing. Cambió el orden de mi confianza. Un resultado de buen aspecto ahora es culpable hasta que se demuestre su inocencia: antes de preguntar “¿cómo logró esto?”, pregunto “¿qué está roto aquí?” — e intento, deliberadamente, romperlo yo mismo antes de que el mercado tenga la oportunidad. Los resultados que sobreviven a ese trato hostil son los únicos que me permito creer, y hay muchos menos de los que me gustaría.
Un backtester que no puede perderlo todo no es optimista. Está mintiendo. Y la mentira más peligrosa que puede contar es la que ya esperabas oír.
— Sin señales, sin rentabilidades, esto no es asesoramiento de inversión.