Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor · · Updated 2026-08-08

Códigos de condición de operaciones explicados

Tres plataformas muestran máximos diarios distintos para la misma acción. Los códigos de condición determinan qué prints actualizan máximo, mínimo, cierre y volumen.

Los códigos de condición de las operaciones explican por qué tres plataformas pueden mostrar tres máximos diarios distintos para la misma acción, sin que ninguna esté equivocada. Cada print en el consolidated tape lleva estas etiquetas. Ellas determinan si un print puede actualizar el último precio, el máximo y el mínimo del día, la apertura oficial, el cierre oficial y el volumen consolidado total. Una operación puede ser una ejecución real a un precio real y, aun así, quedar excluida de casi todos esos campos.

¿Qué son los códigos de condición de las operaciones?

Un código de condición de una operación, también llamado condición de venta, es una etiqueta que el centro de reporte adjunta al informe de una operación antes de enviarlo al tape. El precio y el tamaño indican qué se negoció. La condición indica qué tipo de informe es: si llegó a tiempo, si su precio se calculó a partir de otras ejecuciones en lugar de acordarse en ese momento, si ocurrió fuera del horario regular o si comprendió menos de las 100 acciones de un round lot.

Cada código lleva un conjunto de indicadores de elegibilidad, y esa es la parte que casi nadie ve. Cada código se marca como elegible o no elegible para el último precio, el máximo y el mínimo, la apertura, el cierre y el volumen consolidado. Esos indicadores funcionan de manera independiente. Muchos prints que no pueden modificar el máximo o el mínimo sí cuentan en el volumen. Por eso, el número de acciones reportado y los extremos de precio reportados de una acción se construyen a partir de conjuntos de operaciones que se superponen, pero no son iguales. Junto con el primer conjunto existe otro: uno rige el consolidated tape y el otro rige cada centro de mercado individual, porque el cierre oficial de una bolsa se calcula únicamente con sus propios prints.

Los códigos de condición se agrupan en familias, y solo una de ellas determina qué puede actualizar una operación.

ConsultaFamilias de códigos de condición definidas para acciones de EE. UU.
El SQL exacto detrás de cada cifra
SELECT
    replaceAll(type, '_', ' ') AS condition_family,
    countDistinct(id)          AS codes
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
GROUP BY condition_family
ORDER BY codes DESC
Run this yourself

El diccionario de acciones contiene 8 familias. La mayor es la familia sale condition, con 40 códigos distintos. Las condiciones de cotización describen la postura compradora y la vendedora, no una operación. Las familias de indicadores señalan estados como la vigencia de una restricción a las ventas en corto. La familia de condiciones de venta es la que contiene los indicadores de elegibilidad, y de ella proviene cada cifra que aparece a continuación.

Qué aparece realmente en el tape

El panel siguiente toma una sesión fija de junio de 2026: cada print de AAPL desde la apertura del premarket a las 4:00 a. m. hasta el cierre del post-market a las 8:00 p. m., agrupado según la condición de venta que llevaba. La ventana está fijada en el SQL. Por tanto, estas cifras describen ese día y ningún otro. Un print puede llevar varios códigos a la vez, y muchos no llevan ninguno. Por eso, las columnas no suman 100.

ConsultaUna sesión de AAPL, cada operación agrupada por su condición de venta
El SQL exacto detrás de cada cifra
WITH
    (SELECT count()
       FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
        AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_prints,
    (SELECT sum(size)
       FROM global_markets.stocks_trades
      WHERE ticker = 'AAPL'
        AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
        AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')) AS day_shares
SELECT
    multiIf(t.code = -1,     'Regular way (no code)',
            c.code_name = '', concat('Unmapped code ', toString(t.code)),
            c.code_name)                        AS condition_name,
    round(100 * count() / day_prints, 2)        AS pct_of_prints,
    round(100 * sum(t.size) / day_shares, 2)    AS pct_of_shares
FROM
(
    SELECT
        size,
        arrayJoin(if(empty(conditions),
                     [toInt32(-1)],
                     arrayMap(x -> toInt32(x), conditions))) AS code
    FROM global_markets.stocks_trades
    WHERE ticker = 'AAPL'
      AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
) AS t
LEFT JOIN
(
    SELECT toInt32(id) AS code_id, any(name) AS code_name
    FROM global_markets.stocks_condition_codes
    WHERE asset_class = 'stocks'
      AND type = 'sale_condition'
    GROUP BY code_id
) AS c ON c.code_id = t.code
GROUP BY condition_name
ORDER BY pct_of_prints DESC
LIMIT 12
Run this yourself

La etiqueta más común del día fue Odd Lot Trade, presente en 65.83% de los prints de la sesión y en 6.37% de sus acciones. Compare ambas columnas fila por fila. Cuando la proporción de prints supera ampliamente la proporción del volumen, el código identifica ejecuciones pequeñas. Cuando ocurre lo contrario, el código identifica unas pocas operaciones muy grandes. Contar prints y contar acciones responde preguntas distintas. El código de condición es lo que permite separarlas.

¿Por qué dos plataformas muestran máximos diarios distintos?

Cuatro tipos de prints quedan excluidos de distintos subconjuntos de campos.

  • Reportadas con retraso y fuera de secuencia. Una operación acordada a las 10:14 y reportada a las 10:31 llega al tape marcada como fuera de secuencia o con precio basado en una referencia previa. Cuenta para el volumen. No puede establecer el último precio ni elevar el máximo del día, aunque su precio esté por encima del de cualquier otra operación de la sesión. Las operaciones en bloque negociadas y los prints enviados a través de una facilidad de reporte de operaciones desde centros de dark pool trading suelen quedar en esta categoría.
  • Con precio derivado. Una operación a precio promedio o una ejecución VWAP lleva un precio calculado a partir de muchas otras ejecuciones, en lugar de acordado en ese momento. Se excluye del último precio y de los extremos porque el precio mostrado nunca existió como cotización activa.
  • Odd lot. Comprende menos de 100 acciones. Los odd lots no son elegibles para el último precio ni para el máximo y el mínimo, pero cuentan íntegramente en el volumen consolidado. No se reportaron al consolidated tape hasta finales de 2013. Cualquier comparación de volumen que retroceda más allá de ese límite compara dos definiciones distintas del término. Nuestra guía sobre volumen diario promedio lo explica en detalle.
  • Horario extendido y form T. Los prints del premarket y del post-cierre llevan estas etiquetas y quedan excluidos de la apertura, el máximo, el mínimo y el cierre de la sesión regular, aunque siguen contando en el volumen consolidado. Una plataforma que los incluye en el gráfico muestra un rango diario distinto del de otra que los excluye. Ese es el mecanismo por el que las operaciones after-hours y premarket aparecen en un gráfico y no en otro.

Este es el peso de cada categoría dentro de una sesión para cinco acciones conocidas, en el mismo día fijo.

ConsultaProporción de operaciones de una sesión con condiciones no elegibles para el precio
El SQL exacto detrás de cada cifra
WITH
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND name ILIKE '%odd lot%')                       AS odd_lot_codes,
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['form t', 'extended trading hours']))      AS extended_codes,
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['out of sequence', 'prior reference', 'derivatively priced',
               'average price', 'price variation', 'seller'])
        AND NOT multiSearchAnyCaseInsensitive(name,
              ['form t', 'extended trading hours']))      AS late_or_derived_codes
SELECT
    ticker,
    round(100 * countIf(hasAny(conditions, odd_lot_codes))         / count(), 2) AS odd_lot_pct,
    round(100 * countIf(hasAny(conditions, late_or_derived_codes)) / count(), 2) AS late_or_derived_pct,
    round(100 * countIf(hasAny(conditions, extended_codes))        / count(), 2) AS extended_hours_pct
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'KO', 'MSFT', 'NVDA', 'SPY')
  AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
GROUP BY ticker
ORDER BY odd_lot_pct DESC
Run this yourself

Los prints odd lot representaron entre 46.8% y 85.14% de todos los prints de las cinco acciones. Esa columna sigue de cerca el precio de la acción, porque una orden por un importe fijo compra menos acciones cuando el precio es más alto. NVDA encabezó la lista, con 2.4% de sus prints marcados como reportados con retraso o con precio derivado, y 3.53% marcados como operaciones en horario extendido. Cada print de las tres categorías es una operación real a un precio real. Y todos están excluidos de la determinación del máximo y el mínimo.

Un print que no eleva el máximo

El panel siguiente toma la misma sesión fija de AAPL, divide la ventana regular de 9:30 a. m. a 4:00 p. m. en intervalos de quince minutos y dibuja dos máximos para cada intervalo. Una línea toma el precio más alto de cualquier print. La otra toma el precio más alto entre los prints cuyas condiciones los hacen elegibles para establecer el máximo.

ConsultaDos versiones del máximo de la misma sesión de AAPL, cada 15 minutos
El SQL exacto detrás de cada cifra
WITH
    (SELECT groupArray(toInt32(id))
       FROM global_markets.stocks_condition_codes
      WHERE asset_class = 'stocks'
        AND type = 'sale_condition'
        AND multiSearchAnyCaseInsensitive(name,
              ['odd lot', 'form t', 'extended trading hours', 'out of sequence',
               'prior reference', 'derivatively priced', 'average price',
               'price variation', 'seller'])) AS not_high_low_codes
SELECT
    formatDateTime(toStartOfFifteenMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
    round(toFloat64(max(price)), 2)                                              AS tape_high,
    round(toFloat64(maxIf(price, NOT hasAny(conditions, not_high_low_codes))), 2) AS eligible_high
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
  AND sip_timestamp >= toDateTime('2026-06-17 08:00:00', 'UTC')
  AND sip_timestamp <  toDateTime('2026-06-18 00:00:00', 'UTC')
  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570
  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60
       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 960
GROUP BY et_time
HAVING countIf(NOT hasAny(conditions, not_high_low_codes)) > 0
ORDER BY et_time
Run this yourself

La sesión abre en 09:30, con un máximo del tape de $302.07 frente a un máximo elegible de $302.07, y abarca 26 intervalos hasta el cierre. La línea elegible nunca puede situarse por encima de la línea del tape, porque los prints elegibles son un subconjunto de todos los prints. Cuando ambas coinciden, todos los prints de ese intervalo de quince minutos podían establecer el máximo. Cuando la línea superior se separa, al menos un print de ese intervalo se negoció por encima del precio elegible más alto. Ningún gráfico que aplique las reglas de elegibilidad mostrará ese precio.

Esa diferencia explica la discrepancia. Una fuente que toma el precio máximo de cada print reporta un máximo. Una fuente que aplica los indicadores de elegibilidad reporta otro. Una fuente que además excluye las sesiones premarket y post-cierre reporta un tercero. Las tres leen el mismo tape.

¿Qué tan sólida es la capa de elegibilidad?

Es frágil. Los indicadores son datos de referencia, y los datos de referencia se corrigen. Un proveedor comercial de datos de mercado publicó una corrección en su propio diccionario de condiciones y reclasificó la elegibilidad de una condición de venta para establecer la apertura y el cierre oficiales. No cambió ninguna operación. El tape de cada día afectado era idéntico antes y después de la corrección. Lo que cambió fue un indicador en una tabla de consulta. Con ello cambiaron la apertura y el cierre oficiales que habían mostrado todos los gráficos y backtests basados en ese diccionario.

Considere el OHLC de un proveedor como una lectura del tape, no como un hecho absoluto. Cuando dos fuentes discrepen, pregunte qué reglas de elegibilidad aplicó cada una. Los feeds de cotizaciones retrasadas y consolidadas añaden una segunda versión del mismo problema, esta vez relacionada con el momento de llegada y no con la elegibilidad.

Dónde se encuentra la lista autorizada de códigos de condición de las operaciones

Los tapes operan bajo dos planes del sistema nacional de mercado: el CTA Plan, para valores listados en NYSE, y el UTP Plan, para valores listados en Nasdaq. Cada uno publica la especificación de condiciones de venta del tape que administra. Esas especificaciones son la autoridad. Todo lo que viene después, incluidos los números de identificación utilizados en los paneles anteriores, es una asignación del proveedor a su propia numeración. Un código de un proveedor no necesariamente significa lo mismo en otro. Aprenda las categorías, no los números. Las categorías se han mantenido estables durante años. Los números son una tabla de consulta, y las tablas de consulta se editan.

Notas sobre los datos

Las categorías de los paneles anteriores se construyen a partir del propio diccionario, no de números de identificación codificados manualmente. Cada categoría se define mediante una coincidencia de nombres dentro de la familia de condiciones de venta: odd lot, form T y horario de negociación extendido, fuera de secuencia, precio de referencia previa, precio derivado, precio promedio, variación de precio y vendedor. Abra el SQL de cualquier panel para consultar los patrones exactos. Los códigos no son mutuamente excluyentes y un solo print puede llevar varios. Por eso, los porcentajes de las categorías se superponen y no suman el total de la sesión. Ambos paneles de AAPL y el panel de las cinco acciones cubren una sola sesión fija de junio de 2026, establecida en el SQL. Por tanto, nada en esta página cambia cuando llegan nuevas sesiones.

Preguntas frecuentes

¿Qué es un código de condición de una operación?

Es una etiqueta adjunta a un informe de operación en el consolidated tape que describe qué tipo de informe es, por ejemplo, reportado con retraso, con precio derivado, odd lot o en horario extendido. Cada código contiene indicadores que señalan si la operación puede actualizar el último precio, el máximo y el mínimo, la apertura, el cierre y el volumen consolidado.

¿Por qué dos sitios web muestran máximos diarios distintos para la misma acción?

Cada uno aplica un conjunto diferente de reglas de elegibilidad a los mismos prints. Uno puede tomar el precio más alto de cualquier operación reportada. Otro puede excluir los prints cuyos códigos de condición les impiden establecer el máximo. Un tercero también puede excluir las sesiones premarket y post-cierre. Todos leen el mismo tape.

¿Las operaciones odd lot cuentan para el volumen?

Sí. Un odd lot, es decir, menos de 100 acciones, cuenta en el volumen consolidado, aunque no es elegible para establecer el último precio ni el máximo y el mínimo del día. Los odd lots no se reportaban al consolidated tape antes de finales de 2013. Por eso, las comparaciones de volumen a largo plazo atraviesan un cambio de definición en ese momento.

¿Las operaciones after-hours cuentan para el máximo y el mínimo diarios?

No para el máximo y el mínimo de la sesión regular. Los prints del premarket y del post-cierre llevan una condición de horario extendido o form T que los excluye de la apertura, el máximo, el mínimo y el cierre de la sesión regular. Sin embargo, siguen contando en el volumen consolidado del día.

¿Dónde está la lista oficial de códigos de condición de venta?

El CTA Plan y el UTP Plan publican las especificaciones de condiciones de venta de los tapes que administran. Esos documentos son la autoridad. Los feeds de los proveedores renumeran las condiciones dentro de su propio espacio de identificadores. Por tanto, un código numérico de un proveedor no necesariamente corresponde al mismo número en otro.


Cada panel incluye el SQL que lo generó. Abra uno, cambie el ticker o la fecha y ejecute el mismo desglose de condiciones para cualquier sesión en la terminal de Strasmore.

#market data#trade conditions#consolidated tape#volume#ohlc