COT pozicijos ir perpildyti sandoriai: apsisukimų nustatymas banner image

Trade Views

Market Analysis

COT pozicijos ir perpildyti sandoriai: apsisukimų nustatymas

Kai spekuliacinės pozicijos valiutų ateities sandoriuose pasiekia statistinius kraštutinumus, perpildytas sandoris tampa sava rizika. Naudojant CFTC COT duomenis, šiame straipsnyje parodoma, kaip išmatuoti perpildymą z-įverčiais, nustatyti penkias pozicijų apsisukimo fazes ir sukurti praktinę sistemą prekybai pozicijų uždarymu.

Taip pat prieinama English

COT signalų apžvalga — 2026 m. balandis

JPY — Ypatingai trumpoji pozicija

Grynoji −148 tūkst. kontraktų · Z-įvertis −2.4

EUR — Išplėstinė ilgoji pozicija

Grynoji +112 tūkst. kontraktų · Z-įvertis +2.1

GBP — Vidutiniškai ilgoji pozicija

Grynoji +64 tūkst. kontraktų · Z-įvertis +1.3

AUD — Šiek tiek trumpoji pozicija

Grynoji −18 tūkst. kontraktų · Z-įvertis −0.6

Dviejose iš aštuonių pagrindinių valiutų ateities sandorių rinkų šiuo metu stebimi statistiniai spekuliacinės pozicijos kraštutinumai. JPY grynųjų trumpųjų pozicijų skaičius nukrito žemiau −148 000 — tai yra z-įvertis −2.4, palyginti su pastarųjų 52 savaičių pasiskirstymu — o EUR grynųjų ilgųjų pozicijų skaičius pakilo iki +112 000, z-įvertis +2.1. Kai nekomerciniai prekiautojai taip smarkiai susiburia viena kryptimi, prekyba nustoja būti susijusi su makroekonomine teze ir tampa susijusi su išėjimo rizika.

Šiame straipsnyje aptariama, kas vyksta toliau. Naudodami savaitinius CFTC Commitments of Traders duomenis, nagrinėjame, kaip nustatyti, kada konsensuso sandoris pereina iš "gerai pozicionuoto" į "pavojingai perpildytą", kaip atrodo ankstyvieji pozicijų uždarymo signalai ir kaip sukurti apsisukimo sistemą, pagrįstą COT pozicijų kraštutinumais.

Ką apima šis straipsnis

  • Perpildytų sandorių apibrėžimas ir matavimas naudojant z-įverčius ir grynųjų atvirųjų pozicijų santykius
  • Dabartiniai kraštutiniai rodikliai visose aštuoniose pagrindinėse valiutų ateities sandorių rinkose
  • COT nulemto apsisukimo anatomija — penkios fazės nuo kraštutinumo iki spaudimo
  • COT signalų derinimas su makroekonominiais pagrindais didesnio įsitikinimo sandoriams
  • Praktinė apsisukimo sistema: įėjimo paleidikliai, patvirtinimo signalai ir anuliavimas

Perpildyto sandorio apibrėžimas

Sandoris tampa perpildytas, kai nekomercinė spekuliacinė bendruomenė – rizikos draudimo fondai, turto valdytojai ir žaliavų prekybos patarėjai – sukaupia kryptinę poziciją, kuri yra statistiškai kraštutinė, palyginti su jos pačios istorija. Kritinis žodis yra santykinis. Grynoji ilgoji pozicija, sudaranti +100 000 EUR kontraktų, nėra savaime kraštutinė; ji yra kraštutinė tik tada, jei gerokai viršija tipinį valiutos pozicijų diapazoną.

Du rodikliai patikslina šį apibrėžimą iki veiksmų ribų.

Grynųjų nekomercinių pozicijų Z-įvertis

Pats patikimiausias būdas normalizuoti COT rodmenis įvairiose valiutose ir laikotarpiuose yra slenkantis z-įvertis. Jis atsako į tikslų klausimą: kiek standartinių nuokrypių virš ar žemiau savo pastarojo vidurkio yra dabartinė pozicija? Naudojant 52 savaičių langą, etalonas susiejamas su dabartiniu makroekonominiu režimu, o ne su kelių dešimtmečių istorija, kuri gali nebeatspindėti dabartinės rinkos struktūros.

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, ...}

Rodmenys virš +2.0 arba žemiau −2.0 priskiria valiutą viršutiniams arba apatiniams 2.3% jos istorinio pasiskirstymo. Tai yra riba, kurią šiame straipsnyje laikome "kraštutine" — statistiškai pakankamai neįprasta, kad būtų pažymėta kaip struktūrinė pozicijų rizika.

Grynoji pozicija kaip atvirųjų pozicijų dalis

Z-įvertis parodo, kur pozicija yra jos istoriniame pasiskirstyme. Grynųjų atvirųjų pozicijų santykis parodo, kaip koncentruotas kryptinis statymas dabartiniame rinkos gylyje. Kai nekomercinė grynoji pozicija sudaro daugiau nei 25–30% visų atvirųjų pozicijų, rinka yra struktūriškai iškreipta, o bet kokio priešingo katalizatoriaus sukeltos dislokacijos potencialas yra didelis.

EUR ateities sandoriai — Grynoji nekomercinė pozicija (2023–2026)

Slenkančio 52 savaičių z-įverčio perdanga. Užtamsintos juostos žymi kraštutines ribas (±2σ).

Šaltinis: CFTC COT duomenys per FXMacroData /v1/cot/eur — iliustratyvi istorinė serija

Dabartiniai kraštutiniai rodikliai pagrindinėse valiutose

Kryžminės valiutos z-įverčio skenavimas yra bene galingiausias savaitinis ritualas, kurį gali atlikti bet kuris makro FX prekiautojas. Vienu metu reitinguojant visus aštuonis valiutų ateities sandorius, iš karto paaiškėja, kurie sandoriai yra "įkaitę" abiejose pusėse ir kurie išlieka neutralioje zonoje, kur makroekonominė tezė turi erdvės plėtotis.

COT pozicijų Z-įverčiai — Visos pagrindinės valiutos (2026 m. balandis)

52 savaičių slenkantis z-įvertis. Raudonos juostos rodo ypatingą trumpųjų pozicijų susibūrimą; žalios juostos rodo ypatingą ilgųjų pozicijų susibūrimą.

Šaltinis: CFTC COT duomenys per FXMacroData /v1/cot/{currency} — iliustratyvi momentinė nuotrauka

Aukščiau pateikta momentinė nuotrauka rodo aiškų spekuliacinio sentimentų išsišakojimą. JPY trumpųjų pozicijų portfelis yra labiausiai perpildyta pozicija komplekse, jo z-įvertis −2.4 yra gerokai žemiau −2.0 pavojaus ribos. EUR ilgosios pozicijos pasiekė +2.1 ir artėja prie taško, kai konsensuso ilgoji pozicija tampa sava rizika. CHF yra ties −1.7, artėja prie kraštutinės trumpųjų pozicijų teritorijos. CAD ir AUD patogiai įsitaisę neutralioje zonoje.

Porinių sandorių prekiautojams JPY/EUR divergencija yra labiausiai veiksmingas rodiklis: jei tikite grįžimu prie vidurkio, sandoris, turintis didžiausią struktūrinį postūmį dėl pozicijų uždarymo, yra trumpoji EUR/JPY pozicija — valiuta, turinti kraštutinę ilgąją EUR poziciją vienoje pusėje ir kraštutinę trumpąją JPY poziciją kitoje.

Pagrindinė išvada: porų daugiklio efektas

Kai abi valiutų poros dalys turi kraštutinius z-įverčius priešingomis kryptimis, tikėtinas judėjimas uždarant pozicijas sustiprėja. Trumpoji EUR/JPY pozicija, kai EUR yra +2.1, o JPY −2.4 reiškia, kad bet koks sentimentų pokytis paveikia abi dalis vienu metu. Istoriniai šios dvigubo kraštutinumo konfigūracijos epizodai sukėlė staigius, greitus judesius — dažnai 3–5% poroje per kelias savaites nuo pozicijų piko.

COT nulemto apsisukimo anatomija

Kraštutinė pozicija neapsisuka spontaniškai. Ji uždaroma nuosekliomis, skirtingomis fazėmis, kurių kiekviena turi išmatuojamus COT požymius. Fazių struktūros supratimas padeda atskirti laikiną konsolidaciją nuo tikro režimo pasikeitimo.

1 fazė — Kaupimas (Z-įvertis nuo 0 iki ±1.5)

Makroekonominė tezė įgauna pagreitį. Kiekvieną savaitę spekuliacinė bendruomenė įsitikinusi didina poziciją. Grynųjų kontraktų skaičius nuolat auga, atvirosios pozicijos didėja, o kainos tendencija atspindi ir sustiprina konsensusą.

2 fazė — Perpildymas (Z-įvertis nuo ±1.5 iki ±2.0)

Pozicija auga greičiau, nei pateisina kaina. Nauji dalyviai prisijungia, nes sandoris pasiteisino, o ne todėl, kad sustiprėjo pradinė tezė. Savaitiniai grynųjų pozicijų pokyčiai (deltos) spartėja. Ši fazė dažnai yra pelningiausia turėtojams — impulsas yra visiškai įsitraukęs — tačiau būtent tada išėjimo rizika pradeda nematoma kauptis fone.

3 fazė — Išsekimas (Z-įvertis virš ±2.0)

Naujų pozicijų kūrimo tempas lėtėja. Atvirosios pozicijos gali stabilizuotis arba pradėti mažėti, o kaina toliau juda tendencijos kryptimi. Šis lėtėjančios pozicijos ir besitęsiančio kainos brangimo ar nuvertėjimo skirtumas yra svarbiausias ankstyvojo įspėjimo signalas, kurį siūlo COT ataskaita.

4 fazė — Pirmasis uždarymas (Z-įvertis traukiasi nuo kraštutinumo)

Atsiranda katalizatorius – netikėtas centrinio banko pareiškimas, makroekonominių duomenų staigmena, geopolitinis sukrėtimas – ir labiausiai svertuoti dalyviai pradeda mažinti riziką. Z-įvertis traukiasi nuo savo kraštutinumo, bet iš pradžių lėtai. Kaina staigiai apsisuka, nes išėjimai yra sugrupuoti: visi, kurie įėjo 2 fazėje, bando išeiti vienu metu pro tas pačias duris.

5 fazė — Spaudimas (Z-įvertis grįžta link neutralumo)

Pozicijų uždarymas tampa savaime sustiprinantis. Trumpųjų pozicijų padengimas arba ilgųjų pozicijų likvidavimas spartėja. Pozicijos, kurios buvo pelningos didžiąją tendencijos dalį, spaudimo metu greitai tampa nepelningos. Judėjimas dažnai viršija tikrąją vertę, kol stabilizuojasi netoli naujo neutralaus pozicijų režimo.

JPY ateities sandoriai — Grynoji pozicija vs USD/JPY kaina (2023–2026)

Dviguba ašis: JPY grynųjų nekomercinių kontraktų skaičius (kairėje); USD/JPY momentinis kursas (dešinėje, apverstas). Pozicijų kraštutinumai sutampa su pagrindiniais poros posūkio taškais.

Šaltinis: CFTC COT duomenys per /v1/cot/jpy ir momentinis kursas per /v1/forex/usd/jpy — iliustratyvi serija

Aukščiau pateiktas grafikas iliustruoja, kaip JPY grynųjų trumpųjų pozicijų skaičius sekė USD/JPY per visą apsisukimo ciklą. Per 2023 m. ir 2024 m. pradžioje didelės spekuliacinės trumposios pozicijos JPY ateities sandoriuose atitiko USD/JPY kilimo tendenciją. Tačiau kiekvieną kartą, kai pozicija pasiekdavo statistinį kraštutinumą, katalizatorius – dažnai Japonijos banko politikos signalas – greitai suspausdavo trumpųjų pozicijų portfelį, sukeldamas staigų JPY brangimą.

COT duomenys neprognozavo katalizatoriaus. Jie parodė, kad pozicija buvo tokia perpildyta, jog bet koks priešingas katalizatorius, nepriklausomai nuo dydžio, būtų sustiprintas minios išėjimo dinamikos. Pasiekite JPY pozicijų istoriją per FXMacroData COT galinį tašką, kad stebėtumėte, ar dabartinis kraštutinumas didėja, ar mažėja.

Kainos ir pozicijų divergencijos signalas

Patikimiausias COT pagrindu veikiantis apsisukimo įspėjimas yra ne absoliutus pozicijos lygis — tai yra kainos krypties ir pozicijos krypties divergencija. Kai kaina toliau juda viena kryptimi, bet spekuliacinė pozicija pagrindiniuose ateities sandoriuose pradeda judėti kita kryptimi, dideli dalyviai jau mažina riziką, o mažmeniniai momentiniai prekiautojai stumia kainą aukštyn arba žemyn.

EUR/USD vs EUR COT grynųjų ilgųjų pozicijų skaičius — Divergencijos aptikimas

EUR/USD momentinis kursas (kairė ašis, mėlyna); EUR grynųjų nekomercinių kontraktų skaičius tūkstančiais (dešinė ašis, auksinė). Divergencijos zonos užtamsintos gintaro spalva.

Šaltinis: /v1/forex/eur/usd ir /v1/cot/eur — iliustratyvi serija

Divergencijos aptikimo taisyklės

  • Meškų divergencija: EUR/USD kaina pasiekia naują aukštumą, tačiau EUR COT grynųjų ilgųjų pozicijų skaičius nepasiekia naujos aukštumos — spekuliantai platina į stiprumą. Stebėkite apsisukimą per 2–6 savaites.
  • Jaučių divergencija: USD/JPY kaina pasiekia naują aukštumą (JPY toliau silpnėja), tačiau JPY trumpųjų pozicijų kontraktų skaičius nustoja plėstis — trumpųjų pozicijų pardavėjai neprideda įsitikinimo judėjimui. Potencialus išsekimo signalas.
  • Tendencijos patvirtinimas: Tiek kaina, tiek grynoji pozicija juda ta pačia kryptimi — mažiausio pasipriešinimo kelias yra nepažeistas. Laikykitės tendencijos, kol šis patvirtinimas nutrūks.

COT signalų derinimas su makroekonominiais pagrindais

COT pozicija yra rinkos struktūros signalas, o ne fundamentalus. Jo galia padidėja, kai jis sutampa su pagrindine makroekonomine aplinka arba jai prieštarauja. Didžiausio įsitikinimo konfigūracijos atsiranda dviejose specifinėse situacijose.

1 konfigūracija — Makroekonominis palankus vėjas, perpildyta pozicija

Fundamentinis pozicijos argumentas yra stiprus ir gerai suprantamas – tačiau jis jau visiškai atsispindi kraštutinėje spekuliacinėje pozicijoje. Tokiu atveju, tolesnio makroekonominio pagerėjimo potencialas yra ribotas, nes bendruomenė jau užėmė pozicijas tam. Asimetrija yra neigiama: jei makroekonominiai duomenys nuvils net kukliai, apsisukimas bus smarkus, nes minia neturės kur trauktis.

Tai apibūdina dabartinę EUR situaciją. Silpnėjanti JAV dolerio naratyvas ir stiprėjantys ES ekonominiai duomenys palaiko EUR ilgąsias pozicijas fundamentaliu požiūriu – tačiau z-įvertis +2.1 rodo, kad didžioji dalis šios tezės jau įskaičiuota į ateities sandorių pozicijas. Sandoris nėra klaidingas, tačiau rizikos/atlygio santykis gerokai susiaurėjo. Patikrinkite EUR makroekonominius duomenis kartu su COT, kad patvirtintumėte:

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("Naujausia EUR palūkanų norma:", eur_policy["data"][0])
print("Naujausias EUR VKI:", eur_cpi["data"][0])
print("Naujausias EUR grynasis COT:", eur_cot["data"][0]["noncommercial_net"])

2 konfigūracija — Makroekonominis priešpriešinis vėjas, perpildyta pozicija (aukščiausias įspėjimas)

Tai yra aukščiausio įspėjimo konfigūracija. Makroekonominiai duomenys pradeda prieštarauti konsensuso tezei tuo pačiu metu, kai pozicija yra kraštutinėje padėtyje. Perpildytas sandoris, praradęs savo fundamentalų pagrindimą, yra greito, netvarkingo uždarymo receptas. CHF ties −1.7, kartu su bet kokia SNB politikos staigmena, kuri kvestionuoja CHF meškų tezę, būtų vadovėlinis šios konfigūracijos pavyzdys.

Pozicijų pokyčio greitis — Savaitinis grynųjų kontraktų pokytis (EUR, JPY, GBP)

Savaitinis grynųjų nekomercinių kontraktų pokytis. Lėtėjanti delta esant pozicijos kraštutinumui yra ankstyvas 3 fazės išsekimo signalas.

Šaltinis: CFTC COT duomenys per FXMacroData — iliustratyvi serija

Greitis yra toks pat svarbus kaip ir lygis. Kai grynųjų pozicijų pokyčiai EUR kaupimo piko metu siekė nuo +8 000 iki +12 000 kontraktų per savaitę, o vėliau sulėtėjo iki +1 000–+2 000, šis lėtėjimas yra objektyvus 3 fazės požymis. Minia vis dar didina pozicijas, tačiau įsitikinimas silpnėja. Būtent tada apsisukimo rizika pereina iš teorinės į neišvengiamą.

Praktinė apsisukimo prekybos sistema

COT signalų pavertimas realiais sandoriais reikalauja struktūros. Pozicijų kraštutinumai gali išlikti savaites ar mėnesius, ir nėra garantijos, kad kraštutinis rodiklis greitai apsisuks. Ši sistema naudoja COT kaip išankstinį filtrą, o ne tikslų laiko nustatymo įrankį.

1 žingsnis — Kraštutinumų atranka

Atlikite savaitinį z-įverčio skenavimą visose 8 valiutose. Pažymėkite bet kurią valiutą, kurios |z| > 2.0, kaip kandidatę apsisukimo stebėjimui.

2 žingsnis — Patikrinkite greitį

Apskaičiuokite savaitinę deltą. Jei per pastarąsias 3 savaites matomas lėtėjantis pozicijų didinimas (|Δ| mažėja), gali būti, kad prasidėjo išsekimo fazė. Tai yra išankstinė sąlyga įėjimui, o ne paleidiklis.

3 žingsnis — Suderinkite su makroekonomika

Patikrinkite atitinkamus fundamentinius rodiklius per FXMacroData. Ar makroekonominiai duomenys palaiko, ar griauna perpildytą tezę? Makroekonominis palankus vėjas reiškia laukti; makroekonominis priešpriešinis vėjas reiškia, kad situacija yra aktyvi.

4 žingsnis — Palaukite paleidiklio

Neignoruokite kraštutinės pozicijos be paleidiklio. Paleidikliai apima: centrinio banko staigmeną, makroekonominių duomenų praleidimą, techninį pagrindinio palaikymo/pasipriešinimo lygio pramušimą arba patvirtintą pirmąją grynųjų COT sumažėjimo savaitę.

5 žingsnis — Dydis pagal kintamumą

Apsisukimai nuo perpildytų kraštutinumų yra greiti ir nepastovūs. Pozicijų dydį nustatykite taip, kad būtų galima atlaikyti pradinius nepalankius judesius, kol pozicijų uždarymas įgaus pagreitį. Stop loss virš/žemiau kraštutinio z-įverčio aukščiausio/žemiausio taško.

Anuliavimas

Jei po įėjimo COT rodo naują savaitinį rekordą kraštutine kryptimi, tezė trumpuoju laikotarpiu yra klaidinga. Išeikite ir persvarstykite. Perpildyti sandoriai gali tapti dar labiau perpildyti, kol apsisuks.

Savaitinio COT skenerio kūrimas

Praktinis šios sistemos įgyvendinimas yra savaitinis skeneris, kuris automatiškai apskaičiuoja z-įverčius ir deltas visoms aštuonioms valiutų ateities sandorių rinkoms ir pateikia reitinguotą įspėjimų lentelę. Štai paruoštas naudojimui scenarijus, naudojantis FXMacroData COT galinį tašką:

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}")

Paleidus tai kiekvieną penktadienio vakarą – netrukus po 15:30 val. Rytų laiku COT ataskaitos paskelbimo – gausite išsamią spekuliacinės aplinkos apžvalgą prieš savaitgalį ir prieš Azijos rinkų atidarymą kitą sekmadienį.

Pasiekite realius COT duomenis

FXMacroData teikia savaitinius CFTC COT pozicijų duomenis visoms aštuonioms pagrindinėms valiutų ateities sandorių rinkoms – AUD, CAD, CHF, EUR, GBP, JPY, NZD ir USD – su visa istorija, aiškiais JSON atsakymais ir atskirų valiutų galiniais taškais.

Išbandykite EUR galinį tašką: https://fxmacrodata.com/api/v1/cot/eur?api_key=YOUR_API_KEY

Blogroll