Снимок сигнала COT — Апрель 2026
JPY — Экстремально короткая позиция
Чистая −148 тыс. контрактов · Z-показатель −2.4
EUR — Расширенная длинная позиция
Чистая +112 тыс. контрактов · Z-показатель +2.1
GBP — Умеренно длинная позиция
Чистая +64 тыс. контрактов · Z-показатель +1.3
AUD — Немного короткая позиция
Чистая −18 тыс. контрактов · Z-показатель −0.6
Два из восьми основных рынков валютных фьючерсов в настоящее время демонстрируют статистические экстремумы в спекулятивном позиционировании. Чистые короткие позиции по JPY опустились ниже −148 000 — z-показатель −2.4 относительно распределения за последние 52 недели — в то время как чистые длинные позиции по EUR выросли до +112 000, z-показатель +2.1. Когда некоммерческие трейдеры так сильно концентрируются в одном направлении, сделка перестает быть связанной с макроэкономической теорией и начинает касаться риска выхода.
Эта статья о том, что происходит дальше. Используя еженедельные данные CFTC Commitments of Traders, мы рассмотрим, как определить, когда консенсусная сделка переходит из категории "хорошо позиционированной" в "опасно переполненную", как выглядят ранние предупреждающие сигналы закрытия позиций и как построить основу для разворота вокруг экстремумов позиционирования COT.
Что рассматривается в этой статье
- Определение и измерение переполненных сделок с использованием z-показателей и соотношений чистой открытой позиции к открытому интересу
- Текущие экстремальные значения по всем восьми основным валютным фьючерсам
- Анатомия разворота, обусловленного COT — пять фаз от экстремума до сквиза
- Сочетание сигналов COT с макроэкономическими фундаментальными показателями для сделок с более высокой уверенностью
- Практическая основа для разворота: триггеры входа, сигналы подтверждения и отмена
Определение переполненной сделки
Сделка становится переполненной, когда некоммерческое спекулятивное сообщество — хедж-фонды, управляющие активами и консультанты по торговле сырьевыми товарами — накапливает направленную позицию, которая является статистически экстремальной относительно ее собственной истории. Ключевое слово — относительно. Чистая длинная позиция в +100 000 контрактов EUR не является экстремальной по своей сути; она экстремальна только в том случае, если она находится значительно выше типичного диапазона позиционирования валюты.
Две метрики уточняют это определение до действенных пороговых значений.
Z-показатель чистой некоммерческой позиции
Наиболее надежный способ нормализации показаний COT по валютам и временным периодам — это скользящий z-показатель. Он отвечает на точный вопрос: сколько стандартных отклонений выше или ниже своего недавнего среднего значения составляет текущее позиционирование? Использование 52-недельного окна привязывает бенчмарк к текущему макроэкономическому режиму, а не к многодесятилетней истории, которая может больше не отражать текущую структуру рынка.
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, ...}
Значения выше +2.0 или ниже −2.0 помещают валюту в верхние или нижние 2.3% ее исторического распределения. Это порог, который в данной статье рассматривается как "экстремальный" — статистически достаточно необычный, чтобы быть отмеченным как структурный риск позиционирования.
Чистая позиция как доля открытого интереса
Z-показатель показывает, где позиционирование находится в своем историческом распределении. Соотношение чистой позиции к открытому интересу показывает, насколько сконцентрирована направленная ставка в текущей глубине рынка. Когда чистая некоммерческая позиция составляет более 25–30% от общего открытого интереса, рынок структурно искажен, и потенциал для дислокации при любом противоположном катализаторе высок.
Фьючерсы EUR — Чистая некоммерческая позиция (2023–2026)
Наложение скользящего 52-недельного z-показателя. Заштрихованные полосы отмечают экстремальные пороги (±2σ).
Источник: данные CFTC COT через FXMacroData /v1/cot/eur — иллюстративный исторический ряд
Текущие экстремальные значения по основным валютам
Сканирование z-показателей по нескольким валютам, возможно, является самым мощным еженедельным ритуалом, который может выполнять любой макро-трейдер на рынке Форекс. Одновременное ранжирование всех восьми валютных фьючерсов немедленно показывает, какие сделки активно развиваются в ту или иную сторону, а какие остаются в нейтральной зоне, где макроэкономическая теория имеет пространство для развития.
Z-показатели позиционирования COT — Все основные валюты (Апрель 2026)
Скользящий 52-недельный z-показатель. Красные столбцы указывают на экстремальное скопление коротких позиций; зеленые столбцы указывают на экстремальное скопление длинных позиций.
Источник: данные CFTC COT через FXMacroData /v1/cot/{currency} — иллюстративный снимок
Приведенный выше снимок показывает четкое расхождение в спекулятивных настроениях. Короткие позиции по JPY являются наиболее переполненными в комплексе, с z-показателем −2.4, находящимся значительно ниже порога опасности −2.0. Длинные позиции по EUR достигли +2.1 и приближаются к точке, где консенсусная длинная позиция становится собственным риском. CHF находится на уровне −1.7, приближаясь к территории экстремально коротких позиций. CAD и AUD комфортно располагаются в нейтральной зоне.
Для парных трейдеров расхождение JPY/EUR является наиболее действенным показателем: если вы верите в возврат к среднему, то сделка с наибольшим структурным попутным ветром от закрытия позиций — это короткая позиция по EUR/JPY — валюта с экстремально длинной позицией по EUR с одной стороны и экстремально короткой позицией по JPY с другой.
Ключевой вывод: эффект мультипликатора пар
Когда обе части валютной пары имеют экстремальные z-показатели в противоположных направлениях, ожидаемое движение при закрытии позиций усиливается. Короткая позиция по EUR/JPY с EUR на уровне +2.1 и JPY на уровне −2.4 означает, что любое изменение настроений влияет на обе части одновременно. Исторические эпизоды такой двойной экстремальной конфигурации приводили к резким, быстрым движениям — часто на 3–5% в паре в течение нескольких недель после пика позиционирования.
Анатомия разворота, обусловленного COT
Экстремальное позиционирование не разворачивается спонтанно. Оно закрывается последовательностью различных фаз, каждая из которых имеет измеримые сигнатуры COT. Понимание структуры фаз помогает отличить временную консолидацию от подлинного изменения режима.
Фаза 1 — Накопление (Z-показатель от 0 до ±1.5)
Макроэкономическая теория набирает обороты. Каждую неделю спекулятивное сообщество с уверенностью наращивает позицию. Число контрактов неуклонно растет, открытый интерес увеличивается, а ценовой тренд отражает и усиливает консенсус.
Фаза 2 — Скопление (Z-показатель от ±1.5 до ±2.0)
Позиция растет быстрее, чем это оправдывает цена. Новые участники присоединяются, потому что сделка сработала, а не потому, что первоначальная теория усилилась. Еженедельные дельты в чистом позиционировании ускоряются. Эта фаза часто является наиболее прибыльной для держателей — импульс полностью задействован — но именно тогда риск выхода начинает невидимо нарастать на заднем плане.
Фаза 3 — Истощение (Z-показатель за пределами ±2.0)
Темпы наращивания новых позиций замедляются. Открытый интерес может стабилизироваться или начать снижаться, в то время как цена продолжает двигаться в направлении тренда. Это расхождение между замедлением позиционирования и продолжающимся ростом или падением цены является наиболее важным ранним предупреждающим сигналом, который предлагает отчет COT.
Фаза 4 — Первое закрытие позиций (Z-показатель отступает от экстремума)
Появляется катализатор — неожиданное заявление центрального банка, сюрприз в макроэкономических данных, геополитический шок — и наиболее закредитованные участники начинают сокращать свои позиции. Z-показатель отступает от своего экстремума, но сначала медленно. Цена резко разворачивается, потому что выходы сгруппированы: все, кто вошел в Фазе 2, пытаются выйти одновременно через одну и ту же дверь.
Фаза 5 — Сквиз (Z-показатель возвращается к нейтральному значению)
Закрытие позиций становится самоподдерживающимся. Ускоряется покрытие коротких позиций или ликвидация длинных. Позиции, которые были прибыльными на протяжении большей части тренда, быстро становятся убыточными во время сквиза. Движение часто превышает справедливую стоимость, прежде чем стабилизироваться около нового нейтрального режима позиционирования.
Фьючерсы JPY — Чистая позиция против цены USD/JPY (2023–2026)
Двойная ось: чистые некоммерческие контракты JPY (слева); спотовый курс USD/JPY (справа, инвертированный). Экстремумы позиционирования совпадают с основными поворотными точками пары.
Источник: данные CFTC COT через /v1/cot/jpy и спотовый курс через /v1/forex/usd/jpy — иллюстративный ряд
Приведенный выше график иллюстрирует, как чистые короткие позиции по JPY отслеживали USD/JPY на протяжении полного цикла разворота. В течение 2023 года и в начале 2024 года значительное спекулятивное короткое позиционирование по фьючерсам JPY соответствовало восходящему тренду USD/JPY. Но каждый раз, когда позиционирование достигало статистического экстремума, катализатор — часто сигнал политики Банка Японии — быстро сжимал короткие позиции, вызывая резкое укрепление JPY.
Данные COT не предсказывали катализатор. Они говорили вам, что позиция была настолько переполнена, что любой противоположный катализатор, независимо от размера, будет усилен динамикой выхода толпы. Доступ к истории позиционирования JPY через конечную точку COT FXMacroData, чтобы отслеживать, нарастает или ослабевает текущий экстремум.
Сигнал расхождения цены и позиционирования
Наиболее надежное предупреждение о развороте на основе COT — это не абсолютный уровень позиционирования, а расхождение между направлением цены и направлением позиционирования. Когда цена продолжает двигаться в одном направлении, но спекулятивное позиционирование по базовым фьючерсам начинает двигаться в другом, крупные участники уже сокращают свои позиции, в то время как розничные трейдеры, ориентированные на импульс, толкают цену выше или ниже.
EUR/USD против чистых длинных позиций EUR COT — Выявление расхождения
Спот EUR/USD (левая ось, синий); чистые некоммерческие контракты EUR в тысячах (правая ось, золотой). Зоны расхождения заштрихованы янтарным цветом.
Источник: /v1/forex/eur/usd и /v1/cot/eur — иллюстративный ряд
Правила обнаружения расхождения
- Медвежье расхождение: цена EUR/USD достигает нового максимума, но чистые длинные позиции EUR COT не достигают нового максимума — спекулянты распределяют позиции на росте. Ожидайте разворота в течение 2–6 недель.
- Бычье расхождение: цена USD/JPY достигает нового максимума (JPY ослабевает дальше), но короткие контракты JPY перестают расширяться — продавцы коротких позиций не добавляют уверенности в движении. Потенциальный сигнал истощения.
- Подтверждение тренда: И цена, и чистая позиция движутся в одном направлении — путь наименьшего сопротивления сохраняется. Оставайтесь в тренде, пока это подтверждение не нарушится.
Сочетание сигналов COT с макроэкономическими фундаментальными показателями
Позиционирование COT — это сигнал структуры рынка, а не фундаментальный. Его сила многократно возрастает, когда он согласуется с — или противоречит — базовой макроэкономической среде. Наиболее уверенные установки возникают в двух конкретных конфигурациях.
Конфигурация 1 — Макроэкономический попутный ветер, переполненная позиция
Фундаментальное обоснование позиции сильное и хорошо понятное — но оно уже полностью отражено в экстремальном спекулятивном позиционировании. В этом случае потенциал роста от дальнейшего улучшения макроэкономической ситуации ограничен, потому что сообщество уже заняло позиции в ожидании этого. Асимметрия находится на стороне снижения: если макроэкономические данные разочаруют даже незначительно, разворот будет резким, потому что толпе некуда деваться.
Это описывает текущую ситуацию с EUR. Нарратив ослабления доллара США и укрепление экономических данных ЕС поддерживают длинные позиции по EUR на фундаментальных основаниях — но z-показатель +2.1 говорит о том, что большая часть этой теории уже заложена в позиционирование фьючерсов. Сделка не является ошибочной, но соотношение риск/вознаграждение значительно сузилось. Сравните макроэкономические данные по EUR с COT для проверки:
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"])
Конфигурация 2 — Макроэкономический встречный ветер, переполненная позиция (Высший уровень тревоги)
Это установка с наивысшим уровнем тревоги. Макроэкономические данные начинают противоречить консенсусной теории в то же время, когда позиционирование находится на экстремальном уровне. Переполненная сделка, теряющая свое фундаментальное обоснование, является рецептом для быстрого, беспорядочного закрытия позиций. CHF на уровне −1.7 в сочетании с любым сюрпризом в политике SNB, который оспаривает медвежью теорию по CHF, был бы классическим примером этой конфигурации.
Скорость изменения позиционирования — Еженедельная дельта чистых контрактов (EUR, JPY, GBP)
Еженедельное изменение чистых некоммерческих контрактов. Замедляющаяся дельта при экстремальном позиционировании является ранним сигналом истощения Фазы 3.
Источник: данные CFTC COT через FXMacroData — иллюстративный ряд
Скорость имеет такое же значение, как и уровень. Когда изменения чистой позиции составляли от +8 000 до +12 000 контрактов в неделю на пике накопления EUR и с тех пор замедлились до +1 000 до +2 000, это замедление является объективным признаком Фазы 3. Толпа все еще наращивает позиции, но уверенность ослабевает. Именно тогда риск разворота переходит от теоретического к неизбежному.
Практическая основа для торговли на развороте
Преобразование сигналов COT в реальные сделки требует структуры. Экстремумы позиционирования могут сохраняться неделями или месяцами, и нет гарантии, что экстремальное значение быстро развернется. Следующая основа использует COT как предварительный фильтр, а не как точный инструмент для определения времени.
Шаг 1 — Отбор экстремумов
Выполните еженедельное сканирование z-показателей по всем 8 валютам. Отметьте любую валюту с |z| > 2.0 как кандидата для мониторинга разворота.
Шаг 2 — Проверка скорости
Рассчитайте еженедельную дельту. Если последние 3 недели показывают замедление прироста (|Δ| уменьшается), фаза истощения может быть в процессе. Это предварительное условие для входа, а не триггер.
Шаг 3 — Согласование с макроэкономикой
Проверьте соответствующие фундаментальные индикаторы через FXMacroData. Поддерживают ли макроэкономические данные или подрывают переполненную теорию? Макроэкономический попутный ветер означает ожидание; макроэкономический встречный ветер означает, что установка активна.
Шаг 4 — Ожидание триггера
Не торгуйте против экстремального позиционирования без триггера. Триггеры включают: сюрприз центрального банка, макроэкономический промах, технический пробой ключевой поддержки/сопротивления или подтвержденную первую неделю чистого сокращения в COT.
Шаг 5 — Определение размера позиции с учетом волатильности
Развороты от переполненных экстремумов быстрые и волатильные. Определяйте размер позиций так, чтобы учесть первоначальные неблагоприятные движения до того, как закрытие позиций наберет обороты. Стоп-лосс выше/ниже экстремального максимума/минимума z-показателя.
Отмена
Если COT показывает новый недельный рекорд в экстремальном направлении после входа, теория ошибочна в краткосрочной перспективе. Выйдите и переоцените. Переполненные сделки могут стать еще более переполненными, прежде чем они развернутся.
Создание еженедельного сканера COT
Практическая реализация этой основы — это еженедельный сканер, который автоматически вычисляет z-показатели и дельты для всех восьми валютных фьючерсов и выводит ранжированную таблицу оповещений. Вот готовый к производству скрипт, использующий конечную точку COT 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}")
Запуск этого скрипта каждую пятницу вечером — вскоре после публикации COT в 15:30 по восточному времени — дает вам полное представление о спекулятивном ландшафте перед выходными и перед открытием азиатских рынков в следующее воскресенье.
Доступ к реальным данным COT
FXMacroData предоставляет еженедельные данные CFTC COT по позиционированию для всех восьми основных валютных фьючерсов — AUD, CAD, CHF, EUR, GBP, JPY, NZD и USD — с полной историей, чистыми JSON-ответами и конечными точками для каждой валюты.
Попробуйте конечную точку EUR: https://fxmacrodata.com/api/v1/cot/eur?api_key=YOUR_API_KEY