Snapshot ng Signal ng COT — April 2026
JPY — Matinding Short
Net −148k contracts · Z-score −2.4
EUR — Pinalawig na Long
Net +112k contracts · Z-score +2.1
GBP — Katamtamang Long
Net +64k contracts · Z-score +1.3
AUD — Bahagyang Short
Net −18k contracts · Z-score −0.6
Dalawa sa walong pangunahing currency futures markets ay kasalukuyang nagpapakita ng matinding istatistika sa ispekulatibong posisyon. Ang JPY net short contracts ay bumaba sa −148,000 — isang z-score na −2.4 laban sa trailing 52-linggong distribusyon — habang ang EUR net longs ay umakyat sa +112,000, isang z-score na +2.1. Kapag ang mga non-commercial trader ay siksik na siksik sa isang direksyon, ang kalakalan ay hindi na tungkol sa macro thesis at nagsisimula nang maging tungkol sa panganib sa paglabas.
Ang artikulong ito ay tungkol sa kung ano ang susunod na mangyayari. Gamit ang lingguhang data ng CFTC Commitments of Traders, sinusuri namin kung paano matukoy kung kailan ang isang consensus trade ay lumilipat mula sa "maayos na posisyon" patungo sa "mapanganib na siksik", kung ano ang hitsura ng mga maagang babala ng pagkalas, at kung paano bumuo ng isang balangkas ng pagbaliktad sa paligid ng matinding posisyon ng COT.
Ano ang Saklaw ng Artikulong Ito
- Pagbibigay-kahulugan at pagsukat ng mga siksik na kalakalan gamit ang z-scores at net-open-interest ratios
- Kasalukuyang matinding pagbasa sa lahat ng walong pangunahing currency futures
- Ang anatomy ng isang pagbaliktad na dulot ng COT — limang yugto mula sa matindi hanggang sa squeeze
- Pagsasama-sama ng mga signal ng COT sa macro fundamentals para sa mga kalakalan na may mas mataas na kumpiyansa
- Isang praktikal na balangkas ng pagbaliktad: mga trigger sa pagpasok, mga signal ng kumpirmasyon, at pagpapawalang-bisa
Pagbibigay-kahulugan sa Siksik na Kalakalan
Ang isang kalakalan ay nagiging siksik kapag ang non-commercial speculative community — mga hedge fund, asset manager, at commodity trading adviser — ay nag-iipon ng isang direksyonal na posisyon na istatistikang matindi kumpara sa sarili nitong kasaysayan. Ang kritikal na salita ay relative. Ang isang net long na +100,000 EUR contracts ay hindi likas na matindi; ito ay matindi lamang kung ito ay malayo sa itaas ng tipikal na saklaw ng posisyon ng currency.
Dalawang sukatan ang nagpapatalas sa kahulugang ito sa mga actionable threshold.
Z-Score ng Net Non-Commercial Positioning
Ang pinakamatibay na paraan upang i-normalize ang mga pagbasa ng COT sa iba't ibang currency at yugto ng panahon ay ang rolling z-score. Sinusagot nito ang isang tumpak na tanong: ilang standard deviation sa itaas o sa ibaba ng kamakailang average nito ang kasalukuyang posisyon? Ang paggamit ng 52-linggong window ay nag-uugnay sa benchmark sa kasalukuyang macro regime sa halip na multi-dekadang kasaysayan na maaaring hindi na sumasalamin sa kasalukuyang istraktura ng merkado.
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, ...}
Ang mga pagbasa na higit sa +2.0 o mas mababa sa −2.0 ay naglalagay sa currency sa nangungunang o ilalim na 2.3% ng historical distribution nito. Iyan ang threshold na itinuturing ng artikulong ito bilang "matindi" — sapat na istatistikang hindi pangkaraniwan upang ituring bilang isang structural positioning risk.
Net Position bilang Bahagi ng Open Interest
Sinasabi sa iyo ng z-score kung saan nakalagay ang posisyon sa historical distribution nito. Sinasabi sa iyo ng net-to-open-interest ratio kung gaano nakakonsentra ang directional bet sa loob ng kasalukuyang market depth. Kapag ang non-commercial net positioning ay kumakatawan sa higit sa 25–30% ng kabuuang open interest, ang merkado ay structurally skewed at mataas ang potensyal para sa isang dislocation sa anumang salungat na catalyst.
EUR Futures — Net Non-Commercial Positioning (2023–2026)
Rolling 52-linggong z-score overlay. Ang mga shaded band ay nagmamarka ng matinding threshold (±2σ).
Pinagmulan: CFTC COT data sa pamamagitan ng FXMacroData /v1/cot/eur — naglalarawang historical series
Kasalukuyang Matinding Pagbasa sa mga Pangunahing Currency
Ang cross-currency z-score scan ay masasabing pinakamakapangyarihang lingguhang ritwal na maaaring gawin ng sinumang macro FX trader. Sa pamamagitan ng sabay-sabay na pagraranggo sa lahat ng walong currency futures, agad nitong inilalantad kung aling mga kalakalan ang mainit sa magkabilang panig at kung alin ang nananatili sa isang neutral zone kung saan may espasyo ang macro thesis upang umusad.
COT Positioning Z-Scores — Lahat ng Pangunahing Currency (Abril 2026)
52-linggong rolling z-score. Ang mga pulang bar ay nagpapahiwatig ng matinding short crowding; ang mga berdeng bar ay nagpapahiwatig ng matinding long crowding.
Pinagmulan: CFTC COT data sa pamamagitan ng FXMacroData /v1/cot/{currency} — naglalarawang snapshot
Ang snapshot sa itaas ay nagpapakita ng malinaw na bifurcation sa ispekulatibong sentimyento. Ang JPY short book ang pinakasiksik na posisyon sa complex, na may z-score na −2.4 na mas mababa sa −2.0 danger threshold. Ang EUR longs ay umabot sa +2.1 at papalapit sa punto kung saan ang consensus long ay nagiging sarili nitong panganib. Ang CHF ay nasa −1.7, papalapit sa matinding short territory. Ang CAD at AUD ay kumportableng nakaupo sa neutral zone.
Para sa mga pair trader, ang JPY/EUR divergence ang pinaka-actionable na pagbasa: kung naniniwala ka sa mean reversion, ang kalakalan na may pinakamaraming structural tailwind mula sa positioning unwind ay short EUR/JPY — isang currency na may matinding long EUR exposure sa isang panig at matinding short JPY exposure sa kabilang panig.
Pangunahing Aral: Ang Epekto ng Pairs Multiplier
Kapag ang magkabilang bahagi ng isang currency pair ay may matinding z-scores sa magkasalungat na direksyon, ang inaasahang paggalaw sa isang unwind ay pinagsama-sama. Ang short EUR/JPY na may EUR sa +2.1 at JPY sa −2.4 ay nangangahulugang anumang pagbabago sa sentimyento ay sabay-sabay na nakakaapekto sa magkabilang bahagi. Ang mga historical na episode ng dual-extreme setup na ito ay nagdulot ng matalim at mabilis na paggalaw — madalas 3–5% sa pares sa loob ng ilang linggo mula sa positioning peak.
Ang Anatomy ng isang Pagbaliktad na Dulot ng COT
Ang matinding posisyon ay hindi kusang bumabaliktad. Ito ay kumakalas sa isang pagkakasunod-sunod ng mga natatanging yugto, bawat isa ay may nasusukat na mga signature ng COT. Ang pag-unawa sa istraktura ng yugto ay tumutulong sa iyo na makilala ang pagitan ng isang pansamantalang konsolidasyon at isang tunay na pagbabago ng rehimen.
Yugto 1 — Akumulasyon (Z-Score 0 hanggang ±1.5)
Ang macro thesis ay nagkakaroon ng traksyon. Bawat linggo, ang speculative community ay nagdaragdag sa posisyon nang may kumpiyansa. Ang net contracts ay patuloy na lumalaki, ang open interest ay tumataas, at ang trend sa presyo ay sumasalamin at nagpapatibay sa consensus.
Yugto 2 — Pagsisiksikan (Z-Score ±1.5 hanggang ±2.0)
Ang posisyon ay lumalaki nang mas mabilis kaysa sa nararapat sa presyo. Ang mga bagong kalahok ay sumasali dahil nagtagumpay ang kalakalan, hindi dahil lumakas ang orihinal na thesis. Ang lingguhang deltas sa net positioning ay bumibilis. Ang yugtong ito ay madalas ang pinakamakinabang para sa mga may hawak — ganap na nakatuon ang momentum — ngunit ito rin ang panahon kung kailan nagsisimulang bumuo ang panganib sa paglabas nang hindi nakikita sa background.
Yugto 3 — Pagkaubos (Z-Score lampas sa ±2.0)
Bumabagal ang rate ng pagbuo ng bagong posisyon. Maaaring mag-plateau o magsimulang bumaba ang open interest habang patuloy na gumagalaw ang presyo sa direksyon ng trend. Ang divergence na ito sa pagitan ng pagbagal ng posisyon at patuloy na pagtaas o pagbaba ng presyo ang pinakamahalagang maagang babala na inaalok ng ulat ng COT.
Yugto 4 — Unang Pagkalas (Z-Score na umaatras mula sa matindi)
Dumating ang isang catalyst — isang hindi inaasahang pahayag ng central bank, isang sorpresa sa macro data, isang geopolitical shock — at ang mga pinaka-leveraged na kalahok ay nagsisimulang bawasan ang exposure. Ang z-score ay umaatras mula sa matindi nito, ngunit dahan-dahan sa simula. Ang presyo ay mabilis na bumabaliktad dahil ang mga paglabas ay nakakumpol: lahat ng pumasok sa Yugto 2 ay sabay-sabay na sinusubukang umalis sa iisang pinto.
Yugto 5 — Squeeze (Z-Score na bumabalik patungo sa neutral)
Ang pagkalas ay nagiging self-reinforcing. Bumibilis ang short-covering o long liquidation. Ang mga posisyon na kumita sa malaking bahagi ng trend ay mabilis na nagiging hindi kumikita sa panahon ng squeeze. Ang paggalaw ay madalas na lumalampas sa fair value bago mag-stabilize malapit sa isang bagong neutral positioning regime.
JPY Futures — Net Positioning vs USD/JPY Price (2023–2026)
Dual axis: JPY net non-commercial contracts (kaliwa); USD/JPY spot rate (kanan, inverted). Ang mga matinding posisyon ay umaayon sa mga pangunahing turning point ng pares.
Pinagmulan: CFTC COT data sa pamamagitan ng /v1/cot/jpy at spot rate sa pamamagitan ng /v1/forex/usd/jpy — naglalarawang series
Ang chart sa itaas ay naglalarawan kung paano sinubaybayan ng JPY net short positions ang USD/JPY sa buong reversal cycle. Sa buong 2023 at hanggang sa unang bahagi ng 2024, ang mabigat na ispekulatibong short positioning sa JPY futures ay tumugma sa pagtaas ng trend ng USD/JPY. Ngunit sa bawat pagkakataon na umabot ang posisyon sa isang matinding istatistika, isang catalyst — madalas isang signal ng patakaran ng Bank of Japan — ang mabilis na nagpaliit sa short book, na nagdulot ng matalim na pagtaas ng JPY.
Hindi hinulaan ng data ng COT ang catalyst. Sinabi nito sa iyo na ang posisyon ay napakasiksik kaya anumang salungat na catalyst, anuman ang laki, ay palalakasin ng exit dynamics ng crowd. I-access ang kasaysayan ng posisyon ng JPY sa pamamagitan ng FXMacroData COT endpoint upang subaybayan kung ang kasalukuyang matindi ay bumubuo o lumuluwag.
Ang Signal ng Divergence ng Presyo–Posisyon
Ang pinaka-maaasahang babala ng pagbaliktad na batay sa COT ay hindi ang absolute level ng posisyon — ito ay ang divergence sa pagitan ng direksyon ng presyo at direksyon ng posisyon. Kapag ang presyo ay patuloy sa isang direksyon ngunit ang ispekulatibong posisyon sa underlying futures ay nagsisimulang gumalaw sa kabilang direksyon, ang malalaking kalahok ay binabawasan na ang exposure habang ang mga retail momentum trader ay nagtutulak ng presyo pataas o pababa.
EUR/USD vs EUR COT Net Longs — Pagtukoy sa Divergence
EUR/USD spot (kaliwang axis, asul); EUR net non-commercial contracts sa libo (kanang axis, ginto). Ang mga divergence zone ay may kulay amber.
Pinagmulan: /v1/forex/eur/usd at /v1/cot/eur — naglalarawang series
Mga Panuntunan sa Pagtukoy ng Divergence
- Bearish divergence: Ang presyo ng EUR/USD ay gumagawa ng bagong mataas ngunit ang EUR COT net longs ay nabigo na gumawa ng bagong mataas — ang mga speculator ay nagdi-distribute sa lakas. Bantayan ang isang pagbaliktad sa loob ng 2–6 na linggo.
- Bullish divergence: Ang presyo ng USD/JPY ay gumagawa ng bagong mataas (lalong humihina ang JPY) ngunit ang JPY short contracts ay humihinto sa paglawak — ang mga short seller ay hindi nagdaragdag ng kumpiyansa sa paggalaw. Potensyal na signal ng pagkaubos.
- Kumpirmasyon ng trend: Parehong ang presyo at net positioning ay nagte-trend sa parehong direksyon — buo ang landas ng pinakamaliit na resistensya. Manatili sa trend hanggang sa masira ang kumpirmasyong ito.
Pagsasama-sama ng mga Signal ng COT sa Macro Fundamentals
Ang posisyon ng COT ay isang signal ng istraktura ng merkado, hindi isang fundamental. Ang kapangyarihan nito ay dumarami kapag ito ay umaayon — o sumasalungat — sa pinagbabatayang macro environment. Ang mga setup na may pinakamataas na kumpiyansa ay lumalabas sa dalawang partikular na configuration.
Configuration 1 — Macro Tail Wind, Siksik na Posisyon
Ang fundamental na kaso para sa isang posisyon ay malakas at nauunawaan nang mabuti — ngunit ito ay ganap nang nasasalamin sa matinding ispekulatibong posisyon. Sa kasong ito, limitado ang upside mula sa karagdagang pagpapabuti ng macro dahil ang komunidad ay nakaposisyon na para dito. Ang asymmetry ay nasa downside: kung ang macro data ay bumigo kahit bahagya, ang pagbaliktad ay magiging marahas dahil wala nang mapupuntahan ang crowd.
Inilalarawan nito ang kasalukuyang setup ng EUR. Ang humihinang naratibo ng US dollar at lumalakas na datos ng ekonomiya ng EU ay sumusuporta sa EUR longs sa fundamentals — ngunit ang isang z-score na +2.1 ay nagsasabi sa iyo na malaki sa thesis na ito ay nakapresyo na sa futures positioning. Hindi mali ang kalakalan, ngunit ang risk/reward ay makabuluhang lumiit. Kunin ang EUR macro data kasama ang COT upang i-verify:
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"])
Configuration 2 — Macro Head Wind, Siksik na Posisyon (Pinakamataas na Alerto)
Ito ang setup na may pinakamataas na alerto. Nagsisimulang salungatin ng macro data ang consensus thesis sa parehong oras na ang posisyon ay nasa matindi. Ang isang siksik na kalakalan na nawawalan ng fundamental na pagbibigay-katwiran ay isang resipe para sa isang mabilis at magulong pagkalas. Ang CHF at −1.7 na sinamahan ng anumang sorpresa sa patakaran ng SNB na humahamon sa CHF bear thesis ay magiging isang textbook na halimbawa ng configuration na ito.
Bilis ng Pagbabago ng Posisyon — Lingguhang Net Contract Delta (EUR, JPY, GBP)
Pagbabago linggo-sa-linggo sa net non-commercial contracts. Ang bumabagal na delta sa isang matinding posisyon ay isang maagang signal ng pagkaubos sa Yugto 3.
Pinagmulan: CFTC COT data sa pamamagitan ng FXMacroData — naglalarawang series
Ang bilis ay mahalaga tulad ng antas. Kapag ang mga pagbabago sa net position ay tumatakbo sa +8,000 hanggang +12,000 contracts bawat linggo sa kasagsagan ng akumulasyon ng EUR at bumagal na sa +1,000 hanggang +2,000, ang pagbagal na iyon ay isang objective na signature ng Yugto 3. Nagdaragdag pa rin ang crowd ngunit humihina ang kumpiyansa. Ito ang panahon kung kailan ang panganib ng pagbaliktad ay lumilipat mula sa teoretikal patungo sa nalalapit.
Isang Praktikal na Balangkas ng Pagbaliktad sa Kalakalan
Ang pagsasalin ng mga signal ng COT sa aktwal na kalakalan ay nangangailangan ng istraktura. Ang mga matinding posisyon ay maaaring magpatuloy sa loob ng mga linggo o buwan, at walang garantiya na ang isang matinding pagbasa ay mabilis na babaliktad. Ang sumusunod na balangkas ay gumagamit ng COT bilang isang prerequisite filter, hindi isang tumpak na timing tool.
Hakbang 1 — Mag-screen para sa mga Matindi
Patakbuhin ang lingguhang z-score scan sa lahat ng 8 currency. I-flag ang anumang currency na may |z| > 2.0 bilang kandidato para sa pagsubaybay sa pagbaliktad.
Hakbang 2 — Suriin ang Bilis
Kalkulahin ang lingguhang delta. Kung ang huling 3 linggo ay nagpapakita ng bumabagal na pagdaragdag (|Δ| lumiliit), maaaring nagsisimula na ang yugto ng pagkaubos. Ito ay isang paunang kondisyon para sa pagpasok, hindi isang trigger.
Hakbang 3 — Iayon sa Macro
Suriin ang mga kaugnay na fundamental indicator sa pamamagitan ng FXMacroData. Sinusuportahan ba o sinisira ng macro data ang siksik na thesis? Ang macro tailwind ay nangangahulugang maghintay; ang macro headwind ay nangangahulugang aktibo ang setup.
Hakbang 4 — Maghintay ng Trigger
Huwag kalabanin ang matinding posisyon nang walang trigger. Kasama sa mga trigger ang: sorpresa ng central bank, macro miss, technical break ng key support/resistance, o isang kumpirmadong unang linggo ng net reduction sa COT.
Hakbang 5 — Sukatin para sa Volatility
Ang mga pagbaliktad mula sa siksik na matindi ay mabilis at pabago-bago. Sukatin ang mga posisyon upang matugunan ang mga paunang masamang paggalaw bago magkaroon ng momentum ang pagkalas. Stop loss sa itaas/ibaba ng matinding z-score high/low.
Pagpapawalang-bisa
Kung ang COT ay nagpapakita ng bagong lingguhang record sa matinding direksyon pagkatapos ng pagpasok, mali ang thesis sa maikling panahon. Lumabas at muling suriin. Ang mga siksik na kalakalan ay maaaring maging mas siksik bago sila bumaliktad.
Pagbuo ng isang Lingguhang COT Scanner
Ang praktikal na implementasyon ng balangkas na ito ay isang lingguhang scanner na awtomatikong nagkakalkula ng z-scores at deltas para sa lahat ng walong currency futures at naglalabas ng isang ranked alert table. Narito ang isang production-ready script gamit ang FXMacroData COT endpoint:
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}")
Ang pagpapatakbo nito tuwing Biyernes ng gabi — kaagad pagkatapos ng 3:30 pm Eastern COT release — ay nagbibigay sa iyo ng kumpletong pagbasa ng speculative landscape bago ang weekend at bago ang Asian open sa susunod na Linggo.
I-access ang Tunay na Data ng COT
Nagbibigay ang FXMacroData ng lingguhang CFTC COT positioning para sa lahat ng walong pangunahing currency futures — AUD, CAD, CHF, EUR, GBP, JPY, NZD, at USD — na may kumpletong kasaysayan, malinis na JSON responses, at per-currency endpoints.
Subukan ang EUR endpoint: https://fxmacrodata.com/api/v1/cot/eur?api_key=YOUR_API_KEY