Me contaste que tu proceso de paper trading se bloqueó durante la noche. Lo reiniciaste antes de la siguiente decisión, no viste errores y diste por hecho que había retomado donde lo dejó. Entonces envió una orden de compra de un activo que ya tenías. Quieres saber si la estrategia tiene un error.
Puede que sí. Pero antes, comprueba si el proceso reiniciado conoce lo mismo que la cuenta de paper trading. Un reinicio es un problema de recuperación del estado: las posiciones, el efectivo, las órdenes abiertas y cualquier dato que la estrategia recuerde y que afecte a la siguiente decisión deben coincidir. Volver a poner el código en marcha es la parte fácil.
¿Qué creía la estrategia antes de bloquearse?
Anota la última decisión que tomó el proceso antes de detenerse. Para cada instrumento operado, registra la posición prevista, la posición real de la cuenta, las órdenes pendientes y el estado de las señales que influirá en la siguiente acción. Si no existen esos registros, no puedes saber si el reinicio restauró el estado o simplemente inicializó una estrategia nueva.
Supongamos que tu estrategia horaria compra 1 unidad cuando su señal de tendencia pasa a ser positiva y la mantiene hasta que pasa a ser negativa. El proceso envía la orden de compra a las 14:00, pero se bloquea antes de registrar que la orden fue aceptada. El bróker de paper trading la ejecuta. Al reiniciarse, la estrategia no detecta ninguna posición registrada y la señal sigue siendo positiva, así que envía otra orden de compra. La señal se comporta de forma coherente. Lo que está desactualizado es la memoria de la estrategia sobre lo que posee la cuenta.
Por eso, hay que conciliar la posición actual de la cuenta con el estado persistido de la estrategia antes de permitir nuevas órdenes. Una copia local puede ser útil, pero la cuenta o el bróker son la fuente de verdad sobre lo que realmente se ejecutó.
¿Qué estado debe conservarse tras un reinicio?
Empieza por el estado que puede cambiar la siguiente orden. Guarda un registro persistente con una marca de tiempo y una versión por cada actualización; haz una copia antes de cambiar la lógica de recuperación para poder reproducir el fallo más adelante.
| Estado | Por qué importa | Comprobación de recuperación |
|---|---|---|
| Posiciones y efectivo | Determinan la exposición y el poder de compra disponible | Compara los valores persistidos con los de la cuenta de paper trading |
| Órdenes abiertas | Una orden puede haberse ejecutado mientras el proceso estaba detenido | Consulta el estado de las órdenes y concilia las ejecuciones parciales |
| Memoria de las señales | Los cruces, los períodos de espera y los períodos de tenencia pueden abarcar varias decisiones | Restaura las últimas entradas de decisión confirmadas |
| Último evento procesado | Determina desde dónde reanuda la estrategia el consumo de datos | Reproduce los eventos posteriores sin aplicarlos dos veces |
Es fácil pasar por alto la memoria de las señales. Una estrategia que opera con un cruce puede guardar el valor del indicador del día anterior para detectar un cruce nuevo. Si arranca con ese valor vacío, puede confundir una condición ya existente con un evento nuevo. Un temporizador de espera tiene el mismo problema: el reinicio no debe restablecer silenciosamente una regla que debía persistir.
¿Cómo puedes hacer que la recuperación sea repetible?
Asigna a cada orden un ID de cliente estable, derivado de la ejecución de la estrategia y de la decisión que la originó. Si el proceso reintenta tras agotar el tiempo de espera, puede comprobar si esa decisión ya creó una orden, en vez de enviar un duplicado. Registra los cambios de estado solo después de confirmar el evento correspondiente en la cuenta y conserva los ID de las órdenes y las ejecuciones que explican el cambio.
Después, prueba el punto crítico que causó el incidente. Ejecuta la estrategia hasta una decisión, guarda el estado, detenla y restáurala con las posiciones y el historial de órdenes de la cuenta de paper trading. Compara la siguiente decisión y las órdenes resultantes con las de una ejecución ininterrumpida. Repite la prueba con una orden ejecutada parcialmente y con un fallo entre el envío y la confirmación. La ejecución reanudada no debería inventar una posición ni repetir una acción ya completada.
Lleva un registro de recuperación: último evento procesado, hora de la instantánea de la cuenta, estados de las órdenes abiertas, versión restaurada de la estrategia y primera decisión tras el reinicio. Así, «volvió a arrancar» se convierte en algo que puedes auditar.
¿En qué puedes confiar después del reinicio?
Confía en el proceso solo cuando el estado de la cuenta y el de la estrategia coincidan, se conozca el estado de las órdenes pendientes y la siguiente decisión sea la que esperarías de una ejecución continua. Si no puedes explicar una discrepancia, pausa el envío de órdenes de paper trading y revisa el historial de eventos. Que un proceso esté en marcha no demuestra que la estrategia se haya recuperado.
Ya has encontrado algo útil en el fallo: dejó al descubierto una suposición que la ejecución normal nunca te había obligado a cuestionar. Convierte el reinicio en un escenario repetible y sabrás qué recuerda tu estrategia antes de pedirle que vuelva a operar.
← Todos los artículos


