Jak czytać raport COT: wyjaśnienie kolumn i danych
Analiza struktury raportu COT oraz znaczenie kolumn w zestawieniach legacy, disaggregated i TFF. Instrukcja obliczania pozycji netto oraz omówienie dwóch istotnych limitów danych.
Zrozumienie raportu COT
Nauka interpretacji raportu COT rozpoczyna się od jego struktury: Commitments of Traders to publikowane co tydzień przez Commodity Futures Trading Commission zestawienie otwartych pozycji na kontraktach terminowych, z podziałem na kategorie inwestorów. Każda komórka zawiera liczbę kontraktów, a nie cenę czy prognozę. Niniejsza strona zakłada znajomość harmonogramu, omówionego w terminach publikacji raportu COT, i wyjaśnia znaczenie kolumn, sposób obliczania pozycji netto oraz dwa limity, o których warto wspomnieć.
Co faktycznie mierzy raport COT
Każda liczba oznacza liczbę kontraktów, zestawioną na podstawie raportów o pozycjach, które członkowie izb rozliczeniowych oraz giełdy przekazują do CFTC. Rachunek trafia do zestawienia tylko po przekroczeniu progu raportowania, ustalanego odrębnie dla każdego rynku, a wszystkie pozycje poniżej tego poziomu są sumowane w jednej kategorii zbiorczej. Większość nieporozumień wynika z trzech mechanizmów:
- Pozycje długie i krótkie raportowane są oddzielnie i w obu przypadkach są to wartości brutto. Firma posiadająca cztery tysiące pozycji długich i trzy tysiące krótkich widnieje w obu kolumnach, a nie jako pozycja netto wynosząca tysiąc.
- Spreadowanie stanowi odrębną kolumnę dla kategorii spekulacyjnych: są to równe i znoszące się wzajemnie pozycje długie i krótkie na tym samym rynku, liczone jako jedna pozycja.
- Open interest to łączna liczba kontraktów pozostających w obrocie w danym dniu. Suma pozycji długich we wszystkich kategoriach jest równa tej wartości, podobnie jak suma pozycji krótkich.
Raport typu legacy: podmioty komercyjne, niekomercyjne i niepodlegające raportowaniu
Jest to najstarszy format, wciąż najczęściej cytowany w opracowaniach. Klasyfikuje on traderów podlegających obowiązkowi raportowania do dwóch grup, a pozostałych zalicza do trzeciej kategorii.
- Podmioty komercyjne (commercial): rachunek, którego właściciel poinformował CFTC o wykorzystywaniu rynku do zabezpieczania ekspozycji biznesowej. Przykładem może być elewator zbożowy, rafineria lub bank zabezpieczający portfel swapów.
- Podmioty niekomercyjne (non-commercial): rachunek podlegający raportowaniu, który nie deklaruje celu zabezpieczającego. W tej grupie znajdują się duzi spekulanci oraz programy typu managed futures.
- Podmioty niepodlegające raportowaniu (non-reportable): wszyscy uczestnicy rynku poniżej progu raportowania. Dane te wylicza się jako różnicę między całkowitym otwartym zainteresowaniem (open interest) a sumą pozycji długich i krótkich podmiotów raportujących, zamiast zbierać je bezpośrednio.
Klasyfikacja opiera się na deklaracji złożonej w odpowiednim formularzu. Firma posiadająca zarówno dział hedgingowy, jak i spekulacyjny, jest klasyfikowana zgodnie ze swoją dominującą działalnością.
Raport w podziale szczegółowym: cztery kategorie zamiast dwóch
W przypadku towarów fizycznych CFTC publikuje również wersję w podziale szczegółowym, dzieląc dotychczasową grupę podmiotów komercyjnych na dwie oraz grupę podmiotów niekomercyjnych również na dwie.
- Producent, handlowiec, przetwórca, użytkownik: uczestnicy rynku fizycznego zabezpieczający zapasy lub produkcję.
- Dealer swapowy: podmiot, którego pozycja na kontraktach futures stanowi zabezpieczenie swapów zawartych z klientami; klienci ci mogą być zarówno podmiotami zabezpieczającymi się, jak i spekulantami, zatem ta kategoria stanowi zagregowany przepływ realizowany przez jednego kontrahenta.
- Zarządzający kapitałem (managed money): doradcy ds. handlu towarami, operatorzy funduszy typu pool oraz fundusze hedgingowe inwestujące w imieniu klientów; jest to kategoria najbardziej zbliżona do podążania za trendem.
- Pozostałe podmioty raportujące: duże rachunki, które nie kwalifikują się do żadnej z powyższych grup.
Raport TFF: kategorie kontraktów terminowych na instrumenty finansowe
W przypadku obligacji skarbowych, indeksów giełdowych oraz walut, raport Traders in Financial Futures (TFF) stosuje czwartą klasyfikację:
- Dealer/pośrednik: strona podażowa, banki i dealerzy, którzy zazwyczaj przejmują drugą stronę transakcji klientów, zamiast zajmować pozycję wynikającą z własnej prognozy rynkowej.
- Zarządzający aktywami/instytucje: fundusze emerytalne, ubezpieczyciele, fundusze inwestycyjne oraz fundacje kapitałowe.
- Fundusze lewarowane: fundusze hedgingowe oraz CTA; jest to kategoria, którą większość osób ma na myśli, mówiąc, że „fundusze są na krótkiej pozycji”.
- Pozostałe podmioty raportujące: duże rachunki podlegające raportowaniu, które nie mieszczą się w trzech powyższych kategoriach.
TFF stanowi odmienny podział tego samego otwartego zainteresowania (open interest), a nie alternatywną interpretację danych z tabeli tradycyjnej, dlatego jego kategorie nie przekładają się jeden do jednego na podział na podmioty komercyjne i niekomercyjne.
Jak obliczyć pozycję netto na podstawie raportu COT
Wartość netto jest prosta do wyliczenia: to długie pozycje minus krótkie pozycje w ramach jednej kategorii. Pozycje typu spread z założenia znajdują się poza obiema stronami, a w całym raporcie sumy netto dla poszczególnych kategorii wynoszą zero, ponieważ każdemu kontraktowi długiemu odpowiada kontrakt krótki.
Błędy w interpretacji wynikają z używania surowej wartości netto. Wynik na poziomie dwustu tysięcy kontraktów oznacza co innego przy otwartych pozycjach wynoszących osiemset tysięcy, a co innego przy czterech milionach. Rozwiązaniem jest dzielenie: wartość netto przez liczbę otwartych pozycji daje udział danej kategorii, co pozwala na porównania w czasie oraz między różnymi kontraktami.
Pozycjonowanie CFTC nie zostało ujęte w poniższych panelach, dlatego te same obliczenia wykonano dla danych, które można pobrać samodzielnie. Zestawienie zlicza kontrakty call i put na AAPL w każdym miesiącu, a następnie przedstawia różnicę dwukrotnie: w ujęciu surowym oraz jako udział w miesięcznym wolumenie całkowitym. Jest to mechanizm stojący za sposobem obliczania wskaźnika put/call.
W Jan 2024 wartość netto wyniosła 3294 tysięcy kontraktów, co stanowiło 18.9% całkowitego wolumenu z tego miesiąca. W Jun 2026 wartość netto wyniosła 4671 tysięcy, czyli 27.7%. W ciągu wszystkich 30 miesięcy surowa wartość netto rośnie i spada wraz z aktywnością rynkową, podczas gdy wskaźnik udziału eliminuje ten czynnik, dokładnie tak samo jak wartość netto w raporcie COT w odniesieniu do liczby otwartych pozycji.
Dlaczego percentyl jest bardziej miarodajny niż surowa wartość netto
Gdy wartość netto zostanie przeliczona na udział, kolejnym krokiem jest analiza historyczna. Kategoria posiadająca dwanaście procent otwartych pozycji jest wysoka lub niska tylko w odniesieniu do własnych notowań danego rynku. Standardowym ujęciem jest percentyl w wieloletnim horyzoncie czasowym: ułamek przeszłych obserwacji, które są równe lub niższe od bieżącego odczytu.
Akcje amerykańskie posiadają własną taśmę pozycjonowania. Dane FINRA dotyczące krótkiej sprzedaży raportują liczbę akcji sprzedanych na krótko dwa razy w miesiącu, a wskaźnik dni do pokrycia (days to cover) dzieli tę liczbę przez średni dzienny wolumen, co stanowi ten sam zabieg normalizacyjny, jaki wykonuje się dla wartości netto względem otwartych pozycji. Poniższy panel przypisuje sześć znanych spółek do ich najnowszych odczytów, a następnie szereguje każdą z nich w ramach jej własnych pięciu lat.
Dokładny kod SQL dla każdej liczby
WITH history AS
(
SELECT
ticker,
settlement_date,
max(toFloat64(days_to_cover)) AS dtc,
max(toFloat64(short_interest)) AS si
FROM global_markets.stocks_short_interest
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'XOM', 'JNJ')
AND settlement_date >= today() - 1825
AND days_to_cover > 0
GROUP BY ticker, settlement_date
),
latest AS
(
SELECT
ticker,
argMax(dtc, settlement_date) AS latest_dtc,
argMax(si, settlement_date) AS latest_si,
toString(max(settlement_date)) AS snapshot_label
FROM history
GROUP BY ticker
)
SELECT
l.ticker AS symbol,
l.snapshot_label AS snapshot_label,
round(l.latest_si / 1e6, 1) AS short_interest_millions,
round(l.latest_dtc, 2) AS days_to_cover_ratio,
round(100 * countIf(h.dtc <= l.latest_dtc) / count(), 0) AS percentile_5y_pct
FROM history AS h
INNER JOIN latest AS l ON h.ticker = l.ticker
GROUP BY l.ticker, l.snapshot_label, l.latest_si, l.latest_dtc
ORDER BY percentile_5y_pct DESCNajwyższa z sześciu spółek, NVDA, znajduje się na 100 percentylu swojego pięcioletniego zakresu z wynikiem 2.47 dni do pokrycia. Najniższa, XOM, znajduje się na 76 percentylu. Kolumna z surową liczbą akcji sprzedanych na krótko wskazuje 324.1 miliona wobec 42.7 miliona, przy czym kolumna ta odzwierciedla bardziej wielkość spółki niż pozycjonowanie, dlatego nie można jej porównywać między różnymi podmiotami. Podobnie jest z wartością netto COT w różnych kontraktach.
Percentyl zmienia się również przy stałej wartości surowej, i odwrotnie. Śledzenie jednej spółki na przestrzeni trzech lat czyni to widocznym.
Dokładny kod SQL dla każdej liczby
WITH history AS
(
SELECT
settlement_date AS d,
max(toFloat64(days_to_cover)) AS dtc
FROM global_markets.stocks_short_interest
WHERE ticker = 'AAPL'
AND settlement_date >= '2023-07-01'
AND settlement_date < '2026-07-01'
AND days_to_cover > 0
GROUP BY settlement_date
)
SELECT
toString(a.d) AS settlement_date,
formatDateTime(a.d, '%b %e, %Y') AS as_of_label,
round(a.dtc, 2) AS days_to_cover_ratio,
round(100 * countIf(b.dtc <= a.dtc) / count(), 0) AS window_percentile_pct
FROM history AS a
CROSS JOIN history AS b
GROUP BY a.d, a.dtc
ORDER BY a.dW ciągu 72 odczytów publikowanych dwa razy w miesiącu wskaźnik utrzymuje się w wąskim przedziale, podczas gdy linia percentyla obejmuje większość zakresu od zera do stu. Ostatni odczyt z dnia Jun 30, 2026 wyniósł 1.73 dni do pokrycia, co odpowiada 17 percentylowi w danym oknie czasowym.
Dwa limity w prostym ujęciu
Migawka z wtorku dociera w piątek
Pozycje odzwierciedlają stan na zamknięciu wtorkowej sesji, a raport jest publikowany w piątek po południu. Oznacza to, że w momencie otrzymania dane są już trzy sesje nieaktualne, a kategorie, które odwróciły trend w środę, prezentują stan sprzed zmiany. Poniższe zestawienie mierzy dystans, jaki pokonał SPY od wtorkowego zamknięcia do kolejnego zamknięcia w piątek.
Dokładny kod SQL dla każdej liczby
WITH spy AS
(
SELECT
date,
toFloat64(close) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2016-01-01'
AND date < '2026-07-01'
)
SELECT
toString(toYear(tue.date)) AS year,
count() AS session_pair_count,
round(quantileDeterministic(0.5)(abs(fri.close_px / tue.close_px - 1) * 100,
toUInt64(toUnixTimestamp(tue.date))), 2) AS median_gap_move_pct,
round(quantileDeterministic(0.9)(abs(fri.close_px / tue.close_px - 1) * 100,
toUInt64(toUnixTimestamp(tue.date))), 2) AS p90_gap_move_pct
FROM spy AS tue
INNER JOIN spy AS fri ON fri.date = tue.date + 3
WHERE toDayOfWeek(tue.date) = 2
GROUP BY year
ORDER BY yearW 2016, w ramach 51 par wtorek-piątek, mediana ruchu bezwzględnego wyniosła 0.88%, a najgorsza dziesiąta część luk pokryła co najmniej 2.2%. W 2026 mediana wyniosła 1.26%. Kontrakty terminowe na indeksy akcji ściśle podążają za tym trendem, więc piątkowy odczyt COT opisuje rynek, który już wykonał ruch. Dane o pozycjonowaniu dotyczą minionego wtorku, a nie stanu obecnego.
Przekonanie, że „komercyjni zawsze mają rację”, to mit
Na wielu rynkach towarowych kategoria podmiotów komercyjnych jest strukturalnie krótka, ponieważ producenci zabezpieczają produkcję, którą już posiadają. Ujemna pozycja netto w niemal każdym tygodniu dekady jest cechą klasyfikacji, a nie wynikiem inwestycyjnym. Przekształcenie dowolnej kategorii COT w prognozę wymaga określenia horyzontu czasowego, ustalonego progu, próby obejmującej okresy niepowodzeń oraz rzetelnego wyliczenia, ile progów przetestowano przed wyborem właściwego. Ta sama dyscyplina dotyczy każdego wskaźnika pozycjonowania tłumu, w tym tego omówionego w czy wysoki wskaźnik put/call jest sygnałem wzrostowym.
Samodzielna analiza surowych danych CFTC
Do tego celu nie są potrzebne płatne wskaźniki dywergencji. CFTC publikuje cotygodniowy raport na własnej stronie Commitments of Traders. Dane są dostępne w formacie krótkim i długim, w wariantach obejmujących wyłącznie kontrakty futures oraz kontrakty futures i opcje łącznie. Pliki w formacie tekstowym z separatorem przecinkowym zawierają również archiwa historyczne sięgające roku tysiąc dziewięćset osiemdziesiątego szóstego. Dwa nawyki pozwalają zachować rzetelność arkusza kalkulacyjnego: należy wybrać jeden wariant i konsekwentnie się go trzymać, ponieważ liczby dla kontraktów futures oraz wariantu łączonego różnią się dla tego samego tygodnia, a także obliczać percentyl udziału, a nie surową wartość netto.
FAQ
Co oznaczają kategorie „commercial” oraz „non-commercial” w raporcie COT?
Podmioty typu „commercial” deklarują przed CFTC, że wykorzystują rynek do zabezpieczenia ekspozycji biznesowej, na przykład producent zabezpieczający wielkość produkcji lub bank zabezpieczający portfel swapów. Podmioty typu „non-commercial” to rachunki podlegające obowiązkowi raportowania, które nie wykazują takiego celu zabezpieczającego; są to głównie duzi spekulanci oraz programy typu managed futures. Klasyfikacja ta opiera się na deklaracji własnej podmiotu.
Czy raport COT jest opóźniony?
Tak. Pozycje są rejestrowane na zamknięciu wtorkowej sesji i publikowane w piątek po południu, zatem w momencie dotarcia do odbiorcy dane są przestarzałe o trzy sesje.
Czy istnieje raport COT dla akcji?
Nie dla pojedynczych spółek. Najbliższymi odpowiednikami są publikowane dwa razy w miesiącu dane o krótkiej sprzedaży oraz comiesięczne statystyki zadłużenia z tytułu depozytów zabezpieczających FINRA. Oba zestawienia docierają z opóźnieniem i lepiej interpretować je jako percentyl niż jako surową wartość całkowitą.
Każdy panel w tym miejscu zawiera kod SQL, który wygenerował dane. Wystarczy otworzyć panel, zmienić ticker, a terminal Strasmore wykona te same obliczenia dla dowolnego instrumentu.