← Back to all toolsDo candlestick patterns actually work? 2,022

Research · Backtest

Do candlestick patterns actually work?

Fourteen patterns from Nison's book, tested across ten symbols and ten years. 2,022 trades. Every one of them benchmarked against a random entry using identical exits. None cleared the bar.

Liquidity Llama · 13 August 2026 · 9 min read

Candlestick patterns are the most widely taught chart method there is. Nison's Japanese Candlestick Charting Techniques is the source text for essentially all of it, and the patterns have names good enough to remember without trying — hammer, dark-cloud cover, evening star. The question nobody publishing a pattern cheat-sheet seems to answer is the only one that matters before you risk anything: does entering on the pattern beat entering at random?

So I coded all fourteen to Nison's own definitions, including the trend-context requirement and the confirmation rule for hanging man and shooting star that most implementations quietly skip. Then I tested them the way the naked-levels study was run — full sample, stated limitations, and the answer published whichever way it came out.

Note on scope. This tests patterns as mechanical entry triggers on daily bars in liquid markets. It does not test candles as a discretionary confirmation overlay on a level you identified some other way — that is not a mechanical rule and this design cannot speak to it. Nison himself writes that candles are "just one weapon" and "do not provide price targets," and spends half the book combining them with Western tools. The claim under test here is the popular one, not his.

The headline numbers

−0.18%Bullish patterns vs random entry, per trade
0 / 14Patterns with a significant cross-symbol edge
2,022Trades simulated, next-bar-open fills
10Median trades per pattern-symbol cell

Buying after a bullish candlestick pattern did slightly worse than buying on a randomly chosen day.

The profitable-looking raw numbers — roughly 50% win rates, +1.29% average per trade — were the market going up over ten years. Not the patterns.

Why the control is the whole study

Test a bullish pattern on a ten-year bull market and it will look profitable. It has to. You are measuring drift, not signal. This is the single most common flaw in published pattern statistics, and it is why a "62% win rate" headline tells you nothing on its own.

So every pattern here was run against 40 rounds of random entries taking the same number of trades on the same symbol with byte-identical exit rules — same ATR stop, same target, same time stop, same costs. The only difference is whether the entry bar was chosen by the pattern or by a random number. That difference is the edge. Everything else cancels.

SidePattern entriesRandom entriesNet edge
Long patterns+1.290%+1.471%−0.181%
Short patterns−0.973%−1.491%+0.518%

The short side reads positive against its control, but look at the absolute figure: −0.97% per trade, mean profit factor 0.93. Shorting these patterns loses money more slowly than shorting at random does. That is not an edge. That is a less-bad way to lose.

Every pattern, with its uncertainty

The chart below is the study in one image. Each bar is a pattern's mean edge over random entries, measured across the symbols where it fired enough times to count. The horizontal line through each bar is the 95% confidence interval.

If a pattern's interval crosses zero, the data cannot distinguish it from noise. Thirteen of fourteen do.

−5% −3% −1% 0 +1% +3% no edge evening star three black crows inverted hammer shooting star bullish engulfing piercing hanging man bearish harami dark-cloud cover bearish engulfing hammer bullish harami morning star three white soldiers bar = mean edge vs random  ·  whisker = 95% confidence interval
Mean edge over random entries, by pattern. Only evening star's interval excludes zero — and with fourteen patterns tested, roughly one is expected to do that by chance alone.

What the numbers say

Nothing survives multiple comparisons. Evening star is the one pattern whose confidence interval clears zero, at t = 2.65. But testing fourteen patterns means roughly one will clear a 5% threshold on luck. Correcting for that raises the bar to about t = 3.2. Evening star does not reach it. If I published "evening star works" off this data, I would be publishing the multiple-comparisons error.

Look at the dispersion, not the average. Three white soldiers scored +4.3% edge on BTC and −3.7% on XOM. Hammer was positive on five symbols and negative on five. A real effect does not flip sign depending on which ticker you point it at. That spread is the signature of noise, and it is exactly what the wide whiskers above are showing.

The bearish patterns have a sample-size problem hiding in plain sight. Bearish engulfing fired 436 times — a decent sample — and produced an edge of −0.02% with a tight interval. That is a genuine, well-measured zero. The patterns that look most exciting are the rare ones: shooting star (43 trades), piercing (43), evening star (52). Their intervals are wide for a reason.

Most cells are too thin to read at all. Median trades per pattern-symbol cell: 10. Seventy percent of cells had under twenty. So when a pattern site tells you "shooting star hits 75% on JPM," that is an n=8 result. It means nothing, and I can produce a dozen like it from this same dataset by cherry-picking.

The obvious next question: does filtering help?

Every reader arrives at the same two objections. Fine — but what if you only trade the good patterns? And what if you only take them when momentum agrees? Both sound right. Both are testable. So I tested them, long side only, same data and same exits.

ArmTradesWin rateEdge vs randomVerdict
All bullish patterns63548.4% +0.040%baseline
Premium only
hammer, engulfing, piercing, morning star
40950.1% +0.213%mild improvement
Premium + momentum
regime filter + pullback
4643.8% −1.118%worse

Restricting to the best patterns helps a little. The edge roughly five-times from +0.040% to +0.213% — which sounds impressive until you check it: t = 0.94, positive on 6 of 10 symbols. Still indistinguishable from noise. It is the least-bad configuration, not a working one.

Adding momentum confirmation made it worse, and that is the more interesting result. Requiring a long-horizon uptrend plus a pullback into it is exactly the filter most people would reach for. It took the edge negative, was positive on only 1 of the 5 symbols that produced enough signals, and cut the sample by 89% — down to 3 to 16 trades per symbol over ten years. At that point you are not measuring a strategy, you are looking at a handful of coin flips.

Filters feel like they must help. They narrow the entries, they use more information, and every backtest you have ever seen adds them. But each one also multiplies the ways you can fit yourself to history, and each one shrinks the sample you have left to judge with.

The rule that survives: a filter has to earn its place against a control, on the same data, before you keep it. Two of the three here did not.

One design note, because it caused a real bug worth naming. A bullish reversal pattern requires a prior downtrend. A trend filter demanding an uptrend on the same lookback cancels it outright — the two conditions can never both be true, and the strategy silently stops trading. The momentum arm above splits the horizons: the regime runs long (200-period) while the pattern's own context runs short (20-period), so it reads as "a dip inside an uptrend" rather than a contradiction. That is the only way a pullback filter is coherent — and it still did not help.

This is what the literature already found

The result is not contrarian. It reproduces the mainstream academic finding using a simpler control.

Marshall, Young & Rose (2006) tested candlestick strategies on DJIA components from 1992–2002 using a bootstrap that generates random OHLC series — a stronger version of the control used here — and found no value. The same authors ran the design on the Japanese equity market, the patterns' home market where the cultural-adoption argument is strongest, and again found no profitability. A study of 29 OMXS30 stocks (2007–2015) found no short-term predictive power.

The evidence is not uniformly negative, and it would be dishonest to present it that way. A 2024 study of the VNQ real-estate ETF (2008–2024) reported hammer accuracy at 59.9% and bullish engulfing at 54.4%. Recent work reports usable intraday signal in crypto. Both are thinner and less arbitraged than large-cap US equities — precisely where you would expect a residual effect to survive.

The honest summary: in deep liquid markets the effect is absent, or too small to survive costs. In thinner markets and shorter horizons there is some evidence of residual signal. If you want to keep looking, look there — and bring the control with you.

Limitations, stated plainly

This tests one specific claim. Daily bars, liquid instruments, mechanical entry on pattern confirmation, ATR stop and fixed R target. Change the exit rule and the numbers change. A pattern that fails with a 2R target might work with a trailing stop; I have not tested that, so I am not claiming it.

Ten years is one macro regime. The sample runs 2016–2026 and is dominated by a bull market with two sharp drawdowns. Pattern behaviour in a prolonged bear market is not well sampled here.

Daily bars only. Nison's second edition is explicitly focused on intraday charts for active traders. Free intraday history is too thin for a study this size, which is the same constraint that limited the naked-levels work. The intraday question is open.

The random control is simpler than a bootstrap. It randomises entry timing but keeps the real price path. Marshall et al.'s approach of generating synthetic OHLC is stronger. Mine is a lower bar, and the patterns still failed to clear it.

How this study was run

  1. No look-ahead. The pattern is confirmed on the close of bar t. The fill happens at the open of bar t+1. Verified by assertion in the test suite, not by inspection.
  2. Pessimistic intrabar resolution. Stops and targets are checked against each bar's high and low. When both are touched inside the same bar, the stop is assumed to fill first.
  3. Costs on both sides. 5 bps fee plus 5 bps slippage per side, charged on every trade.
  4. Identical exits everywhere. 2×ATR stop, 2R target, 20-bar time stop — the same for pattern entries and control entries, so the comparison isolates entry timing.
  5. One position at a time, so overlapping signals cannot double-count a favourable move.
  6. Symbols: SPY, QQQ, AAPL, MSFT, NVDA, TSLA, JPM, XOM, GLD, BTC-USD. Daily bars, Aug 2016 – Aug 2026.

The backtester and the raw per-symbol output are both published. Run it yourself and change the assumptions — the exit rule and cost model are inputs at the top of the file.

The indicator, with a random-control mode → Run it on your own symbol → All 14 patterns, defined plainly → Download the raw results →

Sources

For educational purposes only. Backtested results are not indicative of future performance. Simulated results include modelled fees and slippage but cannot fully account for live execution, liquidity or fill quality. Nothing here is investment advice.