Methodology

3D COT Scoring Engine

Every indicator on this platform is derived from the CFTC Disaggregated Commitments of Traders report. Three independent dimensions — Bias, Pressure, Conviction — are computed each week and combined into a Signal score, a quality Grade and a Pattern label. Nothing is hidden.

CFTC Disaggregated Futures23 assets16+ years of historyUpdated every Friday

Data Source

FX + Crypto

CFTC Disaggregated Financial Futures

File: f_all_YYYY.xls — released weekly at cftc.gov. Contains 4 operator categories: Asset Managers, Leveraged Funds, Dealer/Intermediary, Other Reportables, Non-Reportable.

Commodities

CFTC Disaggregated Commodity Futures

File: c_disagg_xls_YYYY.zip — same release. Contains: Producer/Merchant/Processor, Swap Dealers, Managed Money, Other Reportables, Non-Reportable.

Data lag: CFTC reports positioning as of Tuesday each week and publishes on Friday (~16:00 ET). Inherent 3-day lag.

The Three Dimensions

01Bias−100 → +100

Where institutions are positioned and how extreme — relative to their own 3-year history.

BIAS = clamp( 0.6 × bias_pct + 0.4 × (z_bias / 2.5 × 100), −100, +100 )
net_pctsmart_net / OI — smart money net position as fraction of open interest
bias_pct(percentile_rank_156w − 50) × 2 → maps 0–100th percentile to −100..+100
z_biasclamp( (net_pct − mean_156w) / std_156w, −2.5, +2.5 ) → z-score within same window
blend60% percentile rank + 40% z-score → dominant trend + extremity signal

·Smart money = Asset Managers for FX / Crypto, Managed Money for Commodities

·Rolling window: 156 weeks (≈ 3 years). Minimum 2 data points for a valid z-score

·OI floor at 1 to prevent division by zero

02Pressure−100 → +100

How fast positioning is flowing — direction and acceleration of institutional flows week-over-week.

PRESSURE = clamp( (0.75 × pressure_z + 0.25 × accel_z) / 2.5 × 100, −100, +100 )
flow_t(smart_net_t − smart_net_{t−1}) / OI_t → OI-normalised weekly flow change
flow_emaEMA(flow, span=4, adjust=False) → smoothed 4-week flow signal
pressure_zclamp( flow_ema / rolling_std(flow, 26w), −2.5, +2.5 )
accelflow_ema_t − flow_ema_{t−1} → rate of change of momentum
accel_zclamp( accel / rolling_std(accel, 26w), −2.5, +2.5 )

·Positive = institutions adding longs or covering shorts. Negative = adding shorts or liquidating longs

·EMA span=4 filters noise while capturing regime shifts within 4–6 weeks

·Rolling std window: 26 weeks. Min periods: 2

03Conviction0 → 100

How much to trust the signal — four independent measures of signal reliability combined into one score.

CONVICTION = clamp( 0.35×align + 0.25×op_agree + 0.20×persistence + 0.20×participation, 0, 100 )
align (35%)√(|BIAS| × |PRESSURE|) if same sign, else 0. Geometric mean: penalises disagreement non-linearly
op_agree (25%)Pearson corr(smart_net, secondary_net, 13W) → mapped [−1,+1] to [0,100]. Requires ≥13 weeks and std > 0
persistence (20%)R² of linear regression of net_pct over last 8 weeks × 100. Measures trend cleanliness
participation (20%)breadth_pct × (1 − conc_pct/100). Breadth = trader-count percentile vs 156w; concentration = |net| / dominant_exposure

·Secondary operator: Leveraged Funds (FX), Other Reportables (Commodity)

·op_agree defaults to 50 (neutral) if fewer than 13 weeks of data

·persistence defaults to 0 if fewer than 2 weekly data points

Composite Outputs

Signal−100 → +100
Signal = ((BIAS + PRESSURE) / 2) × (CONVICTION / 100)

The headline directional score. Combines the directional average of Bias and Pressure, scaled down by Conviction. High absolute value = strong, reliable signal.

GradeA+ → D
|Signal| ≥ 60 → A+ | ≥ 45 → A | ≥ 30 → B | ≥ 15 → C | < 15 → D

Setup quality from |Signal|. Capped at C if fewer than 26 weeks of history. Only A+ and A setups appear in Trade Ideas.

Pattern6 states
Derived from |BIAS|, sign alignment of BIAS/PRESSURE, and Pressure acceleration

Auto-detected positioning state describing the current institutional regime.

Positioning Patterns

Six states automatically detected from the relationship between Bias, Pressure and their magnitudes.

Pattern
Condition
Rev. Risk
Interpretation
Trending
Bias and Pressure same sign, both above threshold
Low
Institutional trend in progress with flow confirmation.
Early Trend
|BIAS| < 60 and |PRESSURE| ≥ 40, same sign
Low
New institutional flow before positioning becomes extreme. Preferred entry zone.
Late Trend
|BIAS| ≥ 80, same sign as Pressure, Pressure decelerating
Medium
Positioning near extremes, momentum fading. Carry risk of mean reversion.
Reversal Risk
|BIAS| ≥ 80, Pressure opposite sign
High
Extreme positioning with counter-flow. Classic reversal setup — avoid new entries in trend direction.
Transition
Bias and Pressure opposite signs, neither extreme
Medium
Regime change in progress. Avoid directional conviction until resolved.
Neutral
|Signal| < 15
No dominant institutional signal. No actionable edge from COT data alone.

Operator Categories

The CFTC Disaggregated report separates futures participants into five reporting categories. Understanding who is who is critical to interpreting the signals correctly.

🟠Asset Managers
FX/Crypto — Smart Money

Large institutions: pension funds, asset managers, sovereign wealth funds. Long horizon, fundamentals-driven. Their net positioning is the primary signal for FX.

🟠Managed Money
Commodity — Smart Money

Hedge funds, CTAs trading commodity futures. The equivalent of Asset Managers in the commodity space. Primary signal for metals, energy, grains, softs.

Leveraged Funds
FX/Crypto — Speculative

Hedge funds and CTAs in FX. More reactive and momentum-driven. Used as secondary operator for FX conviction.

🔵Swap Dealers
FX — Hedger

OTC swap dealers hedging client exposures. Often contrarian to directional trend.

🔵Prod/Merchant
Commodity — Commercial

Physical commodity producers (oil companies, mines, farms). Hedge future production — structurally short.

🔴Non-Reportable
Retail

Positions below CFTC reporting threshold. Proxy for retail sentiment — often used as contrarian indicator.

Grade Thresholds

Grade
|Signal| threshold
Frequency (all-time)
Action
A+
≥ 60
~0.0%
Highest priority — all dimensions strongly aligned
A
≥ 45
~0.3%
High priority — strong signal with good conviction
B
≥ 30
~3.0%
Monitor — notable signal, not peak conviction
C
≥ 15
~20%
Weak signal — context only, not standalone
D
< 15
~76%
No actionable signal from COT alone

Grade is capped at C for assets with fewer than 26 weeks of history. A+/A grades are rare by design — they mark statistically exceptional institutional alignment.

Limitations & Honest Caveats

3-day reporting lag

CFTC data reflects positioning as of Tuesday. The report is published on Friday. By the time you read the data, the market has moved 3 days further.

Not a timing tool

COT data identifies positioning bias and flow direction — not entry timing. High-grade setups can take weeks to play out or fail outright.

Futures ≠ spot

The data covers futures contracts. Spot FX and commodity markets can diverge, particularly around roll dates and option expirations.

No predictive guarantee

Historical extremes revert on average — but not always and not on a fixed schedule. This is a probabilistic edge, not a certainty.

See the engine in action

Every number in the dashboard traces directly back to this methodology. Open the terminal to explore all 23 assets.