Meta-Labeling: ML-Filter über klassische Trading-Strategien.
Die meisten ML-Trading-Modelle scheitern, weil sie versuchen, alles selbst zu entscheiden: Richtung, Timing, Größe. Meta-Labeling teilt das Problem auf — und macht aus einem mittelmäßigen Modell oft das, was funktioniert.
Wenn ich einen Mandanten frage, was sein ML-Modell tut, höre ich oft: „Es sagt mir, ob ich kaufen oder verkaufen soll." Das ist die Standard-Architektur — und meistens der Grund, warum es nicht läuft. Meta-Labeling, das Konzept von Marcos Lopez de Prado, dreht die Frage um: das ML-Modell entscheidet nicht was gehandelt wird, sondern ob ein gegebener Trade gehandelt wird.
Die zwei Modelle.
Meta-Labeling besteht aus zwei Schichten:
- Primärmodell: eine klassische, regelbasierte Strategie. SMA-Crossover, RSI-Mean-Reversion, Trendfolge — etwas, das Signale liefert (long / short / flat) ohne ML.
- Sekundärmodell (Meta-Model): ein Binary Classifier, der für jedes Primär-Signal entscheidet: „Lohnt sich dieser Trade?" (1) oder „Skip" (0).
Das Primärmodell hat hohen Recall (es findet alle potenziellen Setups), aber niedrige Precision (viele False Positives). Das Sekundärmodell filtert die schlechten heraus. Sie tauschen also bewusst Trade-Häufigkeit gegen Trefferquote.
Wieso das besser ist als ein All-in-One-Modell.
Ein End-to-End-ML-Modell muss vier Dinge gleichzeitig lernen: Richtungsvorhersage, Timing, Risiko-Bewertung, Markt-Regime. Bei 5000 Beispielen pro Jahr ist das jedem Klassifizierer zu viel verlangt — er overfittet eine der vier Dimensionen und ignoriert die anderen.
Mit Meta-Labeling fixieren Sie zwei der Dimensionen (Richtung und Timing kommen vom Primärmodell) und lassen das ML-Modell nur noch das tun, wofür es geeignet ist: Pattern-Erkennung auf hoch dimensionalen Features. Das Modell hat einen klar umrissenen Job, nicht ein vages „Sage-mir-die-Zukunft".
Welche Features das Meta-Modell sieht.
Das Meta-Modell bekommt nicht den Preis — es bekommt Kontext. Ich nutze typischerweise:
- Volatilitäts-Regime: realisierte Vola der letzten 5 / 20 / 60 Tage, VIX-Level, Vola-of-Vola
- Volumen-Profil: relatives Volumen, Volumen-Spread, Tick-Imbalance
- Markt-Phase: Trend-Stärke (ADX), Range-Indikatoren, Korrelation zum Index
- Mikrostruktur: Bid-Ask-Spread, Order-Book-Imbalance (falls verfügbar)
- Kalendarische Effekte: Wochentag, Stunde, Earnings-Nähe, Macro-Event in den nächsten 24 h
- Eigene Performance-Historie: hat das Primärmodell in den letzten 20 Trades gut performt? (Recency-Feature)
Bet-Sizing aus der Meta-Probability.
Hier wird Meta-Labeling richtig elegant: das Sekundärmodell liefert nicht nur „ja / nein", sondern eine Wahrscheinlichkeit p ∈ [0, 1]. Daraus leiten Sie direkt die Positionsgröße ab.
size(t) = max(0, 2 × p_meta(t) - 1) p_meta = 0.5 → size = 0 (kein Edge, kein Trade) p_meta = 0.7 → size = 0.4 (40 % der Maximalposition) p_meta = 0.9 → size = 0.8 (80 % der Maximalposition) p_meta = 1.0 → size = 1.0 (Maximalposition)
Das ist die diskrete Variante einer Kelly-ähnlichen Allokation, ohne dass Sie das Edge schätzen müssen — das Edge steckt direkt in p_meta. In der Praxis kappe ich p_meta bei 0.95, damit die Größe nicht auf einzelne Modell-Outlier reagiert.
Implementation in Python.
# Meta-Labeling-Pipeline, vereinfacht import pandas as pd from sklearn.ensemble import RandomForestClassifier # 1. Primärmodell: SMA-Crossover def primary_signal(prices, fast=20, slow=50): sig = (prices.rolling(fast).mean() > prices.rolling(slow).mean()).astype(int) return sig.diff().fillna(0) # +1 entry long, -1 exit # 2. Triple-Barrier-Labels nur für Trades, die das Primärmodell aufmacht entries = primary_signal(prices) events = entries[entries != 0].index labels = triple_barrier_labels(prices, events, sigma) # Meta-Label: 1 wenn Primärmodell-Richtung gewinnt, sonst 0 meta_y = ((labels > 0) == (entries.loc[events] > 0)).astype(int) # 3. Features für Meta-Modell X = build_context_features(prices, events) # Vola, Volumen, Regime, ... # 4. Meta-Modell trainieren mit Purged K-Fold clf = RandomForestClassifier(n_estimators=200, max_depth=5) clf.fit(X_train, meta_y_train) # 5. Live: Trade nur wenn p_meta > Schwelle, Größe ∝ p_meta p_meta = clf.predict_proba(X_live)[:, 1] position_size = np.maximum(0, 2 * p_meta - 1)
Ergebnis aus einer Trendfolge-Strategie.
Ein konkretes Beispiel aus einem Mandanten-Projekt: eine klassische 50/200-EMA-Trendfolge auf US-Aktien-ETFs. Ohne Meta-Filter: Sharpe 0.7, Win-Rate 38 Prozent, Max DD 22 Prozent.
Nach Meta-Labeling mit RandomForest-Filter (Schwelle p_meta > 0.55): Sharpe 1.3, Win-Rate 53 Prozent, Max DD 12 Prozent. Trade-Anzahl: minus 30 Prozent. Die Strategie wird selektiver, handelt seltener — aber wenn sie handelt, hat sie deutlich besseren Edge.
Wichtig: das Primärmodell wurde nicht verändert. Die ganze Verbesserung kommt aus dem Filter. Das ist die Pointe — Sie verbessern eine bestehende, verstandene Strategie, statt eine neue Blackbox zu bauen.
Caveat: Overfitting des Meta-Modells.
Meta-Modelle overfitten leichter als Primärmodelle, weil sie nur auf den Subset der Primär-Signale trainiert werden — typischerweise wenige hundert bis tausend Beispiele. Drei Gegenmittel:
- Wenig Modell-Kapazität: RandomForest mit max_depth = 4–6, nicht XGBoost mit 1000 Bäumen. Weniger Features (10–20), nicht 200.
- Purged Cross-Validation: Zeitlich überlappende Labels (Triple-Barrier!) müssen aus dem Trainings-Fold entfernt werden, sonst leakt Information.
- Walk-Forward-Validierung des Filter-Effekts: lohnt sich der Filter wirklich, oder bringt er nur in den Test-Daten Mehrwert?
Meine Praxis.
Ich nutze Meta-Labeling als Strategie-Verbesserer, nicht als Stand-Alone-ML. Konkret: jede klassische Strategie, die ich für Mandanten umsetze, bekommt — optional — einen Meta-Filter. Das Primärmodell ist transparent und auditierbar, das Meta-Modell ist die ML-Schicht obendrauf, die man bei Bedarf ein- und ausschalten kann.
Was ich nicht mehr baue: pure End-to-End-Deep-Learning-Modelle, die alles selbst entscheiden. Die Erfolgsquote in der Praxis ist zu niedrig, und wenn sie versagen, weiß niemand warum. Meta-Labeling ist die ehrlichere Architektur: klassische Logik plus interpretierbarer ML-Filter.
Sie haben eine funktionierende Strategie, die Sie mit ML verbessern wollen? Erstgespräch buchen — wir prüfen, ob Meta-Labeling Mehrwert bringt.