Is ICT Strategy Profitable? I Backtested It Using AI (Real Results)

  • Post category:AI Signals
  • Post author:
  • Reading time:16 mins read
  • Post last modified:July 19, 2026

Everyone asks whether the ICT strategy actually makes money. Almost nobody backtests it — because ICT is discretionary, and you can’t backtest judgment with a script. So we did it twice: once as a pure rule-based bot with every judgment call frozen into code, and once with an AI analyst trading it discretionarily, chart by chart, on 4,129 real EURUSD candles with no hindsight. Here are both results — including the one that lost money.

Is ICT profitable? It depends which half of ICT you’re testing

ICT (Inner Circle Trader, the methodology taught by Michael J. Huddleston) is really two things bolted together. Half of it is vocabulary — killzones, liquidity pools, fair value gaps, market structure shifts, premium and discount. That half is precise enough to code. The other half is judgment — which side price is favored to move, which liquidity pool it’s actually reaching for, which setup is A+ and which is a trap. That half lives in the trader’s head, and it is where the results come from.

We tested each half separately, on real MT5 EURUSD data, walked candle by candle with no lookahead. (Dollar figures in this article assume the default settings used throughout: a $10,000 account risking 3% per trade — you can change both in the interactive sections below.)

  • Test 1 — the vocabulary alone. A fully mechanical ICT bot (real detectors for sweeps, MSS, FVGs, killzones; crude fixed rules in place of every judgment call) traded a full year and finished at −$4,521 (−15.1R) — a 29.6% win rate and a profit factor of 0.81.
  • Test 2 — the vocabulary plus judgment. The same playbook handed to an AI analyst that reads each chart and makes the discretionary call, walked over two months of 15-minute candles, finished at +$8,286 (+27.6R) — a 40.4% win rate with winners nearly three times the size of losers.

Same market. Same candle feed. Same ICT concepts. The only variable was whether a judgment sat between the pattern and the trigger — and it was worth $12,807 of difference on those settings. That’s the whole article in one sentence; the rest is the receipts.

Why “just code it into a bot” doesn’t answer the question

Every “ICT backtest” you’ll find online quietly replaces the discretionary parts with the author’s own fixed rules — and then reports the result as if it were ICT’s. We did that too, deliberately, as a baseline. Here is what actually had to be replaced, because no script can do it:

  • Bias — “which side is price favored to go today?” We froze it to a dumb rule: above the higher-timeframe midpoint, shorts only; below it, longs only.
  • Draw on liquidity — “which pool is price actually reaching for?” Frozen to: nearest untouched pool at least 1R away, else a flat 2R target.
  • Manipulation vs. genuine move — the AMD / Power-of-3 read that tells an ICT trader a sweep is a trap. Not modeled at all.
  • A+ setup selection — the confluence-weighing that separates the one trade worth taking from the five that look identical. Frozen to: first qualifying setup per killzone wins.
  • Trade management — partials, break-even, runners. Not modeled: fixed target, no adjustment after entry.

Those five rows are the strategy, if you ask any serious ICT trader. So the honest experiment is: measure the floor (rules only), then measure what happens when something capable of judgment makes those five calls — and publish both.

Test 1 · Rules only · EURUSD 15m · one year

The mechanical ICT bot: one year, real data, no judgment

We built real detectors for the full ICT vocabulary — liquidity sweeps, market structure shifts, displacement, fair value gaps, killzone timing, premium/discount zoning — and wired them into two classic ICT setups: the killzone sweep-reversal and the displacement-FVG continuation. Every threshold was frozen before the run; nothing was tuned to the data, because a curve-fit “ICT works” number would be worthless. It walked 24,908 fifteen-minute candles from July 2025 to July 2026.

Figures on a $10,000 account risking 3% per trade.
Net result
−$4,521
−45% in one year on default settings
Resolved trades
125
from 24,908 candles walked
Win rate
29.6%
37 wins · 81 losses · 7 timeouts
Profit factor
0.81
every $1 lost bought back only 81¢
Max drawdown
$5,121
deepest stretch — never recovered

What a year of rules-only ICT looked like

The running total of all 125 resolved trades, in your units. It spends roughly one week of the entire year above breakeven — the first trade wins, and it’s downhill from there. Not because the detectors were wrong about the patterns, but because with the judgment calls frozen to crude rules, the patterns alone had no edge: winners averaged +1.63R against a −1R stop, and at a 29.6% win rate that math bleeds.

On default settings the curve drops to −$2,499 by mid-September, claws back to nearly flat (−$240) in early May, then slides to −$4,521 by mid-July. (Enable JavaScript to see the interactive chart.)

Hover or tap the line for individual trades. Same-bar stop-and-target touches are graded as losses (the conservative convention), and 7 trades that hit neither level within 200 bars were closed at market for their small signed result.

One honest wrinkle worth flagging before anyone accuses us of hiding it: the one-month slice of this same bot that overlaps our AI test window actually finished slightly positive (+$264 across 10 trades). That is sample-size noise, not a redemption arc — its win rate in that slice (30.0%) is identical to the full year’s, the winners just happened to land bigger. The year is the number that counts: a naive mechanization of ICT loses money.

Test 2 · Judgment restored · EURUSD 15m · 4,129 candles

The AI discretionary backtest: same playbook, with judgment

Then we handed the identical ICT playbook to Michael — an AI trading analyst built to follow ICT methodology the way it's actually taught: higher-timeframe bias, draw on liquidity, premium/discount zoning, killzone timing, structure-shift confirmation, FVG/OTE execution. Michael is not an indicator bot. At each qualifying candle he reads the chart and casts a discretionary vote — LONG, SHORT, or FLAT — writing out his full reasoning in plain English before committing to entry, stop and target. The charts he sees are anonymized (prices rescaled, dates shifted) so the model can't recognize the historical period and cheat — it has to read pure price structure, live, with no lookahead.

Figures on a $10,000 account risking 3% per trade.
Net result
+$8,286
+83% in two months on default settings
Trades taken
47
of 641 discretionary chart votes
Win rate
40.4%
19 wins · 28 losses
Avg win / avg loss
$879 / $300
winners paid ~3× the losers
Max drawdown
$1,818
a 5-losses-in-6 stretch, mid-May

What two months of discretionary ICT looked like

The running total of all 47 trades, in your units. Notice what a 40.4% win rate with 3:1 winners feels like in real time: fast starts, long flat grinds, one +$3,066 monster in mid-May, and — because we don't cherry-pick endpoints — a five-loss streak to close the window. The peak was +$10,014; it ended at +$8,286.

On default settings the curve climbs to +$6,633 by April 29, dips to +$4,815 in mid-May, peaks at +$10,014 on May 28 and ends the window at +$8,286. (Enable JavaScript to see the interactive chart.)

Hover or tap the line for individual trades. One position at a time, sequential, exactly as it would trade live; ambiguous same-bar stop-and-target touches graded as losses.

The edge was saying no 92% of the time

Of 4,129 candles, cheap deterministic filters (killzone clock, quiet-market checks, an open-trade gate) ruled out most bars before Michael was ever asked. He cast 641 discretionary votes — and voted FLAT on 567 of them. Only 47 charts (7.7% of valid votes) met his bar for a trade. That refusal rate isn't timidity; it's the ICT discipline the mechanical bot couldn't express.

47 trades (7.7% of valid votes) 567 FLAT — "no valid setup, standing aside"

The single most revealing stat in the whole run: market structure shift (MSS) was Michael's #1 veto — cited as the blocker in 57.3% of all votes — but confirmed as an actual trigger only 4.6% of the time. "I don't trade until structure actually shifts" is textbook ICT, applied 641 times without fatigue.

A cheap AI can't trade ICT at all

Before this run we tried the exact same persona, prompts and rules on free-tier AI models. Across 500 discretionary votes, the free model took zero trades — it never once recognized a market structure shift as confirmed, only ever as absent. Swapping in a frontier-class model (~397B parameters, same prompts, same data) immediately produced the 47-trade record above. Reading structure off a raw chart is genuinely hard — too hard for small models, which is worth remembering when someone sells you a "ChatGPT trading bot."

So does ICT work? Here's what we can and can't claim

Rules only, no judgment125 trades · 1 year · PF 0.81
−$4,521
Same playbook + AI judgment47 trades · 2 months · PF 1.99
+$8,286

Different window lengths (that's disclosed, not hidden) — the point of the comparison is the sign, not the magnitude.

What these results support: ICT's concepts are real, describable things — our code detects them reliably. Traded as mechanical rules alone, they showed no edge over a year of EURUSD. Traded with disciplined judgment over the same kind of data, the identical playbook produced a net-positive, believable record: a 40.4% win rate carried by 3:1 winners and a 92% refusal rate. If ICT works, it works as a discretionary methodology — which is exactly what its practitioners have said all along.

What they don't support: 47 trades is a real but modest sample — and it's small for a cost reason, not a cherry-picking one. A valid discretionary vote needs a frontier-class model; cheap ones don't work at all, as shown above. Running one on every qualifying chart isn't fast or free either: the two-month AI walk took roughly two days of real compute time to finish, against the mechanical bot's full year finishing in about a minute. A longer AI backtest is the obvious next step, just not yet a cheap one. At this sample size, no single ICT concept can be statistically credited as "the edge" — every per-concept confidence interval in the table below crosses zero except higher-timeframe bias, and that one barely clears it. We're saying "the system worked end-to-end in this window," not "ICT is proven." Anyone who tells you the latter off any backtest is overselling.

Per-concept attribution — win rate and expectancy for the 47 real trades, split by which ICT concept was tagged on each one. The bar is each concept's 95% confidence interval in R; the tick marks zero, the dot marks the point expectancy.

ConceptTradesWin rateExpectancy95% confidence interval
Premium / discount zoningpd_premium_discount4740.4%+0.59R
−0.05R to +1.31R
HTF directional biashtf_bias · only interval that clears zero4641.3%+0.62R
+0.01R to +1.32R
Liquidity sweepliquidity_sweep4540.0%+0.54R
−0.10R to +1.24R
Market structure shiftmss (MSS)2642.3%+0.32R
−0.27R to +0.92R
Fair value gapfvg (FVG)2642.3%+0.45R
−0.24R to +1.21R
NY AM killzonekillzone_ny_am2433.3%+0.26R
−0.48R to +1.15R
Equal highs / lowseq_highs_lows18insufficient sample (n<20)
Order blockob12insufficient sample (n<20)
London killzonekillzone_london11insufficient sample (n<20)
NY PM killzonekillzone_ny_pm11insufficient sample (n<20)

Co-occurrence, not proof of causation — a row means trades tagged with that concept happened to have this outcome, not that the concept caused it. Rows with fewer than 20 tagged trades are shown for completeness only, not as evidence.

And a calibration note for anyone shopping for signal services: a 40% win rate is what honest, profitable asymmetric trading tends to look like. The 90%-win-rate ICT accounts on your feed are showing you marketing, not math.

Run this backtest yourself

Nothing here came off the shelf. We built the entire backtesting stack for this experiment — the ICT annotation library, the candle-by-candle backtest engine, the pre-filters, the trade grading — and open-sourced it, so everything in this article can be reproduced and audited from public code. You need three things and a bit of wiring:

  1. ict-tools — the ICT annotation library. The deterministic vocabulary layer: DST-correct killzones, the liquidity map (PDH/PDL, session ranges, equal highs/lows), premium/discount ladders, swing structure. This is the code that describes the chart in ICT terms.
  2. DTSB — the backtest engine. Walks historical candles point-in-time (no lookahead), runs the cheap pre-filters, asks the AI only on qualifying bars, grades every trade bar-by-bar with the conservative ambiguous-bar convention, and writes the full audit trail.
  3. A running MT5 terminal — DTSB's data provider talks to it directly for real broker history. Any broker's terminal works; no extra bridge or paid data feed needed.
  4. The wiring (this is the DIY part): two small pieces don't ship pre-built — an ICT strategy definition (a markdown persona file in DTSB's format) and the packet-hook that injects ict-tools' annotations into DTSB's prompt. Both are ordinary code, and this is 2026: open both repos in Claude Code (or your coding agent of choice) and ask it to wire ict-tools' annotation into DTSB's prompt packet and write the ICT strategy file. That's a normal implementation task, not a research project.

One warning from experience before you burn API credits: use a frontier-class model. As shown above, free-tier models cast 500 votes without ever pulling a trigger — the run will complete and tell you nothing.

How these backtests were run (and their limits).
  • Data: real MT5 EURUSD history, 15-minute anchor candles, walked chronologically with point-in-time packets — at every step both systems saw only what a live trader would have seen.
  • Mechanical run: 24,908 candles, 2025-07-17 → 2026-07-17. A Python strategy engine (not an MQL5 EA) trading two frozen ICT setups: killzone sweep-reversal and displacement-FVG continuation. All parameters fixed in the spec before the run — nothing optimized, deliberately, so the result is a floor, not a curve-fit ceiling.
  • AI run: 4,129 candles, 2026-04-15 → 2026-06-15 (two months). Charts anonymized (prices rescaled, calendar shifted; clock time preserved because killzones need it). One position at a time. ~98% of votes served by a single pinned frontier model (qwen3.5-397b).
  • Grading: both runs use the same conservative convention — if a candle touches stop and target in the same bar, it counts as a loss.
  • Not modeled: spread, slippage, commission and swaps. Both results come from the engine's own tracker, not a broker replay — real-world costs would shave both records.
  • Scope: one pair (EURUSD), one timeframe (15m anchor), one window each. The AI record is 47 trades — meaningful, not definitive.
  • Money math: fixed-fractional risk, non-compounding; 1R = the distance from entry to stop. Dollar and percent figures use the settings you chose above (default $10,000 balance, 3% risk per trade).

Backtested performance is hypothetical, shown for transparency and education. It does not include all real-world costs, and past or simulated results do not guarantee future returns. 3% risk per trade is an aggressive setting — scale it to your own tolerance. Trading forex involves substantial risk of loss. Nothing on this page is financial advice.

Frequently asked questions

Is the ICT strategy profitable?

In our testing: not as a pure rule-based system (a mechanical ICT bot lost 15.1R over one year of EURUSD), but yes as a discretionary methodology in the window we measured — an AI trading ICT with judgment made +27.6R over two months and 47 trades, with a 40.4% win rate and winners about three times the size of losers. That's evidence the discretionary approach can work, not a guarantee that it always will.

Is ICT legit or a scam?

The concepts are legit in the sense that they're real, precisely definable chart phenomena — we implemented detectors for killzones, liquidity sweeps, structure shifts and fair value gaps in code. What's often not legit is the marketing around ICT: screenshot accounts claiming 90%+ win rates. Our profitable run won 40.4% of its trades. If ICT works for someone, it looks like modest accuracy with asymmetric payoffs and a lot of discipline — not near-perfection.

Can ICT be automated into a bot or EA?

The vocabulary can be automated; the strategy resists it. Our fully mechanical version — real ICT detectors with fixed rules replacing bias, draw-on-liquidity and setup selection — lost money over a year (29.6% win rate, profit factor 0.81). The judgment calls a bot can't make are exactly where ICT's results come from, which matches how ICT is actually taught.

What win rate does ICT trading have?

In our tests: 29.6% traded mechanically, 40.4% traded discretionarily by the AI. The profitable version made its money from payoff asymmetry — average winner +2.93R against average loser −1R — and from refusing 92% of the setups it was shown, not from being right most of the time.

Does ICT work on any market and timeframe?

We can only speak to what we tested: EURUSD on a 15-minute anchor with higher-timeframe context, inside London and New York killzones. ICT's session logic is clock-dependent by design, so results on other pairs, timeframes or sessions may differ — don't extrapolate ours to them.

How can I verify or reproduce these results?

Both building blocks are open source: the ict-tools annotation library and the DTSB backtest engine (links in the "Run this backtest yourself" section). With those, a running MT5 terminal, and a coding agent like Claude Code to write the two small glue pieces (an ICT strategy file and the annotation hook), you can rerun the whole experiment on your own broker's data.

Want to watch ICT signals live?

The same AI engine publishes free signals with every win, loss and refusal on the record — get each signal the moment it fires.

Join the free Telegram channel

Leave a Reply