13 — Bilateral & Wedge

Falling Wedge#

BullishHeuristic1 min read
◆ The PatternBoth lines slope down but converge — selling is exhausting

The Falling Wedge has both lines sloping downward and converging. Price is falling but the range is narrowing — sellers are losing conviction. Usually resolves with a bullish breakout.

Target = Breakout + Height of wedge at widest
Falling wedges in downtrends signal reversal; in uptrends, they're continuation patterns (a pullback before resuming).
// Falling Wedge — downward but exhausting
Key insight: The bullish resolution of a falling wedge is the mirror of the rising wedge's bearish resolution — both show momentum exhaustion.
Pattern bridge: Downward slopes narrowing — selling exhaustion. Like learning rate decay approaching convergence: the steps shrink but the model is almost there.
Worked example

Swing highs at 110, 104 and 100, swing lows at 95, 93 and 92: both lines fall, the highs faster (−0.83 a day against −0.25). Day 21 closes at 103, above the last high; the usual target is the wedge’s first high, 110.

The example data

The turning points the daily closes run through, in straight lines between them; high and low are half a point either side of each bar.

DayClose
0105
3110
695
9104
1293
15100
1892
21103
Where it misleads
  • A falling wedge can keep falling; the bullish reading is a tendency, not a rule.
  • With few swings the two slopes are fragile, and a single new low changes the pattern.
  • The target is a convention, not a measured move.
In code
def swings(s, n=2):                     # a swing high (low) is the extreme of the 2n+1 bars around it
    w = s.rolling(2 * n + 1, center=True)
    return s[s == w.max()], s[s == w.min()]
c = df['close']
highs, lows = swings(c)
hi, lo = highs.iloc[-3:], lows.iloc[-3:]
hs = np.polyfit(hi.index, hi.values, 1)[0]
ls = np.polyfit(lo.index, lo.values, 1)[0]
is_wedge = ls < 0 and hs < ls                         # both fall, the highs faster
breakout = c.iloc[-1] > hi.iloc[-1]
target = hi.iloc[0]
Python, in your browser — edit the code and run it again

Assumes import numpy as np, import pandas as pd, and a DataFrame df with columns open, high, low and close for the data above.

Sources
  • Encyclopedia of Chart Patterns (2nd ed.), T. N. Bulkowski, Wiley, 2005 — success and failure rates from large counts of patterns
  • Technical Analysis of the Financial Markets, J. J. Murphy, New York Institute of Finance, 1999

Last reviewed October 2026 · How this site checks its content · Report a mistake

Linked from 1
← Previous
Rising Wedge
Open in the full reader, with the topic sidebar