Concealing Baby Swallow: Why It Almost Never Prints
The concealing baby swallow is four black candles with a gap and a poke back. Which condition makes it rare, measured one at a time on EURUSD and GER40.
The concealing baby swallow is a four-candle pattern made of four black candles: the first two with no shadows at all, a third that gaps down and then pokes its upper shadow back up into the second candle's body, and a fourth that swallows the third whole. CandleScanner gives its Japanese name as "kotsubame tsutsumi".
Several sources call it rare, and one says it "appears so rarely (or not at all) that can be ignored by the traders". None of them says which of its four conditions causes that. On our own EURUSD 15-minute bars, four black candles in a row happen 911 times in eight months, and requiring the first two to be shadowless at a generous reading leaves 4. That first condition does almost all the work, and the gap everyone points at does very little.
What is the concealing baby swallow candlestick pattern?
Four black candles in a row, with two extra conditions on the last two. TA-Lib implements it as CDLCONCEALBABYSWALL and gives the shape in one sentence: "A four-candle pattern: two black marubozus, then a black candle that gaps down but pokes its upper shadow into the prior body, then a larger black candle fully engulfing the third. A hit signals a bullish reversal".
Traders Log states the same shape in four sentences: "Concealing Baby Swallow is a four candlestick bullish reversal pattern. The pattern occurs in a downtrend and the first two candles are black Marubozus. The third day opens with a gap down and a long upper wick that reaches into the body of the second candle. The fourth day is a black Marubozu and engulfs the third candle".
thinkorswim gives four numbered rules:
- Candles 1 and 2 "are bearish, continue the downtrend and miss both upper and lower shadows (Marubozu)"
- Candle 3 "is bearish, has long upper shadow and opens with a gap down from the second candle"
- "The High price of the third candle is greater than the second candle's Close price"
- Candle 4 "is bearish, misses shadows and completely engulfs the third candle"
Is the concealing baby swallow built into ChartLabs?
Yes. Open the Indicators menu and, in the Standard list, add Candlestick Patterns from the Patterns heading. It draws on the price pane and holds 61 pattern switches. Concealing Baby Swallow is one of them, in the four- and five-candle group, and it is on when you add the indicator.
A hit is marked CBS below the fourth candle's low, always as a bullish signal. The test is TA-Lib's, on TA-Lib's default thresholds, which you cannot change, and it marks only a complete pattern.
Is the concealing baby swallow bullish or bearish?
Bullish, nearly everywhere, and both specifications emit a bullish signal and nothing else. One guide teaches the opposite.
| Source | Its label |
|---|---|
| TA-Lib | Bullish reversal: "+100 on a match, 0 otherwise; never emits -100 (pattern is always bullish)" |
| thinkorswim | "a bullish trend reversal candlestick pattern consisting of four candles", filed under bullish-only |
| CandleScanner | "Forecast: bullish reversal" |
| Traders Log | "a four candlestick bullish reversal pattern" |
| TradingSim | Bullish: the formation "often leads to sharp counter reversals" |
| FXOpen | "a rare but noteworthy bearish continuation formation" |
That disagreement is not resolved here. The only two specifications of the pattern both emit a bullish reversal signal and neither can emit a bearish one. If you take the label from FXOpen and the rules from the library, you have a detector whose output means the reverse of what you think it means.
CandleScanner says why a bullish label is awkward: "It may be hard to think about this pattern as a bullish one because to confirm it, the bulls need to move price above the first line of the Concealing Baby Swallow."
What are the four candles, exactly?
The first two are agreed and the last two are not. Three things are stated differently across the sources.
Candle 3's colour. Bearish on TA-Lib (a "black candle"), thinkorswim ("is bearish"), FXOpen ("also black") and TradingSim, where it "eats into the body of the second day prior to closing lower". CandleScanner leaves the colour out, making it "a High Wave basic candle with no lower shadow", and Traders Log describes only its gap and its wick.
Candle 4's shape. thinkorswim requires it to miss shadows, and Traders Log calls it "a black Marubozu". The library does not: its summary asks only for "a larger black candle fully engulfing the third". CandleScanner asks for a "black body". TradingSim dismisses the shadowless version outright: "The last day could also be a black marubozu as well, but this version of the formation is so rare, its not worth discussing." That sentence sits oddly beside thinkorswim's rule 4, which requires exactly the version it says is not worth discussing.
Candle 4's engulfment. The third candle's body on the library and thinkorswim. Body and shadows on CandleScanner, whose construction line reads "candle's body engulfs the prior candle's body including the shadows", which is stricter than either specification. And FXOpen adds a condition nobody else has: candle 4 "completely engulfs the third and closes within the first candle's body".
Where is the gap?
Between candles 2 and 3, on both specifications. CandleScanner puts it in two places on one page, and the two cannot both be true.
Its construction list says candle 2 "opens within the prior candle's body". Its prose, a paragraph later, says "There is a gap between the first and the second line." A candle that opens inside the previous candle's body has not gapped away from it.
Both specifications are unambiguous: the library's only gap is the third candle's, and thinkorswim's rule 2 puts it on candle 3, "opens with a gap down from the second candle". If you are coding this pattern, that is the reading to use, and CandleScanner's contradiction sits on what is otherwise the most detailed construction list published.
Why is the concealing baby swallow so rare, and which condition does it?
The first condition, by a very long way. On 16,520 EURUSD 15-minute bars, one condition added at a time, with the shadowless test read generously at 10% of the bar's range:
| Condition added | Bars left |
|---|---|
| Four black candles in a row | 911 |
| The first two have shadows within 10% of their range | 4 |
| Candle 3 opens below candle 2's close | 2 |
| Candle 3's high pokes back above candle 2's close | 1 |
| Candle 4 fully engulfs candle 3 | 0 |
That first step is a cut of about 228 times. The gap that follows it is a cut of 2. CandleScanner named the cause in words, writing that "Two Black Marubozu candles appearing one after the other are very uncommon situation on the candlestick charts what limits the appearance of this pattern", and adding that the High Wave candle requirement "causes that the pattern almost do not appear on the charts".
The last step is 0 whichever specification you read it from. The library wants only a larger black candle fully engulfing the third; thinkorswim wants that candle shadowless as well. Neither survives: on the one EURUSD 15-minute case that reached that point, candle 4 did not engulf candle 3 at all, body or whole. On GER40 two cases reached it, and candle 4 engulfed candle 3's body once while never engulfing its full range.
How short does "no shadow" have to be?
The pattern's own page leaves it open, and the one published figure comes from TA-Lib's candle settings: ShadowVeryShort, a tenth of the mean high-to-low range of the previous 10 candles. Read "no shadow" strictly instead and this pattern has nothing to test.
Read exactly, two consecutive black candles with no shadow at either end happen 0 times in 16,520 EURUSD 15-minute bars. At 1% of the range, still 0. At 5%, still 0. At 10%, 4. The pattern's first condition is already empty before the other three are applied.
thinkorswim is the only guide that quantifies anything, and it does it by naming an input rather than giving a number: a shadow factor, "The factor used when checking if a shadow is long. A shadow is considered long if its length exceeds the average body height multiplied by this factor." No default is published for it, nor for its length or trend setup, so "long upper shadow" is left to the user in an otherwise exact rule.
The 10% readings are a share of each bar's own range, which is our choice; the library's tenth is a share of a 10-bar average range.
Does the concealing baby swallow print at all on our data?
No, in every cell we ran. The library's whole chain returns 0 across two instruments and four timeframes, at the exact reading and at the 10% reading.
Our cleaned data covers EURUSD, 246,778 one-minute bars, and GER40, the euro-quoted German 40 index, 225,951 one-minute bars, from 1 January to 31 August 2026, aggregated from 1-minute candles, our lowest timeframe, on history sourced from Dukascopy, tick-level where it is available, and cleaned to remove anomalies. The whole sample behind that zero is those 472,729 one-minute bars.
| Cell | Series length | Four black in a row | First two shadowless at 10% | Whole chain |
|---|---|---|---|---|
| EURUSD M15 | 16,520 bars | 911 | 4 | 0 |
| EURUSD H1 | 4,130 bars | 255 | 0 | 0 |
| EURUSD H4 | 1,068 bars | 63 | 0 | 0 |
| EURUSD D1 | 208 bars | 16 | 0 | 0 |
| GER40 M15 | 15,181 bars | 899 | 3 | 0 |
| GER40 H1 | 3,897 bars | 198 | 1 | 0 |
| GER40 H4 | 1,041 bars | 32 | 0 | 0 |
| GER40 D1 | 207 bars | 5 | 0 | 0 |
The daily rows are 208 and 207 bars, which is eight months. This says the pattern did not complete in our sample at the thresholds we tried. It does not say the pattern cannot occur, and the two specifications do define it.
Before trusting a table of zeros, check that the test can fire at all. A hand-built textbook case taken from the library's own wording, two black shadowless candles, a gapped black candle poking up into candle 2's body, and a black candle engulfing it, returns 1.
TradingSim publishes an entry, a stop and a measured target for this pattern, and beside them a claim about how often it works that its own page does not source. On a pattern that completed zero times in 472,729 one-minute bars, an unsourced probability is the figure to be most careful with.
Does the concealing baby swallow work on forex?
Two of its four conditions need something a market that trades around the clock mostly does not produce, so it is a poor fit rather than a bad pattern.
A gap needs a session break. In a 24-hour market a bar's open is the first tick inside that bar, so consecutive bars are joined by construction. And a true shadowless candle needs a bar that never traded past either end, which is a different kind of rarity but points the same way on a continuously traded instrument.
GER40 is the nearest test we have of that, and it is a weak one. The index trades in every hour of the day and pauses for about an hour each evening, around 21:00 UTC, so its clock is close to the pair's and the break it offers is a short one rather than a nightly one. It gets the first two shadowless candles 3 times on 15-minute bars rather than 4, and it still completes 0 times. Neither instrument here has the long session break the gap condition was written for, so this data cannot say how much of the rarity the gap explains. It does show the shadowless pair cutting hardest on both.
How do you backtest the concealing baby swallow on ChartLabs?
- Write the shadow threshold down first. At 0% this pattern has no candidates at all on our bars and at 10% it has four, so this one decision is the whole test.
- Count every condition separately rather than the pattern as a whole. A single total of zero teaches nothing; a chain of 911, 4, 2, 1, 0 tells you which rule to argue with.
- Decide which specification you are testing, and write that down too. The library does not require candle 4 to be shadowless and thinkorswim does.
- Start with the loosest condition, four black candles in a row, and only then add the rest. That way you always know your denominator.
- Do not change the threshold once you have started, and do not mix timeframes in one count.
- Step bar by bar with the next bar hidden. A four-candle pattern is not complete until candle 4 closes.
- Expect to find nothing, and treat that as a result with a sample size attached.
Writing a four-condition counter once is better than judging it by eye across thousands of bars. The built-in switch marks only a complete pattern, so to see where a chain stops, use the Pine Script editor. "Example: Mark bars by a rule" on the Pine Scripts tab opens a copy you can edit; each of the four conditions can be its own counter in a single script, and the script can mark the bars that reach any stage of the chain with a plotted shape or a label, which is how you see a chain stop rather than just a zero at the end. There is no scanner, no price alerts and no Pine backtesting.
What should you record?
The count at each condition, not just the total.
- The shadow threshold, as a number.
- Which gap definition you used, and which pair of candles you applied it to.
- Whether candle 4 had to be shadowless, and which source you took that from.
- The count after every single condition, in order.
- The series length for each cell, so a zero can be read.
- The instrument, the timeframe and the date range.
The trades CSV export carries a note per trade, so the rule version stays attached to anything you do trade.
Related reading
- Forex backtesting, for why a gap-dependent rule behaves differently on a pair than on an index.
- Backtesting accuracy, slippage and data quality, for why the data under a pattern count matters.
- Manual vs automated backtesting, for which one answers which question about a rule set.
Next step
Pick a shadow threshold, write it down, and count the four conditions separately on a stretch of history you have not studied. If you get zero, the useful number is where the chain stopped.
Start a free trial and step through the bars yourself.
Related Topics
Related Guides
Forex Backtesting: Test Your Strategy on Real Data
A practical guide to backtesting forex strategies: why session dynamics, spread variation, and pair-specific behavior change your results, what clean historical data actually means, and a five-step process for testing a strategy before you risk real capital.
Backtesting Accuracy: How Slippage and Data Quality Matter
Why backtest results and live results drift apart, and what actually closes the gap: clean tick data, honest spread assumptions, and commission and slippage modelled directly on every trade you log.
Manual vs Automated Backtesting: Which One Should You Use?
Automated backtesting tells you whether a set of rules made money. Manual backtesting tells you whether you can trade them. A practical comparison of what each one tests, what it costs you in time and skill, and which to reach for first.