# CFTC Commitments of Traders (COT) Report Tracker (`gochujang/cftc-cot-tracker`) Actor

Track CFTC COT positioning data for crypto, commodities, currencies, and rates. Speculators vs hedgers net positions, open interest, weekly changes, and sentiment signals. Free public data, no API key required.

- **URL**: https://apify.com/gochujang/cftc-cot-tracker.md
- **Developed by:** [Hojun Lee](https://apify.com/gochujang) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 market cot reports

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### CFTC Commitments of Traders (COT) Report Tracker

Track **CFTC Commitments of Traders** positioning data for Bitcoin, Ether, gold, crude oil, currencies, and rates — directly from the official US Commodity Futures Trading Commission public API. No API key required. Data is published weekly every Friday at 3:30 PM ET and covers all regulated US futures markets.

The COT report is one of the most widely watched "smart money" indicators among professional traders. It reveals how commercial hedgers (producers, banks) vs. non-commercial speculators (hedge funds, CTAs) are positioned in futures markets — and historically, extreme speculator positioning has been a reliable contrarian signal.

### What You Get

Each record represents one weekly COT report for one market:

- **report_date** — ISO 8601 date (every Tuesday as of that week)
- **market** — full CFTC market name (e.g., "BITCOIN - CHICAGO MERCANTILE EXCHANGE")
- **report_type** — `futures_only` or `combined` (futures + options)
- **cftc_code** — CFTC contract market code

#### Non-Commercial (Large Speculators — Hedge Funds, CTAs)

- **noncomm_long** — total long contracts held by speculators
- **noncomm_short** — total short contracts held by speculators
- **noncomm_net** — net position (long − short); positive = net long = bullish
- **noncomm_net_change** — week-over-week change in net position
- **noncomm_spreading** — spreading (long one contract month, short another)

#### Commercial (Hedgers — Producers, Banks, End Users)

- **comm_long** — commercial long contracts
- **comm_short** — commercial short contracts
- **comm_net** — commercial net position (usually opposite of speculators)

#### Market Totals

- **open_interest** — total open contracts across all participants
- **open_interest_change** — weekly OI change
- **sentiment** — derived signal: `"bullish"`, `"bearish"`, or `"neutral"` based on speculator net positioning

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `markets` | array | 10 major markets | Market name keywords (partial match). E.g., `"BITCOIN"`, `"GOLD"`, `"EURO FX"` |
| `weeks` | integer | `12` | Weeks of history per market (max 52) |
| `reportType` | string | `"futures_only"` | `"futures_only"` or `"combined"` (futures + options) |

### Sample Output

```json
{
  "report_date": "2025-01-07",
  "market": "BITCOIN - CHICAGO MERCANTILE EXCHANGE",
  "report_type": "futures_only",
  "cftc_code": "133741",
  "noncomm_long": 8421,
  "noncomm_short": 2180,
  "noncomm_net": 6241,
  "noncomm_net_change": 312,
  "noncomm_spreading": 142,
  "comm_long": 1834,
  "comm_short": 7919,
  "comm_net": -6085,
  "open_interest": 18473,
  "open_interest_change": 547,
  "sentiment": "bullish"
}
```

### How to Read COT Data

The **non-commercial (speculator) net position** is the primary signal most traders watch:

- **Rising speculator net longs** → growing bullish momentum. When extreme, can signal a crowded long trade that may reverse
- **Falling speculator net longs / increasing shorts** → bearish positioning. Extreme short positioning historically precedes recoveries
- **Commercial net position** runs opposite to speculators — hedgers short when they produce (e.g., oil producers selling forward), so commercial shorts are structurally bearish for price

The **open interest** level reveals how many participants are engaged. Falling OI during a price move suggests the trend is weakening. Rising OI confirms commitment.

### Default Markets

The actor tracks 10 major markets by default: Bitcoin, Ether, Gold, Silver, Crude Oil, Natural Gas, Euro FX, Japanese Yen, 10-Year Treasury Notes, and Copper. Any CFTC-regulated market can be added by keyword.

### Use Cases

- **Crypto COT analysis** — track institutional Bitcoin and Ether futures positioning on CME
- **Contrarian signals** — identify extreme speculator long/short crowding as a mean-reversion indicator
- **Commodities research** — monitor gold, oil, agricultural market positioning
- **FX carry and momentum** — use speculator positioning in EUR, JPY, GBP as trend confirmation
- **Rates market insight** — track hedge fund positioning in Treasuries vs. bond market moves
- **Systematic quant factors** — COT data is a component in many trend-following CTA models
- **Sentiment dashboards** — track how market sentiment evolves week-to-week across asset classes

### Data Update Schedule

CFTC publishes new COT data every **Friday at 3:30 PM ET**, reflecting positions as of the prior Tuesday. Schedule this actor to run Fridays after 4:00 PM ET to capture the latest report. Weekend runs produce no new data.

### Pricing

Pay-per-event: **$0.002 per market report** — default 10 markets = $0.02 per run. 12 weeks of history for 10 markets = $0.20.

### FAQ

**Where does the data come from?**
The CFTC (Commodity Futures Trading Commission) publishes COT data weekly at publicreporting.cftc.gov via the Socrata open data API. Data is official, free, and updated every Friday. No API key is required.

**What is the difference between futures-only and combined?**
Futures-only includes only outright futures contracts. Combined adds options on futures (delta-adjusted to an equivalent futures position). For markets with liquid options (like S\&P 500 or gold), combined gives a more complete picture of total exposure.

**Why are commercial traders net short in most commodity markets?**
Producers (oil companies, farmers, miners) use futures to hedge their production. If you produce 1 million barrels of oil, you sell futures to lock in price — so commercial traders are structurally short in commodity markets. This is normal, not bearish.

**Can I get historical COT data going back further?**
The CFTC Socrata API covers data back to the 1980s for most markets. Set `weeks` to 52 for the maximum 1-year window per request.

***

### Related actors

- [CBOE Volatility Tracker](https://apify.com/gochujang/cboe-volatility-tracker) — VIX put/call ratio to pair with COT speculator positioning signals
- [Binance Futures Sentiment](https://apify.com/gochujang/binance-futures-sentiment) — Crypto-specific futures sentiment to complement CME Bitcoin COT data
- [Federal Reserve Rate Probability](https://apify.com/gochujang/fed-rate-probability) — Interest rate context for COT positioning in Treasury and currency futures

### Feedback

If this actor powers your positioning research, a review helps others find it: [Leave a review on Apify Store](https://apify.com/gochujang/cftc-cot-tracker#reviews)

***

**Keywords:** CFTC COT report, commitment of traders crypto, speculator positioning, futures open interest, hedgers vs speculators, COT sentiment signal, commodity futures positioning, Bitcoin CME futures positioning, currency futures COT, institutional futures tracking, net long short positioning, COT data scraper

# Actor input Schema

## `markets` (type: `array`):

List of market name keywords to search. Partial match supported. Examples: 'BITCOIN', 'GOLD', 'EURO FX', 'CRUDE OIL'. Defaults to 10 major markets.

## `weeks` (type: `integer`):

Number of weekly COT reports to return per market (max 52 = 1 year).

## `reportType` (type: `string`):

Choose between futures-only COT or combined futures+options COT.

## Actor input object example

```json
{
  "markets": [
    "BITCOIN",
    "ETHER",
    "GOLD",
    "SILVER",
    "CRUDE OIL, LIGHT SWEET",
    "NATURAL GAS",
    "EURO FX",
    "JAPANESE YEN",
    "10-YEAR U.S. TREASURY NOTES",
    "COPPER"
  ],
  "weeks": 12,
  "reportType": "futures_only"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("gochujang/cftc-cot-tracker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("gochujang/cftc-cot-tracker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call gochujang/cftc-cot-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gochujang/cftc-cot-tracker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/IkcB620Ub1EAbFRAQ/builds/CLfuc2DEB9QBnsgFn/openapi.json
