Verdict

Ichimoku cloud

By Thomas Jamais (Backtestd) · Published · Updated

Too weak to trade
450versions tested
7%lost money after costs
+0.28typical version, R per trade
+1.10best version, R per trade

Does ichimoku cloud work?

Not reliably: the edge is too weak to trade. We coded the rule, tested 450 versions of it on 36 markets from 2022 to 2025, fees, slippage and funding included. 7% of the versions lost money. The best version did not survive older data it had never seen (2020–2022).

Key facts

Versions tested450
Markets36
Period2022-11-10 → 2025-07-09
Candles1d
Costsfees, slippage and funding on every trade
Versions that lost money7%
VerdictToo weak to trade

In short

We coded the rule, tested 450 versions of it on 36 markets from 2022 to 2025, fees, slippage and funding included. 7% of the versions lost money. The best version did not survive older data it had never seen (2020–2022).

The rule people share

As it is usually explained:

A trend system: price above the cloud and the lines crossing up = long.

Explained: the terms

  1. Two fast lines — Two lines follow price: the midpoints of the last 9 and the last 26 days.
  2. The cloud — The cloud is drawn 26 days ahead. Above it, the trend is up.
  3. Above the cloud + cross: buy — When price is above the cloud and the fast line crosses up, traders buy.

How we tested it

Read the full method →

Data

1d candles of 36 markets (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), 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.

Costs

Every trade pays a 0.05% taker fee per side, 2–5 basis points of slippage per side, and funding every 8 hours at each market's measured average rate. Results are in R: 1 R is the amount risked on one trade (entry to stop), so strategies with different stops compare fairly.

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.

Two halves

The data is split in two halves (a rising market, then a flatter one). A real edge should work in both.

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.

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).

Results

All 450 versions

−1 R0+1 R

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 450 versions

114 trades, 28% winners, +1.104 R per trade on average, +125.9 R in total, worst drawdown −25.6 R.

Cumulative result after costs, trade after trade (dashed line: start of the second half).

Why “the best version” misleads

With 450 versions, some look good by luck alone. The typical version made +0.279 R per trade; the best made +1.104. 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.

Verify it yourself

  1. Write the rule exactly (below: our specification and every setting we tried).
  2. Get free data: Binance's public archive (data.binance.vision) has years of candles; OKX and most exchanges offer an API.
  3. Include costs: fees on both sides, slippage, and funding for perpetual futures.
  4. Count results in R (risk per trade), not in %, and look at the typical version, not the best one.
  5. Split your data in two and keep a part you never look at until the end.
  6. Compare with simply holding the market over the same days.

Our exact specification (the lab's own words, in English)

Ichimoku cloud trend: enter when all classic Ichimoku conditions line up, both sides.

Source: Goichi Hosoda's Ichimoku Kinko Hyo (published 1969), as commonly coded in chart tools
(e.g. the LuxAlgo library description of the "strong" signal: Tenkan above Kijun, price above the
cloud, bullish cloud, Chikou confirming). Public-domain method; no code copied.

Lines (all from candles only, all causal):
- tenkan   = midpoint of the highest high and lowest low over `tenkan` candles
- kijun    = same over `kijun` candles; the displacement is also `kijun` candles (Hosoda: 26/26)
- span A   = (tenkan + kijun) / 2, span B = midpoint over `senkou_b` candles
- the cloud under today's price is span A / span B as computed `kijun` candles ago (shift(+k))
- the leading cloud (plotted k candles ahead) is span A / span B computed today
- chikou confirmation: today's close above (below) the close `kijun` candles ago

Long when, at the close: tenkan > kijun, close above the top of today's cloud, leading span A >
leading span B, and (if chikou = 1) close > close k candles ago. Short is the exact mirror.
The entry fires on the first candle where the full set becomes true (that includes the classic
"TK cross above the cloud" and the "price breaks out of the cloud with the lines already aligned").

Adaptations:
- Default periods 10/30/60: the common crypto variant of 9/26/52 (markets open 7 days, not 6).
- Hosoda exits on a TK cross back or a close back into the cloud. Our engine exits only by stop,
  target or time stop, so the exit is a fixed stop at stop_mult x ATR(14 days) and a time stop of
  hold_bars (no target: K-020 found no target best in trend families).
- `chikou` = 0 switches the Chikou filter off (control for whether the filter adds anything).

Lab note: this is a trend-following entry. K-003 closed the MA/breakout trend family because its
profits were long-side bull beta. What differs here is only the entry geometry (range midpoints and
a displaced cloud instead of moving averages of closes) and a four-way confirmation. Judge it by
side, by BTC phase and by half; expect the same long-beta pattern unless the shorts hold up.

Settings tried

SettingValues
tenkan20, 9
kijun26, 30, 60
senkou_b120, 60
stop_mult2.0, 3.0, 4.0
hold_bars15, 30, 60
chikou0, 1
entry_modeat_stop, market, pullback
entry_stop0.25, 0.5, 1
entry_wait3
exit_scale—, 1:0.33,2:0.33, 1:0.5
exit_scale_be0, 1
entry_pull0.25, 0.5
avg_down0, 2
avg_stop0.5, 1, 2
avg_exitbreakeven, strategy
sent_weight0, 0.5, 1
sent_modecontrarian, follow
sent_block0, 0.5

Settings of the version shown

tenkan9
kijun60
senkou_b120
stop_mult2.0
hold_bars30
chikou0
entry_modepullback
entry_pull0.5
entry_wait3

Download every trade of the version shown (CSV, 114 rows)

Limitations

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

Fair value gap (FVG)
772 · No edge after costs
→
Moving-average trend following
1249 · No edge after costs
→
New York open · 12 EMA on Nasdaq
28 · No edge after costs
→

← All tests