← Alle Insights

Flag-Patterns in der Tiefe: Bull-Flag vs. Bear-Flag systematisch.

Flags sind die nahen Verwandten der Pennants — und in vielen Trading-Büchern wird der Unterschied unscharf gehalten. Das ist ein Fehler. Wer Flags algorithmisch sauber von Pennants und beliebigen Konsolidierungen trennt, bekommt eines der am besten backtestbaren Continuation-Patterns der klassischen Lehre.

Definition: paralleler Kanal nach Flagpole.

Ein Flag-Pattern besteht aus zwei Elementen. Erstens der Flagpole: eine steile, fast vertikale Kursbewegung von typischerweise 15 bis 50 Prozent in wenigen Bars. Zweitens die Flagge selbst: ein paralleler Kanal, der entgegen der Pole-Richtung verläuft. Bei einer Bull-Flag fällt der Kanal leicht nach unten ab; bei einer Bear-Flag steigt er leicht an. Genau diese Parallelität unterscheidet eine Flag von einem Pennant — beim Pennant konvergieren die Trendlinien zu einem Dreieck.

Die zweite definierende Eigenschaft: Flags sind kurz. Bulkowski berichtet eine mediane Dauer von 11 Bars, mit einer typischen Spanne von 5 bis 20. Alles, was länger ist, wird zu einer Rectangle oder einem Channel — Patterns mit statistisch deutlich anderem Verhalten. Wer eine Flag nach 30 Bars immer noch als Flag handelt, handelt etwas anderes.

Bull-Flag und Bear-Flag.

Bull-Flags entstehen nach einem starken Aufwärts-Impuls. Der Kanal fällt leicht, das Volume sinkt, der Breakout erfolgt nach oben. Bear-Flags sind das Spiegelbild: nach einem starken Abwärts-Impuls steigt der Kanal leicht an, Volume sinkt, Breakout erfolgt nach unten.

In der statistischen Performance unterscheiden sich beide Varianten ähnlich wie Pennants. Bulkowski-typische Zahlen: Bull-Flags etwa 64 bis 67 Prozent Continuation-Rate in Bull-Märkten, Bear-Flags 45 bis 55 Prozent. Mein eigener Backtest auf US-Aktien zwischen 2008 und 2024 zeigt ein ähnliches Bild: Bull-Flags liefern in Up-Regimes konsistent positiven Erwartungswert, Bear-Flags sind deutlich regimeabhängiger und in seitwärts laufenden Märkten nahe an einem Coinflip.

Volume: bei Flags noch wichtiger als bei anderen Patterns.

Das klassische Volume-Profil einer Flag ist sehr ausgeprägt — und es ist der wichtigste Filter, den die meisten Trader unterschätzen:

Algorithmische Flag-Detection per linearer Regression.

Die Detection einer Flag ist mathematisch klarer als die eines Pennants, weil die Parallelität präzise quantifizierbar ist. Ich fitte zwei lineare Regressionen — eine auf die Highs, eine auf die Lows — und vergleiche die beiden Steigungen. Sind sie nahezu identisch und in die richtige Richtung geneigt, habe ich einen Kanal:

import numpy as np
import pandas as pd

def detect_bull_flag(df, pole_min_pct=0.15, pole_max_bars=15,
                     flag_min_bars=5, flag_max_bars=20,
                     slope_tol=0.4, vol_mult=1.5):
    """
    Bull-Flag: steiler Up-Move, danach leicht fallender paralleler Kanal,
    Breakout nach oben mit Volume-Bestaetigung.
    """
    triggers = []
    for end in range(pole_max_bars + flag_max_bars + 5, len(df)):
        for pole_bars in range(5, pole_max_bars):
            pole_start = end - flag_max_bars - pole_bars
            pole_end   = end - flag_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

            flag = df.iloc[pole_end:end]
            if len(flag) < flag_min_bars:
                continue
            x = np.arange(len(flag))
            slope_h, _ = np.polyfit(x, flag['high'].values, 1)
            slope_l, _ = np.polyfit(x, flag['low'].values,  1)
            # Bull-Flag: beide Steigungen leicht negativ
            if not (slope_h < 0 and slope_l < 0):
                continue
            # Parallelitaet: Steigungen aehnlich
            if abs(slope_h - slope_l) / max(abs(slope_h), 1e-9) > slope_tol:
                continue
            # Volume faellt im Kanal
            vol_slope, _ = np.polyfit(x, flag['volume'].values, 1)
            if vol_slope >= 0:
                continue

            upper_line = flag['high'].iloc[0] + slope_h * len(flag)
            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':   flag['low'].min(),
                })
                break
    return triggers

Der Parameter slope_tol ist der wichtigste Hyperparameter. Zu grosszügig — und der Algorithmus akzeptiert Pennants als Flags. Zu eng — und jeder kleine Rauschen-Anteil wirft echte Flags raus. Mein Wert von 0.4 ist ein Kompromiss, der sich in mehreren Walk-Forward-Tests bewährt hat.

Stop- und Target-Logik.

Ehrliche Bewertung und meine Praxis.

Flags sind eines der wenigen Patterns, die ich aktiv handle — allerdings ausschliesslich in klaren Trend-Phasen. Mein Filter: der zugrundeliegende Index oder Sektor muss über seinem 200-Tage-Gleitenden Durchschnitt liegen, und die Steigung dieser Linie muss positiv sein. In dieser Konstellation ist die Bull-Flag eine der konsistentesten Setup-Strukturen, die ich im Backtest gesehen habe.

Was ich nicht mache: Flags als Stand-Alone-Strategie. Selbst die besten Flags haben eine Win-Rate von 60 bis 70 Prozent. Wer sich auf ein einziges Setup verlässt, hat Draw-Down-Phasen von 5 bis 8 Verlusten in Serie — selten, aber möglich. Diese Serien sind psychologisch schwer zu durchhalten, wenn man kein Portfolio aus mehreren unkorrelierten Setups handelt.

Bear-Flags handle ich nur in expliziten Bear-Märkten — also wenn der Index unter seiner 200-Tage-Linie ist und die Marktbreite negativ. In allen anderen Regimes ist die Bear-Flag in meinen Daten kein signifikant profitables Setup. Das ist eine unbequeme Wahrheit, die in Trading-Büchern selten so klar ausgesprochen wird: Bearish-Continuation-Patterns funktionieren langfristig schlechter, weil Märkte langfristig steigen.

Wer Flags als das nimmt, was sie sind — ein konditionales Setup mit moderater Edge, das in einem geeigneten Regime und mit sauberem Volume-Filter einen positiven Erwartungswert hat — bekommt eines der robustesten klassischen Patterns der technischen Analyse. Wer sie als Allzweck-Werkzeug verkauft bekommt, sollte den Verkäufer wechseln.

Sie wollen Flag-Patterns als systematisches Setup mit sauberem Filter-Stack implementieren? Erstgespräch buchen — wir bauen Detection, Volume-Logik und Regime-Filter, die zu Ihrem Universum passen.