Pennants in der Tiefe: kurze Konsolidierungen im Trend.
Ein Pennant ist eines der unscheinbarsten Patterns der klassischen Chart-Lehre — und gleichzeitig eines der wenigen, das nach Bulkowski mit über 60 Prozent Win-Rate messbar liefert. Vorausgesetzt, man hält sich an drei Bedingungen, die in Lehrbüchern selten klar genug formuliert werden.
Was ein Pennant ist — und was nicht.
Ein Pennant ist eine kurze, symmetrische Dreiecks-Konsolidierung nach einer starken, fast vertikalen Kursbewegung. Diese vertikale Bewegung heisst Flagpole — sie ist das eigentliche Setup. Das Pennant selbst ist lediglich die Atempause zwischen Flagpole und Fortsetzungs-Bewegung. Visuell erinnert die Konstruktion an eine Wimpel an einer Stange: ein steiler Stab, ein kleines konvergierendes Dreieck, dann ein zweiter Schub in dieselbe Richtung.
Drei Bedingungen, die ein echtes Pennant von einer beliebigen Konsolidierung unterscheiden: Erstens muss der Flagpole steil sein — Bulkowski schlägt mindestens 20 Prozent Kursbewegung in 20 oder weniger Bars vor. Zweitens muss das Dreieck klein sein — typischerweise 5 bis 15 Bars, nicht 50. Drittens müssen die beiden Trendlinien des Dreiecks tatsächlich konvergieren, nicht parallel verlaufen. Ein paralleler Kanal ist eine Flagge, kein Pennant — der Unterschied ist statistisch relevant.
Bullish und Bearish Pennants.
Bullish Pennants bilden sich nach einem steilen Aufwärts-Move; Bearish Pennants nach einem steilen Abwärts-Move. Bulkowski berichtet in seiner Encyclopedia of Chart Patterns für Bullish Pennants eine durchschnittliche Performance, die je nach Markt-Regime zwischen 11 und 16 Prozent post-Breakout liegt, mit einer Erfolgsquote von etwa 64 Prozent für die Continuation in Aufwärts-Märkten. Bearish Pennants schneiden schlechter ab — etwa 47 Prozent Continuation-Rate in seiner Datenbasis. Das ist ein Muster, das sich durch fast alle Bearish-Patterns zieht: Abwärts-Bewegungen sind im Aggregat schwerer zu fangen, weil Märkte langfristig steigen und kurze Bear-Moves häufig in ungeplante V-Reversals übergehen.
Volume: der wichtigste Filter.
Ohne Volume-Analyse ist ein Pennant nichts wert. Die klassische Volume-Signatur ist eindeutig und in fast jedem akademischen Test reproduzierbar:
- Im Flagpole: deutlich überdurchschnittliches Volume. Der Move ist von Käufern (oder Verkäufern) getragen, nicht von einem Vakuum.
- Im Pennant: Volume sinkt kontinuierlich. Die Konsolidierung ist eine Pause, keine Distribution. Wer hier hohes Volume sieht, sollte misstrauisch werden — es deutet auf eine Trend-Wende, nicht auf eine Fortsetzung.
- Beim Breakout: Volume springt zurück auf oder über das Flagpole-Niveau. Ein Breakout ohne Volume-Bestätigung ist statistisch signifikant schwächer.
In meinen eigenen Backtests verschiebt allein das Volume-Filter die Win-Rate um 8 bis 12 Prozentpunkte nach oben. Pennants ohne Volume-Bestätigung performen kaum besser als ein Zufalls-Einstieg.
Algorithmische Pennant-Detection.
Die Detection besteht aus drei Phasen: Flagpole-Identifikation, Dreiecks-Fit und Breakout-Trigger. Hier eine kompakte Implementierung in Python, die ich als Ausgangspunkt für Backtests verwende:
import numpy as np
import pandas as pd
def detect_bullish_pennant(df, pole_min_pct=0.20, pole_max_bars=20,
pennant_min_bars=5, pennant_max_bars=15,
vol_mult=1.5):
"""
df: tageliche Bars mit ['high','low','close','volume']
Liefert Liste von Trigger-Indizes mit Setup-Parametern.
"""
triggers = []
for end in range(pole_max_bars + pennant_max_bars + 5, len(df)):
# 1) Flagpole: steiler Up-Move
for pole_bars in range(5, pole_max_bars):
pole_start = end - pennant_max_bars - pole_bars
pole_end = end - pennant_max_bars
pole_low = df['low'].iloc[pole_start]
pole_high = df['high'].iloc[pole_end - 1]
pole_pct = (pole_high - pole_low) / pole_low
if pole_pct < pole_min_pct:
continue
# 2) Pennant: konvergierende Highs und Lows
pennant = df.iloc[pole_end:end]
if len(pennant) < pennant_min_bars:
continue
x = np.arange(len(pennant))
slope_high, _ = np.polyfit(x, pennant['high'].values, 1)
slope_low, _ = np.polyfit(x, pennant['low'].values, 1)
# Highs fallen, Lows steigen
if not (slope_high < 0 and slope_low > 0):
continue
# Volume sinkt im Pennant
vol_slope, _ = np.polyfit(x, pennant['volume'].values, 1)
if vol_slope >= 0:
continue
# 3) Trigger: Close ueber oberer Trendlinie + Volume
upper_line = pennant['high'].iloc[0] + slope_high * len(pennant)
vol_med = df['volume'].iloc[end-50:end].median()
if df['close'].iloc[end] > upper_line \
and df['volume'].iloc[end] > vol_mult * vol_med:
triggers.append({
'idx': end,
'pole_pct': pole_pct,
'target': df['close'].iloc[end] + (pole_high - pole_low),
'stop': pennant['low'].min(),
})
break
return triggers
Der Code ist bewusst lesbar gehalten. Wer das produktiv verwendet, sollte die innere Schleife über die Pole-Längen vektorisieren und die Pivot-Erkennung robuster machen — Bars allein reichen nicht, wenn Lücken oder dünnes Volume ins Spiel kommen.
Konkrete Setups: Stop, Target, Filter.
Die klassische Lehrmeinung für Pennants:
- Entry: Close oberhalb der oberen Pennant-Trendlinie auf erhöhtem Volume.
- Stop: unterhalb des Pennant-Tiefs. Wer aggressiver ist, setzt direkt unter die untere Trendlinie — das ist enger, aber häufig ausgelöst durch normale Volatilität.
- Target: Flagpole-Höhe über dem Breakout-Niveau projiziert. Das ergibt typischerweise ein R/R von 2 bis 3.
- Filter: nur in Märkten oder Aktien handeln, die einen klaren übergeordneten Trend haben — gemessen z. B. an einem 200-Tage-Gleitenden Durchschnitt mit positiver Steigung. Pennants in Seitwärts-Märkten sind praktisch wertlos.
Warum Pennants nur in starken Trends funktionieren.
Pennants sind keine Trend-Wende-Patterns — sie sind Trend-Fortsetzungs-Patterns. Das klingt trivial, ist aber in der Praxis die häufigste Quelle für Fehlsignale. Ein Pennant in einem schwachen Trend oder einer Seitwärts-Phase ist statistisch schwer von einem normalen Rauschen zu unterscheiden. Erst wenn das übergeordnete Regime klar ist — z. B. Index über 200-Tage-Linie, Sektor in Outperformance, keine bevorstehenden Earnings — entfaltet das Pattern seine Edge.
Strukturell macht das Sinn: das Pennant ist die kurze Atempause in einer starken Bewegung. Wenn die starke Bewegung fehlt, fehlt der ökonomische Grund für eine Fortsetzung. Was bleibt, ist ein kleines Dreieck — und kleine Dreiecke in Seitwärts-Märkten brechen statistisch in beide Richtungen mit nahezu identischer Wahrscheinlichkeit aus.
Ehrliche Bewertung.
Pennants sind eines der wenigen klassischen Patterns, die ich tatsächlich in meinem Werkzeugkasten habe — allerdings mit drei klaren Einschränkungen. Erstens: nur Bullish-Pennants in Aktien-Indizes oder Einzelaktien mit klar positivem Trend. Bearish-Pennants ignoriere ich im Aggregat — die Erfolgsquoten sind in meinen Daten nicht überzeugend genug. Zweitens: nur mit Volume-Bestätigung. Drittens: nicht als Stand-Alone-Strategie, sondern als ein Setup-Typ unter mehreren — typischerweise kombiniert mit fundamentalen Filtern oder relativer Stärke gegenüber dem Index.
Was mich am Pattern stört: die Detection ist anfällig für Parameter-Tuning. Wer die Mindest-Pole-Steilheit, die Pennant-Länge und die Volume-Multiplier unabhängig voneinander optimiert, findet auf historischen Daten fast jede gewünschte Performance — und genau diese überoptimierten Setups versagen live. Mein Vorgehen: feste Parameter, in einem Bereich, der mit der Bulkowski-Literatur kompatibel ist, und kein Re-Tuning auf einzelnen Märkten.
Wer Pennants ernst nimmt, behandelt sie als das, was sie sind: ein wahrscheinlichkeits-getriebenes Setup mit moderater Edge, das in einem geeigneten Markt-Regime und mit sauberem Risikomanagement einen positiven Erwartungswert hat. Nicht mehr, nicht weniger.
Sie wollen Pennants als systematisches Setup in Ihr Trading-System integrieren? Erstgespräch buchen — wir bauen die Detection und das Filter-Set, das zu Ihrem Markt-Universum passt.