Candlesticks · Two-candle patterns
Dark cloud cover: the pattern and its penetration setting
How dark cloud cover forms, how TA-Libâs penetration parameter works, why Finabaseâs setting of 10 means it never fires, and what TA-Lib finds at 0.5.
On this page
- The classic shape
- Penetration: the setting that decides everything
- Why a gap-and-fail at the top matters
- Confirming dark cloud cover
- Two real cases at TA-Lib's default setting
- What the data says at penetration 0.5
- Dark cloud cover and its relatives
- An educational outline for dark cloud cover
- How Finabase handles dark cloud cover
- Frequently asked questions
- Summary
Dark cloud cover is a bearish two-candle reversal that appears after an advance. A long green candle is followed by a session that opens above the green candle's high, then sells off to close below the middle of the green body, though not below its open. A dark cloud has rolled over a bright day.
It is the mirror of the piercing line, and most guides stop there. This page has a second job. In TA-Lib, the library that powers Finabase's pattern detection, dark cloud cover depends on a setting called penetration, and the value Finabase passes for it means the pattern can never be detected in the app. Understanding why teaches you exactly how the pattern is defined.
So this page covers the classic shape, the penetration rule and what Finabase does with it, and then what TA-Lib finds at its own default setting: 117 occurrences across 60 large US stocks and ETFs over two years, with two real examples.
The classic shape
The textbook version needs:
- An advance of several sessions.
- A long green candle that closes near its high, the bulls at full confidence.
- An open above that high. The second session starts with a gap above the entire previous range.
- A close deep into the green body, below its midpoint, but not below its open. If it closed below the green open, the red body would cover the green body and the pattern would be a bearish Engulfing candlestick pattern: bullish and bearish rules and data.
Nison stresses depth: the further the red close sinks into the green body, the more weight the pattern carries. Some Japanese sources accept a close somewhat above the midpoint. That flexibility is exactly what TA-Lib's penetration parameter encodes.
Penetration: the setting that decides everything
How TA-Lib writes the rule
TA-Lib's CDLDARKCLOUDCOVER checks, on the second candle:
| Condition | TA-Lib rule |
|---|---|
| First candle | Green, with a real body longer than the average body of the previous 10 candles |
| Second candle | Red (no size requirement) |
| Open | Above the first candle's high |
| Close, lower limit | Above the first candle's open |
| Close, upper limit | Below the first candle's close minus penetration à the first candle's body |
| Prior trend | Not tested |
| Output | â100 on the second candle |
Penetration is a fraction of the first body. At the default of 0.5 the red close must fall below the green midpoint. At 0.3 it only needs to fall 30% of the way into the body.
Why 10 can never match
Put the two close limits together. The green candle's open equals its close minus its body. So the red close must be:
- above green close â 1 Ã body (the green open), and
- below green close â penetration à body.
For any close to satisfy both, penetration must be less than 1. At 1 the window has zero width, and above 1 the lower limit sits above the upper one. Finabase calls TA-Lib with a penetration of 10, which asks for a close at least ten bodies below the green close and at the same time above the green open. No candle can do both.
This is not a rare-event problem. It is a definitional one. Across all 29,760 bars in our
study, CDLDARKCLOUDCOVER at Finabase's setting returned zero signals, and it would
return zero on any data.
Where the 10 comes from
The setting was carried over verbatim from the legacy app's server, which passed 10 to all seven TA-Lib patterns that accept a penetration value: abandoned baby, dark cloud cover, evening star, evening doji star, mat hold, morning star and morning doji star. Finabase keeps that behavior unchanged, so the signals match what the existing apps have always shown. The app's dark cloud cover study therefore carries a penetration of 10, and in our study all seven patterns stayed silent.
A small asymmetry with the piercing line
The bullish mirror, CDLPIERCING, has no penetration parameter: its 50% midpoint is
fixed in the code, so Finabase detects piercing lines normally. The two functions also
differ in a second detail. The piercing test requires the green second candle to be
long. The dark cloud test puts no size limit on the red second candle. Mirror patterns
in candlestick lore are not always mirror functions in code.
Why a gap-and-fail at the top matters
The first session ends with the bulls triumphant: a long green body closing near the high. The second session opens even higher, above anything traded the day before. Late buyers chase the gap. Then the market turns, and by the close it has given back the gap and more than half of the previous day's gain.
Two groups now feel the pain. Everyone who bought the gap is underwater on the day. And the longs from the green candle have watched half their gain disappear in one session. If the next session cannot recover, those holders become sellers, which is the mechanism by which a dark cloud can grow into a larger decline.
Confirming dark cloud cover
- A close below the red candle's low, the rule our study uses.
- A close below the green candle's open, which completes the takeover the dark cloud only started.
- Depth. Closes far below the midpoint carry more information than those just past it.
- Volume. Heavy volume on the red session suggests real distribution rather than a quiet drift.
- Resistance. A dark cloud at a prior high, a round number, or an overbought Relative Strength Index (RSI): how to read and use it reading is better placed than one in the middle of a trend.
Two real cases at TA-Lib's default setting
These two were found by running CDLDARKCLOUDCOVER with penetration 0.5 on Finabase's
own daily data. Finabase's charts did not mark them.
UPS, April 21, 2026 (worked). UPS had gained 9% in ten sessions. On April 20 it closed at $107.11 after opening at $105.73, with a high of $107.50. On April 21 it opened at $107.53, three cents above that high, and closed at $106.31: below the $106.42 midpoint, above the $105.73 open. The next session closed at $105.30, under the red candle's $105.58 low, confirming it. Ten sessions later UPS was 7.8% lower, having touched $95.98. Under Finabase's setting the red close would have had to be below $93.31 and above $105.73 at once, which is why the app shows nothing here.
Texas Instruments, January 15, 2026 (failed). TXN had risen 9% in ten sessions. A long green candle from $187.50 to $193.45 (high $193.61) was followed by a red session that opened at $194.93 and closed at $189.12, below the $190.48 midpoint. It never confirmed: the next close was $191.58, above the red candle's $188.77 low. Ten sessions later TXN was 14.0% higher and had traded at $222.00. A trader with a stop just above the red candle's high would have been out with a small loss early in that run.
What the data says at penetration 0.5
We ran CDLDARKCLOUDCOVER at TA-Lib's default over the same 60 US stocks and ETFs,
October 30, 2024 to October 29, 2026, and compared outcomes with every day in the sample.
| Group | Cases | Lower after 5 sessions | Any-day baseline | Average 5-session return | Average 10-session return |
|---|---|---|---|---|---|
| Dark cloud cover, penetration 0.5 | 117 | 44.1% | 46.7% | +0.03% | +0.21% |
| Confirmed (from the confirmation close) | 42 | 47.6% | 46.7% | +0.53% | |
| Dark cloud cover at Finabase's 10 | 0 | â | â | â |
Returns are price changes. Positive averages after a bearish pattern mean stocks rose. Six of the 117 were too recent to measure five sessions on.
At the default, the pattern carried no measurable edge. Dark clouds were followed by declines slightly less often than an ordinary day, and stocks were essentially flat over the next five sessions. That held even though 67.6% of the cases formed after a ten-session advance, the textbook context.
Confirmation did not rescue it. The 42 confirmed cases fell 47.6% of the time, in line with the baseline, and rose 0.53% on average.
So the practical cost of Finabase never showing the pattern was small in this sample. That is a statement about one period and one universe, not a judgment on the pattern everywhere.
Dark cloud cover and its relatives
| Pattern | Second candle opens | Second candle closes | Detected in Finabase |
|---|---|---|---|
| Dark cloud cover | Above the first high | Below the midpoint, above the first open | No (penetration 10) |
| Piercing line pattern: how it forms, TA-Lib rules and track record | Below the first low | Above the midpoint, below the first open | Yes |
| Engulfing candlestick pattern: bullish and bearish rules and data (bearish) | At or above the first close | At or below the first open | Yes |
| Counterattack lines: matching closes after a strong move (bearish) | Well above the first close | At the first close | Yes |
If the red close stops short of the midpoint, most authors call it a failed or weak dark cloud and treat it as noise. If it goes below the green open, the pattern upgrades to a bearish engulfing, which Finabase does flag.
An educational outline for dark cloud cover
How the pattern is commonly approached, not a recommendation. Because Finabase will not flag it, this applies to patterns you identify yourself.
- Confirm the context. An advance into an area where sellers have appeared before.
- Wait for a close under the red candle's low, or under the green candle's open.
- Put invalidation above the red candle's high, the top of the failed gap.
- Size from that distance and target an earlier support level.
How Finabase handles dark cloud cover
- Chart markers. The Dark Cloud Cover study exists in the chart's study list and can be added (the UPS chart link turns it on), but with its penetration of 10 it marks no candles on any symbol.
- Scanner. No stock ever appears on the dark cloud cover Bearish list for the same reason. The closest signal the scanner does produce is the bearish engulfing list.
- Signals gauge. In the Candlestick gauge on a symbol's Signals tab (for example UPS), dark cloud cover is one of the 61 patterns, and it always votes Neutral, as do the other six penetration patterns.
Frequently asked questions
Why doesn't Finabase show dark cloud cover?
Finabase calls TA-Lib with a penetration of 10, a value inherited from the legacy app and kept for consistency across app versions. Any penetration of 1 or more makes TA-Lib's two close conditions contradictory, so the pattern cannot occur.
What penetration value is standard?
TA-Lib's default is 0.5, meaning the red close must fall below the green body's midpoint. Some traders use 0.3 to catch shallower versions.
Is dark cloud cover the same as a bearish engulfing?
No. In a dark cloud the red close stays above the green open. In a bearish engulfing it falls to or below the green open, so the red body covers the whole green body.
Did dark cloud cover work in your data?
At TA-Lib's default, not measurably: 44.1% of 117 cases fell over five sessions against a 46.7% baseline. The sample is small and covers a rising market.
Summary
Dark cloud cover is a gap above a long green candle's high that fails and closes deep in the green body, a bearish warning at the top of an advance. TA-Lib expresses "deep" as a penetration fraction of the first body, and any value of 1 or more makes the pattern impossible. Finabase passes 10, inherited from the legacy app, so its charts, scanner and gauge never show this pattern. At TA-Lib's default of 0.5 it appeared 117 times in our two-year sample and showed no edge over an ordinary day. Learn to spot it by eye, and let a confirming close below the red candle's low do the deciding.
Sources and further reading
- Steve Nison, Japanese Candlestick Charting Techniques (New York Institute of Finance, 1991)
- Thomas N. Bulkowski, Encyclopedia of Candlestick Charts (Wiley, 2008)
- TA-Lib source code â CDLDARKCLOUDCOVER and the default candle settings
- Finabase chart data â daily bars for 60 US stocks and ETFs, 2024-10-30 to 2026-10-29; patterns detected with TA-Lib CDLDARKCLOUDCOVER