A flat ceiling with a rising floor. What makes it tradeable is not the shape but the asymmetry underneath it: buyers keep paying more while sellers keep defending one price, and that only resolves one of two ways.
We require two or more touches of a horizontal resistance inside a tight price tolerance, and a rising line beneath joining two or more higher lows. The lines must actually converge and the apex must still sit ahead of the last bar — a pattern whose apex has already passed is expired, not forming, and we drop it.
The trigger is the first candle that closes above the ceiling. Not a touch, not a wick. We do not require a volume expansion to confirm: we tested one and it did not survive out of sample, so the close is the only condition.
Three things separate a formation worth watching from one that only looks like it:
The rising floor breaking before the ceiling does. That is the clean invalidation and it is the one worth respecting — the premise was that each pullback finds buyers higher, and it just did not.
Two softer ones. A ceiling tested five or six times has stopped being a squeeze and become a supply shelf; the more often a level holds, the more size is resting on it. And an apex that arrives with price still inside the structure means the pattern ran out of room without resolving, which historically resolves against the direction the shape implies more often than with it.
These are our own measurements, not textbook claims. A call counts as a win if price closed 5% in favour before it wicked 5% against, measured from the confirming close over the following 30 days. Everything that resolved is counted, including the failures.
| Population | Resolved | Hit rate | What it means |
|---|---|---|---|
| Published live and resolved | 35 | 40% 14/35 | Calls we posted on the board before the move, graded 30 days out. |
| Backtested and resolved | 96 | 46% 44/96 | Same detector replayed over history. Not the published record. |
| Timeframe | 15m | 1h | 4h | 1d |
|---|---|---|---|---|
| Published live | 40% 8/20 | 42% 5/12 | 1/3 · too few to say | — |
| Backtested | 41% 7/17 | 41% 24/59 | 71% 12/17 | 1/3 · too few to say |
The backtested 4h cell is the only one that looks materially better than the family average, and it rests on 17 calls. Our live 4h sample is three. We are not going to tell you this pattern works on 4h on that basis — it is a lead, not a finding.
| Market regime | Up | Chop | Down |
|---|---|---|---|
| Published live | 3/4 · too few to say | 34% 10/29 | 1/2 · too few to say |
| Backtested | 55% 12/22 | 38% 10/26 | 46% 22/48 |
Read the live row and the backtested row as separate populations. Live, almost everything we published landed in chop, which is the market we have had; there is not enough live data in trend either way to say anything. The backtested split is wide enough to suggest the pattern does better in an uptrend than in chop, which is unsurprising for a bullish continuation shape.
| Outcome | Calls | Median worst drawdown before resolution |
|---|---|---|
| Worked | 58 | -18.7% |
| Failed | 73 | -24.2% |
This is descriptive, not a rule. It says the calls that worked had generally taken less heat by the time they turned than the ones that failed — it does not say that closing at any particular drawdown would have improved the outcome, and we have not tested that. We publish it because the gap is real and because most sites will not show you the losing side at all.
Live and backtested are different populations and should not be averaged. The live figure is the one that came from calls published in public before the move. See every live and past call on the Chart Patterns board.
Loading live setups…