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".
m: false— el comprador era el TAKER. Colocó una orden de mercado de COMPRA, levantando una oferta de forma agresiva. Esto representa convicción alcista.m: true— el vendedor era el TAKER. Colocó una orden de mercado de VENTA, golpeando una puja de forma agresiva. Esto representa convicción bajista.
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:
- Si el 80% de esas operaciones fueron compras agresivas o si estaba 50/50 mezclado
- Si el volumen vino de 5.000 operaciones tamaño retail o de 5 operaciones tamaño ballena
- Si el volumen se concentró en una ráfaga de 3 segundos o se repartió de forma uniforme en 60 segundos
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:
- Ratio taker-buy alto EN el fondo de un rango: acumulación, alcista
- Ratio taker-buy alto EN el techo de un movimiento: rezagados persiguiendo, a menudo bajista (viene reversión)
- Ratio taker-buy bajo durante una tendencia bajista: capitulación que continúa
- Ratio taker-buy bajo EN el fondo: agotamiento vendedor, a menudo alcista
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:
- 3+ compras ballena en 5 minutos sin ventas ballena: demanda real
- Una compra ballena seguida de 30 minutos de deriva en taker-sell: alguien salió de un long que ya no quería
- Compras ballena agrupándose cerca de niveles de precio concretos: soporte defendiéndose
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:
- Cada conexión WebSocket puede manejar hasta 1024 streams. Para 100+ símbolos, repártelos entre 2-3 conexiones.
- Gestiona siempre las reconexiones: Binance desconecta cada 24h o tras cortes de red.
- Si tu handler es lento, los mensajes se acumulan internamente. Empuja a una cola y procesa en un tick separado para evitar caídas por backpressure.
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:
- No guardes cada aggTrade en tu base de datos. Agrega a resúmenes por minuto o por 5 minutos.
- Uso de memoria: ~50 bytes por aggTrade × 100K/hora × 50 símbolos = ~25GB/día si lo guardas todo. Usa ventanas móviles solo en memoria.
- Uso de CPU: menor mientras no hagas trabajo pesado en el handler del mensaje. Empuja a la cola de procesamiento.
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:
- Detección de toxicidad del order flow. Un flujo taker direccional fuerte indica participantes informados. Los proveedores de liquidez ensanchan spreads o se apartan en respuesta.
- Detección de icebergs. Los algoritmos vigilan si el mismo nivel de precio es golpeado y rellenado repetidamente: señal de una gran orden oculta. Algunas firmas hacen front-run; otras se suben al carro.
- Predicción de cascadas. Las ráfagas súbitas de taker-sell a menudo preceden a caídas más profundas. Los algoritmos deshacen exposición o inician shorts.
- Ejecución Volume Profile / VWAP. Los algoritmos de ejecución ponderados por tiempo hacen que las propias órdenes grandes de la firma acompañen la actividad del mercado, minimizando el impacto.
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:
- Suscríbete al aggTrade de 5-10 símbolos que operes. Observa una semana.
- Calcula y grafica el ratio taker-buy y el conteo de whale prints a lo largo del tiempo. Mira si los patrones se correlacionan visualmente con la acción del precio.
- Empieza a hacer backtest de estas features como predictores de retornos futuros. Usa análisis AUC en una muestra de 30 días (mínimo 200+ eventos para relevancia estadística).
- Una vez que tengas features con edge real, intégralas en un pipeline de generación de señales en condiciones.
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.