Mapas de calor de liquidaciones
Cómo se recogen y se dibujan las liquidaciones forzosas, y en qué se diferencia el mapa de calor del feed.
Qué muestra el mapa de calor
La Liquidation Heatmap a pantalla completa es una rejilla de intensidad de tiempo por precio dibujada detrás de un gráfico de velas en vivo, ambos sobre un mismo eje de precio en USD compartido, de modo que un solo desplazamiento o zoom los mueve juntos. El eje horizontal es el tiempo, el vertical es el precio, y cada celda es un bin de precio dentro de un bucket de tiempo. La capa por defecto es una superficie estimada de liquidaciones: proyecta el nocional apalancado recién abierto sobre niveles discretos de liquidación anclados al precio de entrada, arrastra esos niveles hacia delante hasta que el precio los cruza, y elimina la banda que el mercado ha barrido. Como es una proyección modelada y no un registro observado, la leyenda de esta capa se etiqueta como intensidad relativa, no como dólares.
Del open interest a un nivel de liquidación
Cada columna de la superficie estimada parte de una cifra por mercado: cuánto creció el open interest de ese mercado desde la columna anterior en la misma rejilla de buckets. Solo cuentan los aumentos; una bajada no deposita nada. Ese nocional recién abierto se ancla al precio que el mercado reportó para ese bucket, que el modelo trata como el precio de entrada del grupo que acaba de abrir. Un mercado que se ve por primera vez, o que reaparece tras un hueco de cobertura, solo restablece su línea base y no deposita absolutamente nada, porque los precios de entrada de las posiciones abiertas antes del hueco no son observables y nunca se inventan.
El nocional abierto se reparte después en una parte larga y una parte corta. Sin un dato de ratio de cuentas, el reparto sigue el funding rate mediante una señal lineal acotada, y la parte larga resultante siempre se mantiene entre el 30 y el 70 por ciento, de modo que un reparto nunca es totalmente de un solo lado. Cada lado se distribuye por una escalera de apalancamiento de 49 peldaños que van de 5x a 125x en pasos de 2,5x, ponderada por una curva log-normal con su pico en 45x. Esta escalera es un supuesto de modelado declarado, no una medición: el apalancamiento por posición en los mercados centralizados no es observable.
Para cada peldaño, el modelo consulta la tasa de margen de mantenimiento del mercado con un tamaño de posición representativo de diez mil dólares, y no con el nocional completo del grupo. Usar el nocional del grupo activaría el tramo de nocional alto de cada mercado y colapsaría todos los peldaños en un único precio de liquidación. El precio del nivel es entonces una función fija de la entrada y del apalancamiento: la entrada por uno menos uno entre el apalancamiento más la tasa de mantenimiento para los largos, y la entrada por uno más uno entre el apalancamiento menos la tasa de mantenimiento para los cortos. Como la entrada es fija, el nivel no se mueve cuando se mueve el precio.
Qué mantiene viva una banda y qué la elimina
Los niveles proyectados se integran en una superficie continua, y por columna ocurren exactamente tres cosas, en este orden. Las bandas existentes se arrastran sin cambios: no hay decaimiento temporal, así que una banda intacta se ve igual horas después que cuando se abrió. Los niveles nuevos que caen en un bin que ya contiene una banda se suman a ella, y por eso abrir repetidamente a un mismo precio ilumina una sola línea en vez de dibujar una segunda. Por último, se eliminan todos los bins que el precio cruzó durante esa columna, incluido lo que se hubiera depositado allí en la misma columna.
El intervalo cruzado no es el movimiento de cierre a cierre. Abarca el mínimo y el máximo observados dentro del bucket, ampliado para incluir la referencia ponderada por open interest de la columna anterior, de modo que una mecha que alcanza un nivel también lo elimina. Dos salvaguardas rechazan intervalos inverosímiles en lugar de borrar bandas reales: un salto desde la referencia anterior hasta la vela mayor que la mitad del precio se lee como un hueco de cobertura, y un único bucket cuyo rango de máximo a mínimo supera el 80 por ciento del precio se lee como un fallo de datos. En ambos casos esa columna no barre nada.
Una banda por debajo del suelo de nocional se descarta como ruido numérico. La lectura vigente en vivo fija ese suelo en cero, así que solo sobreviven las bandas estrictamente positivas, mientras que la ruta de escritura persistida descarta cualquier cosa por debajo de un dólar. La consecuencia práctica es que las columnas se diferencian de sus vecinas solo porque apareció una línea o porque se cortó una línea. Leer una fila de precio de izquierda a derecha te dice, por tanto, cuándo se abrió por primera vez un nivel y dónde lo cruzó el mercado, nunca con qué fuerza se desvaneció, porque no se desvanece.
De dónde vienen los datos
Tres conjuntos de datos distintos alimentan las vistas de liquidaciones, y no todos cubren los mismos mercados. La vista agregada multi-exchange se despliega hacia Binance, Bybit, OKX, Hyperliquid, Bitget, Gate.io, HTX, MEXC, dYdX y Kraken para el open interest, el funding y el precio. La superficie de calor vigente persistida se construye a partir de un conjunto guardado más pequeño: Binance, Bybit, OKX, Deribit, Bitget y Hyperliquid. Los eventos de liquidación realizados vienen del registro de feeds WebSocket de los exchanges, que actualmente registra Binance y Bybit. El conjunto del despliegue en vivo y el conjunto persistido no son subconjuntos el uno del otro, así que sus totales no cuadrarán con exactitud.
Por qué la barra de color no lleva etiquetas en dólares
El color de una celda codifica el flujo abierto acumulado que proyecta un nivel en ese bin dentro de la ventana cargada. Esa magnitud está acotada por el open interest que la abrió, pero no es ni el libro actual ni un total en dólares conservado para la ventana, así que una rampa etiquetada en dólares invitaría a sumar celdas para obtener un número que no significa nada. Por eso la leyenda de esta capa se rotula como intensidad relativa y sus marcas se imprimen en una escala de cero a cien, donde cien es el techo de color actual y no una cantidad fija de dinero.
Ese techo es el percentil 99,9 de la rejilla cargada, no su máximo, así que una única celda enorme no puede empujar todo lo demás hacia el extremo oscuro mientras los imanes restantes se aplanan en un solo tono brillante. La rejilla que se entrega a la GPU guarda cada celda dividida entre ese techo, porque el formato de textura es un half float y los valores brutos en dólares por encima de unos sesenta y cinco mil lo desbordarían. Las escalas lineal y symlog no se ven afectadas por esa división; el modo logarítmico abarca cuatro décadas por debajo del techo. La leyenda coloca sus marcas con la misma función que usa el sombreador, así que cada etiqueta queda donde su color está realmente pintado.
Controles y escala de color
En la ruta del mapa de calor eliges el activo (BTC, ETH o SOL), la ventana de lookback y si mostrar el mapa de calor de densidad o una vista de Liquidation Levels que sustituye la rejilla por líneas discretas ancladas, un perfil de niveles abiertos y un panel de delta acumulado. El panel de visualización ofrece cuatro colormaps —viridis, inferno, magma y cividis, de los cuales viridis y cividis están marcados como seguros para las deficiencias de visión del color—, tres modos de escala (linear, log, symlog) y un deslizador de sensibilidad; los valores por defecto que se publican son viridis, linear y un exponente de 0,85. Se puede activar una superposición realizada como segunda capa translúcida con resolución de 1m, 1h o 1d.
Las cifras bajo el cursor
Al pasar el cursor se resuelve un nivel de precio y una columna de tiempo. El precio de referencia que se usa para decidir la dirección es el cierre de la vela que contiene el inicio del bucket de la columna, no la vela que hay bajo el puntero, así que un nivel no puede saltar entre el lado largo y el corto mientras el cursor se mueve dentro de una misma columna. Un nivel por encima de esa referencia se lee como del lado corto, uno por debajo como del lado largo, y un nivel en el mismo bin que la referencia es neutro y reporta ambos lados juntos. Las horas de columna se formatean en UTC para que la lectura coincida con el eje de tiempo y no con la zona local de quien mira.
Se muestran dos cifras. El número «en este nivel» es el valor direccional de la celda señalada, exactamente la magnitud que pinta el color, así que el número y el tono no pueden contradecirse. El número acumulado suma el mismo lado desde el bin de referencia, sin incluirlo, hasta el nivel señalado, incluyéndolo, y responde a cuánto hay entre el precio actual y ese nivel. En el modo vigente, una tercera línea más pequeña informa del open interest vigente actual que proyecta un nivel en ese bin. Procede de un perfil aparte construido solo con la columna más reciente, está acotado por el open interest total y se muestra deliberadamente como letra pequeña porque responde a otra pregunta.
La vista Liquidation Levels en detalle
La vista de niveles sustituye la rejilla de densidad por líneas individuales. Cada línea es un grupo: un mercado, un peldaño de apalancamiento, un lado y la columna en la que se abrió, mantenido en su precio proyectado exacto en lugar de ajustado a un bin. Los grupos abiertos en columnas distintas nunca se fusionan, así que los bordes izquierdos del conjunto de líneas siguen el recorrido del precio en forma de escalera. Una línea termina donde el rango operado de una columna posterior cubre su propio precio, y la vista conserva tanto el tick de entrada como el tick de impacto, que es lo que le permite dibujar un segmento finito en lugar de una línea de ancho completo.
La granularidad filtra por tamaño de posición. Los puntos de corte se recalculan en cada petición como terciles de la propia distribución de nocional por línea de esa petición, así que siguen al activo y a la ventana en lugar de ser umbrales fijos en dólares. Large conserva las líneas iguales o superiores al corte inferior, Whale las iguales o superiores al corte superior, y All no aplica ningún filtro. El control de delta sobre volumen es un segundo filtro, de dos lados: sus dos tiradores seleccionan una subbanda del rango de nocional observado, así que puede aislar líneas de tamaño medio a las que un filtro de un solo lado no llega. Measure alterna el panel acumulado entre contar líneas y sumar su nocional.
Tres paneles enmarcan el mapa. El perfil de la derecha pliega todas las líneas abiertas en bandas de precio y se construye con el conjunto completo conservado, así que se mantiene completo incluso cuando el conjunto de líneas dibujadas está limitado; siempre se pliega por nocional, sea cual sea el ajuste de measure. El panel inferior es acumulado: una línea se suma en la columna en la que se abrió y se resta en la columna en la que fue alcanzada, así que la serie retrocede a medida que el precio barre niveles en vez de solo subir. Un cuarto panel indica el desequilibrio entre largos y cortos de ese perfil. La carga útil de líneas se detiene en seis mil líneas, conservando las mayores por nocional y marcando la respuesta, mientras que los recuentos de posiciones abiertas reportados siguen siendo los totales completos.
La superposición realizada y cuándo una lectura se declara truncada
La superposición realizada es una segunda capa translúcida dibujada sobre el campo estimado, con su propia tabla de color y su propia opacidad. Su control de resolución ofrece 1m, 1h y 1d, y elegir una resolución también activa la superposición, así que el control nunca es una acción silenciosamente nula. La resolución se aplica solo a la superposición. Cada resolución se apoya en un agregado continuo que solo mantiene materializada una ventana reciente: unas tres horas en 1m, ocho días en 1h y treinta días en 1d. Una petición más ancha que la ventana de su nivel omite sin ruido los buckets más antiguos, así que la lectura se declara truncada en lugar de presentar una rejilla corta como si estuviera completa.
El nivel de 1d también tiene un límite inferior. Sus buckets empiezan a medianoche UTC mientras que el filtro de lectura es relativo a ahora, así que una petición de 24 horas puede no devolver nada a primera hora del día; por eso cualquier cosa por debajo de 48 horas también se marca. Alcanzar el límite de filas del repositorio levanta la misma marca. La respuesta lleva un objeto de cobertura que enumera los exchanges que realmente aportaron datos, más una nota que indica que las liquidaciones realizadas son un mínimo, porque los feeds de los exchanges limitan la frecuencia con la que emiten y solo se cuentan los mercados conectados. Una segunda cláusula le dice a quien lee si debe estrechar o ampliar la ventana.
La rejilla estimada está acotada de otra forma. Como la ventana seleccionable más amplia es de siete días mientras que el nivel horario conserva ocho, la ventana en sí nunca puede truncar la lectura estimada; solo pueden hacerlo sus límites de filas. En la interfaz, el estado de la rejilla pasa de en vivo a parcial con un marcador de aviso y un título explicativo, la vista de niveles añade una nota de que solo se dibujan las líneas principales mientras los recuentos siguen completos, y la caja de cobertura de la superposición repite la nota de mínimo palabra por palabra. Nada se descarta sin decirlo.
La página de liquidaciones frente al mapa de calor
Las dos rutas son productos distintos. La página de Liquidations es un panel con pestañas: liquidaciones realizadas a lo largo del tiempo más clústeres estimados, un Multi-Exchange Map, un Liquidation Estimator y un lanzador con enlace directo a la Liquidation Heatmap a pantalla completa. Ese lanzador existe porque la verdadera rejilla de tiempo por precio es una ruta WebGL dedicada que comparte el motor del gráfico avanzado y no se puede incrustar en un panel de pestañas. Las dos están protegidas por dominios de acceso distintos —el panel por order flow y el mapa de calor por derivatives— y el agregado multi-exchange que hay detrás del panel es solo de BTC, con su lectura de riesgo etiquetada como BTC independientemente del activo seleccionado en el mapa de calor.
Las cuatro pestañas del panel de liquidaciones
La primera pestaña, Liquidations and Levels, combina un gráfico de barras de liquidaciones realizadas de largos frente a cortos por bucket con una tarjeta de clústeres estimados por nivel de apalancamiento. Su control de intervalo cambia tanto el tamaño del bucket como cuántos buckets se piden: 168 buckets con una hora, 84 con cuatro horas, 30 con un día. La tarjeta de clústeres está etiquetada explícitamente como indicativa e imprime sus propios supuestos —open interest de Binance margen USDT, un reparto largo-corto supuestamente equilibrado y una distribución fija de apalancamiento minorista— para que nunca se confunda con datos del exchange. El selector de activo de esta página ofrece solo BTC y ETH.
La segunda pestaña es el Multi-Exchange Map: volumen estimado de liquidaciones por bin de precio agregado a partir de un despliegue en vivo, con un desglose por exchange, una tabla de clústeres y una superposición de eventos reales. Comparte la misma anchura de bin de precio por activo que la rejilla persistida —cincuenta dólares para BTC, cinco para ETH, medio dólar para SOL, con un respaldo proporcional al precio para los activos sin valor asignado—, así que ambas superficies caen sobre la misma retícula de precios. La tercera pestaña es un estimador aparte para BTC y ETH que calcula bandas a 3x, 5x, 10x, 25x, 50x y 100x a partir del precio y el open interest de futuros de Binance, con un indicador de apalancamiento de Bybit, detrás de una caché de treinta segundos.
La cuarta pestaña no dibuja ningún mapa de calor. La rejilla de tiempo por precio es una ruta WebGL a pantalla completa que comparte el motor del gráfico avanzado y no se puede montar dentro de un panel de pestañas, así que esta pestaña es un lanzador que lleva el activo seleccionado a un enlace directo. Solo se monta el contenido de la pestaña activa, así que cambiar de pestaña no arranca los bucles de sondeo de las demás. La parte compartible de ese enlace es el activo y el lookback; la resolución, el modo y el conmutador de realizadas se quedan en la sesión, y un parámetro de resolución heredado se elimina de los enlaces antiguos.
Paso de columna, límites de filas y cadencia de refresco
Una ventana más ancha no produce más columnas. La lectura deriva un paso de columna a partir del lookback —60 segundos hasta cuatro horas, 300 segundos hasta un día, 900 segundos hasta cuatro días y 1800 segundos más allá—, dimensionado para que ninguna ventana permitida supere las cuatrocientas columnas aproximadamente. Las lecturas vigente y de niveles fijan como suelo de ese paso su base de cinco minutos, y por eso las ventanas cortas conservan su resolución habitual mientras que las largas se ensanchan. El submuestreo elige la columna más reciente dentro de cada ventana de paso y nunca suma columnas, porque la superficie se arrastra hacia delante y sumar contaría la misma banda vigente varias veces.
Tres límites acotan la carga útil, y cada uno se informa en lugar de ocultarse. La rejilla vigente se detiene en quinientas mil filas y, cuando se supera, descarta columnas antiguas enteras para que la rejilla siga siendo rectangular y sobreviva la columna más reciente, que es la que alimenta el perfil del libro actual. La carga útil de niveles se detiene en seis mil líneas. La consulta de eventos realizados usa por defecto mil filas con un techo estricto de diez mil, y una lectura que alcanza el techo se marca como recuento incompleto.
El refresco se hace por sondeo y depende de la visibilidad de la pestaña, así que una pestaña en segundo plano no sigue pidiendo datos. La rejilla de calor y la vista de niveles se refrescan cada 120 segundos, la serie de eventos del panel de liquidaciones cada 60 segundos y el estimador cada 30 segundos. Cambiar el activo, la ventana, la granularidad o la medida descarta el modelo obsoleto antes de volver a pedir datos, así que un control nunca etiqueta un conjunto de datos con los ajustes de otro mientras la petición está en curso.
Límites documentados
El lookback es una lista blanca fija en el servidor —1h, 4h, 12h, 24h y 7d— y cualquier otro valor se rechaza en lugar de aplicarse un valor por defecto en silencio. El desplegable ofrece cuatro de esos cinco; 1h solo es accesible por la API. Las superficies estimada y vigente solo se persisten con cadencia horaria, así que otros marcos temporales se rechazan; solo la superposición realizada está materializada en 1m, 1h y 1d. Cada nivel realizado conserva una ventana reciente limitada (unas 3 horas en 1m, 8 días en 1h, 30 días en 1d), y el nivel de 1d necesita al menos un lookback de 48 horas para devolver buckets completos. Las peticiones fuera de esos límites vuelven marcadas como truncadas, y la interfaz muestra un aviso de datos parciales. La consulta de eventos realizados tiene un límite de filas por defecto de 1.000 y un límite estricto de 10.000; alcanzar el límite se comunica como una nota de recuento incompleto.
| Capa | Resolución | Se conserva | Lecturas fuera de la ventana |
|---|---|---|---|
| Realizada | 1m | unas 3 horas | se marcan como truncadas |
| Realizada | 1h | unos 8 días | se marcan como truncadas |
| Realizada | 1d | unos 30 días | requiere una petición de 48 horas |
| Estimada | solo horaria | se guarda por columna | solo límites de filas |