2026-05-08·Microestructura·~12 min de lectura

Cómo leer la cinta de aggregate-trade en Binance

Si nunca has leído la cinta aggTrade, estás operando desde los gráficos. Los gráficos son agregaciones de decisiones. La cinta aggTrade ES las decisiones: cada operación ejecutada, quién fue el taker, en qué dirección, de qué tamaño, a qué precio, en qué milisegundo. Son datos de microestructura. Son gratis. Están disponibles vía WebSocket. Y te dan información que las velas de precio literalmente no pueden contener.

Qué es la cinta aggTrade

Cada vez que alguien coloca una orden de mercado en Binance Futures, consume liquidez del libro de órdenes. La operación se registra con: precio, cantidad, timestamp y un flag que indica quién fue el maker (la orden en reposo) y quién el taker (la orden agresora).

La parte "aggregate" (agregada) significa: si una sola orden de mercado atraviesa 5 niveles de precio distintos, esos 5 fills se fusionan en UN solo registro aggTrade con el precio ponderado por volumen y la cantidad total. Así que aggTrade son datos "a nivel de operación": un registro por orden de mercado, no por nivel de precio.

Accedes a ellos vía WebSocket: wss://fstream.binance.com/stream?streams=btcusdt@aggTrade. Suscríbete y los mensajes empiezan a llegar en segundos. En un símbolo con mucho movimiento como BTCUSDT, espera 50-200 mensajes por segundo en horas normales, muchos más durante la volatilidad.

Los campos y qué significan

Un payload típico de aggTrade:

{
  "e": "aggTrade",
  "E": 1714867234000,        // event time
  "s": "BTCUSDT",            // symbol
  "a": 5933014,              // aggregate trade ID
  "p": "100012.50",          // price
  "q": "0.025",              // quantity
  "f": 100928146,            // first trade ID in aggregate
  "l": 100928150,            // last trade ID in aggregate
  "T": 1714867234123,        // trade time
  "m": false                  // isBuyerMaker
}

El campo más importante de todos es m, el flag "isBuyerMaker".

Invierte el flag mentalmente: si m es FALSE, la operación es un "taker buy": presión compradora. El naming confunde, pero la convención se mantiene.

Por qué esto importa más que las velas

Una vela de 1 minuto que muestra $50M de volumen con máximo en $100,150 y mínimo en $99,950 te dice que hubo operaciones en ese rango. No te dice:

La cinta aggTrade preserva las tres cosas. Los gráficos las colapsan. Las decisiones que tomas desde los gráficos son ciegas a la realidad subyacente de quién compra o vende y con qué agresividad.

Patrones a reconocer en la cinta

Con suficiente tiempo de pantalla, ciertos patrones de la cinta se vuelven reconocibles. No son propietarios: son bien conocidos en las mesas de trading institucional.

Taker-buy sostenido con precio al alza

Cada nuevo aggTrade muestra m: false (taker buys). El precio sube tick a tick de forma gradual. Esto es "absorción de oferta": los compradores consumen las ofertas más rápido de lo que los makers las reponen. Alcista.

Ráfaga de taker-buys SIN movimiento de precio

20-30 taker-buys en 10 segundos, pero el precio se mantiene plano. Esto significa que un gran muro de venta límite está absorbiendo la demanda. Alguien está descargando asks a precios agresivos; los compradores se los comen pero el vendedor tiene más inventario. Normalmente gana el vendedor (el precio cae cuando los compradores se agotan). Apártate.

Cinta vacía con spread que se ensancha

De repente, muy pocos aggTrades. El spread bid-ask, antes ajustado, se ensancha. Los market makers retiraron liquidez. Viene volatilidad. La ausencia de operaciones es en sí misma información.

Distribución de tamaños con cola larga

La mayoría de operaciones de $500-5.000. Y de pronto, un único agregado de $500K+. Esa única operación grande suele estar informada: un participante dispuesto a pagar slippage para entrar rápido porque tiene una tesis. Vigila la dirección.

Patrón iceberg

El mismo nivel de precio se sigue rellenando en la puja (o en el ask) tras ser comido. Hay una gran orden oculta comprometida ahí. A menudo aguanta durante los retrocesos; señala dirección.

Cascada de stops

Ráfaga súbita de taker-sells (m=true) seguida de caídas más profundas, seguida de otra ráfaga, caída más profunda, etc. Stops en cascada. Cuando la cascada se agota (normalmente 20-90 segundos), el precio suele revertir con fuerza porque la oferta ya no está.

La métrica del taker-ratio

La feature sistemática más básica derivada de aggTrade:

taker_buy_ratio = sum(quantity × price) where m=false
                / sum(quantity × price) all aggTrades

Computed over a window (5min, 30min, 1h, etc).

Por encima de 0.55 significa presión compradora sostenida. Por debajo de 0.45 significa presión vendedora. La métrica es más útil en CONTEXTO:

Usada sola es ruidosa. Combinada con datos de posicionamiento (interés abierto, ratios long/short de los top traders) se convierte en un componente de señal real.

Whale prints

Define un "whale print" como cualquier aggTrade por encima de cierto umbral nocional: pongamos $50.000 o $100.000. Cuenta los whale prints por minuto y por lado (compras vs ventas).

Patrones útiles:

El umbral ($50K vs $100K vs $500K) depende de la liquidez de la moneda. Para BTC: $1M+ es "ballena". Para alts de mediana capitalización: $50K ya es significativo. Calibra por moneda.

Implementar el suscriptor de WebSocket

Esqueleto de Node.js con calidad de producción:

const WebSocket = require('ws');
const trades = new Map();   // sym → rolling array of {ts, usd, isBuy}
const MAX_PER_SYM = 5000;

function connect(symbols) {
  const streams = symbols.map(s => s.toLowerCase() + '@aggTrade').join('/');
  const url = 'wss://fstream.binance.com/stream?streams=' + streams;
  const ws = new WebSocket(url);

  ws.on('message', (buf) => {
    const msg = JSON.parse(buf.toString());
    const d = msg && msg.data;
    if (!d || d.e !== 'aggTrade') return;
    handleTrade(d);
  });

  ws.on('close', () => {
    setTimeout(() => connect(symbols), 5000);  // reconnect with backoff
  });
}

function handleTrade(d) {
  const sym = d.s;
  const px = parseFloat(d.p);
  const qty = parseFloat(d.q);
  if (!px || !qty) return;
  const usd = px * qty;
  const isBuy = d.m === false;   // m=true means seller was taker
  const ts = d.T || Date.now();

  let arr = trades.get(sym);
  if (!arr) { arr = []; trades.set(sym, arr); }
  arr.push({ ts, usd, isBuy });
  if (arr.length > MAX_PER_SYM) arr.splice(0, arr.length - MAX_PER_SYM);
}

// Example: compute taker-buy ratio for BTCUSDT in last 5 min
function takerBuyRatio(sym, windowMs) {
  const arr = trades.get(sym);
  if (!arr) return null;
  const now = Date.now();
  const cutoff = now - windowMs;
  let buyUsd = 0, totalUsd = 0;
  for (let i = arr.length - 1; i >= 0; i--) {
    const t = arr[i];
    if (t.ts < cutoff) break;
    if (t.isBuy) buyUsd += t.usd;
    totalUsd += t.usd;
  }
  return totalUsd > 0 ? buyUsd / totalUsd : null;
}

connect(['BTCUSDT', 'ETHUSDT', 'SOLUSDT']);

Notas:

La realidad del volumen de datos

Suscribirse a aggTrade para 50 alts activas produce 5.000-30.000 mensajes por minuto en horas normales. Durante eventos de noticias o flash crashes, puedes ver 100.000+ por minuto.

Implicaciones:

Para investigación, puedes capturar unas horas de aggTrade a un archivo y analizarlo offline: ese es el sitio correcto para el trabajo estadístico profundo, no los bucles en tiempo real.

Lo que aggTrade NO es

Dos advertencias importantes:

1. aggTrade es post-ejecución. Para cuando lo ves, la operación ya ocurrió. No puedes hacerle front-run. Puedes usar el patrón AGREGADO para informar decisiones sobre el comportamiento FUTURO, pero no puedes operar sobre ningún registro aggTrade individual en sí.

2. aggTrade no muestra órdenes pendientes. El libro de órdenes tiene tanto operaciones ejecutadas (aggTrade) COMO órdenes en reposo (streams depth/depth20). Para una imagen completa necesitas ambos. aggTrade solo muestra lo que pasó; depth muestra lo que está en cola para pasar.

Cómo lo usan las mesas institucionales

En una mesa de trading sistemático real, la cinta aggTrade alimenta varios tipos de estrategia distintos:

Para estrategias sistemáticas retail, las aplicaciones más útiles son: ingeniería de features (ratio taker-buy, conteo de whale prints) y detección de eventos (patrones de ráfaga súbita). Son más fáciles de extraer y validar que los usos institucionales más sofisticados.

Cómo empezar a usarlo

Tres niveles crecientes de involucración:

1. Observa un feed durante una hora. Suscríbete al aggTrade de BTCUSDT, loguéalo a consola, observa. Empezarás a ver patrones en 30-60 minutos: ráfagas, whale prints, zonas sin actividad. Esto es obligatorio antes de cualquier trabajo cuantitativo.

2. Implementa features básicas. Ratio taker-buy en ventanas de 5min y 30min. Conteo de whale prints. Volumen por segundo.

3. Haz backtest de las features contra los retornos futuros. If your features have predictive power (AUC > 0.55 frente a, digamos, la dirección del retorno de los próximos 30min), son reales. La mayoría de los "lectores de cinta" retail no validan esto y acaban leyendo patrones que en realidad no predicen.

Errores comunes

Intentar leer operaciones individuales. Un solo agregado de $300K no te dice nada. Los patrones en muchas operaciones a lo largo del tiempo son la señal.

Olvidar la inversión del flag m. "isBuyerMaker = false" significa que el TAKER compró. Mucha gente lo entiende al revés e invierte su análisis.

Usar aggTrade para jugadas de alta frecuencia sensibles a la latencia. Para cuando el WebSocket lo entrega, la operación tiene 50-300ms. El HFT real usa feeds directos del exchange con colocation. El aggTrade retail es para análisis de media frecuencia.

Guardar cada mensaje. Llenarás el disco. Agrega a por minuto o por 5 minutos, y luego guarda los resúmenes.

Leer la cinta durante las noticias. El volumen durante eventos de noticias es anómalo. Los patrones que "funcionan" en mercados normales se disuelven. Las estrategias event-driven necesitan su propio marco.

Hacia dónde ir después

Si este primer contacto te resulta útil, los siguientes pasos naturales son:

Si quieres un plan estructurado que te lleve de "acabo de leer este post" a "tengo una estrategia sistemática desplegada usando features de order flow", nuestro Crypto Quant Pro bootcamp cubre el camino completo, incluida la infraestructura, la investigación de factores, el backtesting y la ejecución en vivo. El curso de 30 días incluye un tratamiento más riguroso de las features de microestructura en los días 7-12.

Y si prefieres suscribirte a un servicio que ya ejecuta estrategias construidas sobre este tipo de datos, nuestro producto de señales usa features de posicionamiento + microestructura para disparar alertas pre-pump en alts USDT-margined de Binance Futures. Cuenta de referencia en vivo; verifica nuestro trabajo antes de suscribirte.

En cualquiera de los dos caminos, DIY o suscripción, empieza leyendo un feed durante una hora. No hay atajo que evite familiarizarse con los datos en bruto.