Test · Crypto + Stock market + Forex + Commodities · 15m · 8 min read
Troy horse ICT method
By Thomas Jamais (Backtestd) · Published · Updated
Does troy horse ICT method work?
No, not in our test. We coded the rule, tested 64 versions of it on 36 crypto perpetual futures, 10 stock indices, 12 currency pairs and 3 commodities from 2022 to 2025, fees, slippage and funding included. 100% of the versions lost money. The best version did not survive older data it had never seen (2020–2022).
Key facts
| Versions tested | 64 |
|---|---|
| Markets | 36 crypto perpetual futures, 10 stock indices, 12 currency pairs and 3 commodities |
| Period | 2022-11-10 → 2025-07-09 |
| Candles | 15m |
| Costs | fees, slippage and funding on every trade |
| Versions that lost money | 100% |
| Verdict | No edge after costs |
Watch the videos
Short videos about this test. Each one has its own page.
Markets tested
Tested on 36 crypto perpetual futures (leveraged crypto derivatives, open 24/7, with funding paid every 8 hours), 10 stock indices (indices of traditional stock exchanges, with trading hours and overnight gaps), 12 currency pairs (currency pairs, open 24 hours a day, 5 days a week) and 3 commodities (gold, silver and oil prices), 2022–2025.
| Market | Period | Markets | Versions | Made money after costs | Typical version, R per trade |
|---|---|---|---|---|---|
| Crypto (perpetual futures) | 2022–2025 | 30 | 64 | 0 % | −0.091 |
| Stock market (indices) | 2022–2025 | 10 | 56 | 0 % | −0.218 |
| Forex (currency pairs) | 2022–2025 | 12 | 60 | 0 % | −0.113 |
| Commodities | 2022–2025 | 3 | 26 | 0 % | −0.166 |
| Stock market (indices) | 2010–2022 | 9 | 64 | 8 % | −0.113 |
| Forex (currency pairs) | 2010–2022 | 12 | 64 | 0 % | −0.125 |
Results are never pooled across market kinds: a strategy can behave very differently on crypto perpetuals, stock indices and currencies. Leverage changes the size of a position, not its result in R. What leverage costs is counted: funding on crypto perpetuals and on the OKX contracts that track indices and commodities (2022 on). The 2010–2022 stock-index and forex history is tested on the plain price, without leverage or overnight swap.
The rule people share
As it is usually explained:
“London close stays inside the New York morning range. Then trade the retest of a fair value gap toward the morning low.”
— the rule as people share it
How we tested it
- 01
Data
15m candles of 61 markets (Crypto (perpetual futures): AAVE, ADA, APR, ARB, AVAX, BAT, BCH, BNB, BTC, DOGE, DOOD, DOT, ENA, ETH, FIL, HYPE, INJ, IOST, LINK, LTC, NEAR, OKB, ONDO, PEPE, PUMP, SOL, STRK, SUI, TAO, TIA, UNI, WLD, XPL, XRP, ZEC, ZRO; Stock market (indices): ASX-IDX, CAC-IDX, DAX-IDX, FTSE-IDX, HSI-IDX, NDX-IDX, NIKKEI-IDX, QQQ, SPX-IDX, SPY; Forex (currency pairs): AUDJPY-FX, AUDUSD-FX, EURCHF-FX, EURGBP-FX, EURJPY-FX, EURUSD-FX, GBPJPY-FX, GBPUSD-FX, NZDUSD-FX, USDCAD-FX, USDCHF-FX, USDJPY-FX; Commodities: BZ, XAG, XAU), from 2022-11-10 to 2025-07-09. Crypto prices come from OKX perpetual futures; the 2020–2022 check uses Binance's public archive (median price gap to OKX: 0.06%). US index data comes from HistData.
- 02
Costs
Every trade pays a 0.05% taker fee per side, 2–5 basis points of slippage per side, and, on crypto perpetual futures, funding every 8 hours at each market's measured average rate. Stock indices and forex pairs (2010–2022 history) pay their own costs: about 0.03% per side for indices, 0.013% for major currency pairs, without funding. Results are in R: 1 R is the amount risked on one trade (entry to stop), so strategies with different stops compare fairly.
- 03
Versions
A rule shared online is never fully specified (which stop? which holding time? which timeframe?). So we test every reasonable reading: each combination of the settings below is one version.
- 04
Two halves
The data is split in two halves (a rising market, then a flatter one). A real edge should work in both.
- 05
Against the market
A long trade in a rising market makes money without any skill. We subtract what simply holding the crypto market (an equal-weight basket) on the same side over the same days would have made: what remains is what the rule adds.
- 06
Older data, never seen
The best version is then run, unchanged, on 2020–2022 data that played no part in choosing it (a crash, a bull market and a bear market).
The words of a test
Tap a card to flip it
Results
All 64 versions
Each bar counts versions by their average result per trade after costs (clipped to ±1 R). Green: made money; red: lost money.
The best of 64 versions
5743 trades, 51% winners, −0.082 R per trade on average, −470.8 R in total, worst drawdown −488.0 R.
Cumulative result after costs, trade after trade (dashed line: start of the second half).
The checks, in numbers
- From November 2022 to March 2024: −0.076 R per trade. From March 2024 to July 2025: −0.086 R per trade.
- Against holding the market over the same days: −0.160 R per trade (week-clustered t = −17.1).
- Same settings on 2020–2022: 3075 trades, −0.082 R per trade, −0.185 R per trade against the market.
Why “the best version” misleads
With 64 versions, some look good by luck alone. The typical version made −0.105 R per trade; the best made −0.082. If the rule had no edge at all, the spread of results would look like this anyway: the best of many random tries always looks impressive. That is why we never trust the best version until it works on data it was not chosen on.
Quick check
The best of the 64 versions made −0.082 R per trade. What does that tell you?
Verify it yourself
- Write the rule exactly (below: our specification and every setting we tried).
- Get free data: Binance's public archive (data.binance.vision) has years of candles; OKX and most exchanges offer an API.
- Include costs: fees on both sides, slippage, and funding for perpetual futures.
- Count results in R (risk per trade), not in %, and look at the typical version, not the best one.
- Split your data in two and keep a part you never look at until the end.
- Compare with simply holding the market over the same days.
Get the data
↓ Download every trade of the version shown (CSV, 5743 rows)
The exact specification we coded
(the lab's own words, in English)
Troy horse: the "Trojan Horse ICT Order Flow Quantum Method" from an Instagram reel, written down as rules. What it does: the reel (Micro Nasdaq futures, 5-minute chart) draws a wooden horse over one day of price. "The soldiers build up inside the horse": during the London-close killzone price stays inside the range of the New York morning killzone. Then price "displaces lower out of the mouth of the horse" and leaves a fair value gap (FVG); you sell when price comes back into the gap and aim for the New York morning low. The reel never states a rule; this file is the closest testable reading of what it shows. Long is the mirror image (displacement up, target the New York morning high). Rules (fixed a priori from the reel, not tuned on results), times in New York local time (DST handled): - NY AM killzone: am_start..am_end (default 07:00-10:00). Its high and low are the horse's frame. - London-close killzone: lc_start..lc_end (default 10:00-12:00). Its high (short) / low (long) is the head. - Inside the horse (require_inside): the whole London-close range stays inside the NY AM range. Both sessions must be complete that day (markets that are closed then give no signal). - Mouth: between lc_end and win_end (default 15:00), the first three-candle fair value gap of the day whose middle candle is a displacement (body >= disp_mult x ATR, gap >= min_gap_atr x ATR) gives the side: bearish gap = short, bullish gap = long. Price must still be inside the NY AM range. - Entry (entry = "retest"): the first later candle (before win_end) that trades back into the gap and closes inside or beyond it; a close through the far side of the gap, or reaching the target first, cancels the day. entry = "immediate": enter right after the gap forms (no retest). - Stop (stop = "head"): beyond the highest high (short) / lowest low (long) since the London-close killzone began, + stop_buf x ATR. stop = "fvg": beyond the far side of the gap. Optional floor: at least min_stop_adr x average daily range away (0 = pure structure, as in the reel). - Target (target_r = 0): the NY AM killzone low (short) / high (long). target_r > 0: that many times the stop distance. Every trade is closed by flat_h (default 16:00 New York) at the latest. One trade per day. - Needs intraday candles (<= 1 hour). The reel used 5-minute candles; our history is 15-minute. Source: Instagram reel, "New trojan horse method" (caption tagged #funny); idea only.
Every setting tried (64)
| Setting | Values |
|---|---|
require_inside | False, True |
disp_mult | 0.5, 1.0 |
entry | immediate, retest |
stop | fvg, head |
target_r | 0.0, 2.0 |
min_stop_adr | 0.0, 0.25 |
The settings of the version shown
am_start_h | 7.0 |
am_end_h | 10.0 |
lc_start_h | 10.0 |
lc_end_h | 12.0 |
win_end_h | 15.0 |
flat_h | 16.0 |
require_inside | False |
entry | immediate |
stop | head |
stop_buf | 0.1 |
min_stop_adr | 0.25 |
target_r | 0.0 |
atr_len | 14 |
disp_mult | 1.0 |
min_gap_atr | 0.1 |
Limitations
- A backtest is not live trading: fills, outages and your own discipline differ.
- We test the rule as written; a trader's discretion is not testable.
- Markets change. A rule that failed here could work elsewhere, and the reverse.
- Costs depend on your exchange and size; ours are typical retail perpetual-futures costs.
Questions
Did you include fees?
Yes: fees, slippage and funding on every trade, from real exchange schedules.
Maybe it works on another timeframe?
We tested several timeframes and holding times: see “Settings tried”. The result does not depend on one choice.
Maybe it works with better risk management?
We tried stops of different widths, targets, trailing stops and partial exits. Risk management changes the shape of the results, not the sign of the edge.
Why should I trust you?
You should not: verify. The rule, every setting and every trade are on this page.
Does this mean nobody makes money with it?
Some traders will, by skill elsewhere or by luck. This test only says the rule itself does not give an edge after costs.
Disclaimer
Educational content based on historical backtests. Not financial advice. Past results do not predict future results. Trading leveraged products can lose more than you invest.
More tests
772 · No edge after costs→Moving-average trend following
1249 · Too weak to trade→New York open · 12 EMA on Nasdaq
28 · No edge after costs→
