CFTC-Händlerpositionen als Futures-Sentimentmerkmale nutzen
Zusammenfassung
Dieser Leitfaden stellt die öffentlichen CFTC-Commitment-of-Traders-Berichte als Quelle wöchentlicher Positionsdaten zu Futures vor. Er unterscheidet den Bericht Traders in Financial Futures, der Teilnehmer wie Händler, Vermögensverwalter und gehebelte Marktteilnehmer kategorisiert, vom aufgeschlüsselten Bericht für Rohstoff-Futures. Dessen Kategorien umfassen Commercials, Managed Money und Swap-Händler. Dateien auf Produktebene enthalten Berichtsdaten, Open Interest sowie Long-, Short- und Netto-Positionen der Händler. Das Material nennt Positionsanalysen, Z-Scores, konträre Signale und Merkmale für Futures-Strategien als mögliche Anwendungen, enthält aber weder eine getestete Handelsregel noch Performancebelege.
Bei der Umsetzung ist vor allem der Veröffentlichungszeitpunkt zu beachten. Jede Momentaufnahme beschreibt Positionen zum Dienstag, wird aber erst am Freitagnachmittag veröffentlicht. Für tägliche Backtests empfiehlt der Leitfaden deshalb eine vorsichtigere Verfügbarkeitsverzögerung von sechs Kalendertagen. Das ist wichtig, um Lookahead-Bias beim Abgleich der Berichte mit Marktdaten zu vermeiden. Die Spalten unterscheiden sich zwischen Finanz- und Rohstoffberichten, daher müssen kombinierte Daten diese Unterschiede im Schema berücksichtigen. Das Dokument erläutert Zugriff und Speicherregeln, bewertet aber weder die Signalstärke noch die Interpretation der Kategorien oder einen möglichen Beitrag der Positionsmerkmale zu den Renditen.
Kernaussagen
- CFTC-Berichte enthalten wöchentliche Futures-Positionen, gegliedert nach Händlerkategorie.
- Für Finanz- und Rohstoff-Futures gelten unterschiedliche Berichtstypen und Kategorienamen.
- Zu den Positionsdaten gehören Long-, Short- und Netto-Positionen, Open Interest, Produkt und Berichtdatum.
- Backtests sollten den Abstand zwischen der Momentaufnahme vom Dienstag und der Veröffentlichung am Freitag berücksichtigen.
- Der Leitfaden nennt mögliche Anwendungen als Merkmale, belegt aber keine profitable Positionsstrategie.
Schlagwörter
Volltext
# Futures Positioning: CFTC Commitment of Traders
# Futures Positioning: CFTC Commitment of Traders
Weekly positioning snapshots (Tuesday; released Friday at 3:30 PM ET) for
CME / ICE / CBOT futures, broken down by trader category. Free and public
domain. Used in Ch4 NB 10 for sentiment/positioning features and in
Ch8 / Ch16 for futures strategy inputs.
## Dataset
| Report type | Trader categories | Products |
| --- | --- | --- |
| TFF (Traders in Financial Futures) | Dealers, Asset Managers, Leveraged Money | Financial futures (ES, NQ, 6E, ZN, …) |
| Disaggregated | Commercials, Managed Money, Swap Dealers | Commodity futures (CL, GC, ZC, …) |
Product mapping + report-type dispatch live in the `ml4t.data.cot` library
(`ml4t.data.cot.PRODUCT_MAPPINGS`). The downloader here wraps that library
and persists one parquet per product to the local data store.
## Download
```bash
# Default: all products in PRODUCT_MAPPINGS, 2020 through current year
uv run python data/futures/positioning/cot_download.py
# Subset of products + longer history
uv run python data/futures/positioning/cot_download.py --products ES,NQ,CL,GC --start-year 2010
# Override output root
uv run python data/futures/positioning/cot_download.py --data-path /tmp/ml4t-data
```
## Directory Layout
```
$ML4T_DATA_PATH/futures/positioning/cot/
└── {PRODUCT}.parquet # one parquet per product code (e.g., ES.parquet)
```
## Schema
Columns vary by report type but always include:
| Column | Notes |
| --- | --- |
| `product` | Exchange product code (ES, CL, GC, …) |
| `report_type` | CFTC report that produced the row |
| `report_date` | Tuesday snapshot date |
| `open_interest` | Total open interest |
Per-trader long/short/net columns by report type:
- **Financial (TFF)**: `dealer_long/short/net`, `asset_mgr_long/short/net`, `lev_money_long/short/net`
- **Commodity (disaggregated)**: `commercial_long/short/net`, `managed_money_long/short/net`, `swap_long/short/net`
## Loading
```python
from data import load_cot, list_cot_products
# Everything available locally
df = load_cot()
# Subset + date filter
df = load_cot(products=["ES", "NQ"], start_date="2020-01-01", end_date="2024-12-31")
# Enumerate what's been downloaded
list_cot_products() # -> ['CL', 'ES', 'GC', 'NQ', ...]
```
`load_cot()` uses `diagonal_relaxed` concat so financial and commodity
products can be combined in one frame despite their different schemas.
## Release Lag
CFTC publishes reports Friday at 3:30 PM ET; the snapshot is as-of
**Tuesday** of the same week (3-day lag). For daily-bar backtests a
conservative +6 calendar-day availability lag from Tuesday is standard.
## Consumers
- **Ch4 NB 10** — positioning analysis, z-scores, contrarian signals
- **Ch8** — futures_features.py (positioning feature family)
- **Ch16** — futures strategies using CoT signalsVollständig mit Quellenangabe unter der Lizenz der Quelle angezeigt. Lizenz: MIT
Diese Zusammenfassung wurde vom Research-Agenten von Stratmill anhand des Originals verfasst; sie ist keine Kopie der Quelle.