6 de octubre de 2026 · investigación

¿Por qué mi backtest ejecutó una operación a un precio que el mercado nunca mostró?

¿Por qué mi backtest ejecutó una operación a un precio que el mercado nunca mostró?

Un backtest puede mostrar una ejecución a un precio que el mercado nunca mostró. Por lo general, el simulador ha inferido una ejecución aparentemente plausible a partir de datos incompletos: el máximo y el mínimo de una barra, un punto medio o un precio límite alcanzado por una sola operación. Eso puede hacer que el registro de operaciones parezca preciso, aunque oculte lo que el mercado ofrecía en realidad.

Empieza por preguntarte con qué precio podría haber interactuado tu orden. Una barra de últimas operaciones indica a qué precios se negoció durante un intervalo. No te dice cuál era el bid y el ask cuando llegó tu orden, cuánto había disponible ni si tu orden podía ponerse al principio de la cola.

¿Por qué mi backtest muestra una ejecución fuera del precio de mercado?

Primero, precisa qué significa «fuera». Una compra ejecutada por debajo del mínimo de la barra o una venta por encima de su máximo es un error evidente de contabilidad o de sincronización. Incluso una ejecución dentro del rango máximo-mínimo puede ser ficticia: quizá el precio se negoció antes de que existiera la orden, al otro lado del spread o en una cantidad demasiado pequeña para completar tu orden.

Piensa en una barra de 1 minuto con una apertura de 100.00, un mínimo de 99.80 y un cierre de 100.10. Tu estrategia ve la barra completa, envía una compra y el simulador la ejecuta a 99.80. Ese mínimo pudo producirse cerca del comienzo del minuto, 50 segundos antes de la señal. La barra no aporta pruebas de que 99.80 estuviera disponible después de tomar la decisión.

Datos disponiblesQué permiten establecerQué no permiten establecer
Barra OHLCVRango observado de precios de negociación y volumen durante un intervaloSecuencia de precios, bid y ask, o disponibilidad cuando llega la orden
Registros de operacionesEjecuciones informadas con marcas de tiempo y preciosLiquidez pasiva o tu posición en la cola
Cotizaciones del mejor nivelMejor bid y ask mostrados en los momentos muestreadosProfundidad más allá del mejor nivel o si una cotización se mantuvo entre muestras
Eventos del libro de órdenesCambios en la profundidad mostrada y eventos de cola, según la cobertura del feedLiquidez oculta, acceso al mercado o prioridad garantizada

Hay otra causa frecuente: confundir el punto medio con precios ejecutables. Si la cotización es 99.99 bid y 100.01 ask, una compra a 100.00, el punto medio, queda pulcra en el informe. Por lo general, una compra ejecutable paga el ask, más cualquier impacto de su tamaño. Considerar el punto medio como precio de ejecución elimina silenciosamente la mitad del spread.

¿Puede ejecutarse una orden límite solo porque el mercado tocó su precio?

Que el precio se haya tocado demuestra que se registró una operación a ese precio límite. No demuestra que tu orden pasiva se habría ejecutado. Si había otras órdenes por delante, el volumen negociado a ese precio pudo ser insuficiente para alcanzar tu posición en la cola. Además, la operación pudo haberse realizado en otro mercado mientras tu orden esperaba en otro lugar.

Supón que tu orden límite de compra está en 50.00 y, después de enviarla, el mercado negocia 200 acciones a ese precio. Un simulador basado en el toque ejecuta las 500 acciones. Un modelo más prudente pregunta cuánto se negoció a 50.00 o a un precio mejor después de la llegada, y luego tiene en cuenta una estimación de las órdenes que te preceden en la cola. Sin datos del libro a nivel de órdenes, esa cola es un supuesto. Debe quedar visible en los resultados, no colarse como si fuera una certeza.

En un sistema de investigación pequeño, prefiero explicitar ese supuesto y probar un rango de valores antes que fingir que los datos de velas revelan la prioridad en la cola. El rango adecuado depende del mercado, el tamaño de la orden y la frecuencia con que opera la estrategia. Una acción tranquila a la apertura y un contrato cripto poco líquido a las 03:00 UTC plantean problemas de ejecución distintos.

¿Cómo debería elegir un modelo de ejecución para datos de barras?

Ajusta el modelo tanto a los datos como a lo que afirma la estrategia. Un backtest basado en barras puede seguir siendo útil para estrategias lentas, pero sus ejecuciones deben respetar lo que las barras realmente permiten saber.

  1. Define las horas de decisión y llegada. Si una señal usa el cierre de la barra, envía la orden después de ese cierre. Simula la ejecución a partir del siguiente intervalo o cotización disponible, no del mínimo anterior de la barra completa.
  2. Usa el lado correcto del spread. Para compras ejecutables, parte del ask; para ventas, del bid. Si solo tienes barras de operaciones, estima el spread con una fuente aparte o indica que el modelo lo omite.
  3. Limita las ejecuciones a una liquidez plausible. Aplica un límite de participación al volumen observado e incluye comisiones e impacto de mercado. El volumen total de una barra no significa que todo estuviera disponible al precio que elegiste.
  4. Pon a prueba los supuestos. Compara las ejecuciones a la apertura siguiente con un deslizamiento conservador y comprueba si el resultado resiste una ejecución peor. No ajustes el modelo de ejecución hasta que la estrategia salga ganando.

Estas son decisiones de modelado, no una receta para recuperar la única ejecución verdadera a partir de datos incompletos. Si la estrategia depende de capturar unos pocos puntos básicos, quizá los datos de barras no basten para respaldar esa afirmación.

¿Cómo puedo averiguar en qué punto del backtest se introdujo la ejecución imposible?

Sigue una operación sospechosa desde la señal hasta el registro contable. Mantén como campos separados la marca de tiempo de la decisión, la de envío de la orden, la llegada simulada, la observación de mercado seleccionada, el precio y la cantidad de ejecución, y la comisión. Después, revisa lo siguiente en orden:

Si no puedes responder esas preguntas a partir del registro de operaciones, al backtest le faltan datos sobre la ejecución. Añade esos campos, reproduce a mano algunas operaciones con los datos sin procesar y comprueba que la ejecución informada podría haberse producido con el modelo que pretendías usar. Una curva de capital limpia no detectará un precio que solo existió dentro del simulador.

backtestingdatos de mercadoejecucióningeniería de datos
← Todos los artículos