The Test Bench › Candlestick patterns › Study 009
We tested 18,209 weekly bearish engulfing patterns across 480 current S&P 500 companies, using data from 2007 to 2026.
STUDY 009We tested 18,209 weekly bearish engulfing patterns on 480 current S&P 500 companies (2007–2026). The median 12-week return after the pattern was +3.04%, against +3.01% after ordinary weeks in the same market conditions: a difference of +0.02pp (95% interval -0.44pp to +0.53pp).
A bearish engulfing, an up candle followed by a down candle whose body covers the first one, is traditionally read as a sign that a rising price may turn down. The pattern made no clear difference: the interval included zero.
| Over the next 12 weeks | After a bearish engulfing | After an ordinary week |
|---|---|---|
| Price higher | 60% | 60% |
| Median change | +3.04% | +3.01% |
Exploratory. After seeing the 12-week results, we also measured how far the price sat from its 26-week average. Before a bearish engulfing it sat slightly above its ordinary-week level in all four states; during the pattern week it moved below that level; afterwards the gap narrowed, partly because the average moves towards the price.
The rules and diagrams are in Engulfing Candlestick Patterns: Definition and Weekly Test Results. The companion study: Does the Bullish Engulfing Pattern Work? A Weekly Test.
An event study, not a trading-strategy backtest: no entry, exit, stop, position size or trading cost is simulated. It describes past data and is not advice or a forecast.
Primary question: over the 12 weeks after a weekly bearish engulfing, did the median price change differ from ordinary weeks in the same stocks and the same broad trend and volatility state?
The 12-week test was specified on 30 September 2026, before any return was read, in the study's internal record (not an external registry): the event, the horizon, the comparison, the four market states, the traditional setup as a secondary analysis, the bootstrap and the rule for reading the result. The design follows Study 003. On 1 October a chart of median price paths on the first 100 stocks was viewed, after the specification; the record logs it, and no part of the test was changed because of it.
Exploratory question, added after the first results were seen: how did the price sit against its 26-week average before and after the pattern, compared with ordinary weeks? Its intervals use the same bootstrap, but because the measure was chosen after looking at the data they are not a preregistered test.
The pattern is detected with the TA-Lib engulfing function, the same detector the app uses for its candle patterns. The candlestick pattern guide gives the full definition with diagrams.
| Rule | Study 009 |
|---|---|
| Timeframe | Weekly candles |
| Candle 1 | Closes at or above its open |
| Candle 2 | Closes below its open |
| Bodies | Candle 2 opens at or above candle 1's close and closes at or below candle 1's open |
| Strict condition | At least one of the two edges lies strictly beyond candle 1’s body |
| Wicks | Ignored |
| Prior trend | Not required |
| Consecutive patterns | Patterns in consecutive weeks on the same stock form one event |
| Event date and baseline | The close of the last pattern week in the run |
| Outcome | The change from that close to the close 12 weeks later |
A week whose close equals its open counts as an up week. Patterns two or more weeks apart are separate events, so their 12-week windows can overlap; the calendar-block bootstrap below accounts for that dependence. A weekly candle covers one calendar week: the open of its first trading session, the highest high, the lowest low and the close of its last session. It is dated on the week's last trading day and is complete at that day's close, the first moment the pattern is known; an unfinished week is never used. Prices are adjusted for splits before the weeks are built, and returns are price returns, without dividends.
The sample uses today's S&P 500 companies (one share class per company: 500 companies) rather than the companies that belonged to the index at each historical date. This creates survivorship bias and limits how broadly the result can be generalised; its effect on a comparison between pattern weeks and ordinary weeks in the same stocks is not known in advance. 480 companies were kept. The 20 dropped all had too little history after the warm-up period (at least 104 weekly candles were required): ECHO, EG, EXE, FDXF, FISV, GEHC, GEN, GEV, HONA, KVUE, MRSH, P, PSKY, Q, RDDT, SNDK, SOLV, SW, TKO and VLTO.
The 480 companies do not all have the same historical coverage. 289 have usable weeks from 26 January 2007 and 191 from 24 August 2018; all end on 25 September 2026, the last complete week. Because all 480 contribute from 2018 onwards, the pooled sample gives more weight to the later period.
Before any pattern was detected, each stock's prices were screened. A run of ten identical closes would mark a stalled price feed and drop the stock. A gap of more than 30 days inside a stock's prices starts its history after the gap, because indicators and windows across a hole mix two unrelated stretches of price. A merger special dividend, which a price-only series reads as a collapse, starts KDP's history after the merger. For some companies the price history begins at a rename, so it is shorter than the company's age.
Every week is labelled the same way, pattern weeks and ordinary weeks alike:
Volatility note. The volatility label uses each stock's median over the whole 2007–2026 sample, weeks after the pattern included, so it uses hindsight. The four states are descriptive historical groups, not labels a reader could have assigned at the time.
The two labels give four states. Each pattern week is compared only with ordinary weeks in its own state. "Ordinary weeks" are every eligible week in the same stocks and state, meaning every week with 12 weeks of data after it; the pattern weeks themselves are included, and are about 5% of them (18,209 of 343,643). Including them pulls the comparison slightly towards the pattern weeks, so it can only shrink a difference.
The interval comes from a calendar-block bootstrap (2,000 replications, blocks of 84 calendar days, pattern and ordinary weeks drawn together). It was repeated at 84, 120, 168 and 252 days with three block designs, 12 configurations per state. A state shows a difference when its interval excludes zero in the main run and in every configuration; it is sensitive when it excludes zero in some configurations only. Intervals are not adjusted for testing several states.
The conditioning is coarse. Each label is a two-way category, and no pattern week is paired with individually similar weeks.
After a bearish engulfing, the median 12-week change was +3.04%. After ordinary weeks it was +3.01%. Difference: +0.02pp, 95% interval -0.44pp to +0.53pp. The pattern made no clear difference: the interval included zero.
Prices were higher 12 weeks later after 60% of bearish engulfing weeks, compared with 60% of ordinary weeks.
| Market state | Pattern weeks | Pattern median | Comparison median | Difference | 95% interval for the difference |
|---|---|---|---|---|---|
| Above avg · calm | 7,009 | 2.13% | 2.13% | -0.00pp | -0.60pp to +0.58pp |
| Above avg · volatile | 4,023 | 3.69% | 3.79% | -0.11pp | -0.69pp to +0.53pp |
| Below avg · calm | 1,841 | 2.22% | 1.76% | +0.46pp | -0.29pp to +1.27pp |
| Below avg · volatile | 5,336 | 4.41% | 4.65% | -0.24pp | -1.43pp to +0.91pp |
Differences ranged from -0.24pp to +0.46pp across the four states, below zero in three and above zero in one. The interval included zero in all four states, in all 12 bootstrap configurations.
In the traditional setup, above the 50-week average after a 12-week rise (an additional subgroup fixed in advance), the difference was +0.01pp (95% interval -0.46pp to +0.41pp); the interval included zero.
This analysis was added after the 12-week results had been seen. It is exploratory and is not part of the preregistered test.
The distance from the 26-week average is the weekly close divided by its 26-week exponential moving average, minus one. For each state, the charts show the median of that distance at every week from 12 before the pattern to 12 after, for pattern weeks and for ordinary weeks.
Part of the narrowing is expected mechanically. A 26-week exponential average closes about 60% of any gap with the price within 12 weeks, even if the price does nothing unusual. Measured against that catch-up, the gap closed further in one of four states, about as far in two and less far in one. After the pattern the price mostly moved like an ordinary week, and the average came to meet it.
The 50-week average gives the same picture: 12 weeks after the pattern the median distance was within 1.4 points of ordinary weeks in every state.
Some of the week-0 movement is part of the pattern definition. What the measure adds is the stretch before the pattern: the price sat above its ordinary-week level, with an interval that excluded zero in all four states. The result describes a change in the measured gap; it does not show that the pattern caused the price to return to its average.
The preregistered test found a median 12-week change of +3.04% after bearish engulfing weeks, against +3.01% after ordinary weeks: a difference of +0.02pp (95% interval -0.44pp to +0.53pp); the gap was negative in three states and positive in one, and every interval included zero.
In this sample, bearish engulfing weeks made no clear difference to the 12-week return. The 26-week-average analysis, added after the main result, showed the price above its ordinary-week level before the pattern.
This result does not establish that bearish engulfing patterns carry no information in other samples, timeframes or definitions, and it does not test a trading strategy. The volatility label uses hindsight, the sample is today's S&P 500 companies with survivorship bias and unequal history, and returns carry no market or factor adjustment.
Next tests: fix the 26-week measure in advance and repeat it on a different period or universe; test whether the gap before the pattern is visible before candle 1 often enough to be measured on its own; and classify volatility from earlier weeks only.
The app can reproduce the study design, but not the full pooled result in one run: the published study uses 480 stocks, and the Events panel pools up to ten stocks per run.
In the Events panel, choose weekly bars (they need a Premium plan and a Tiingo key), build an event on the Bearish engulfing candle, set the horizon to 12, and add one Trend and one Volatility precondition per run. On weekly bars the Trend precondition uses the 50-week average. Each run gives one state of the 12-week result, and four runs give all four. The distance from the 26-week average was computed in the study harness.
With these ten stocks, MMM, AOS, ABT, ACN, ADBE, AMD, AES, AFL, A and APD, and a Custom range from 4 January 2010 to 25 September 2026, the app returns the figures below.
| Market state (10 stocks) | Pattern weeks | Pattern median | Comparison median | Difference |
|---|---|---|---|---|
| Above avg · calm | 179 | 2.24% | 2.70% | -0.46pp |
| Above avg · volatile | 99 | 5.68% | 3.65% | +2.02pp |
| Below avg · calm | 30 | -2.30% | 0.63% | -2.94pp |
| Below avg · volatile | 136 | 4.03% | 4.93% | -0.90pp |
A ten-stock rebuild runs on a smaller sample, so its figures differ from the study's.
Using this research. The analysis, tables and figures on this page are GU Analyser Ltd’s own work, published under a Creative Commons BY-NC 4.0 licence. You are welcome to quote it, cite it and build on it, with credit and a link. Suggested credit: GU Analyser, The Test Bench, Study 009, linking to guanalyser.com/test-bench/bearish-engulfing/. For commercial use, ask us at hello@guanalyser.com.
Rebuild the test
With your Tiingo key, build the bearish engulfing event on weekly candles, set the horizon to 12, then set the Trend and Volatility preconditions to one combination per run.
Create a free account and run your own event studies → or read how the engulfing pattern is defined →The method: how an event study works