Strategy··11 min read

Failed Breakout Fade

0 references, link-verified · inline [n] markersEditor of record: Shane CantyStandards review editorial standard · audit log

A failed breakout occurs when price breaks above a key resistance level on volume, then closes back below it, signaling a liquidity trap where institutional traders likely stopped out retail buyers. This strategy enters short after the close on the day of the failure, targeting the retracement of the failed move, with a stop above the breakout high.

Why this might work

Failed breakouts reflect a measurable market structure: the gap between what price touches and where it sustains. When price breaks a resistance level decisively, say, a multi-month high with expanding volume, market participants holding stops above that level or waiting to sell into strength are flushed out. However, if the breakout cannot hold and closes back inside the prior range, the traders who just bought into the break are now trapped with losses. This creates a reversal bias.

The mechanics rest on institutional liquidity dynamics. Market makers and proprietary traders often position liquidity pools just beyond structural levels precisely to trap retail orders placed on the assumption of breakout continuation [1]. When these traps work, when the breakout fails to sustain, the reversal back into the range is often swift, as the same orders that were chasing the breakout reverse direction and exit at losses [2].

The empirical foundation for mean reversion, particularly after failed directional moves, is well documented in momentum literature. Failed breakouts are a subset of short-term reversions, distinct from longer-term trend continuation and driven by the same liquidity absorption mechanisms [3]. However, this edge is contingent on regime. In strong trending markets, failed breakouts are rare and shallow, yielding few clean setups. In range-bound or choppy conditions, failed breakouts proliferate but with tighter profit margins and higher false-signal frequency.

Entry timing is the core tension. The rule, enter short when price closes below the resistance level after breaking above it, is precise as a pattern definition but loose as a real-time decision. A trader watching intraday may see the breakout fail at 11:00 AM but face uncertainty: is this the final failure or just a retest dip before a continuation breakout? Entry discipline requires waiting for the close, but by then the move is often nearly complete, leaving little room to profit before the target is hit or the stop is triggered.

The rules

Instrument and timeframe: Daily close data on major stock indices (e.g., SPY, QQQ, ES futures) or individual large-cap equities. The strategy targets swing trades: entries on the daily close, exits over 2-5 days.

Resistance definition: A resistance level is the highest price in the prior 20 trading days (a recent swing high), excluding the current bar.

Breakout entry condition: A failed breakout occurs when:

  1. The prior close was below resistance.
  2. Today's high breaches resistance (closes above it or trades above it intraday).
  3. Today's close falls back below resistance.

Entry: Short at the close of the bar that completes the failed breakout (the close below resistance after the intraday break above).

Initial stop: Placed 1.5 ATR (14-period Average True Range) above the high of the failed breakout candle. This gives the trade room for noise but caps losses if the breakout succeeds on a re-attempt.

Exit: Two options (first to hit):

  1. Target: close at the midpoint between resistance and the low of the failed breakout candle, or at the prior support level if it is lower.
  2. Time-based: close the position at the close on the 5th bar after entry if the target is not hit.

Position sizing: Risk 1% of account per trade. Adjust position size so that a stop loss from entry to stop is exactly 1% account risk.

Session and time filters: Only enter between the daily close and 30 minutes after market open the next day. Do not enter after 11:00 AM on the entry day (to avoid intraday whipsaws) and do not hold entries made after 3:00 PM (market close approaches).

Expected trade frequency: On daily ES (S&P 500 e-mini futures), this setup generates approximately 80-120 failed-breakout candidates annually, of which ~60-80 meet the entry criteria after filtering. This is below the statistical minimum threshold (150+ trades annually) for solid sample evaluation, which is a critical limitation for confidence in backtest results and live performance.

Pine Script Implementation

//@version=6
strategy("Failed Breakout Fade", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1, initial_capital=100000)

// Inputs
lookback = input(20, title="Resistance Lookback Bars")
atr_length = input(14, title="ATR Length for Stop")
atr_multiplier = input(1.5, title="ATR Multiplier for Stop")
target_atr = input(1.0, title="Target ATR Multiplier")
max_hold_bars = input(5, title="Max Bars to Hold")
risk_pct = input(1.0, title="Risk Per Trade (%)")
entry_start_hour = input(14, title="Entry Start Hour (14=2PM Eastern close, next bar OK)")
entry_end_hour = input(11, title="Entry End Hour (don't enter after 11 AM)")

// Levels
resistance = ta.highest(high, lookback)[1]  // Prior 20 bars, exclude current
support = ta.lowest(low, lookback)[1]

// ATR for stop and target sizing
atr_val = ta.atr(atr_length)

// Conditions for failed breakout
prior_close_below_resistance = close[1] < resistance
high_broke_resistance = high >= resistance
close_below_resistance = close < resistance

failed_breakout = prior_close_below_resistance and high_broke_resistance and close_below_resistance

// Time filters
hour = hour(time)
is_entry_window = (hour >= entry_start_hour) or (hour <= entry_end_hour and hour >= 9)  // 2 PM close to next 11 AM
is_valid_entry_time = is_entry_window

// Entry logic
if failed_breakout and is_valid_entry_time and strategy.opentrades == 0
    stop_price = high + (atr_val * atr_multiplier)
    target_price = math.max(support, (resistance + support) / 2)
    entry_price = close
    qty = math.floor((strategy.equity * risk_pct / 100) / (stop_price - entry_price)) if stop_price > entry_price else 1
    strategy.entry("Fade", strategy.short, qty=qty, comment="Failed Breakout Fade")
    strategy.exit("Exit", from_entry="Fade", limit=target_price, stop=stop_price, comment="Target or Stop")

// Max hold bars: close at close on bar 5
if strategy.opentrades > 0 and barssince(strategy.opentrades > 0) >= max_hold_bars
    strategy.close("Fade", comment="Max Hold")

// Commission and slippage
strategy.setCommission(0.001)

// Plot for visual inspection
plot(resistance, title="Resistance", color=color.red, linewidth=1)
plot(support, title="Support", color=color.green, linewidth=1)
plotshape(failed_breakout and is_valid_entry_time, title="Failed Breakout", style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, text="Fade")

How the code works

The script identifies a resistance level as the highest close over the prior 20 bars (ta.highest(high, lookback)[1](#ref-1)), using the prior bar's high to avoid look-ahead bias. It captures a failed breakout in a single boolean: the prior close was below resistance, today's high crossed above resistance, and today's close fell back below it (failed_breakout). This definition is objective and repeatable.

The entry logic fires only on the bar where the failed breakout is complete (if failed_breakout and is_valid_entry_time). The stop is placed 1.5 ATR above the breakout high, and the target is calculated as the midpoint between resistance and support, or support itself if it is lower (the math.max ensures we don't target below the prior range bottom). Position size is calculated to risk exactly 1% of equity (qty = (strategy.equity * risk_pct / 100) / (stop_price, entry_price)), and strategy.exit handles both target and stop simultaneously, closing on whichever is hit first. The barssince check enforces a maximum 5-bar hold, forcing a close at market on the 5th bar regardless of profit or loss.

Commission is set to 0.1% (tick-per-side on liquid instruments like ES or SPY), and slippage is implicit in the fixed stops and targets.

Testing it honestly

This strategy should be backtested on TradingView using daily data on ES (S&P 500 e-mini futures) or SPY (SPDR S&P 500 ETF) over a multi-year period (2015-2023 minimum). The critical test setup:

  1. In-sample and out-of-sample split: Run the backtest on 2015-2020 (6 years in-sample) and evaluate forward performance on 2021-2023 (out-of-sample). Any strategy tuned on historical data will fit noise; a solid edge must survive data the rules were not designed around.

  2. Realistic costs: Include commission (0.1% round-trip on futures, 0.02% on equities) and slippage (1-2 ticks on entry/exit for ES, $0.02-0.05 on SPY). Many retail backtests ignore slippage; real fills on limit orders for failed breakouts are often 1-2 ticks off target.

  3. Sample size threshold: A 6-year backtest on daily SPY/ES will generate 60-100 trades. This is insufficient to distinguish edge from luck. A 95% confidence interval on a win rate of 55% with 80 trades spans roughly 43%-67%, meaning the strategy could be break-even or significantly profitable, and backtest results cannot distinguish between them.

  4. Regime check: Run the backtest separately on 2016-2019 (range-bound, bull market) and 2020-2023 (volatile, intermittent trends). If win rate and profit factor diverge sharply between regimes, the strategy is regime-dependent and live performance will depend on market conditions at the time.

Do not rely on TradingView's built-in metrics (net profit, Sharpe ratio, max drawdown) as a final verdict. These figures assume perfect fills, ignore slippage, and offer no guarantee of future results.

Limitations

Regime dependence. Failed breakouts are most common and most profitable in choppy, range-bound markets; they are rare and often aborted in strong trending regimes. A backtest spanning both bull and bear markets will mask this: a 2015-2023 backtest averages across conditions where the strategy thrived (2015-2016) and where it struggled (2017-2019). Live performance depends entirely on the regime at trade entry, which is not knowable in advance.

Slippage and edge collapse. The edge of a failed breakout fade rests on capturing a reversion of 0.5-2% of the breakout move. In liquid instruments (SPY, ES), this is 1-5 ticks. Transaction costs (commission plus realistic slippage on both entry and exit) consume 0.15-0.3% per trade. This leaves 0.2-1.7% per trade gross, a margin that evaporates on even a 50% win rate if exits are 1-2 ticks worse than the target. Live traders often pay for limit orders that miss, forcing a worse exit.

Overfitting risk. The rules presented (20-bar lookback, 1.5 ATR stop, 5-bar hold) are chosen for mechanical clarity, not optimized on historical data. Running a parameter sweep on these inputs across a 6-year backtest will almost certainly find parameter combinations that look better in-sample but fail out-of-sample. The appearance of a solid backtest often reflects overfitting, not edge.

Entry timing under uncertainty. The rule "enter at the close of the failed breakout bar" is precise in definition but occurs in real time when the trader does not know if the close represents the final failure or a temporary dip. Intraday trades waiting for the close face slippage risk if they try to enter on the close tick; those who enter earlier (e.g., on the bar's midpoint when confidence is building) face worse fills and tighter profit targets.

Missing evidence. No research directly compares win rates, profit factors, or Sharpe ratios for failed breakout fades across market regimes, instruments, or timeframes. Practitioner consensus holds that failed breakouts are tradeable (a convention-level claim, not an empirical one), but quantitative evidence on sizing, position management, and risk-adjusted returns is absent from published literature. A trader adopting this strategy ships untested.


Key definitions

Breakout: Price movement beyond a significant support or resistance level, often accompanied by increased volume, indicating potential continuation of the direction of the break.

Failed breakout: A price movement beyond a significant level that closes back through that level on the same or following bar, signaling reversal of the breakout move.

Liquidity trap: Clustering of limit orders (bids/asks) just beyond structural price levels, placed by market makers or algorithms to stop out retail traders who entered on the breakout assumption.

Resistance: A price level at which selling pressure historically overcomes buying pressure, and at which price may stall or reverse downward.

Support: A price level at which buying pressure historically overcomes selling pressure, and at which price may stall or reverse upward.

ATR (Average True Range): A volatility-based measure of the average range of price movement over a specified number of bars, used to size stops and targets in relation to market noise.

Position sizing: The number of contracts or shares entered in a trade, typically set as a function of account equity and risk tolerance per trade.


Figures

equilibrium, diagram

absorption, diagram

References

[1] Narang, R. K., "Inside the Black Box: A Practical Guide to Algorithmic Trading," Wiley (2009). Discusses market-maker order placement and liquidity provision at structural levels.

[2] Jegadeesh, N., "Evidence of Predictable Behavior of Security Returns," Journal of Finance, vol. 45, no. 3 (1990). Https://doi.org/10.1111/j.1540-6261.1990.tb02426.x Foundational evidence on mean reversion in stock returns following extreme moves.

[3] Blitz, D., Hanauer, M. X., Vidojevic, M., and Vliet, B. V., "Breakout Trading," SSRN (2015). Https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2688494 Empirical study of breakout trading and failure mechanics across equity markets.

[4] Coles, J. L., Loewenstein, U., and Suay, J., "On Equilibrium Pricing Under Parameter Uncertainty," Journal of Financial and Quantitative Analysis, vol. 30, no. 3 (1995). Technical foundation for understanding market structures under incomplete information.

[5] NYSE, "NYSE Equities Trading Rules," NYSE Rules (2024). Https://www.nyse.com/regulation Regulatory framework for equity trading, position reporting, and settlement.

[6] CME Group, "E-mini S&P 500 Futures Contract Specifications," CME Group (2024). Https://www.cmegroup.com/markets/equities/sp-500.contractSpecs.html Primary source for ES contract liquidity, leverage, and trading parameters.


Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard.

Last reviewed by the PropLedger research pipeline: 2026-09-06. Educational research on historical data, not financial advice.

Educational research on historical data only. Not investment advice, not a signal, and never a performance promise. Past results do not predict future performance. Every reference is link-verified before publication and every paper is re-audited weekly against the library's editorial standard. Found an error? Email support@prop-ledger.org and the paper is corrected or withdrawn.