Cómo se calcula el mapa de calor de 51 sectores, qué significan los colores y las tres lecturas que más confunden.
El mismo día, unos sectores están todos en verde y otros todos en rojo. Pero ¿se mueve el sector entero o lo arrastra un solo líder? El mapa de calor compara 51 sectores en siete marcos temporales, y tanto sus colores como sus números vienen con condiciones: entiende cómo se construyen antes de leer los colores.
La rotación sectorial es el mapa de calor de rendimiento por sector de Blave: cada perpetuo de Binance con margen en USDT recibe una etiqueta de sector, el movimiento de cada sector se calcula en siete marcos temporales y el resultado se dibuja como celdas sombreadas. Las filas son sectores; las columnas son 1 hora, 8 horas, 24 horas, 3 días, 7 días, 30 días y 90 días.
El cálculo tiene tres pasos:
| Paso | Qué hace |
|---|---|
| 1. Etiquetar | Cada moneda recibe un sector de una tabla mantenida a mano. Medido el 2026-09-15: de 718 perpetuos en USDT, 707 encontraron etiqueta y 11 no. |
| 2. Movimiento por moneda | Toma los cierres de 5 minutos de los últimos 100 días, calcula el rendimiento de cada vela y luego suma los rendimientos dentro del marco temporal. |
| 3. Valor del sector | Promedia los movimientos de los miembros, ponderados por el valor nocional de interés abierto de cada moneda en USDT. Ni equiponderado ni por capitalización. |
Dos cosas que conviene saber de entrada. Primero, los sectores no son excluyentes: una moneda puede estar en varios, por ejemplo ETH en ETH y en Layer 1, o SOL en Layer 1 y en SOL Eco. Segundo, la tabla no es solo cripto: también están los perpetuos de acciones tokenizadas de EE. UU. y Hong Kong, ETFs y materias primas (oro, plata, crudo) listados en Binance, y reflejan el precio de esos contratos perpetuos, no la sesión ni el cierre del mercado subyacente.
La tabla se mantiene a mano y en el último año se ha actualizado más o menos cada uno a tres meses, así que los miembros de una captura antigua no son necesariamente los de hoy.
Aquí es donde más se malinterpreta el mapa de calor: repásalos antes de mirar los colores.
Los valores de sector se ponderan por el nocional de OI, y el OI está muy concentrado. Medido el 2026-09-15 a las 16:15 UTC:
| Sector | Peso del mayor miembro en el OI del sector |
|---|---|
| Layer 1 | ETH 78.6% (SOL 10.9%) |
| SOL Eco | SOL 73.5% |
| Yield | BTW 78.5% |
| Meme | DOGE 30.2% |
| AI | WLD 17.0% (TAO 15.8%) |
Casi cuatro quintas partes de la celda de Layer 1 son ETH. Para distinguir un movimiento amplio de uno de un solo líder, abre la página de monedas del sector: que la mayoría de los miembros estén verdes es un mercado muy distinto de que solo lo esté el primero y el resto en rojo.
Es habitual oír que el mapa de calor muestra dinero rotando entre sectores. No puede responder a eso: el cálculo no contiene volumen ni flujos, solo rendimientos de precio y el valor de interés abierto usado como peso. Que el precio suba suele venir con compras, pero no son lo mismo, y aquí nada separa dinero nuevo de cierres de cortos.
Hay 13 escalones de color y los umbrales no son porcentajes fijos. Una volatilidad anual supuesta se reescala a cada marco temporal, y los escalones quedan en 0.5, 1, 1.5, 2, 2.5 y 3 veces ese número, con todo lo que pase de 3 al tono más oscuro. Así que cada columna tiene sus propios umbrales:
| Marco temporal | El tono más tenue empieza cerca de | El más oscuro (tope) cerca de |
|---|---|---|
| 1 h | ±0.4% | ±2.4% |
| 24 h | ±2.0% | ±11.8% |
| 7 d | ±5.2% | ±31.2% |
| 30 d | ±10.8% | ±64.5% |
| 90 d | ±18.6% | ±111.7% |
Umbrales de la vista general por sector, derivados de las constantes de la página y no medidos. La página de monedas supone una volatilidad mayor, así que sus umbrales son unas 1.33 veces los de la tabla anterior y el mismo movimiento se sombrea distinto en cada página.
Leer una fila de izquierda a derecha compara cuánto se ha alejado un sector de su propia normalidad en ventanas de distinta longitud, no el tamaño de los movimientos.
El movimiento de un sector se construye sumando rendimientos de 5 minutos, no con "precio actual ÷ precio de hace N días − 1". En las monedas grandes y ventanas cortas o medias ambos son casi idénticos; en ventanas largas se separan; en monedas pequeñas muy volátiles y ventanas largas se rompen.
Medido el 2026-09-15 a las 16:15 UTC, en las monedas grandes la diferencia es de uno a dos puntos porcentuales:
| Celda | Mostrado | Rendimiento real | Diferencia (real − mostrado) |
|---|---|---|---|
| BTC 90 d | +16.40% | +15.88% | −0.52pp |
| BTC 30 d | +19.44% | +20.64% | +1.20pp |
Pero en ese mismo instante la celda de 90 días de una moneda pequeña daba −390%, algo que ningún rendimiento real puede ser: eso es lo que hace la suma en una ventana larga y volátil.
Dos consecuencias prácticas. El mapa de calor lo oculta, porque el sombreado se topa a tres unidades de volatilidad. Y la distorsión pasa a la media del sector siempre que un miembro distorsionado tenga un peso relevante.
Otro efecto empuja en la misma dirección: el peso es el valor de OI actual, y ese valor se mueve con el precio. Una moneda que acaba de subir recibe al mismo tiempo un peso mayor: es ponderar por el resultado, y cuanto más largo el marco temporal, más se nota.
Así que trata las columnas largas como un orden de qué se está moviendo, no como cifras de rendimiento.
Ninguno de los tres bocetos siguientes tiene detrás una estrategia oficial ni un backtest: son puntos de partida que debes validar tú. Los datos vienen de GET /sector_rotation/get_overview_data (requiere plan API), que devuelve el movimiento de cada sector en los siete marcos temporales y su lista de miembros.
El mapa de calor dice que el sector sube; la página de monedas dice cuántos miembros lo hacen. Exigir a la vez "sector positivo" y "más de la mitad de los miembros positivos" descarta el caso del líder solitario.
import requests
r = requests.get("https://api.blave.org/sector_rotation/get_overview_data", headers=hdrs)
sectors = r.json()["data"]
s = sectors["Layer 1"]
tf = "24h"
# el sector sube en 24 h
sector_up = s["data"][tf]["pct_change"] > 0
# qué proporción de miembros sube (amplitud)
ups = [t for t in s["symbols"].values() if t["data"][tf]["pct_change"] > 0]
breadth = len(ups) / len(s["symbols"])
print(sector_up, round(breadth, 2)) # verde con amplitud 0.3 = solo el líder
Un sector rojo a 30 días y verde a 24 horas es una forma del rezagado que empieza a moverse; verde intenso a 30 días y rojo a 24 horas es un líder que se enfría. Es una lectura, no una regla, y recuerda la distorsión anterior: usa las cifras de 30 y 90 días solo para ordenar.
short_tf, long_tf = "24h", "30d"
rows = []
for name, s in sectors.items():
short = s["data"][short_tf]["pct_change"]
long_ = s["data"][long_tf]["pct_change"]
if short > 0 and long_ < 0: # rezagado a largo plazo que gira al alza
rows.append((name, short, long_))
rows.sort(key=lambda x: -x[1])
print(rows[:5])
Si ya tienes una estrategia sobre una sola moneda, puedes añadir la condición "el sector de la moneda es positivo en un marco corto" y aceptar entradas solo cuando el sector acompañe. No cambia la lógica de entrada ni de salida, solo quita operaciones; si eso compensa tiene que salir de tu propio backtest, no del supuesto de que un filtro siempre ayuda. El sentimiento del mercado es otro filtro del mismo tipo: lee la prima de una sola moneda frente al índice, no la fuerza relativa de un grupo.
def sector_ok(sectors, token, tf="8h"):
# una moneda puede estar en varios sectores; basta con que uno sea positivo
for s in sectors.values():
if token in s["symbols"] and s["data"][tf]["pct_change"] > 0:
return True
return False
| Marco temporal | Sirve para | Ojo con |
|---|---|---|
| 1 h, 8 h | Rotación intradía, reacción tras un evento | La instantánea se actualiza cada hora, así que la columna de 1 h puede ir hasta una hora por detrás: no es una cotización en vivo |
| 24 h, 3 d | Ordenar la fuerza a escala de swing | El rango más útil; aquí la distorsión todavía es pequeña |
| 7 d, 30 d | Tendencia de medio plazo, dónde está un sector | Aparece la distorsión de la suma; úsalo para ordenar |
| 90 d | Temas de largo plazo | La mayor distorsión, y los pesos son el OI de hoy; no lo leas como rendimiento |
Los ejemplos de aquí usan 24 h y 8 h porque son las columnas que más se acercan al rendimiento real y las que mejor encajan con los horizontes que de verdad se mantienen.
La página de historia — un año de rendimientos acumulados por sector en líneas — corre con otro cálculo: rendimientos diarios compuestos, los pesos de OI de hoy aplicados a todo el año, solo monedas que siguen existiendo (las deslistadas faltan en toda la línea) y los días previos a la cotización contados como 0%. Por eso los sectores nuevos empiezan planos; los de acciones tokenizadas, por ejemplo, apenas tienen datos antes de principios de 2026. Léela como movimiento relativo entre sectores, no como un rendimiento que hubieras podido capturar.
Son ideas para combinar señales, no resultados verificados:
| Combinar con | Por qué |
|---|---|
| Rotación sectorial + Cazador de ballenas | Los sectores muestran qué grupo se mueve; usa el cazador de ballenas para ver si el interés abierto y el volumen de una moneda concreta son inusualmente grandes. |
| Rotación sectorial + Sentimiento del mercado | Los sectores son la fuerza relativa de un grupo de monedas; el sentimiento del mercado es la prima de una sola moneda frente al índice: preguntas distintas. |
| Rotación sectorial + Liquidaciones | Cuando un sector se pone rojo de golpe, mira el indicador de liquidación para ver si hubo ventas forzadas de por medio. |