Research· By Archibald Sheran· Updated September 24, 2026· 14 min read

We Backtested ICT Master Suite. Its 17% Came From Fifteen Trades.

Almost no ICT material reports numbers, so a strategy that produces its own backtest deserves to be taken seriously. ICT Master Suite is open source, ships five ICT models, and in its best configuration — Silver Bullet, long only — returned +17.36% in fourteen weeks at a 66.20% win rate on Nasdaq futures. We exported all 71 trades, rebuilt the strategy in Python, and matched 43 of its entries to the same five-minute bar. Then we asked three questions the headline figure does not answer: where the profit came from, what it cost, and whether it holds up beyond fourteen weeks.

Corrected September 24, 2026: the 8.5-year test now charges the tester’s 0.02% per side, not a flat 12 points, and runs the port long only. The losses shrink; the verdict stands.

The short version

  • The reported result is real: 71 trades, 66.20% win rate, +$17,362 net on a $100,000 account, all long, 25 May to 2 September 2026.
  • All of the profit comes from one killzone. The 15 New York PM trades made +$27,087. The 54 London and New York AM trades lost $13,165 between them.
  • At the default setting, commission took 49% of the profit before costs. $16,868 of fees against $34,230 — about 12 Nasdaq points per round turn at 0.02% per side.
  • We ported the model from the library source and validated it: 43 of 61 entries land on the same five-minute bar, and those matched trades agree on win-or-lose 40 times out of 43.
  • Run the same way — long only, at the tester’s 0.02% commission — over 1,877 trades and 8.5 years, it returns −0.130R per trade, profit factor 0.736, with every killzone and every one of nine calendar years negative. At 2 points of cost it is close to breakeven.
  • The library has a bug: the short side checks the long side’s stop setting, so every short falls back to a stop at the previous day’s high, whatever the user picks.
  • The fourteen-week window is a default: the script calculates over 20,000 bars unless you raise Calculated bars.

From the team behind this backtest

Get seasonal patterns that have worked in the past

Testing popular trading ideas against decades of data is what we do every day. Does It Repeat applies it to timing: which weeks of the year a market has historically risen or fallen, how consistently, and whether that pattern still holds up.

Free account includes a screener preview, no credit card. Full access $20/mo at early-adopter pricing, 14-day money-back guarantee, cancel anytime. All statistics are historical; past performance does not guarantee future results.

Why this script was worth testing

ICT education arrives as narrative — a teacher walks through a chart, points at a moment, explains why it mattered — and it is persuasive precisely because the chart has already resolved. Our audit of the Silver Bullet lecture found its most important choice had never been made mechanical at all. There was nothing to falsify.

ICT Master Suite by Trading IQ, with more than 5,000 boosts and 92,000 views on TradingView as of 24 September 2026, is different in three ways. It is published under the Mozilla Public License, so the code can be read. It is declared as a Pine strategy rather than an indicator, so it submits simulated orders and produces a real performance report instead of drawing boxes. And its author states plainly that the point is to let traders find out for themselves whether the models are worth trading.

It ships with five models — Model 2022, Unicorn, Silver Bullet, Liquidity Raid and Optimal Trade Entry — each switchable long or short independently. That is ten configurations. We ran all ten on NQ1! 5-minute, then took the best performer apart.

First, the trap that eats an hour

The strategy produces no trades at all until you change one setting. It ships with order size set to 5% of equity on $1,000 of initial capital. A Nasdaq E-mini contract carries roughly $599,000 of notional, so 5% of $1,000 asks for about 0.0000835 contracts. That rounds to zero, no order is submitted, and the report stays empty.

Set Order size to 1 contract in the Properties tab. The author knows and prints a note on the chart saying so. Change the number as well as the type: the default value is 5, and five contracts multiply every dollar figure by five. We also set Initial capital to $100,000; at the $1,000 default, every percentage comes out a hundred times larger. It is a crypto-native default meeting a futures symbol, and the commission default below is another.

Ten configurations, one chart

NQ1! Nasdaq 100 E-mini futures, 5-minute chart, $100,000 of capital, one model and one direction enabled per run, everything else at defaults. The tester’s range for every run was 21 May to 1 September 2026, so these results describe fourteen weeks of Nasdaq futures and nothing more. That range was the 20,000-bar default on the day we ran it, and the default moves forward with every new bar, so to reproduce a row, pin the strategy report’s date range to those dates (Deep Backtesting) and trade 1 contract on $100,000.

ModelDirProfitWin rateTradesPF
Silver BulletLong+17.78%66.67%691.312
Model 2022Long+5.01%50.00%101.308
Liquidity RaidShort+2.70%75.00%—23.435
UnicornShort+1.64%50.00%—2.305
UnicornLong−1.60%33.33%—0.613
OTEShort−8.67%15.74%—0.893
Model 2022Short−12.00%50.00%—0.575
Liquidity RaidLong−12.28%57.14%—0.164
OTELong−22.69%13.10%—0.665
Silver BulletShort−61.96%69.05%—0.469

The sweep did not record trade counts. A later rerun of Model 2022 Long on the pinned dates matched its win rate, profit factor and per-contract profit exactly, on 10 trades. The export’s first 69 trades, through 1 September, reproduce the Silver Bullet Long row exactly: +$17,778, 46 winners, profit factor 1.312. The export adds two trades from 2 September, a $1,143 loss and a $727 gain — hence +17.36% and 66.20% on 71 trades.

Four of ten made money, and the dispersion is the first thing worth noticing. Same instrument, same fourteen weeks, same underlying theory of how markets work — and an 80-percentage-point spread between best and worst, with profit factors covering a 143-fold range.

Ten configurations in one window are also ten chances to find a winner by luck, and the best of ten is the row luck most likely flattered. That row is Silver Bullet Long. So we exported its trade list.

Where the profit actually came from

The Silver Bullet model trades three one-hour killzones in New York time: London at 03:00, New York AM at 10:00, New York PM at 14:00. Sorting all 71 exported trades by the session they were entered in produces the single most important table in this article.

London03:00 – 04:00
n=3161.3%−$5,508
NYAM10:00 – 11:00
n=2356.5%−$7,657
NYPM14:00 – 15:00
n=1586.7%+$27,087

Two further trades entered exactly on a session boundary (04:00 and 11:00) and are excluded above; together they contributed +$3,440.

Fifteen trades in the New York PM killzone produced +$27,087. The 54 trades in London and New York AM lost $13,165 between them. Remove one session from a strategy that trades three and the remainder is comfortably negative.

An 86.7% win rate on 15 trades is 13 wins and 2 losses. That is not a statistic you can plan around. It is fifteen afternoons that happened to go well, and they are carrying the entire headline number.

The shape of the wins says something too. Profit factor is 1.299, but the average winner is $1,605 against an average loser of $2,419. The model wins often and small, then gives it back in larger pieces — the signature of stops placed at swing lows far from entry while targets sit at nearby swing highs.

What it cost to earn that

The export includes a commission column, and it is the second thing that reframes the result.

Profit before commission$34,230
Commission−$16,868
Net profit+$17,362

Costs consumed 49% of the profit before commission. The default is 0.02% commission per side, which on roughly $599,000 of notional is about 12 Nasdaq points, or $240, per round turn. That is how crypto exchanges charge; our Nasdaq futures backtests charge a $5 fee per round turn plus slippage. So the 49% describes the default setting more than the cost of trading futures — and it is charged on all 71 trades, the 24 losers included.

None of this is hidden. It is in the export, in a column, in dollars. It simply is not in the summary figure anybody screenshots.

So we rebuilt it

Fourteen weeks cannot separate a strategy with an edge from one without. The script sets calc_bars_count = 20000, which on a 5-minute chart of a nearly 23-hour futures session is about 72 trading days — so the tester’s date range is a performance default, not a research decision; raise Calculated bars and the window grows.

The entry logic lives in an imported library rather than the strategy file, and reading it gives the full rule set: three killzones in New York time; a directional bias from a zigzag swing filter, set when each session opens and then held; a fair value gap trigger requiring the high from two bars back to sit below the current low; a limit order at the gap edge; and take-profit and stop levels drawn from the nearest zigzag swing above and below.

We implemented that in Python against 2.6 million minutes of Nasdaq data, ran it long only as the tester was set up, and checked it against the export.

Agreement testMatch
Entries on the same five-minute bar43 / 61
Entries within five minutes45 / 61
Entries within one hour53 / 61
Shared trading days38 / 40
Win-or-lose agreement on the 43 matched trades40 / 43

That last row matters most. Where both implementations fire on the same bar, they agree on the outcome 93% of the time — 25 shared wins, 15 shared losses, three disagreements. Win rates on that subset are 63% against 60%, and the median hold is 17 bars in both.

It is not perfect. Over the comparison window, 25 May to 10 August (our price data ends the next day), the port fires 61 long signals against the tester’s 56, and 18 of its entries do not land on a matching bar. Our series is a Nasdaq CFD rather than the futures contract — different prints, slightly different session edges — so some residual is expected. We would trust this port for statistics, not for reproducing an individual fill.

Eight and a half years at the tester’s commission rate

First, a run in both directions: 3,224 trades from January 2018 to August 2026, priced in R — multiples of the risk taken on each trade, so results do not depend on position sizing. The tester charges a share of the contract’s value, not fixed points: 0.02% per side is about 2.8 points per round turn at 2018 prices and 11 to 12 at 2026 prices. We charge each trade the same way. Shorts here use swing stops, not the library’s previous-day-high stop (see below), and were never checked against the export.

Round-turn costWin rateAvg RTotal RPF
2 points55.92%−0.059−1900.876
0.02% per sidetester’s default55.12%−0.159−5130.699
6 points53.63%−0.206−6650.631
12 points, every year47.05%−0.427−1,3780.393

The model is mildly negative even at two points of cost. At the tester’s rate it loses 0.159R per trade with a profit factor of 0.699 — and all three killzones are negative, New York PM included, at −85.3R across 948 trades.

That is the answer to the fourteen-week result. Not that it was fabricated, but that fourteen weeks of one instrument is a sample in which one good session can carry everything, and eight and a half years is a sample in which it cannot.

Long only, year by year

The configuration that produced the headline result was long only, so the cleaner comparison is the port run the same way — 1,877 long trades, January 2018 to August 2026, at the tester’s commission rate.

Win rate57.49%
Avg per trade−0.130R
Total−244.9R
Profit factor0.736

Every killzone is negative: London −169.9R on 596 trades, New York AM −14.8R on 703 (only just), and New York PM −60.2R on 578 — the session that carried the whole fourteen-week result.

YearTradesWin rateTotal R
201823853.4%-58.8
201923961.1%-31.0
202025857.4%-24.5
2021Q2 and Q4 only12064.2%-0.6
202221757.1%-19.6
202320057.0%-17.1
202421455.1%-45.0
202523356.2%-28.8
2026to 11 Aug15859.5%-19.5

Nine for nine at the tester’s rate: not one calendar year turns a profit. 2021, which is missing its first and third quarters, comes closest at −0.6R on 120 trades.

That verdict leans on cost. At 2 points per round turn, the cost we charge in our other ICT tests, the long-only port is close to breakeven, at −0.033R per trade with a profit factor of 0.926, and four years finish positive: 2021, 2023, 2025 and, by half an R, 2026. Before any cost it makes +0.039R: a thin margin, untested for significance, that the default commission more than consumes.

The win rate does not trend; it sits between 53% and 64% every year. The climb from 29% to 59% in the first version of this article came from its flat 12-point charge, which was 54% of the median stop distance in 2018 and 12% in 2026.

A bug in the library

None of the results above is a criticism of the script, which is well built, honest about being a testing tool, and free. Reading the source did turn up one bug. In the ICT library the strategy imports, the short branch of the Silver Bullet function picks its stop by testing silverBulletLongSL, the long side’s input, against a swing-high setting. That input only offers a swing low or the previous day’s low, so the test never passes, and every short falls through to the alternative branch, whatever stop the user picked.

That alternative stops shorts at the previous day’s high — or, if price is already above it, at the day’s final high, which a backtest reads before the day has made it. Either way it is an enormous risk leg on an intraday model. It fits the shape of Silver Bullet Short in the table above: a 69.05% win rate that still lost 61.96%, profit factor 0.469. Frequent small wins and occasional very large losses are what a stop that far away would produce, though without a short-side export that is inference, not measurement.

Is there at least a cycle?

A strategy without a constant edge could still have one that arrives on a schedule. We run seasonal hot-and-cold phase detection across thousands of instruments, so we pointed it at all 3,224 trades from the both-directions run, priced at 2 points per round turn.

It found no calendar structure. The best calendar month beats the worst by 0.20R per trade, but shuffling the trades across months 5,000 times produces a gap at least that wide about half the time. The twelve-month autocorrelation of monthly returns — where an annual cycle would have to appear — is −0.08, which is flat. The results drift from year to year; they do not arrive in a season.

What a one-row table hides

Had we run only Silver Bullet Long, we would have a screenshot: +17.36% in fourteen weeks at a 66.20% win rate. Nothing in it is false.

The ten-row table is not more pessimistic than that one-row version; it is the same experiment with nothing thrown away. Every screenshot is a one-row table, and you cannot know how many rows were run before it. A win rate without an n is decoration — Model 2022 Long’s 50.00% turned out to be 5 wins in 10 trades. We have trade counts for only two of our own ten rows, so read the other eight win rates the same way.

Method: ICT Master Suite [Trading IQ], Pine v5, MPL 2.0, at defaults except order size (1 contract) and initial capital ($100,000); NQ1! 5-minute, one model and one direction per run, 21 May – 1 September 2026. Session and cost figures are computed from the strategy tester’s own exported trade list (71 trades, 25 May – 2 September 2026), with entry times converted from chart time to New York time. The Python port implements the Silver Bullet function from the imported library, with swing stops on both sides, and was validated against that export by entry bar and by trade outcome. Long-run figures cover 2,656,313 one-minute Nasdaq bars, January 2018 – August 2026, with 2021’s first and third quarters missing. The cost table, the both-direction killzone figure and the cycle test use a 3,224-trade run in both directions; the validation and the long-only section use a separate long-only run of 1,877 trades. Costs are 0.02% of notional per side unless stated. Prices are a CFD series rather than the futures contract, with completed-bar signal timing and stop-first resolution on ambiguous bars. Cycle tests use a 5,000-iteration permutation of trade returns across calendar-month buckets and a calendar-aligned autocorrelation. Results are hypothetical, from a historical simulation. This article is research, not investment advice, and past simulation does not indicate future results.

From the team behind this backtest

Get seasonal patterns that have worked in the past

Testing popular trading ideas against decades of data is what we do every day. Does It Repeat applies it to timing: which weeks of the year a market has historically risen or fallen, how consistently, and whether that pattern still holds up.

Free account includes a screener preview, no credit card. Full access $20/mo at early-adopter pricing, 14-day money-back guarantee, cancel anytime. All statistics are historical; past performance does not guarantee future results.