Знімок сигналу COT — Квітень 2026
JPY — Надзвичайно коротка позиція
Чистих −148k контрактів · Z-score −2.4
EUR — Розширена довга позиція
Чистих +112k контрактів · Z-score +2.1
GBP — Помірно довга позиція
Чистих +64k контрактів · Z-score +1.3
AUD — Трохи коротка позиція
Чистих −18k контрактів · Z-score −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 Futures — Чисте некомерційне позиціонування (2023–2026)
Накладання ковзного 52-тижневого z-показника. Затінені смуги позначають екстремальні пороги (±2σ).
Джерело: дані CFTC COT через FXMacroData /v1/cot/eur — ілюстративний історичний ряд
Поточні екстремальні показники по основних валютах
Сканування z-показників по різних валютах, мабуть, є найпотужнішим щотижневим ритуалом, який може виконувати будь-який макро-FX трейдер. Одночасне ранжування всіх восьми валютних ф'ючерсів негайно показує, які угоди є "гарячими" з обох сторін, а які залишаються в нейтральній зоні, де макроекономічна теза має простір для розвитку.
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-Score 0 до ±1.5)
Макроекономічна теза набирає обертів. Щотижня спекулятивна спільнота з переконанням додає до позиції. Чисті контракти стабільно зростають, відкритий інтерес збільшується, а цінова тенденція відображає та підсилює консенсус.
Фаза 2 — Скупчення (Z-Score ±1.5 до ±2.0)
Позиція зростає швидше, ніж це виправдовує ціна. Нові учасники приєднуються, тому що угода спрацювала, а не тому, що початкова теза посилилася. Щотижневі дельти в чистому позиціонуванні прискорюються. Ця фаза часто є найприбутковішою для власників — імпульс повністю задіяний — але це також час, коли ризик виходу починає невидимо наростати на задньому плані.
Фаза 3 — Виснаження (Z-Score за межами ±2.0)
Темпи нарощування нових позицій сповільнюються. Відкритий інтерес може стабілізуватися або почати знижуватися, тоді як ціна продовжує рухатися в напрямку тренду. Ця розбіжність між уповільненням позиціонування та продовженням зростання або падіння ціни є найважливішим раннім попереджувальним сигналом, який пропонує звіт COT.
Фаза 4 — Перше розгортання (Z-Score відступає від екстремуму)
З'являється каталізатор — несподівана заява центрального банку, сюрприз у макроекономічних даних, геополітичний шок — і учасники з найбільшим кредитним плечем починають зменшувати свою експозицію. Z-показник відступає від свого екстремуму, але спочатку повільно. Ціна різко розвертається, тому що виходи скупчені: кожен, хто увійшов у Фазі 2, намагається вийти одночасно через одні й ті ж двері.
Фаза 5 — Стиснення (Z-Score повертається до нейтрального значення)
Розгортання стає самопідсилюючим. Покриття коротких позицій або ліквідація довгих позицій прискорюється. Позиції, які були прибутковими протягом більшої частини тренду, швидко стають збитковими під час стиснення. Рух часто перевищує справедливу вартість, перш ніж стабілізуватися поблизу нового нейтрального режиму позиціонування.
JPY Futures — Чисте позиціонування проти ціни 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