Qué es un mercado bloqueado y cruzado
Análisis de los mercados bloqueados y cruzados donde el bid es igual o mayor al ask. Explicación de la normativa Reg NMS y su impacto en el tape.
Un mercado bloqueado ocurre cuando la mejor oferta de una acción es igual a su mejor precio de venta; es decir, el bid-ask spread es exactamente cero. Un mercado cruzado es un caso más extremo: la mejor oferta es superior al mejor precio de venta. Las reglas del mercado de EE. UU. prohíben que las bolsas muestren cualquiera de estos dos escenarios, sin embargo, ambos aparecen con frecuencia en el registro consolidado de cotizaciones. Esta página define ambos conceptos, explica la normativa y mide la frecuencia con la que aparece cada uno.
¿Qué es un mercado bloqueado?
Cada acción de EE. UU. tiene dos precios simultáneos: el bid, el precio más alto que un comprador está dispuesto a pagar, y el ask, el precio más bajo que un vendedor está dispuesto a aceptar. Normalmente, el ask es superior al bid; la diferencia entre ambos es el bid-ask spread, el costo implícito de operar de inmediato.
Un mercado bloqueado ocurre cuando esa brecha se reduce a cero: una acción con una cotización de $10.00 bid / $10.05 ask tiene un spread de cinco centavos, pero si el mejor ask baja a $10.00 mientras el bid se mantiene, la cotización queda bloqueada en $10.00 / $10.00.
En una sola bolsa este estado no puede mantenerse; una compra a $10.00 que coincida con una venta a $10.00 se ejecuta al instante. Una cotización bloqueada solo sobrevive entre diferentes plataformas. Las acciones de EE. UU. cotizan en más de una docena de bolsas simultáneamente, y el NBBO —el mejor bid y ask nacional, la cotización que muestra su aplicación de corretaje— unifica el mejor bid y ask de todas ellas. Un bid de $10.00 en una bolsa y un ask de $10.00 en otra bloquean la cotización nacional, aunque ninguna de las bolsas muestre un libro de órdenes bloqueado.
¿Qué es un mercado cruzado?
Un mercado cruzado invierte el orden habitual: el mejor bid se sitúa por encima del mejor ask; por ejemplo, un bid de $10.02 frente a un ask de $10.00. En teoría, cualquier persona podría comprar a $10.00, vender a $10.02 y obtener dos centavos por acción sin riesgo. Ese dinero gratuito es la razón por la cual una cotización cruzada no puede persistir: las firmas profesionales —entre ellas los market makers que cotizan ambos lados de la mayoría de las acciones— ejecutan el arbitraje en cuanto este se vuelve real, y dicha ejecución consume ambas cotizaciones. Lo que permanece en los datos es el destello: un registro cruzado capturado entre la actualización de un venue y la de otro.
Por qué la Reg NMS prohíbe las cotizaciones bloqueadas y cruzadas
La prohibición se encuentra en la Regulación NMS, el reglamento de la SEC (adoptado en 2005) para la negociación en las bolsas de valores de EE. UU. La Regla 610(d) exige que cada bolsa impida que sus miembros muestren cotizaciones que bloqueen o crucen protected quotes —las mejores ofertas de compra y venta automatizadas en otras bolsas— durante el horario de negociación regular. El objetivo: una oferta igual a la de venta de otro participante puede negociarse de inmediato, y el reglamento busca que se envíe y ejecute, en lugar de mostrarse como una contradicción permanente.
Un límite de la regla es relevante para los datos presentados a continuación: regula la exhibición, no la existencia. Cada mercado controla lo que muestra su propio libro de órdenes; el registro consolidado se ensambla entre diversos mercados en tiempo real, mediante flujos de datos competitivos. Un NBBO bloqueado puede aparecer en dicho registro sin que ningún participante individual haya infringido la regla.
Por qué las cotizaciones bloqueadas y cruzadas siguen apareciendo en el tape
Velocidad. Las bolsas actualizan las cotizaciones en microsegundos y el feed consolidado se reconstruye con cada actualización. Dos eventos comunes generan registros bloqueados y cruzados:
- Races. Una bolsa sube su bid a $10.00 mientras otra todavía muestra un ask de $10.00. Al combinarse, el NBBO se lee como bloqueado hasta que el lado más lento se actualiza; la misma carrera que sobrepasa el precio por un centavo se lee como cruzada.
- Registros obsoletos y unilaterales. Algunos registros solo contienen un lado: un bid sin ask, o viceversa. Los activos con poca liquidez pasan mucho más tiempo en este estado, como muestra el censo a continuación.
Reglas de conteo en esta página: locked = el bid es igual al ask, ambos lados positivos; crossed = el bid es superior a un ask positivo; one-sided = cualquiera de los lados es cero o está ausente. Nada se descarta silenciosamente; los registros unilaterales tienen su propia columna.
¿Con qué frecuencia ocurren mercados bloqueados y cruzados?
Comience con el registro completo: en cada actualización del NBBO, para cada símbolo listado, en 2026-07-14 — la sesión completada más reciente en nuestro censo.
El SQL exacto detrás de cada cifra
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start < toDateTime(today() - 3)
) AS census_day
SELECT
formatDateTime(census_day, '%Y-%m-%d') AS session_date,
round(count() / 1e6, 0) AS updates_m,
round(countIf(bid_price = ask_price AND bid_price > 0) / 1e6, 2) AS locked_m,
round(countIf(bid_price > ask_price AND ask_price > 0) / 1e3, 1) AS crossed_k,
round(countIf(bid_price = ask_price AND bid_price > 0) / toFloat64(greatest(countIf(bid_price > ask_price AND ask_price > 0), 1)), 0) AS locked_per_crossed,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(census_day)
AND sip_timestamp < toDateTime(census_day + 1)Esa sesión registró 477 millones de actualizaciones de cotizaciones: 9.7 millones bloqueadas y 67 mil cruzadas; en conjunto, representan el 204.9 de cada 10,000 actualizaciones, con las bloqueadas superando a las cruzadas en una proporción de 145 a uno. Los registros que carecían de un lado de la cotización fueron de 2.8 por cada 10,000. El resumen de mercado del 7 de julio muestra las mismas cifras junto a cada spread que mide.
La tasa del mercado total mezcla miles de valores muy distintos. La siguiente tabla repite el censo en un conjunto verificado de diez — ocho tickers familiares más dos small caps con poca liquidez, Nathan's Famous (NATH) y Seneca Foods (SENEA) — durante sesiones completadas recientes, incluyendo el horario extendido, con el spread típico de cada nombre incluido.
El SQL exacto detrás de cada cifra
SELECT ticker,
round(count() / 1e3, 1) AS updates_k,
round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price >= bid_price) * 100, 1) AS median_spread_cents,
countIf(bid_price = ask_price AND bid_price > 0) AS locked_records,
countIf(bid_price > ask_price AND ask_price > 0) AS crossed_records,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY ticker
ORDER BY tickerCompare la columna del spread con la tasa. Coca-Cola, que suele cotizar con un spread de 1¢, mostró una cotización bloqueada o cruzada en el 215.9 de cada 10,000 actualizaciones; Nvidia (2¢) registró 91 por cada 10,000 y SPY (2¢) 52.2. AMD, cuyo spread típico en horario extendido fue de 44¢, registró solo 5.9 por cada 10,000. Un mercado bloqueado ocurre cuando dos plataformas llegan al mismo centavo en el mismo instante; cuanto mayor sea el spread típico, más difícil es ese encuentro.
Los valores con poca liquidez apenas registran actividad: Nathan's Famous presentó 0 registros bloqueados y 0 cruzados en 8.4 mil actualizaciones, mientras que Seneca Foods presentó 0 y 0 en 40.5 mil. Su columna es la otra: los registros de un solo lado fueron de 41.5 por cada 10,000 en Nathan's Famous y 17 en Seneca Foods, frente al 0 en SPY. Los registros bloqueados y cruzados ocurren donde la cotización es rápida y ajustada; los registros de un solo lado ocurren donde la cotización es escasa.
¿Cuándo se agrupan las cotizaciones bloqueadas y cruzadas?
El censo de nombres indica el lugar; el reloj indica el momento. Aquí se presenta la tasa de cotizaciones bloqueadas o cruzadas del set verificado por intervalos de 30 minutos en hora del Este, de 4:00 a.m. a 8:00 p.m., junto con el tráfico de actualizaciones de cada intervalo.
El SQL exacto detrás de cada cifra
SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(count() / 1e6, 2) AS updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
GROUP BY et_time
HAVING et_time >= '04:00' AND et_time < '20:00'
ORDER BY et_timeLa tasa aumenta durante la sesión. El intervalo de premercado de las 05:00 registró 3 por cada 10,000 en 0.59 millones de actualizaciones; el intervalo de las 09:30 —la primera media hora de la negociación regular, iniciada por la subasta de apertura— registró 24.9 por cada 10,000 en 9.98 millones de actualizaciones. A partir de ahí, la tasa aumenta hacia el cierre, alcanzando 109.9 por cada 10,000 en el intervalo de las 15:30, previo a la subasta de cierre. Una fila de registros muestra la tendencia:
El SQL exacto detrás de cada cifra
SELECT
round(countIf(is_locked) / 1e3, 1) AS locked_k,
round(countIf(is_crossed) / 1e3, 1) AS crossed_k,
round(countIf(is_locked) / toFloat64(greatest(countIf(is_crossed), 1)), 1) AS locked_per_crossed,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569)) * 1e4, 1) AS premarket_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599)) * 1e4, 1) AS opening_half_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779)) * 1e4, 1) AS midday_hour_per_10k,
round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)) * 1e4, 1) AS closing_half_hour_per_10k,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599))), 1) AS close_to_open_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779))), 1) AS close_to_midday_ratio,
round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))
/ (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569))), 1) AS close_to_premarket_ratio
FROM (
SELECT
bid_price = ask_price AND bid_price > 0 AS is_locked,
bid_price > ask_price AND ask_price > 0 AS is_crossed,
toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_minute
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
)En todo el periodo, el set verificado registró 257.2 mil registros bloqueados frente a 25.6 mil cruzados —10.1 bloqueados por cada cruzado. La tasa de la media hora de cierre, 109.9 por cada 10,000, fue 4.4 veces la de la media hora de apertura de 24.9 y 2.3 veces la de la hora del mediodía de 48.5.
La prohibición de visualización ni siquiera aplica antes de las 9:30 a.m., pero todo el periodo de 4:00 a 9:30 —trading de premercado, con cotizaciones sobre una fracción del tráfico de horario regular— mostró solo 10.9 por cada 10,000, y la media hora de cierre registró 10.1 veces esa tasa. Estos registros se acumulan donde la cotización es rápida y ajustada, no donde el reglamento es más flexible.
Notas de datos: ventana y alcance
- El censo de toda la cinta cubre un día calendario UTC completo, incluyendo todos los símbolos listados; los paneles del set verificado cubren una ventana móvil de sesiones completadas recientemente, incluyendo horario extendido (4:00 a.m.–8:00 p.m. ET). Cada ventana termina tres días antes de la fecha de actualización; el almacén de cotizaciones tiene un retraso de ingesta de uno-a-dos días en su extremo inicial.
- La tabla de diez nombres es un set verificado, no un ranking de todo el mercado; los intervalos de tiempo después de las 4:00 p.m. operan con una pequeña fracción del tráfico de horario regular (la columna de conteo de actualizaciones se grafica por esa razón).
- Estos son conteos de registros, no duraciones. El análisis forense por actualización —brechas de nanosegundos, además de recibos cruzados y de oferta cero en la cinta de SPY de una sola sesión— se encuentra en el análisis profundo de microestructura del 29 de junio.
Preguntas frecuentes
¿Qué es un mercado bloqueado (locked market) en acciones?
Un mercado bloqueado ocurre cuando la mejor oferta (bid) es igual al mejor precio de venta (ask), es decir, un spread de cero. Esto sucede entre distintas bolsas cuando la oferta de un mercado coincide con la venta de otro. La Regulación NMS prohíbe que las bolsas muestren cotizaciones que generen este estado durante el horario regular.
¿Qué significa que el bid sea mayor que el ask?
Un bid por encima del ask es un mercado cruzado (crossed market). El libro de órdenes de una sola bolsa no puede operar de esta manera, ya que las órdenes superpuestas se ejecutan de inmediato. Un NBBO cruzado suele ser el resultado de las cotizaciones de dos sedes capturadas en distintos momentos de su actualización.
¿Son ilegales los mercados bloqueados y cruzados?
No para un inversor regular. La Regla 610(d) de la Regulación NMS obliga a las bolsas a evitar que sus miembros muestren cotizaciones bloqueadas o cruzadas durante el horario regular. Los registros transitorios en el feed consolidado son artefactos causados por sedes que se actualizan en instantes ligeramente distintos.
¿Con qué frecuencia ocurren los mercados bloqueados y cruzados?
De forma rutinaria: 9.7 millones de registros bloqueados y 67 mil cruzados llegan a la cinta consolidada solo en 2026-07-14, lo que representa 204.9 de cada 10,000 actualizaciones. La tasa es mucho mayor en valores con cotizaciones ajustadas que en aquellos con poca liquidez, y es más alta hacia el cierre que en la apertura.
Cada número en esta página proviene de una consulta almacenada; expanda el SQL bajo cualquier panel para ver exactamente cómo se contabiliza un bloqueo o un cruce. Para realizar el mismo censo en los valores que usted opera, solicítelo en inglés simple en la terminal de Strasmore.