Documentação
Aplicações
Last updated on 14. 9. 2026 by Libor Stepan
Dados do COT
Conteúdo da página
COT (Commitments of Traders) is a weekly report published by the U.S. Commodity Futures Trading Commission. It shows how the main groups of participants are positioned in each futures market — commercial hedgers, large speculators and small traders.
StrategyQuant turns that report into building blocks you can use directly in your strategies. You download the data once, and 69 COT blocks become available in the Builder and in AlgoWizard — 11 numeric indicators and 58 ready-made signals.
There is one principle behind all of them: COT tells you what the positioning environment looks like, price tells you when to trade. COT data updates once a week, so it works as a regime filter or a contextual feature. It is not an entry timer.
Nota!
COT data is not part of the installation, and COT blocks do not work until you download it and until your instrument knows which COT market belongs to it. Start with Step 1.
Step 1: Download the COT data
Ir para Gerente de dados -> Indicadores externos and click on Update COT.
The Update COT button on the External indicators tab. Records: 0 means no COT data has been downloaded yet.
A dialog opens with information about the data and its source. Click Update COT to start.
The dialog explains where the data comes from. The Help button opens this page.
The download takes a while — StrategyQuant downloads the reports and rebuilds every series. When it finishes, the new series are listed on the Indicadores externos tab with their real date ranges.
Nota!
COT data is a licensed service. You need a valid StrategyQuant license — trial or full — both for this update and for the downloaders on MetaTrader, NinjaTrader and MultiCharts described in Step 4.
What gets created
StrategyQuant creates two external indicators for each COT market — one for each normalization window — 182 series in total:
COT 6E 52W CME Euro FX COT 6E 156W CME Euro FX
The name is built from four parts, and every one of them tells you something:
- COT — the prefix all these series share, so they group together in the list
- 6E — the futures symbol of the market the report covers, as the CFTC reports it. 6E is the Euro, GC gold, CL crude oil, ZC corn, VX VIX futures
- 52W ou 156W — the normalization window: one year or three years of history
- CME Euro FX — the exchange and the contract in plain words, so you can tell ZW (CBOT SRW Wheat) from KE (CBOT KC HRW Wheat) without looking up the ticker
Nota!
The COT blocks find their data by this name — they look for the series that starts with COT, your symbol and the window, for example COT 6E 156W. Do not rename these series; if you do, the blocks stop finding them.
Every COT series is a weekly indicator with five values. The date ranges show how much history each contract has — currencies and grains go back to the late 1980s or early 1990s.
Every series carries five values for each weekly observation:
- cpihedg (value 0) — commercial hedgers, Commitment Percentile Index
- ctihedg (value 1) — commercial hedgers, traders/participation index
- cpispec (value 2) — large speculators, Commitment Percentile Index
- ctispec (value 3) — large speculators, traders/participation index
- cpismall (value 4) — small (non-reportable) traders, Commitment Percentile Index — positions below the CFTC reporting threshold. Often used as a proxy for smaller players, but the CFTC does not identify them as retail
You can work with these series like with any other external indicator, but in normal use you don’t have to — the COT blocks find the right series for you.
Which markets are covered
95 futures markets in total:
- Grains — ZC, ZS, ZL, ZM, ZW, KE, MW, RS, ZR, ZO
- Energia — B, CL, NG, RB, HO, G, T
- Metais — GC, SI, HG, PL, PA, ALI, HRC
- Softs — SB, KC, CC, CT, OJ, LBR, LB, W, RC, C
- Meats — LE, HE, GF
- Dairy — DA, CSC, CB, NF, GDK, DY
- Broad indices — VX, ES, NQ, YM, RTY, RSG, RSV, EMD, MME, MFS, NIY, NKD, AW
- Sector indices — XAZ, XAP, XAE, XAF, XAV, XAI, XAB, XAR, XAK, XAU, RX
- Taxas de juros — SR1, SR3, GE, ZQ, ZT, ZF, ZN, TN, ZB, UB
- Currencies — DX, 6E, 6J, 6B, 6S, 6A, 6D, 6M, 6N, 6L, 6Z, 6R
- Crypto — BTC, MBT, ETH, MET, SOL, XRP
The history is not equally long for every contract — crypto futures have much less data than grains or currencies. Check the Date from column on the External indicators tab before you rely on a 156-week window.
Where the data comes from
COT indices in StrategyQuant are provided by SpreadCharts, and are independently calculated from public-domain reports published by the CFTC. The CFTC does not endorse these products.
The CFTC publishes on Friday afternoon US time, and the report describes positions held on the preceding Tuesday. A fresh COT observation therefore always describes a market state that is a few days old. This delay is a property of the report itself, not of StrategyQuant.
Nota!
The timestamps in the series are Fridays — the publication dates, not the Tuesday position dates. That is the alignment you want: a strategy sees each observation only from the day it was actually public. Had the series been stamped with position dates, every backtest would have received institutional positioning three days early, which inflates results without looking like an error.
Assign the COT market to your instrument
The COT blocks need to know which COT market belongs to the instrument your strategy trades. That link is stored with the instrument itself. Go to Gerente de dados -> Instrumentos, open the instrument and look at the COT campo.
The US500 index CFD at RoboForex is linked to ES, the CME E-mini S&P 500 — the futures market whose report describes the same index.
Instruments with a known futures market come with the COT market already set — EURUSD with 6E, gold (XAUUSD and the other XAU pairs) with GC, NAS100 with NQ, US500 with ES, BTCUSD with BTC. For any other instrument — a stock, a symbol you added yourself, or one that shows Nenhum — choose the market from the list.
The list offers every COT market by its symbol and name. None means the instrument has no COT market.
Nota!
Every broker has its own copy of an instrument — EURUSD at Dukascopy and EURUSD at FTMO are two different instruments, and each carries its own COT setting. Check the one your strategy actually runs on.
Step 2: Understand what the values mean
CPI — Commitment Percentile Index
CPI answers one question: where is the current net position of this group within its own historical range? The range is 0 to 1.
- CPI above 0.80 — the group is near the top of its historical net-long range
- CPI between 0.40 and 0.60 — a neutral zone with little information
- CPI below 0.20 — the group is near the bottom of its range, at its most net-short
The classic interpretation compares two groups against each other:
- hedger CPI high together with speculator CPI low — a bullish positioning divergence
- hedger CPI low together with speculator CPI high — a bearish positioning divergence
The reasoning behind it is that large speculators (managed money, hedge funds) are trend followers, and tend to be most crowded exactly at turning points, while commercials are on the other side of those trades.
Nota!
Treat this as a hypothesis you should test, not as a rule. Commercials are hedgers, not forecasters. A high hedger CPI describes how they are positioned, it does not promise a price move.
CTI — traders/participation index
CTI is a normalized index of trader participation in a category. It is not price momentum and it has no assumed direction. Use it as a secondary, contextual value.
Normalization window — 52w or 156w
Every series exists in two versions:
- 156w (about three years) is the default and the recommended starting point. It is slower and more structural.
- 52w (one year) reacts faster. It is a separate hypothesis, not an improvement — test it on its own instead of assuming that a faster reaction is better.
You choose the window in the Período parameter, but only 16 blocks have one: ten of the eleven numeric indicators, plus the four Full-Cycle signals and the two VIX Proxy signals. The remaining blocks have their windows fixed by their own logic — COT Bullish Extreme, for example, tests the 52-week window and can confirm it against the 156-week one, and (COT) Composite Score always combines both.
The warm-up is already taken care of in the data: for every market the 156w series starts later than the 52w one, because the longer window needs more history before it can be normalized. In gold the difference is about three and a half years (52w from 1987, 156w from 1991), in the Euro and in Bitcoin about a year and a half. What you have to watch is the other end: do not start your test before the series itself starts, or the blocks return 0.
Step 3: Use COT data in a strategy
There are two ways to work with COT data, and they serve different purposes.
The COT blocks are ready-made indicators and signals. They take the COT market from the instrument your strategy trades, and the signal blocks already contain the positioning logic. This is what you normally want.
The external indicators give you the raw series. You pick the market and the field yourself, which is useful when you want to build your own rule or feed a value into a formula.
Using the external indicators directly
Em Add Condition open the Indicadores group and scroll down to External Indicators. Every downloaded COT series is listed there under its full name.
Each series appears as (EXT) COT <symbol> <window> <exchange and market>.
After you pick one, the block has two parameters. Turno works as everywhere else, and Linha selects which of the five values you want to read.
The Line parameter exposes all five COT fields — cpihedg, ctihedg, cpispec, ctispec and cpismall.
Nota!
The series store the values on the same 0 to 1 scale as the COT blocks — a hedger CPI of 0.90 here is the same reading the (COT) Hedger CPI block shows. The external indicator also has no AUTO resolution: you choose the market by picking the series, so a strategy built this way is tied to that one COT market. If you want the block to follow the traded instrument, use the COT blocks below.
Using the COT blocks
The COT blocks sit among the standard building blocks, in two places. The numeric ones are in Indicadores, listed alphabetically as (COT) …:
All eleven numeric COT blocks, between Commodity Channel Index and DeMarker.
The signals are in Signals (Predefined conditions), grouped together under a COT heading:
Signal blocks sit together under a COT heading, here with the whole group selected. Most of them carry a number in the name, which keeps them in a fixed order in the list.
You will find the same lists in Configurações completas -> Blocos de construção when you set up a Builder task. COT blocks are not selected by default, so if you want the Builder to use them, tick them there first — otherwise no generated strategy will ever contain a COT rule.
When you start the project, StrategyQuant checks the setup first. If a COT block is selected and the instrument in the Dados settings has no COT market, or the COT data for it has not been downloaded, the project does not start and the error tells you what is missing.
The Builder refuses to start: the instrument AIG_limited.D has no COT symbol set. Set it in Data Manager -> Instruments, or deselect the COT blocks.
Nota!
Names in the two lists follow different conventions. Numeric blocks are (COT) Hedger CPI, (COT) Momentum and so on. Signals are either numbered — (COT13) Extreme Unwind Bullish — or named directly, such as COT Bullish Extreme ou COT VIX Proxy Bullish.
Numeric indicators (11 blocks)
These return a value on every bar, so you can compare them, cross them, rank with them or use them as machine-learning features.
The five raw fields are available as (COT) Hedger CPI, (COT) Hedger CTI, (COT) Speculator CPI, (COT) Speculator CTI e (COT) Small Trader CPI. All of them return 0 to 1.
Two derived blocks combine them:
- (COT) Composite Score returns -1 to +1 and is computed as avg(hedger52, hedger156) – avg(spec52, spec156). Because it uses both windows, it has no Período parameter. It is a compact regime score: above +0.60 a strong bullish divergence, +0.20 to +0.60 a moderate bullish lean, -0.20 to +0.20 neutral, below -0.60 a strong bearish divergence.
- (COT) Hedger-Spec Spread returns -1 to +1 and is simply hedger CPI minus speculator CPI — a direct measure of how much the two groups disagree.
Four more blocks exist mainly for research and for machine-learning feature sets:
- (COT) Momentum — the change over N weekly COT observations
- (COT) Field Value — a generic accessor, you pick the field with FieldIndex (0 = cpihedg, 1 = ctihedg, 2 = cpispec, 3 = ctispec, 4 = cpismall)
- (COT) Cross-Field Spread — the difference between any two fields you select
- (COT) Multi-Field Combo — an average of selected bullish-oriented fields: hedger CPI counts as it is, while speculator CPI, small trader CPI and speculator CTI are inverted. Each of the four has its own on/off switch, so you can remove one at a time and see what it contributes
If you want to give an ML model the complete field set, add (COT) Field Value five times with FieldIndex 0 to 4.
Signal blocks (58 blocks)
Signal blocks return true or false, and each one implements a documented positioning idea. Here is the complete list as it appears in StrategyQuant.
Named signals
- COT Bearish Extreme — Hedger vs Speculator Extreme Reversal (Bearish)
- COT Bullish Extreme — Hedger vs Speculator Extreme Reversal (Bullish)
- COT Crowding Unwind
- COT Emergency Exit Long — Price-based safety exit for COT cycle strategies
- COT Emergency Exit Short — Price-based safety exit for COT cycle strategies
- COT Full-Cycle Exit Long
- COT Full-Cycle Exit Short
- COT Full-Cycle Long Entry
- COT Full-Cycle Short Entry
- COT Score Above — Composite Score above a threshold (Bullish regime)
- COT Score Below — Composite Score below a threshold (Bearish regime)
- COT VIX Proxy Bearish — Uses VIX futures COT instead of direct index COT for equity index trading. Always reads VX, whatever COT symbol you set
- COT VIX Proxy Bullish — Uses VIX futures COT instead of direct index COT for equity index trading. Always reads VX, whatever COT symbol you set
Numbered signals
- (COT06) 52v156 Shift Bullish — 52w vs 156w Positioning Shift (Bullish)
- (COT07) 52v156 Shift Bearish — 52w vs 156w Positioning Shift (Bearish)
- (COT08) Spec Trend Long — Speculator Trend Following (Long)
- (COT09) Spec Trend Short — Speculator Trend Following (Short)
- (COT10) Extreme Exit Bullish
- (COT11) Extreme Exit Bearish
- (COT12) Extreme Persistence
- (COT13) Extreme Unwind Bullish
- (COT14) Extreme Unwind Bearish
- (COT15) Hedger Accel Bullish — Hedger Acceleration (Bullish)
- (COT16) Hedger Accel Bearish — Hedger Acceleration (Bearish)
- (COT17) Score Momentum Above — COTScore Momentum Above threshold
- (COT18) Score Momentum Below — COTScore Momentum Below negative threshold
- (COT19) Score Zero Cross Up — COTScore Zero Cross Up
- (COT20) Score Zero Cross Down — COTScore Zero Cross Down
- (COT21) Spec Exhaustion Short — Speculator Exhaustion (Short signal)
- (COT22) Spec Exhaustion Long — Speculator Exhaustion (Long signal)
- (COT23) Triple Div Bullish — Triple Positioning Divergence (Bullish)
- (COT24) Triple Div Bearish — Triple Positioning Divergence (Bearish)
- (COT25) Higher Low (COT Div) — COT Higher Low (Institutional Divergence)
- (COT26) Lower High (COT Div) — COT Lower High
- (COT27) Accumulation Bullish
- (COT28) Accumulation Bearish — Distribution (Bearish)
- (COT29) Smart vs Dumb Bullish — Smart vs Dumb Money (Bullish)
- (COT30) Smart vs Dumb Bearish — Smart vs Dumb Money (Bearish)
- (COT31) Neutral Zone — Filter
- (COT32) Small Fade Bullish — Small Trader Fade (Bullish)
- (COT33) Small Fade Bearish — Small Trader Fade (Bearish)
- (COT34) Spread ZScore Bullish
- (COT35) Spread ZScore Bearish
- (COT36) ROC Bullish — Rate of Change (Bullish)
- (COT37) ROC Bearish — Rate of Change (Bearish)
- (COT38) H/S Convergence — Hedger/Speculator Convergence filter
- (COT39) Regime Shift Bullish — Rapid Regime Shift (Bullish)
- (COT40) Regime Shift Bearish — Rapid Regime Shift (Bearish)
- (COT41) Seasonal Bullish — Seasonal Filter (Bullish)
- (COT42) Seasonal Bearish — Seasonal Filter (Bearish)
- (COT43) Momentum Rev Bullish — Momentum Reversal (Bullish)
- (COT44) Momentum Rev Bearish — Momentum Reversal (Bearish)
- (COT45) Multi-Window Bullish — Multi-Window Confirmation (Bullish)
- (COT46) Multi-Window Bearish — Multi-Window Confirmation (Bearish)
- (COT47) Score Accel Bullish — Score Acceleration (Bullish)
- (COT48) Score Accel Bearish — Score Acceleration (Bearish)
- (COT49) Hedger Div Confirmed Bull — Hedger Divergence Confirmed (Bullish)
- (COT50) Hedger Div Confirmed Bear — Hedger Divergence Confirmed (Bearish)
Every block has its own help text in StrategyQuant explaining what it measures, what the thresholds mean, and which strategy from the COT SQX Strategies Guide it implements. You see it as soon as you select the block, above its parameters.
COT Bullish Extreme with its default thresholds. Note the scale: the parameters are 0.9 and 0.1, not 90 and 10.
A typical rule pairs the COT block with price logic — COT gives permission, price decides the entry:
The same condition in a strategy: the COT block must be true and price above its moving average.
COT Symbol — which market the block reads
Every COT block has a CotSymbol parameter with three possible settings.
AUTO (the default) takes the COT market from the instrument the strategy trades — the COT field described in Step 1. Nothing is guessed from the symbol name, so broker suffixes or CFD names do not matter; what counts is what the instrument says. The resolved symbol is written into the strategy, so it stays the same from then on, and the exported code uses it too.
RAND picks a random market out of all downloaded COT data. Use it in generating and research runs where you want the builder to try different positioning sources.
A specific symbol - 6E, CL, VX and so on — is used for cross-market work, for example when you want to read VX (VIX futures) positioning inside a strategy that trades an equity index.
Nota!
A block that finds no series — for example a specific symbol you typed whose data is not downloaded, or a bar that comes before the series starts — does not report an error. A signal block returns false and the strategy simply never enters. A numeric block returns 0 — and since 0 is the bottom of the 0-to-1 range, a missing series reads exactly like an extreme net-short position. If a COT strategy takes no trades, or shows a suspiciously permanent extreme, check the symbol and the series first.
Watch the scales
Everything around COT in StrategyQuant uses the same normalized scale — the numeric blocks, the parameters inside signal blocks and the raw series alike. An indicator you add to a chart shows the same range, so what you read on the chart is the number you put into a rule:
- numeric indicators (CPI, CTI, Field Value, Multi-Field Combo) return 0 to 1, so you compare them against 0.80 or 0.20
- Composite Score, spreads and momentum return -1 to +1
- parameters inside signal blocks are on the same 0 to 1 scale, so you enter 0.90 or 0.10
In other words, a comparison against (COT) Hedger CPI uses 0.90, and so does the Hedger High Threshold parameter in COT Bullish Extreme. The most common mistake is a threshold copied from other COT sources that quote the index as 0 to 100 — an 80 there is 0.80 here, and a rule with 80 never triggers.
Weekly data on a daily or intraday chart
COT is weekly data, but you can use it on D1, H4, H1 or intraday strategies. Three things follow from that.
Which chart should the strategy run on? COT is weekly data, and a weekly chart is the setup everything was designed around: one bar is one report, the lookback parameters named in weeks then really mean weeks, and the value changes on every bar.
Each block resolves its value by timestamp — it keeps the weekly observations sorted and returns the last one whose timestamp is lower than or equal to the current bar time — so the same weekly value repeats across many bars on a lower timeframe. That is expected, not an error.
The raw series are a different story. Like every external indicator in StrategyQuant, they are valid only for the timeframe they were imported for — and COT is weekly. In the Builder they therefore appear only while a weekly timeframe is selected in Configurações -> Dados; switch to D1 and they disappear from the list. (There is a Show all external indicators (also for not-matching Timeframes) checkbox in the building-blocks panel, but that only changes what is offered, not what the data is.)
So on a D1 strategy the raw series are not available at all — you either use the COT blocks, or add a weekly subchart and take the series from there.
Nota!
Whichever route you take, verify on your own data that the block returns real values before you read anything into a backtest. A block that cannot resolve its series returns 0, and 0 is a valid-looking reading at the bottom of the scale, not an error message.
There is one edge to know about: if a bar falls before the first COT observation in the series, the lookup returns 0 — see the warning about missing data above. One more reason to start the test after the warm-up.
A later weekly observation is never attached to an earlier bar, so there is no lookahead. Missing reports and holidays reuse the last known value, StrategyQuant does not invent a new observation.
Lookbacks are counted in chart bars, not in COT reports — and this catches people out, because several parameters are named in weeks. Min Consecutive Weeks, ShiftWeeks ou Retrospectiva are all read as a number of bars on the chart your strategy runs on.
On a weekly chart one bar is one COT report and the names match. On a daily chart they do not: four bars are four trading days, which is usually still the same weekly observation, so (COT) Momentum with its default lookback of 4 returns zero most of the time. If you work on D1, use roughly 5 bars for one week and 20 for one month; on H1 the numbers grow accordingly.
Nota!
A weekly subchart has one more advantage: lookbacks counted on it are weekly bars again, so a parameter named in weeks finally means weeks.
Step 4: Export and live trading
COT strategies are not limited to StrategyQuant. Generated code carries the COT logic to your platform, where a downloader keeps a local copy of the same data. All platform files are in the custom_indicators folder in your StrategyQuant installation.
COT blocks are generated for MetaTrader 4, MetaTrader 5, NinjaTrader 8, TradeStation/MultiCharts and PseudoCode. They are not generated for JForex.
What every exported COT strategy has
On every platform the exported strategy carries two kinds of COT inputs:
- COTLicenseCode — your StrategyQuant X license key. The strategy uses it to download the COT data on its own, so in normal use you only run the strategy itself. Without it the strategy does not trade.
- COTSymbol1, COTSymbol2, … — one input for each COT market the strategy reads, in the order they appear in it. The default is the market StrategyQuant resolved at export, for example ES, and you can type a different one on the platform without exporting again.
When the strategy starts, it checks that a COT data file exists for every COTSymbol input. If one does not — a mistyped symbol, or a market that was not downloaded — the strategy stops with a message such as COTSymbol1: COT symbol ‘XY’ does not exist… The strategy will not trade. It never trades on empty COT values.
The data is downloaded again when it is missing or older than 7 days, so a strategy left running picks up each new weekly report.
MetaTrader 4 and MetaTrader 5
When a strategy starts on a live or demo chart and the COT data is missing or stale, it opens a new chart and starts the SqCOTDownloader EA there. It also hands over the license from its own COTLicenseCode input, so the downloader needs no setup of its own. MetaTrader does not let one EA attach another one, so this works through a chart template that carries the downloader.
Prepare the terminal once:
- Cópia SqCOTDownloader from the Experts folder into your terminal’s Experts folder and compile it.
- Copy the SqCOTDownloader.tpl template into the terminal’s templates folder — for MetaTrader 5 it is MQL5\Profiles\Templates\ in the terminal data folder, for MetaTrader 4 the modelos folder next to MQL4. You find the template in custom_indicators\MetaTrader5\Profiles\Templates\ e custom_indicators\MetaTrader4\templates\.
- Em Ferramentas -> Opções -> Expert Advisors allow WebRequest for listed URL para https://cdn.strategyquantcdn.com, and allow DLL imports — the downloader unpacks a ZIP archive.
- Turn on Algo Trading (AutoTrading in MetaTrader 4). Otherwise the EA from the template does not start.
The downloader writes the data into the terminal’s common Files folder, where every strategy and every terminal on the computer can read it.
Nota!
In the Strategy Tester nothing can be downloaded — MetaTrader does not allow WebRequest or opening charts there. The tester only reads the data that already exists, so before the first backtest, run the strategy once on a live or demo chart and let it download the data, or start the SqCOTDownloader EA on any chart by hand.
If a strategy reads the raw COT external indicators instead of the COT blocks, it downloads its data directly, without the downloader. It then has COTServerUrl and the retry settings among its inputs, it needs Allow WebRequest para https://api.strategyquant.com, and it saves the data into the common Files folder as SQ_COT_<identifier>.csv. The Strategy Tester reads those files, so the same rule applies: run it live once first.
NinjaTrader 8
When the data is missing or older than 7 days, the strategy starts the SqCOTDownloader indicator by itself with the license from its COTLicenseCode input. The downloader builds a binary cache in Documents\NinjaTrader 8\SqCOT\, which the strategy and the SqCOT indicator read. If the license input is empty, the strategy only writes a message to the output window. You can still add the SqCOTDownloader indicator to a chart by hand and leave it running.
TradeStation and MultiCharts
The strategy downloads the data on its first bar when it is missing or older than 7 days, and after that checks once a day for a new weekly report. MultiCharts downloads straight away. TradeStation downloads in the background, so the very first start without any COT data stops the strategy until the download has finished.
The generated EasyLanguage code reads the data from C:\SQ_COT\ através de SQ_COT_GetValue(…). In MultiCharts you also have to install the two DLLs from custom_indicators\Tradestation\DLL (Multicharts only).
Before you trust a backtest
Check these points before you draw conclusions from a COT strategy:
- The COT update finished and the series are visible in Gerente de dados.
- The last COT date is current and the history covers your whole test period.
- Your test starts after the series does — check Date from for the exact market and window you use.
- The instrument you test on has the COT market you intended — check its COT field in Gerente de dados -> Instrumentos, especially for CFDs and spot FX symbols.
- Thresholds are written on the 0-to-1 scale — 0.80, not 80.
- Lookback parameters are set in chart bars — on D1 a “4-week” idea needs about 20, not 4.
- On the export platform the license is filled in and the COT data has been downloaded at least once — a platform backtest cannot download it.
Solução de problemas
The project does not start: “…has no COT symbol set”. A COT block is selected, but the instrument has no COT market. Set it in Gerente de dados -> Instrumentos (field COT), or deselect the COT blocks in the Blocos de construção configurações.
The strategy takes no trades at all. A COT block that cannot find its series returns 0, which is a valid-looking value at the bottom of the scale — not an error. Check three things: the series for your symbol and window exists on the Indicadores externos tab; your test period starts after that series’ Date from; and the instrument’s COT field holds the market you expected.
A COT indicator reads 0 for the whole backtest. Same cause as above, and one more candidate: the test starts before the first COT observation for that market. A 156w series begins later than the 52w one — in Bitcoin it is 2020, in gold 1991.
AUTO reads the wrong market. AUTO takes whatever the instrument’s COT field says. Change it there, or set CotSymbol in the block directly — that is also the right move for any cross-market use.
A comparison never triggers. Check the scale. All COT blocks return 0 to 1 (spreads, momentum and Composite Score -1 to +1), so the threshold is 0.80, not 80.
(COT) Momentum is always zero. Its lookback counts chart bars. On D1, four bars are four days — usually the same weekly observation, so the change is zero. Use about 5 bars for a week, 20 for a month, or run the strategy on a weekly chart.
The COT series are missing from the block list. External indicators only appear for their own timeframe, and COT is weekly. Select a weekly timeframe, use a weekly subchart, or use the COT blocks instead.
An exported strategy stops right after start: “COT symbol … does not exist”. One of the COTSymbol inputs names a market that has no COT data file — usually a typo, or a market that has not been downloaded. Correct the input.
A generated strategy does not trade on MetaTrader. The usual reasons: the COTLicenseCode input is empty; the downloader could not start, because the SqCOTDownloader.tpl template is missing, WebRequest or DLL imports are not allowed, or Algo Trading is off; or you are in the Strategy Tester and the data has never been downloaded. Run the strategy once on a live or demo chart, then the backtest. The strategy writes the reason into the platform log.
What to expect
COT blocks give you a well-documented set of positioning tools, but they are not a shortcut to a profitable strategy. Our own testing across 45 markets, several sectors and a number of filter structures showed:
- simple threshold rules such as COT above 0.90 -> buy did not produce a stable edge across markets
- the full-cycle positioning strategy did not hold up as a standalone strategy
- in several cases better metrics came from filtering away most of the trades, which increases selection bias rather than proving an edge
What the same testing does support:
- COT extremes carry more information than neutral readings
- COT works better as a slow regime filter or a contextual feature than as an entry trigger
- 156w is the better baseline to start from
- COT can add conditional information inside multi-factor or machine-learning models, especially on physical commodities
The fit also differs by market family. Physical commodities (CL, NG, HO, RB) come first, because producer and consumer hedging is real and economically grounded; metals, grains and currencies follow. Equity indices are a weaker fit for direct use, and using VX positioning as a proxy for ES, NQ, YM or RTY is a research idea, not a validated technique.
If you want to claim that COT improved your strategy, test it properly: use identical walk-forward or out-of-sample splits with and without the COT features, remove one COT field at a time to see what it actually contributes, measure stability per instrument instead of pooled results, and account for the trades that the filter removed.
Where to learn more
Two detailed guides are included in the COT folder in the root of your StrategyQuant installation:
- COT Indicators and Signals Reference Guide — all COT blocks, their scales, parameters and intended use
- COT SQX Strategies Guide — 39 documented positioning strategies with the design rules behind them
See also: Indicadores externos
Este artigo foi útil? O artigo foi útil O artigo não foi útil











