Instantánea de Señales COT — Abril 2026
JPY — Posición Corta Extrema
Neto −148k contracts · Puntuación Z −2.4
EUR — Posición Larga Extendida
Neto +112k contracts · Puntuación Z +2.1
GBP — Posición Larga Moderada
Neto +64k contracts · Puntuación Z +1.3
AUD — Ligeramente Corta
Neto −18k contracts · Puntuación Z −0.6
Dos de los ocho principales mercados de futuros de divisas están actualmente mostrando extremos estadísticos en el posicionamiento especulativo. Los contratos netos cortos de JPY han caído por debajo de −148.000 —una puntuación Z de −2.4 frente a la distribución de las últimas 52 semanas—, mientras que los contratos netos largos de EUR han subido a +112.000, una puntuación Z de +2.1. Cuando los traders no comerciales se agrupan tan fuertemente en una dirección, la operación deja de ser sobre la tesis macro y comienza a ser sobre el riesgo de salida.
Este artículo trata sobre lo que sucede a continuación. Utilizando los datos semanales de los Compromisos de los Traders (COT) de la CFTC, examinamos cómo identificar cuándo una operación de consenso pasa de estar "bien posicionada" a estar "peligrosamente saturada", cómo son las señales de alerta temprana de un desmonte, y cómo estructurar un marco de reversión en torno a los extremos de posicionamiento COT.
Qué Cubre Este Artículo
- Definición y medición de operaciones saturadas utilizando puntuaciones Z y ratios de interés abierto neto
- Lecturas extremas actuales en los ocho principales futuros de divisas
- La anatomía de una reversión impulsada por el COT — cinco fases desde el extremo hasta el 'squeeze'
- Combinación de señales COT con fundamentos macro para operaciones de mayor convicción
- Un marco práctico de reversión: disparadores de entrada, señales de confirmación e invalidación
Definiendo una Operación Saturada
Una operación se satura cuando la comunidad especulativa no comercial —fondos de cobertura, gestores de activos y asesores de trading de commodities— acumula una posición direccional que es estadísticamente extrema en relación con su propia historia. La palabra clave es relativa. Una posición neta larga de +100.000 contratos de EUR no es inherentemente extrema; solo es extrema si se encuentra muy por encima del rango de posicionamiento típico de la divisa.
Dos métricas afinan esta definición en umbrales accionables.
Puntuación Z del Posicionamiento Neto No Comercial
La forma más robusta de normalizar las lecturas COT entre divisas y períodos de tiempo es la puntuación Z móvil. Responde a una pregunta precisa: ¿cuántas desviaciones estándar por encima o por debajo de su promedio reciente se encuentra el posicionamiento actual? El uso de una ventana de 52 semanas vincula el punto de referencia al régimen macro actual en lugar de a una historia de varias décadas que podría ya no reflejar la estructura actual del mercado.
import requests, statistics
BASE = "https://fxmacrodata.com/api/v1"
KEY = "YOUR_API_KEY"
def fetch_cot(currency: str, start: str = "2018-01-01") -> list[dict]:
r = requests.get(f"{BASE}/cot/{currency}", params={"api_key": KEY, "start": start})
r.raise_for_status()
return r.json()["data"]
def rolling_zscore(records: list[dict], window: int = 52) -> list[dict]:
"""Rolling 52-week z-score of net non-commercial positioning."""
vals = [r["noncommercial_net"] for r in records]
out = []
for i, rec in enumerate(records):
w = vals[i : i + window] # records are newest-first
if len(w) < 8:
out.append({**rec, "zscore": None})
continue
mu = statistics.mean(w)
sig = statistics.stdev(w)
z = (rec["noncommercial_net"] - mu) / sig if sig else 0.0
out.append({**rec, "zscore": round(z, 2)})
return out
eur_data = fetch_cot("eur")
eur_scored = rolling_zscore(eur_data)
# Latest reading
print(eur_scored[0])
# {'date': '2026-04-15', 'noncommercial_net': 112340, 'zscore': 2.1, ...}
Lecturas por encima de +2.0 o por debajo de −2.0 sitúan a la divisa en el 2.3% superior o inferior de su distribución histórica. Ese es el umbral que este artículo considera "extremo" —estadísticamente lo suficientemente inusual como para señalarlo como un riesgo de posicionamiento estructural.
Posición Neta como Fracción del Interés Abierto
La puntuación Z te indica dónde se encuentra el posicionamiento en su distribución histórica. El ratio neto a interés abierto te dice cuán concentrada está la apuesta direccional dentro de la profundidad actual del mercado. Cuando el posicionamiento neto no comercial representa más del 25–30% del interés abierto total, el mercado está estructuralmente sesgado y el potencial de una dislocación ante cualquier catalizador contrario es alto.
Futuros de EUR — Posicionamiento Neto No Comercial (2023–2026)
Superposición de puntuación Z móvil de 52 semanas. Las bandas sombreadas marcan umbrales extremos (±2σ).
Fuente: Datos COT de la CFTC vía FXMacroData /v1/cot/eur — serie histórica ilustrativa
Lecturas Extremas Actuales en las Principales Divisas
El escaneo de puntuación Z entre divisas es, posiblemente, el ritual semanal más potente que cualquier trader de FX macro puede realizar. Al clasificar los ocho futuros de divisas simultáneamente, revela de inmediato qué operaciones están al rojo vivo en cualquier dirección y cuáles permanecen en una zona neutral donde la tesis macro tiene espacio para desarrollarse.
Puntuaciones Z de Posicionamiento COT — Todas las Principales Divisas (Abril 2026)
Puntuación Z móvil de 52 semanas. Las barras rojas indican saturación extrema de posiciones cortas; las barras verdes indican saturación extrema de posiciones largas.
Fuente: Datos COT de la CFTC vía FXMacroData /v1/cot/{currency} — instantánea ilustrativa
La instantánea anterior muestra una clara bifurcación en el sentimiento especulativo. El libro de posiciones cortas de JPY es la posición más saturada del complejo, con su puntuación Z de −2.4 situándose muy por debajo del umbral de peligro de −2.0. Las posiciones largas de EUR han alcanzado +2.1 y se acercan al punto en que la posición larga de consenso se convierte en su propio riesgo. CHF está en −1.7, acercándose al territorio de posiciones cortas extremas. CAD y AUD se encuentran cómodamente en la zona neutral.
Para los traders de pares, la divergencia JPY/EUR es la lectura más accionable: si crees en la reversión a la media, la operación con el mayor impulso estructural por el desmonte de posiciones es vender EUR/JPY —una divisa con exposición larga extrema en EUR por un lado y exposición corta extrema en JPY por el otro.
Conclusión Clave: El Efecto Multiplicador de Pares
Cuando ambas patas de un par de divisas presentan puntuaciones Z extremas en direcciones opuestas, el movimiento esperado en un desmonte se magnifica. Vender EUR/JPY con EUR en +2.1 y JPY en −2.4 significa que cualquier cambio en el sentimiento afecta a ambas patas simultáneamente. Episodios históricos de esta configuración de doble extremo han producido movimientos bruscos y rápidos —a menudo del 3–5% en el par en semanas desde el pico de posicionamiento.
La Anatomía de una Reversión Impulsada por el COT
El posicionamiento extremo no se revierte espontáneamente. Se desmonta en una secuencia de fases distintas, cada una con firmas COT medibles. Comprender la estructura de las fases te ayuda a distinguir entre una consolidación temporal y un cambio de régimen genuino.
Fase 1 — Acumulación (Puntuación Z 0 a ±1.5)
La tesis macro gana tracción. Cada semana, la comunidad especulativa añade a la posición con convicción. Los contratos netos crecen constantemente, el interés abierto aumenta y la tendencia del precio refleja y refuerza el consenso.
Fase 2 — Saturación (Puntuación Z ±1.5 a ±2.0)
La posición crece más rápido de lo que el precio justifica. Nuevos participantes se unen porque la operación ha funcionado, no porque la tesis original se haya fortalecido. Los deltas semanales en el posicionamiento neto se aceleran. Esta fase suele ser la más rentable para los tenedores —el impulso está completamente activado—, pero también es cuando el riesgo de salida comienza a acumularse de forma invisible en segundo plano.
Fase 3 — Agotamiento (Puntuación Z más allá de ±2.0)
El ritmo de construcción de nuevas posiciones se ralentiza. El interés abierto puede estabilizarse o empezar a disminuir mientras el precio continúa moviéndose en la dirección de la tendencia. Esta divergencia entre la ralentización del posicionamiento y la continua apreciación o depreciación del precio es la señal de alerta temprana más importante que ofrece el informe COT.
Fase 4 — Primer Desmonte (Puntuación Z retrocediendo desde el extremo)
Llega un catalizador —un comunicado inesperado de un banco central, una sorpresa en los datos macro, un shock geopolítico— y los participantes más apalancados comienzan a reducir su exposición. La puntuación Z retrocede desde su extremo, pero lentamente al principio. El precio se revierte bruscamente porque las salidas están agrupadas: todos los que entraron en la Fase 2 intentan salir simultáneamente por la misma puerta.
Fase 5 — 'Squeeze' (Puntuación Z volviendo hacia la neutralidad)
El desmonte se vuelve auto-reforzante. La cobertura de posiciones cortas o la liquidación de posiciones largas se acelera. Las posiciones que fueron rentables durante gran parte de la tendencia se vuelven rápidamente no rentables durante el 'squeeze'. El movimiento a menudo excede el valor razonable antes de estabilizarse cerca de un nuevo régimen de posicionamiento neutral.
Futuros de JPY — Posicionamiento Neto vs Precio USD/JPY (2023–2026)
Eje dual: Contratos netos no comerciales de JPY (izquierda); tipo de cambio spot USD/JPY (derecha, invertido). Los extremos de posicionamiento se alinean con los principales puntos de inflexión del par.
Fuente: Datos COT de la CFTC vía /v1/cot/jpy y tipo de cambio spot vía /v1/forex/usd/jpy — serie ilustrativa
El gráfico anterior ilustra cómo las posiciones netas cortas de JPY siguieron al USD/JPY a lo largo de un ciclo completo de reversión. Durante 2023 y principios de 2024, el fuerte posicionamiento especulativo corto en futuros de JPY se correspondió con una tendencia alcista del USD/JPY. Pero cada vez que el posicionamiento alcanzaba un extremo estadístico, un catalizador —a menudo una señal de política del Bank of Japan— comprimía rápidamente el libro de posiciones cortas, produciendo una fuerte apreciación del JPY.
Los datos COT no predijeron el catalizador. Te indicaron que la posición estaba tan saturada que cualquier catalizador contrario, independientemente de su tamaño, sería amplificado por la dinámica de salida de la multitud. Accede al historial de posicionamiento de JPY a través del endpoint COT de FXMacroData para seguir si el extremo actual se está acumulando o aliviando.
La Señal de Divergencia Precio-Posicionamiento
La advertencia de reversión más fiable basada en el COT no es el nivel absoluto de posicionamiento, sino la divergencia entre la dirección del precio y la dirección del posicionamiento. Cuando el precio continúa en una dirección pero el posicionamiento especulativo en los futuros subyacentes comienza a moverse en la dirección opuesta, los grandes participantes ya están reduciendo su exposición mientras los traders minoristas de momentum empujan el precio al alza o a la baja.
EUR/USD vs Posiciones Netas Largas de EUR COT — Detectando Divergencia
EUR/USD spot (eje izquierdo, azul); contratos netos no comerciales de EUR en miles (eje derecho, dorado). Zonas de divergencia sombreadas en ámbar.
Fuente: /v1/forex/eur/usd y /v1/cot/eur — serie ilustrativa
Reglas de Detección de Divergencia
- Divergencia bajista: El precio del EUR/USD alcanza un nuevo máximo, pero las posiciones netas largas de EUR COT no logran un nuevo máximo —los especuladores están distribuyendo en la fortaleza. Esté atento a una reversión en 2–6 semanas.
- Divergencia alcista: El precio del USD/JPY alcanza un nuevo máximo (el JPY se debilita aún más), pero los contratos cortos de JPY dejan de expandirse —los vendedores en corto no están añadiendo convicción al movimiento. Señal potencial de agotamiento.
- Confirmación de tendencia: Tanto el precio como el posicionamiento neto están en la misma dirección —el camino de menor resistencia está intacto. Manténgase con la tendencia hasta que esta confirmación se rompa.
Combinando Señales COT con Fundamentos Macro
El posicionamiento COT es una señal de estructura de mercado, no fundamental. Su poder se multiplica cuando se alinea —o contradice— con el entorno macro subyacente. Las configuraciones de mayor convicción surgen en dos escenarios específicos.
Configuración 1 — Viento de Cola Macro, Posición Saturada
El argumento fundamental para una posición es sólido y bien comprendido —pero ya está completamente reflejado en el posicionamiento especulativo extremo. En este caso, el potencial alcista de una mejora macro adicional es limitado porque la comunidad ya se ha posicionado para ello. La asimetría está a la baja: si los datos macro decepcionan incluso modestamente, la reversión será violenta porque la multitud no tiene adónde ir.
Esto describe la configuración actual del EUR. Una narrativa de debilitamiento del dólar estadounidense y datos económicos de la UE que se afianzan respaldan las posiciones largas de EUR por fundamentos —pero una puntuación Z de +2.1 te dice que gran parte de esta tesis ya está descontada en el posicionamiento de futuros. La operación no es incorrecta, pero la relación riesgo/recompensa se ha reducido significativamente. Consulta los datos macro del EUR junto con el COT para verificar:
import requests
BASE = "https://fxmacrodata.com/api/v1"
KEY = "YOUR_API_KEY"
# EUR macro fundamentals
eur_gdp = requests.get(f"{BASE}/announcements/eur/gdp", params={"api_key": KEY, "limit": 6}).json()
eur_cpi = requests.get(f"{BASE}/announcements/eur/inflation", params={"api_key": KEY, "limit": 6}).json()
eur_policy = requests.get(f"{BASE}/announcements/eur/policy_rate", params={"api_key": KEY, "limit": 4}).json()
# COT positioning
eur_cot = requests.get(f"{BASE}/cot/eur", params={"api_key": KEY, "limit": 8}).json()
print("Latest EUR policy rate:", eur_policy["data"][0])
print("Latest EUR CPI:", eur_cpi["data"][0])
print("Latest EUR net COT:", eur_cot["data"][0]["noncommercial_net"])
Configuración 2 — Viento de Frente Macro, Posición Saturada (Alerta Máxima)
Esta es la configuración de alerta máxima. Los datos macro comienzan a contradecir la tesis de consenso al mismo tiempo que el posicionamiento está en un extremo. Una operación saturada que pierde su justificación fundamental es una receta para un desmonte rápido y desordenado. El CHF en −1.7 combinado con cualquier sorpresa de política del SNB que desafíe la tesis bajista del CHF sería un ejemplo de libro de texto de esta configuración.
Velocidad de Cambio de Posicionamiento — Delta Semanal de Contratos Netos (EUR, JPY, GBP)
Cambio semana a semana en los contratos netos no comerciales. Un delta desacelerado en un extremo de posicionamiento es una señal temprana de agotamiento de la Fase 3.
Fuente: Datos COT de la CFTC vía FXMacroData — serie ilustrativa
La velocidad importa tanto como el nivel. Cuando los cambios de posición neta se situaban entre +8.000 y +12.000 contratos por semana en el pico de acumulación de EUR y desde entonces se han ralentizado a +1.000 a +2.000, esa desaceleración es una firma objetiva de la Fase 3. La multitud sigue añadiendo, pero la convicción flaquea. Es entonces cuando el riesgo de reversión pasa de ser teórico a inminente.
Un Marco Práctico para Operar Reversiones
Traducir las señales COT en operaciones reales requiere estructura. Los extremos de posicionamiento pueden persistir durante semanas o meses, y no hay garantía de que una lectura extrema se revierta rápidamente. El siguiente marco utiliza el COT como un filtro de requisito previo, no como una herramienta de timing preciso.
Paso 1 — Filtrar Extremos
Ejecute el escaneo semanal de puntuación Z en las 8 divisas. Marque cualquier divisa con |z| > 2.0 como candidata para el monitoreo de reversión.
Paso 2 — Verificar la Velocidad
Calcule el delta semanal. Si las últimas 3 semanas muestran una adición desacelerada (|Δ| disminuyendo), la fase de agotamiento puede estar en curso. Esta es una precondición para la entrada, no un disparador.
Paso 3 — Alinear con el Macro
Verifique los indicadores fundamentales relevantes a través de FXMacroData. ¿Los datos macro están apoyando o socavando la tesis saturada? Un viento de cola macro significa esperar; un viento de frente macro significa que la configuración está activa.
Paso 4 — Esperar un Disparador
No opere contra un posicionamiento extremo sin un disparador. Los disparadores incluyen: sorpresa de un banco central, dato macro fallido, ruptura técnica de soporte/resistencia clave, o una primera semana confirmada de reducción neta en el COT.
Paso 5 — Ajustar el Tamaño para la Volatilidad
Las reversiones desde extremos saturados son rápidas y volátiles. Ajuste el tamaño de las posiciones para acomodar movimientos adversos iniciales antes de que el desmonte gane impulso. Stop loss por encima/debajo del máximo/mínimo de la puntuación Z extrema.
Invalidación
Si el COT muestra un nuevo récord semanal en la dirección extrema después de la entrada, la tesis es incorrecta a corto plazo. Salga y reevalúe. Las operaciones saturadas pueden saturarse aún más antes de revertirse.
Construyendo un Escáner COT Semanal
La implementación práctica de este marco es un escáner semanal que calcula automáticamente las puntuaciones Z y los deltas para los ocho futuros de divisas y genera una tabla de alertas clasificadas. Aquí hay un script listo para producción utilizando el endpoint COT de FXMacroData:
import requests, statistics
from datetime import date, timedelta
BASE = "https://fxmacrodata.com/api/v1"
KEY = "YOUR_API_KEY"
CURRENCIES = ["aud", "cad", "chf", "eur", "gbp", "jpy", "nzd", "usd"]
WINDOW = 52 # weeks for z-score baseline
EXTREME_Z = 2.0 # alert threshold
def fetch_cot(ccy: str) -> list[dict]:
r = requests.get(f"{BASE}/cot/{ccy}", params={"api_key": KEY, "start": "2019-01-01"})
r.raise_for_status()
return r.json()["data"] # newest first
def analyse(records: list[dict]) -> dict:
vals = [r["noncommercial_net"] for r in records]
net = vals[0]
# 52-week z-score
window = vals[:WINDOW]
mu = statistics.mean(window)
sig = statistics.stdev(window) if len(window) > 1 else 1
z = round((net - mu) / sig, 2) if sig else 0.0
# 4-week velocity (average weekly change)
delta_4w = round((vals[0] - vals[4]) / 4, 0) if len(vals) > 4 else 0
# Net as % of open interest
oi = records[0].get("open_interest", 1) or 1
net_oi = round(net / oi * 100, 1)
return {
"net": net, "zscore": z,
"delta_4w": delta_4w, "net_oi_pct": net_oi,
"date": records[0]["date"]
}
print(f"\n{'CCY':5} {'Net':>9} {'Z-Score':>9} {'4W Delta':>10} {'Net/OI%':>9} Status")
print("-" * 60)
for ccy in CURRENCIES:
data = fetch_cot(ccy)
stats = analyse(data)
flag = " ⚠ EXTREME" if abs(stats["zscore"]) >= EXTREME_Z else ""
print(f"{ccy.upper():5} {stats['net']:>9,.0f} {stats['zscore']:>9.2f} "
f"{stats['delta_4w']:>10,.0f} {stats['net_oi_pct']:>9.1f}%{flag}")
Ejecutar esto cada viernes por la noche —poco después de la publicación del COT a las 3:30 pm hora del Este— te proporciona una lectura completa del panorama especulativo antes del fin de semana y antes de la apertura asiática del domingo siguiente.
Acceda a Datos COT Reales
FXMacroData proporciona el posicionamiento semanal COT de la CFTC para los ocho principales futuros de divisas — AUD, CAD, CHF, EUR, GBP, JPY, NZD y USD — con historial completo, respuestas JSON limpias y endpoints por divisa.
Pruebe el endpoint de EUR: https://fxmacrodata.com/api/v1/cot/eur?api_key=YOUR_API_KEY