Cómo estimar la posición en la cola con datos de Nivel 2
La posición en la cola determina si una orden pasiva captura el spread. Aprenda a estimar este lugar mediante datos agregados y cuándo es necesario adquirir datos MBO.
La posición en la cola es el lugar que ocupa su orden entre las que permanecen a un mismo precio; en un mercado con prioridad de precio-tiempo, esto determina si una orden pasiva captura el spread o si nunca llega a ejecutarse. Los datos de mercado agregados no le proporcionarán este número: un libro de Nivel 2 muestra el volumen total en cada precio, pero nunca a quién pertenece. A continuación, se explica cómo estimar la posición en la cola a partir de los datos que maneja la mayoría de los operadores y cómo identificar cuándo una estimación ya no es suficiente.
Por qué la posición en la cola es la ventaja competitiva absoluta
Una orden pasiva permanece en el libro a la espera de que alguien más cruce el spread para ejecutarla. Bajo la prioridad de precio-tiempo, el motor de emparejamiento clasifica las órdenes en espera primero por precio y luego por orden de llegada. Si ya hay 10,000 acciones en oferta a 10.00 dólares y usted añade 100 detrás, esas 10,000 acciones deben ejecutarse o cancelarse antes de que llegue su turno. Si cancela y reingresa al mismo precio, volverá al final de la fila.
Esa clasificación determina la economía de la operación. Cerca del frente, usted opera con frecuencia y captura el spread más cualquier reembolso por añadir liquidez, tema tratado en comisiones y reembolsos maker-taker. Cerca del final, usted solo opera después de que todos los que le preceden lo hayan hecho, lo cual ocurre cuando llega un flujo unidireccional de gran volumen. Las ejecuciones al final de la cola se agrupan en los momentos previos a que el precio atraviese su nivel. Mismo precio, misma orden, resultado opuesto.
Qué pueden y qué no pueden mostrar los datos de Nivel 2
El Nivel 1 es el mejor precio de compra y venta (bid y offer) con el volumen en cada uno. El Nivel 2, también llamado mercado por precio, añade profundidad: una lista de niveles de precios con el volumen total en cada uno. Ambos son agregados, y datos de mercado Nivel 1 vs Nivel 2 los compara en detalle. Cuando la compra a 10.00 dólares cae de 10,000 a 8,500 acciones, el feed reporta que han desaparecido 1,500 acciones. No indica si se ejecutaron, si fue una orden o cuarenta, ni en qué parte de la fila estaban situadas.
Las ejecuciones son la mitad visible: la cinta (tape) imprime cada operación con su volumen, por lo que esas se restan con exactitud. El resto son cancelaciones, y ahí es donde comienza la especulación. El panel inferior cuenta los mensajes en la parte superior consolidada del libro frente a las impresiones en la cinta para una acción líquida durante una sesión ordinaria, el miércoles 10 de junio de 2026.
El SQL exacto detrás de cada cifra
SELECT
q.et_time AS et_time,
q.quote_updates AS quote_updates,
t.trades AS trades,
round(q.quote_updates / t.trades, 1) AS updates_per_trade
FROM
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
count() AS quote_updates
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY et_time
) AS q
INNER JOIN
(
SELECT
formatDateTime(toStartOfHour(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS trade_hour,
count() AS trades
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 12:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_hour
) AS t ON q.et_time = t.trade_hour
ORDER BY et_timeLa hora 08:00 se sitúa antes de la campana de apertura: la parte superior del libro cambió 0.8 veces por impresión, menos mensajes que impresiones. Dentro de la sesión regular, la proporción se invierte. En la hora 15:00, la parte superior del libro cambió 1.6 veces por impresión, a través de 233433 mensajes solo en esa hora. La mayor parte de lo que ocurre en un nivel de precio en un mercado abierto son órdenes que llegan y se van sin ejecutarse, y cada uno de esos eventos desplaza su lugar en la fila en una cantidad que ningún feed agregado especifica.
La asunción de cancelación uniforme y dónde le favorece erróneamente
El primer enfoque estándar asume que las cancelaciones se distribuyen uniformemente a lo largo de la cola. Llamemos x a su profundidad fraccionaria: las acciones por delante de usted divididas por el total en espera a su precio. El modelo uniforme establece que la probabilidad de que cualquier acción cancelada estuviera por delante de usted es igual a x, expresado como p(x) = x. Si usted está a mitad de una cola de 10,000 acciones y observa que 1,000 acciones se cancelan sin una impresión, el modelo le adelanta 500 puestos.
Las colas reales están sesgadas. Una orden que lleva tiempo en espera suele pertenecer a alguien dispuesto a esperar, mientras que una orden añadida hace un momento tiene muchas más probabilidades de ser una cotización fugaz que desaparece en segundos. Las cancelaciones se concentran hacia el final de la fila, cerca de usted y detrás de usted. De esas 1,000 acciones canceladas, quizás 200 estaban por delante, pero el modelo le acreditó 500. Si repite esto todo el día, la cola simulada avanza más rápido que la real. El error es unidireccional: más ejecuciones, en mejores momentos, de las que las órdenes reales obtienen.
Cómo se drenan las colas
Las cancelaciones le desplazan de forma invisible. Las operaciones le desplazan de forma visible, según el volumen de las impresiones.
El SQL exacto detrás de cada cifra
SELECT
multiIf(size < 100, 'under 100 shares',
size = 100, 'exactly 100 shares',
size <= 499, '101 to 499 shares',
size <= 999, '500 to 999 shares',
'1000 shares or more') AS trade_size_group,
round(100 * count() / sum(count()) OVER (), 1) AS share_of_prints_pct,
round(100 * sum(size) / sum(sum(size)) OVER (), 1) AS share_of_shares_pct
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
GROUP BY trade_size_group
ORDER BY min(size)Las impresiones por debajo de un lote redondo fueron el 90% del total en esta sesión y el 42.5% de las acciones. Los bloques de mil acciones o más fueron el 0.2% de las impresiones y el 19.9% del volumen. Las colas se drenan en pequeñas cantidades, por lo que la brecha entre la posición 2,000 y la 3,500 representa cientos de impresiones de espera. Un simulador que otorga una ejecución tras dos grandes operaciones ha ignorado la mayor parte de la cinta.
La orden que no puede ver
Los feeds de profundidad se truncan. Si usted recibe diez niveles de precios y su orden descansa en el undécimo, su orden está fuera de los datos: no conoce el volumen por delante ni las órdenes que se suman detrás. En ese punto, usted está inventando el número en lugar de estimarlo. La situación es común, ya que una orden que no persigue al mercado se aleja rápidamente del interior del libro.
El SQL exacto detrás de cada cifra
SELECT
formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(avg(toFloat64(bid_price)), 2) AS best_bid,
uniqExact(bid_price) AS bid_levels_touched
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-06-10 14:00:00'
AND sip_timestamp < '2026-06-10 20:00:00'
AND bid_price > 0
GROUP BY et_time
ORDER BY et_timeEn el bloque 10:00, la mejor compra promedió $290.29 y visitó 187 precios distintos en quince minutos. Cada uno de esos precios es un nivel independiente en una acción cotizada en centavos, por lo que una vista de diez niveles cubre diez centavos de libro. Una orden dejada a un precio durante una sesión así puede pasar largos periodos por debajo del nivel más profundo que su propietario puede ver.
Dónde la posición en la cola es más valiosa
La posición en la cola es más valiosa donde la mejora de precio es imposible. Una acción fijada en un spread de un centavo no deja margen para saltarse la fila con un mejor precio: todos se acumulan en el mismo tick y el tiempo de llegada decide el resto. Donde el spread es de varios centavos, un operador se coloca delante de toda la cola por un centavo, y la decisión de precio prevalece sobre la fila.
El SQL exacto detrás de cada cifra
SELECT
ticker AS symbol,
round(avg(toFloat64(ask_price - bid_price)) * 100, 2) AS avg_spread_cents,
round(100 * countIf(round(toFloat64(ask_price - bid_price) * 100) <= 1) / count(), 1) AS one_cent_pct
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'KO', 'NVDA', 'MSFT', 'BKNG')
AND sip_timestamp >= '2026-06-10 15:00:00'
AND sip_timestamp < '2026-06-10 19:00:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY avg_spread_centsA lo largo de cuatro horas de mediodía de la misma sesión, el más estrecho de los seis nombres, KO, promedió 1.18 centavos de amplitud y mostró un spread de un centavo en el 82.5% de sus actualizaciones. El más amplio, MSFT, promedió 8.46 centavos, con un spread de un centavo en el 1.1% de las actualizaciones. Un modelo de cola calibrado para el primer nombre no aporta nada útil sobre el segundo. Las órdenes que descansan entre las cotizaciones, tratadas en órdenes pegadas al punto medio, forman su propia fila bajo las mismas reglas.
Cuatro diagnósticos para su propio backtest
- Compare la tasa de ejecución simulada con su tasa de ejecución real en los mismos nombres durante las mismas horas. Un simulador que ejecuta el 70% de las órdenes cuando en la realidad solo se ejecutó el 40% está describiendo su asunción, no el mercado.
- Divida las ejecuciones simuladas en dos grupos: aquellas donde el nivel de precio sobrevivió después y aquellas que ocurrieron solo cuando el nivel se despejó por completo. Un grupo con peso en el segundo tipo significa que el simulador le otorga ejecuciones justo cuando el precio atraviesa su nivel.
- Acote la asunción. Vuelva a ejecutar el modelo asumiendo que todas las cancelaciones provienen del frente de la cola y, luego, que todas provienen del final. Esas dos ejecuciones son los márgenes de error honestos para cualquier p(x) que elija.
- Mida con qué frecuencia su precio se situó fuera de la profundidad que ofrece su feed. Las ejecuciones ahí fueron inventadas. Sesgo de anticipación en backtesting describe el mismo fallo desde otro ángulo: un resultado basado en información que la estrategia nunca tuvo.
Cuándo dejar de modelar y comprar los datos de órdenes
Los datos de mercado por orden (MBO) contienen un mensaje para cada orden individual, desde el momento en que llega hasta que se ejecuta o cancela, cada una etiquetada con su propio identificador. Al reproducir ese feed, su lugar en la fila es un conteo en lugar de una estimación, una vez que asume un retraso realista para que su propia orden llegue al mercado. Cuesta más que un feed de profundidad y requiere mucho más almacenamiento.
El diagnóstico 3 es la regla de decisión. Si ambos límites (frente y final) dejan la estrategia como rentable, una asunción intermedia será suficiente. Si la estrategia gana dinero bajo un límite y pierde bajo el otro, el modelo de cola es la estrategia en sí misma, y comprar el feed orden por orden es más barato que defender una suposición.
Los mercados pro-rata cambian la pregunta
Algunos mercados de futuros y opciones dividen una orden entrante entre las órdenes en espera a un precio en proporción al volumen, en lugar de por orden de llegada. El tiempo importa mucho menos ahí, y el volumen cotizado se convierte en la palanca: duplicar su volumen aproximadamente duplica su parte de cada ejecución. El modo de fallo se desplaza hacia cotizar más volumen del que desea poseer. Por qué las órdenes de opciones no se ejecutan cubre cómo se ve esto desde el lado minorista de un libro de opciones.
Preguntas frecuentes
¿Qué es la posición en la cola en el trading?
La posición en la cola es su rango entre las órdenes que descansan al mismo precio en el mismo mercado. En un libro con prioridad de precio-tiempo, las órdenes que le preceden deben ejecutarse o cancelarse antes de que la suya pueda ejecutarse.
¿Se puede calcular la posición en la cola a partir de datos de Nivel 2?
No exactamente. El Nivel 2 muestra el volumen total por nivel de precio sin identidad de orden, por lo que cuando el volumen desaparece sin una impresión, no puede saber si esas acciones estaban por delante o por detrás de usted. Puede estimar el número y acotar la estimación. La cifra exacta requiere datos orden por orden.
¿Por qué las tasas de ejecución en backtesting suelen ser demasiado altas?
La asunción común distribuye las cancelaciones uniformemente a lo largo de la cola, mientras que las cancelaciones reales se concentran hacia el final. Un modelo uniforme adelanta su orden simulada más rápido de lo que se mueve la fila real, lo que se traduce en más ejecuciones, y mejores, de las que ofrece el trading real.
¿Qué son los datos MBO?
Los datos de mercado por orden (Market-by-order) proporcionan mensajes para cada orden individual, desde su llegada hasta su ejecución o cancelación. Es el feed donde su lugar en la fila es contable en lugar de modelado, lo cual es crucial para estrategias que operan con un spread de un tick.
¿Importa la posición en la cola en mercados pro-rata?
Menos. La asignación pro-rata divide una orden entrante entre las órdenes en espera según el volumen, por lo que llegar primero aporta poco y el volumen cotizado es lo que cuenta. Verificar qué modelo de asignación utiliza un mercado es un paso previo a cualquier modelado de colas.
Cada panel aquí contiene el SQL que lo produjo. Cambie el ticker, mueva la fecha y plantee la misma pregunta sobre los nombres que opera en la terminal Strasmore.