A Pennant is a small symmetrical triangle that forms after a strong move (the pole). Converging trendlines create a brief pause. Breakout continues in the direction of the pole. Typically resolves within 1-3 weeks.
After a pole from 100 to 115, the swing highs fall (114, then 113) while the swing lows rise (110, then 111): the range converges. Day 16 closes at 117, above the last swing high; measured from it, 113 + 15 = 128.
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.
| Day | Close |
|---|---|
| 0 | 100 |
| 5 | 115 |
| 7 | 110 |
| 9 | 114 |
| 11 | 111 |
| 13 | 113 |
| 15 | 112 |
| 16 | 117 |
- With two highs and two lows, “converging” is easy to find in noise.
- Pennants are short by definition (one to three weeks); a longer one is usually treated as a symmetric triangle.
- It does not say which way it will break until it does.
def swings(s, n=3): # 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']
pole = c.iloc[-12] - c.iloc[-17]
hi, lo = swings(c.iloc[-12:-1], n=1) # swings inside the pennant
converging = hi.is_monotonic_decreasing and lo.is_monotonic_increasing
breakout = c.iloc[-1] > hi.iloc[-1]
target = hi.iloc[-1] + poleAssumes import numpy as np, import pandas as pd, and a DataFrame df with columns open, high, low and close for the data above.
- 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