MarketTrace
M1PosicionamientoM2FootprintM3LiquidacionesM4FinanciaciónM5Perfil de volumenM6Profundidad
Metodología · v1.1.0 · publicado 2026-05-21 · actualizado 2026-09-02

Índice de Calor de Perpetuos

Cómo se calculan el percentil por activo y el score global de peso igual, qué significan los contadores de amplitud, y hasta dónde llegan los datos.

Consulta el widget en vivo en /perpetuals/positioning.

Fuentes de datos

El Índice de Calor lee un único archivo aguas arriba: data/research/heat_index.json, escrito por el cron de PPI shadow-log en cada disparo horario a las :05 UTC. Ese mismo cron mantiene los archivos ppi_log.jsonl por activo. Así que el índice hereda a nivel de datos la cadencia de liquidación del PPI, un nuevo dato por liquidación de financiación de Binance. Eso son 8 horas para los seis activos originales y 4 horas para HYPE, aunque el FE haga polling cada cinco minutos.

El PPI en sí es un z-score móvil de 180 liquidaciones sobre las tasas de financiación USDT-M de Binance por activo. A 3 liquidaciones diarias eso son unos 60 días de contexto; HYPE liquida el doble de veces en Binance, así que sus 180 liquidaciones cubren unos 30 días. El shadow logger lleva capturada cada liquidación de Binance desde 2024-07-07 para los seis originales, 3 al día, lo que deja cada uno de esos logs en torno a 2.360 muestras a septiembre de 2026. El log de HYPE arranca a mediados de 2025, una vez que su propia historia de Binance llenó la ventana de 180 liquidaciones, y guarda unas 2.580 muestras a la cadencia más densa. Esos logs por activo son la distribución histórica contra la que se mapea el percentil.

Percentil por activo

Para cada activo cubierto el índice ranquea el valor actual del PPI contra el propio log de ese activo, que arranca el 2024-07-07 para los seis originales y a mediados de 2025 para HYPE. La fórmula es bisect_right directo: cuántas muestras históricas son menores o iguales al valor actual, dividido por el total y multiplicado por 100.

percentil_pct = bisect_right(sorted(historia), ppi_actual)
                / len(historia) × 100

Un score de 92 en BTC significa que el funding-z de BTC de hoy está por encima del 92% de todos los funding-z de BTC observados desde 2024-07-07. Cada activo se gradúa contra su propia curva, así que un BTC 92 y un DOGE 12 en el mismo día son dos afirmaciones sobre posición-dentro-de-la-historia por activo, no que las tasas absolutas sean iguales.

Agregado global

El score de mercado es el promedio de peso igual de los siete PPI actuales por activo, mapeado al percentil del mismo agregado de peso igual computado históricamente sobre cada timestamp donde los siete activos tienen valor. Un activo entra en el agregado solo si tiene a la vez PPI actual y log; no hay sustitución por timestamp para el que falte, y la serie histórica es una intersección estricta.

HYPE le cuesta a esa ventana compartida por partida doble. Su log arranca a mediados de 2025, lo que trunca la intersección a esa fecha, y Binance lo liquida cada 4 horas frente a las 8 del resto, así que solo sus liquidaciones de 00:00 / 08:00 / 16:00 coinciden con las demás. La ventana compartida tiene unos 1.290 timestamps a septiembre de 2026, frente a unos 2.360 por activo en los seis originales. El payload publica ambas cifras: n_history para la ventana compartida y n_history_per_asset para la profundidad por activo.

agg_actual    = mean([ppi.btc, ppi.eth, ppi.sol, ppi.bnb,
                      ppi.xrp, ppi.doge, ppi.hype])
agg_historico = [mean(ppi_por_activo(t)) for t in timestamps_compartidos]
pct_global    = bisect_right(sorted(agg_historico), agg_actual)
                / len(agg_historico) × 100

Peso igual, no peso por OI. BTC domina el open interest al rondar el 60% del OI total de perpetuos, así que un composite con peso por OI seguiría a BTC de cerca. El peso igual saca amplitud a la superficie. Cuando cinco de siete activos corren calientes juntos el score sube, aunque BTC solo no haya roto.

Contadores de amplitud

Junto al percentil global, el payload expone dos contadores: cuántos de los siete activos están actualmente en las bandas Hot o Euphoric, y cuántos están en Cold o Panic. El widget los renderiza como “1 de 7 perps en zona caliente”.

La amplitud separa un cambio amplio de régimen de una explosión de un solo activo. Score global 75 con breadth_hot=5 significa que la mayor parte del mercado está tibia a la vez. Score global 75 con breadth_hot=1 significa que un activo está en un extremo alto y está empujando el promedio él solo. Mismo número de portada, microestructura muy distinta.

Cacheo y frescura

El endpoint lee heat_index.json en cada petición y devuelve 503 si el archivo tiene más de dos horas. Más allá de ese plazo algo va mal aguas arriba (timer caído, cron de PPI fallando, disco lleno) y servir valores de calor obsoletos engañaría al FE más que un error honesto.

Cache-Control fija max-age de 5 minutos más stale-while-revalidate de 10 minutos, así un CDN puede absorber la mayor parte del tráfico sin servir nunca por encima de la edad real del archivo. El polling del FE coincide: refresco SWR cada cinco minutos. Como el archivo se actualiza cada hora, 11 de cada 12 peticiones de cliente devuelven bytes idénticos desde el CDN.

Limitaciones

Versionado

Metodología versión v1.1.0, publicada el 2026-05-21, actualizada el 2026-09-02. Los cambios materiales en la ruta de cómputo (nueva ponderación, ajustes de umbral, entradas adicionales) suben la versión y actualizan dateModified en los datos estructurados de arriba. Las correcciones de redacción no.

v1.1.0 (2026-09-02): HYPE se sumó al agregado el 2026-07-20 como séptima entrada. Su log de PPI es más corto que el de los seis originales y Binance lo liquida el doble de veces, así que la ventana compartida detrás del percentil global queda hoy muy por debajo de la profundidad por activo. La sección del agregado detalla qué cuesta eso.

v1.0.0 (2026-05-21): lanzamiento inicial, seis activos.