Chart-Patterns systematisch: Head-and-Shoulders, Triangles, Flags algorithmisch erkennen.
Chart-Patterns gelten als das subjektivste Element der technischen Analyse. Wer sie algorithmisch erkennt, kann sie testen — und findet eine differenzierte Wahrheit: manche funktionieren, manche nicht, und keines ist ohne weitere Filter live-tauglich.
Warum Chart-Patterns kontrovers sind.
Die Standardkritik lautet: Patterns sind nachträglich immer offensichtlich. Vorher hat man drei mögliche Interpretationen des aktuellen Bildes, je nachdem ob man optimistisch oder pessimistisch eingestellt ist. Diese Kritik ist berechtigt — aber nur, solange man Patterns visuell zeichnet.
Wer Patterns algorithmisch definiert, hebt diese Subjektivität auf. Eine algorithmische Definition gibt entweder true oder false zurück. Damit lassen sich Patterns wie jeder andere Indikator backtesten, optimieren und in Walk-Forward evaluieren.
Pivots: das Fundament jeder Pattern-Erkennung.
Alle klassischen Patterns basieren auf Swing-Highs und Swing-Lows. Die robusteste Methode, diese zu identifizieren, ist ein Zigzag-Algorithmus mit Mindest-Bewegung in Prozent oder ATR-Vielfachen:
# Einfache Pivot-Detection import numpy as np def find_pivots(prices, threshold_pct=2.0): pivots = [] last_pivot_idx = 0 last_pivot_price = prices[0] direction = 0 # 1 = up, -1 = down for i, p in enumerate(prices): change = (p - last_pivot_price) / last_pivot_price * 100 if direction >= 0 and change <= -threshold_pct: pivots.append((last_pivot_idx, last_pivot_price, 'H')) last_pivot_idx, last_pivot_price = i, p direction = -1 elif direction <= 0 and change >= threshold_pct: pivots.append((last_pivot_idx, last_pivot_price, 'L')) last_pivot_idx, last_pivot_price = i, p direction = 1 else: if direction >= 0 and p > last_pivot_price: last_pivot_idx, last_pivot_price = i, p elif direction <= 0 and p < last_pivot_price: last_pivot_idx, last_pivot_price = i, p return pivots
Wichtig: dieser Algorithmus hat einen strukturellen Lag. Ein neuer Pivot wird erst bestätigt, wenn der Preis sich weit genug in die Gegenrichtung bewegt hat. Im Live-Trading müssen Sie damit umgehen — Pattern-Erkennung „in Echtzeit" ist immer unsicherer als auf abgeschlossenen Daten.
Head-and-Shoulders algorithmisch.
Eine Head-and-Shoulders-Topformation hat fünf relevante Pivots: Left Shoulder (L1), Head Peak (H), Right Shoulder (L2) und die zwei Tiefs dazwischen (T1, T2 = Neckline). Algorithmische Definition:
H > L1, H > L2 # Head ist höchster Punkt |L1 - L2| / H < 0.05 # Schultern ähnlich hoch (5 % Toleranz) T1, T2 zwischen Schultern und Head |T1 - T2| / mean(T1,T2) < 0.03 # Neckline annähernd flach Signal: Preis bricht unter Neckline Target: Höhe (H - Neckline) projiziert nach unten
Mit klaren Schwellenwerten lässt sich das in Python prüfen. Wichtig sind die Toleranzen — zu eng definiert findet das System keine Patterns, zu lose erfasst es Zufallsformen. Ich verwende typischerweise 5 % bei Schulter-Symmetrie und 3 % bei Neckline-Flachheit.
Triangles.
Drei Triangle-Varianten lassen sich präzise mathematisch trennen — durch die Slopes der beiden Trendlinien, die aus mindestens je zwei Pivots gebildet werden:
- Ascending: untere Linie steigend (slope > 0), obere flach (|slope| < ε)
- Descending: obere Linie fallend (slope < 0), untere flach (|slope| < ε)
- Symmetric: obere fallend, untere steigend, Konvergenzpunkt rechts
Klassische Lehre sagt, dass Ascending bullish und Descending bearish sind, Symmetric in Trendrichtung ausbricht. Statistisch ist das nur teilweise haltbar — siehe nächster Abschnitt.
Flags und Pennants.
Flags sind kleine Konsolidierungs-Rechtecke nach einer schnellen Bewegung („Flagpole"). Definition:
- Flagpole: starker Move (z. B. > 5 % in < 10 Bars)
- Flag: enger Range (z. B. Hochpunkt-Tiefpunkt-Spanne < 30 % der Flagpole-Größe)
- Dauer: 5–20 Bars
- Slope der Flag: leicht gegen die Flagpole-Richtung
Pennants sind algorithmisch fast identisch, nur dass die Range konvergiert statt parallel zu verlaufen. In der Praxis sind beide so ähnlich, dass ich sie in einem Topf behandle.
Was die Forschung sagt: Lo, Mamaysky, Wang.
Die zentrale akademische Studie ist „Foundations of Technical Analysis" von Andrew Lo, Harry Mamaysky und Jiang Wang (Journal of Finance, 2000). Sie haben zehn klassische Patterns auf US-Aktien 1962–1996 mit Kernel-Regression erkannt und die Folge-Renditen statistisch ausgewertet.
Kernergebnisse:
- Mehrere Patterns liefern statistisch signifikant abweichende Folge-Return-Verteilungen gegenüber Zufalls-Stichproben.
- Head-and-Shoulders, Rectangle Tops/Bottoms und Double Tops/Bottoms zeigen die robustesten Effekte.
- Die Effekte sind statistisch signifikant, aber wirtschaftlich klein — typischerweise wenige Basispunkte über mehrere Tage.
- Patterns enthalten Information, aber meist nicht genug, um nach Transaktionskosten alleinstehend profitabel zu sein.
Die Studie wurde mehrfach erweitert (Bulkowski mit „Encyclopedia of Chart Patterns", statistische Re-Tests auf neueren Daten). Die Ergebnisse bleiben in der Tendenz ähnlich: Patterns sind nicht Zufallsmuster, aber auch nicht der Goldesel.
Performance: Patterns vs. Indikatoren.
Aus meinen eigenen Backtests auf Aktien-Universum (S&P 500 Komponenten, 15 Jahre, ohne Survivorship Bias):
| Setup | Hit-Rate | Avg R/R | Profit-Faktor |
|---|---|---|---|
| H&S Top (rein) | 42 % | 1.6 | 1.16 |
| H&S + Vola-Filter + Trend-Filter | 48 % | 1.8 | 1.66 |
| Bull Flag (rein) | 51 % | 1.4 | 1.46 |
| Symmetric Triangle (rein) | 39 % | 1.3 | 0.83 |
| RSI(2)-Strategie (Vergleich) | 63 % | 0.9 | 1.31 |
Lesart: reine Patterns sind grenzwertig oder unrentabel. Mit den richtigen Filtern (Volatilität, Trend-Kontext, Volumen-Bestätigung) heben sich Head-and-Shoulders und Flags klar in den profitablen Bereich. Symmetric Triangles allein lassen sich nach meinen Tests nicht profitabel handeln — vermutlich, weil sie zu häufig „zufällig" entstehen.
Filter, die ich verwende.
- Trend-Kontext. Bullische Patterns nur in übergeordnetem Aufwärtstrend (z. B. SMA-200 steigend), bearische nur in Abwärtstrend.
- Volume-Bestätigung. Breakout muss auf überdurchschnittlichem Volumen erfolgen (Volume > 1,5× 20-Tage-Durchschnitt).
- Volatilitäts-Filter. ATR-basierte Bandbreite — kein Trade, wenn implizite Vola gerade explodiert (False-Breakout-Risiko).
- Zeit-Filter. Kein Pattern-Trade in den letzten 5 Tagen vor Earnings (zu viel idiosynkratisches Risiko).
Meine ehrliche Erfahrung.
Chart-Patterns funktionieren teilweise. Wer sie ohne Filter handelt, verliert nach Kosten Geld. Wer sie mit den richtigen Filtern und in den richtigen Markt-Regimes einsetzt, hat eine messbare Edge — aber keine spektakuläre. In meiner eigenen Praxis sind Patterns nie das primäre Signal, sondern eine zusätzliche Bestätigungsschicht für Setups, die bereits aus anderen Gründen attraktiv sind.
Die Stärke der algorithmischen Pattern-Erkennung liegt nicht im einzelnen Pattern, sondern in der Fähigkeit, die statistische Erwartung jedes Patterns sauber zu beziffern. Ein Setup mit positivem Erwartungswert plus zwei oder drei unabhängige Bestätigungs-Layer — das ist die Architektur, die in der Praxis trägt. Patterns sind ein guter Layer. Mehr nicht. Aber das ist schon nicht wenig.
Sie wollen Pattern-Erkennung in Ihrem System sauber implementiert und gefiltert? Erstgespräch buchen — ich zeige Ihnen meine Pipeline.