Idea in brief
Lance Breunigstein is known for bounce trades after capitulation. The market was moving calmly, then the decline accelerates into a waterfall, volume explodes, and bars become several times larger than usual. Lance advises against buying on the way down: that produces a series of small losses. Lance waits for the reversal and buys on the way up ("the right side of the V"), and at that point a clear stop below the low of the move appears.
The execution is mechanical. During a panic every bar stays below the previous bar's high. The first bar that breaks the prior bar's high marks the change of trend, and that is where the entry goes. The stop is below the low of the whole move. After that the position is trailed along the lows of prior bars. On daily charts the entry can be placed in advance with a stop order above yesterday's high.
Lance describes capitulation as a set of factors without numbers and refuses to reduce them to "if X, then Y". The bar thresholds below are ours. The difference from neighboring cards: Pavel Kycek (#032) enters on a deviation from MA5 without confirmation, Rob Hanna (#033) buys a close at a 5-day low, and the prior extreme raid (#031) relies on a level. Here the entry comes only after a reversal and only after a decline that is abnormal in speed and volume.
Why it might work
Lance thinks in terms of expected value: the probability of a win times the size of the win minus the probability of a loss times the size of the loss. The base assumption is that price is correct until something knocks it out of equilibrium. Lance lists the factors that shift the odds toward a bounce: the size of the move, the speed of the decline, the absence of news, a streak of down days, forced selling (margin calls, liquidations), desperation in sentiment, and how "boring" the instrument is. If a stable stock with no news suddenly drops by several normal ranges, it looks like forced trading, not new information.
The depth of the panic works in two ways. Buyers step in more willingly at a 10% discount than at 0.2%, so the chance of a bounce rises, and with it the size of the bounce. The risk, meanwhile, is limited by the stop below the low. Lance prefers buying to shorting: price cannot fall below zero. All of this is the author's experience. The interview contains no verified statistics.
Rules
Capitulation (author's factors, Finetiq thresholds)
// the same code for daily and intraday bars
ATRbase = ATR(20)[10] // Finetiq: normal range before the crash
VolBase = Average(Volume, 20)[10] // Finetiq: normal volume before the crash
SwingHigh = Highest(High, 10) // Finetiq: where the decline started
MoveLow = Lowest(Low, 10)
DropATR = (SwingHigh - MoveLow) / ATRbase // author: how many normal ranges the move covered
LateDrop = (Highest(High, 3) - MoveLow) / (SwingHigh - MoveLow)
// author: the decline accelerates into a waterfall
// Finetiq: share of the move over the last 3 bars
WideBar = Highest(High - Low, 3) >= 2 * ATRbase // author: bars several times larger than usual
VolSpike = Highest(Volume, 3) >= 3 * VolBase // author: a huge volume spike
LowerHighs = High <= High[1] AND High[1] <= High[2] // author: the panic does not break the highs of prior bars
Capitulation = DropATR >= 4 AND LateDrop >= 0.5
AND WideBar AND VolSpike AND LowerHighs // thresholds Finetiq
Entry: the right side of the V (author)
IF Capitulation THEN Armed = true, ArmedBars = 0
IF Armed AND MarketPosition = 0
BUY STOP at High + 1 tick // author: break of the prior bar's high
// on the next bar the level is recalculated
ArmedBars = ArmedBars + 1
IF ArmedBars > 10 THEN Armed = false // Finetiq: no reversal came, the setup is canceled
// the author's selectivity: a steady decline without acceleration and price that is "accepted"
// at the bottom (up-and-down bars) are not traded. The LowerHighs filter removes some of these cases
Stop and trailing stop (author)
InitialStop = low of the move before entry - 1 tick // author: stop below the low of the whole move
// after each closed bar in the position
StopLoss = max(StopLoss, Low - 1 tick) // author: exit on a break of the prior bar's low
SELL STOP at StopLoss
// the author allows exceptions for the highest-quality trades, the mechanical version has none
Variant B. Entry within the bar in an extreme crash (author, Finetiq thresholds)
// author: if the decline is vertical, waiting for a break of the prior bar's high is too expensive
IF DropATR >= 8 AND (High - Low) >= 4 * ATRbase // Finetiq
BUY STOP at Low + 0.33 * (High - Low) on a lower timeframe within the current bar
// Finetiq: a reversal of one third of the bar's range from its low
InitialStop = Low - 1 tick
Setup score and position size (author, scale numbers Finetiq)
// author: each factor from 0 to 10, summed; 40 = A++, 26 = B, 20 = C, 15 = no trade
// the author names only these points: totals of 16-19 and 27-39 are not defined by the author
// factor points are named *Score so they do not overwrite the built-in Volume series or the position size
SpeedScore = min(10, LateDrop * 12) // Finetiq: speed of the decline
SizeScore = min(10, DropATR * 1.25) // Finetiq: size of the move
VolScore = min(10, Highest(Volume, 3) / VolBase * 2) // Finetiq: volume spike
BoringScore = 10 * (1 - PercentRank(ATRbase / Close, 250)) // Finetiq: the quieter the market was, the higher
Score = SpeedScore + SizeScore + VolScore + BoringScore
Risk = 1.0% if Score >= 35; 0.75% if 26-34; 0.5% if 20-25; otherwise no trade // Finetiq
// Finetiq: 16-19 count as "no trade", and the 35 boundary for the top tier is ours
Shares = Equity * Risk / (EntryPrice - InitialStop) // position size
Parameters
| Parameter | Value | Source |
|---|---|---|
| Direction | long only | author |
| Timeframe | any; D1 and M5 to start | author (choice: Finetiq) |
| Normal range and volume | ATR(20) and 20-bar average volume, 10 bars back | Finetiq |
| Size of the decline | at least 4 × ATRbase over 10 bars | Finetiq (factor: author) |
| Acceleration | half of the move within the last 3 bars | Finetiq (factor: author) |
| Wide bar | at least 2 × ATRbase | Finetiq (factor: author) |
| Volume spike | at least 3 × normal | Finetiq (factor: author) |
| Panic holds below the highs | two bars in a row without breaking the prior high | Finetiq (principle: author) |
| Entry | stop order above the prior bar's high | author |
| Waiting period for a reversal | 10 bars | Finetiq |
| Stop | below the low of the move | author |
| Trailing stop | below the prior bar's low | author |
| Variant B: entry within the bar | move of 8 × ATR, bar of 4 × ATR, one third of the range | Finetiq (idea: author) |
| Tier scale | 40, 26, 20, 15 | author |
| Scale factors and risk by tier | 4 factors, 1% / 0.75% / 0.5% | Finetiq |
What to test
- Neighborhood of the capitulation thresholds. Decline size of 3, 4 and 6 ATR, volume of 2, 3 and 5 averages, share of the move within 3 bars of 0.3, 0.5 and 0.7. If the profit lives in a single cell of the grid, the thresholds are overfitted.
- Confirmation versus buying into the decline. Compare the entry on a break of the prior bar's high with a buy at the open after the capitulation bar without waiting. Kycek (#032) claims the opposite of Lance: in mean reversion, confirmation worsens the entry. This is a direct dispute between two authors.
- Is volume needed. Run without the volume spike condition. If the result does not change, the condition can be dropped, and the idea becomes portable to forex and CFDs.
- Exit. Trailing on the prior bar's low versus the low of two bars, versus a target at a 50% retracement of the move (the author's base case in the reward estimate) and versus an exit after 5 bars.
- Scale. Split trades by total score. Expectancy should rise from tier C (20-25) to B (26-34) and to the top tier (35 and above; the author's A++ is 40). If there is no relationship, the scale only cuts the number of trades.
- Timeframes. Daily stock charts, 5-minute bars of an index future and daily bitcoin charts separately. Lance considers the concept common to all markets and timeframes.
- News. For stocks, mark the dates of earnings and major news. According to the author, capitulation on news should not be traded: there the equilibrium really has shifted.
Platform notes
TradingView (Pine Script)
ta.atruses Wilder smoothing, whileAvgTrueRangeandiATRare simple averages. ATR thresholds will produce a different number of signals on different platforms, so calculate ATR the same way when reconciling.- The stop order
strategy.entry("L", strategy.long, stop = high + syminfo.mintick)stays active until canceled. Calling it again with the same id on the next bar moves the level to the new high, and when the setup is canceled you needstrategy.cancel("L"). - Trailing stop: on every bar
strategy.exit("X", "L", stop = trailStop), wheretrailStopis updated viamath.maxwith the currentlow. - If the next bar opens with a gap above the level, the stop order fills at the open. Gaps up after a crash are common, so the actual risk will be larger than calculated.
MultiCharts and TradeStation (EasyLanguage)
- The rule maps naturally onto the language:
Buy next bar at High + MinMove / PriceScale stoplives for one bar and on the next bar is recalculated from the new high. - Trailing stop as a price:
Sell next bar at MaxList(StopLoss, Low - MinMove / PriceScale) stop.SetStopLossis set in money and will not reproduce the logic of the prior bar's low. - On TradeStation intraday bars, full volume has historically been stored in
Ticks, whileVolumemay contain only up volume. A volume spike calculated from the wrong field will come out different. - Variant B requires Intrabar Order Generation. With it, the backtest and live trading behave differently, so test variant B on minute data.
MetaTrader 5 (MQL5)
- CFDs and forex have only tick volume (
iTickVolume). In a panic the number of ticks grows along with real volume, but the threshold of 3 averages has to be recalibrated on tick volume. - A
BuyStopcannot be placed below the current Ask. If price is already above the bar's high after the bar closes, the pending order will be rejected, and an entry at market is needed. - Charts are built on Bid, while a buy triggers on Ask. In a crash the CFD spread widens, so the entry happens before the level and at a worse price than in a backtest on Bid bars.
- Calculate the signal on the closed bar (index 1) and detect a new bar, otherwise the entry level will be recalculated on every tick.
Where the idea can break
- Lance weighs dozens of factors in real time. Four thresholds on bars are a rough approximation of Lance's eye, and the mechanical version may perform noticeably worse.
- There are no statistics. The 70-80% estimate was given for one selected example, and the examples were picked in hindsight.
- The news filter cannot be formalized on bars. In stocks, declines on earnings, lawsuits and fraud look like capitulation but often continue. This is the main source of losses in the mechanical version.
- After a waterfall, the stop below the low of the move can be far from the entry. The position ends up small, and a trailing stop on the prior bar's low closes it on the first pullback.
- Panics in stocks come with trading halts and gaps through the stop. A backtest on bars understates these losses.
- A test on today's list of stocks does not see the stocks that went to zero or were delisted after a crash. The result will look better than reality.