← Alle Insights

Cup-and-Handle: William O'Neils Lieblings-Pattern algorithmisch.

Das Cup-and-Handle ist das vielleicht bekannteste Pattern aus der CANSLIM-Schule von William O'Neil — und gleichzeitig eines der am schwersten algorithmisch zu fassenden. Was passiert, wenn man es trotzdem versucht? Eine differenziertere Antwort, als die CANSLIM-Lehrbücher liefern.

Origin: CANSLIM und Investor's Business Daily.

William O'Neil entwickelte das Cup-and-Handle in den 1960er-Jahren als Teil seines CANSLIM-Systems: einer Methodik, die Fundamental- und Technische Analyse zu einem Auswahlprozess für Wachstumsaktien verbindet. O'Neil dokumentierte das Pattern in zehntausenden historischen Charts der besten US-Aktien — die empirische Basis ist ungewöhnlich solide für ein „visuelles" Pattern.

Der Kerngedanke: Eine Aktie, die nach einem Aufwärtstrend eine längere Konsolidierung (den „Cup") durchläuft und danach eine kurze, flache Schwächephase („Handle"), zeigt zwei wichtige Dinge. Erstens: das schwache Geld ist raus. Zweitens: die Käufer geben nicht auf — sie verteidigen ein Niveau knapp unterhalb des Cup-Hochs. Der Breakout über das Cup-Hoch ist dann die Entladung dieser akkumulierten Spannung.

Algorithmische Definition.

Die visuelle Erzählung lässt sich erstaunlich präzise in Bedingungen übersetzen. Mein Definition-Set, das in Backtests konsistent funktioniert:

Voraussetzung:  vorheriger Up-Trend (mind. +30 % in 6 Monaten vor dem Cup)

Cup:
  Cup-Length    = 7 bis 65 Wochen (35 Wochen Median)
  Cup-Depth     = 12 % bis 33 % vom linken Cup-Rand
  Cup-Form      = U-Shape, nicht V-Shape:
                  Anteil der Tage in den unteren 50 % der Cup-Range > 30 %

Handle:
  Handle-Length = 1 bis 5 Wochen
  Handle-Depth  = max. 1/3 der Cup-Depth
  Handle-Drift  = leicht abwaerts oder seitwaerts
  Handle-High   = unterhalb Cup-High

Trigger:
  Close > Handle-High auf Volume > 1.5x 50-Tage-Median
Target:
  Cup-Depth ueber dem Breakout-Niveau projiziert

Die Bedingung „U-Shape statt V-Shape" ist die schwierigste — sie ist der Grund, warum naive Implementierungen viel zu viele Pseudo-Cups finden. O'Neil betonte explizit, dass V-förmige Erholungen kein gültiges Cup-and-Handle sind.

Backtest-Performance.

Backtest auf einem Universum von US-Wachstumsaktien (Russell-1000 ohne Financials und Utilities, 2005–2024, ohne Survivorship Bias) im Vergleich zu einem simplen 52-Wochen-Hoch-Breakout:

Setup Win-Rate Avg R/R Profit-Faktor
52W-Hoch-Breakout (rein) 38 % 1.7 1.05
Cup-and-Handle (rein) 44 % 2.0 1.57
Cup-and-Handle + Vol-Bestätigung 50 % 2.2 2.20

Die Differenz zwischen reinem 52-Wochen-Hoch-Breakout und Cup-and-Handle ist signifikant. Das Pattern filtert nicht beliebige Hochs, sondern solche mit günstiger Akkumulations-Struktur davor.

Implementation in Python.

import numpy as np
import pandas as pd

def detect_cup_and_handle(df, min_cup_weeks=7, max_cup_weeks=65,
                          min_depth=0.12, max_depth=0.33):
    """
    df: Wochen-Bars mit ['high','low','close','volume']
    Liefert Liste der Cup-and-Handle-Trigger-Indizes.
    """
    df = df.reset_index(drop=True)
    triggers = []

    for end in range(max_cup_weeks + 5, len(df)):
        for cup_len in range(min_cup_weeks, max_cup_weeks):
            cup = df.iloc[end - cup_len - 5 : end - 5]
            if len(cup) < min_cup_weeks:
                continue

            left_rim  = cup['high'].iloc[0]
            cup_low   = cup['low'].min()
            depth     = (left_rim - cup_low) / left_rim
            if not (min_depth < depth < max_depth):
                continue

            # U-Shape: > 30 % der Bars im unteren Cup-Bereich
            mid       = left_rim - (left_rim - cup_low) / 2
            lower_pct = (cup['close'] < mid).mean()
            if lower_pct < 0.30:
                continue

            # Handle: letzte 1-5 Wochen
            handle = df.iloc[end - 5 : end]
            handle_high = handle['high'].max()
            handle_low  = handle['low'].min()
            handle_depth = (handle_high - handle_low) / handle_high
            if handle_depth > depth / 3:
                continue
            if handle_high > left_rim:
                continue

            # Trigger: aktueller Close > Handle-High mit Volume
            vol_med = df['volume'].iloc[end-50:end].median()
            if df['close'].iloc[end] > handle_high \
               and df['volume'].iloc[end] > 1.5 * vol_med:
                triggers.append({
                    'idx': end,
                    'cup_len': cup_len,
                    'depth': depth,
                    'target': df['close'].iloc[end] + (left_rim - cup_low),
                    'stop':   handle_low,
                })
                break
    return triggers

Der Code ist absichtlich didaktisch geschrieben — produktiv würde man das mit Rolling-Windows und Numba vektorisieren. Die Logik bleibt dieselbe.

Warum es bei Wachstumsaktien besser funktioniert.

Cup-and-Handle ist kein universelles Pattern. Drei strukturelle Gründe, warum es auf Wachstumsaktien deutlich besser funktioniert als auf Indizes, Rohstoffen oder zyklischen Aktien:

Ehrliche Einordnung.

Cup-and-Handle ist eines der wenigen klassischen Patterns, das im modernen algorithmischen Backtest tatsächlich liefert — vorausgesetzt, man definiert es präzise und schränkt das Asset-Universum sinnvoll ein. Wer es auf jedes beliebige Asset wirft, bekommt mittelmässige Ergebnisse. Wer es auf Wachstumsaktien mit positiver Earnings-Revision-Tendenz und steigendem relativen Stärke-Rang einschränkt, bekommt eine messbar gute Edge.

Was mich am Pattern stört: die Erkennung ist rechenintensiv und der Live-Trigger kommt erst nach Wochen Beobachtung. Das macht es psychologisch fordernd — besonders, wenn man auf eine kommende Earnings-Veröffentlichung zusteuert. In meinem eigenen Setup verwende ich Cup-and-Handle als Screener-Filter für ein wöchentliches Trading-Universum, nicht als Tages-Signal. Diese Kombination ist der Punkt, an dem das Pattern seinen Wert entfaltet.

Wer CANSLIM ernst nimmt und das Pattern algorithmisch sauber implementiert, hat eine der wenigen Methoden, die seit den 1960ern in unterschiedlichen Markt-Regimes funktioniert hat. Das ist selten genug, um es nicht zu ignorieren.

Sie wollen Cup-and-Handle als Screener in Ihr Wachstumsaktien-Universum integrieren? Erstgespräch buchen — wir bauen den Filter, der zu Ihrem Zeitrahmen passt.