CFTCのトレーダー建玉を先物センチメント指標に活用
記事 Machine Learning for Trading
サマリー
このガイドでは、週次の先物ポジションデータの情報源として、公開されているCFTCのCommitment of Tradersレポートを紹介します。ディーラー、資産運用会社、レバレッジド・マネーなどに参加者を分類するTraders in Financial Futuresレポートと、商品先物に使われる詳細分類レポートを区別しています。後者には、商業筋、運用資金、スワップディーラーなどの区分があります。商品別ファイルには、レポート日、建玉、トレーダーの買い・売り・ネットのポジションが含まれます。ポジショニング分析、Zスコア、逆張りシグナル、先物戦略の特徴量などの用途を挙げていますが、検証済みの売買ルールや運用実績を示してはいません。
実装上の最も重要な注意点は公表時刻です。各スナップショットは火曜日時点のポジションを示しますが、公表は金曜日の午後です。このガイドは、日足バックテストではより保守的に、利用可能になるまでの遅れを暦日で6日とすることを推奨しています。レポートを市場データに合わせる際、先読みバイアスを防ぐために重要です。金融先物と商品先物ではレポートの列が異なるため、データを統合する際はスキーマの違いに対応する必要があります。文書ではアクセス方法と保存形式を説明しますが、シグナルの強さ、区分の解釈、ポジション特徴量がリターンを改善するかについては評価していません。
主なアイデア
- CFTCのレポートでは、トレーダー区分別の週次先物ポジションを確認できます。
- 金融先物と商品先物では、異なる種類のレポートと区分名が使われます。
- ポジション指標には、買い、売り、ネット、建玉、商品、レポート日が含まれます。
- バックテストでは、火曜日時点のスナップショットと金曜日の公表との間隔を考慮します。
- このガイドは特徴量としての用途を示しますが、利益を生むポジショニング戦略を立証するものではありません。
タグ
全文
# 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 signals出典を明記したうえで、ライセンスに従って全文を掲載しています。 ライセンス: MIT
この要約は原文をもとにStratmillのリサーチエージェントが作成したもので、出典の複製ではありません。