MLOps für Trading-Strategien: Modell-Drift, Re-Training, Production-Pipelines.
Ein Empfehlungssystem darf eine Woche schlechte Predictions liefern, ohne dass die Welt untergeht. Ein Trading-Modell kann an einem schlechten Tag eine Quartals- Performance vernichten. MLOps für Trading ist nicht „MLOps wie sonst, plus Geldsumme". Es ist eine andere Disziplin — strenger, schneller, mit anderen Failure- Modi.
Warum Trading-Modelle anders altern.
Klassische Klassifikations- oder Recommendation-Modelle leiden unter Data-Drift: die Verteilung der Inputs verschiebt sich, die Verteilung der Targets aber bleibt stabil. Ein Mode-Empfehler altert, weil Geschmack langsam wandert; das Konzept „Kunde mag das" bleibt erhalten.
Trading-Modelle altern an Konzept-Drift: die Beziehung zwischen Features und Target ändert sich. Eine Vola-Regime-Strategie, die in einer Niedrigvola- Phase trainiert wurde, sieht in einer Hochvola-Phase die gleichen Inputs — aber das Mapping zu Returns ist ein anderes. Schlimmer: andere Marktteilnehmer beobachten den Markt mit, lernen ähnliche Muster und arbitrieren sie aus. Was 2030 als Signal funktioniert hat, ist 2032 vielleicht Rauschen plus Costs.
Konsequenzen:
- Modelle haben eine begrenzte Halbwertszeit. 3–18 Monate ist ein realistischer Range, abhängig vom Asset-Universum und der Anzahl unabhängiger Trades pro Monat.
- Re-Training muss systematisch geplant werden, nicht ad-hoc.
- Monitoring ist Pflicht. Wer nur P&L beobachtet, merkt zu spät, dass das Modell kaputt ist.
Drift-Detection: PSI, KL und Statistik-Tests.
Drift lässt sich auf drei Ebenen messen:
- Feature-Drift: Verteilung der Inputs vergleicht Training-Periode mit Produktion. PSI, KL-Divergenz, Jensen-Shannon, Kolmogorov-Smirnov pro Feature.
- Prediction-Drift: Verteilung der Modell-Outputs. Ein robustes Frühsignal: wenn Ihre Long/Short-Quote von 50/50 plötzlich auf 70/30 kippt, ohne dass der Markt das nahelegt, stimmt etwas nicht.
- Performance-Drift: Sharpe, Hit-Rate, durchschnittlicher Trade. Trailing-Fenster vergleichen mit Backtest-Erwartung. Brauchbare Tests: t-Test auf Trade-Returns, Bootstrap-CIs.
Population Stability Index ist mein Standard für Feature-Drift, weil er robust, interpretierbar und schnell zu rechnen ist:
def psi(expected, actual, bins=10):
"""Population Stability Index zwischen zwei Verteilungen."""
breaks = np.quantile(expected, np.linspace(0, 1, bins + 1))
breaks[0], breaks[-1] = -np.inf, np.inf
e_pct = np.histogram(expected, bins=breaks)[0] / len(expected)
a_pct = np.histogram(actual, bins=breaks)[0] / len(actual)
e_pct = np.clip(e_pct, 1e-6, None)
a_pct = np.clip(a_pct, 1e-6, None)
return float(np.sum((a_pct - e_pct) * np.log(a_pct / e_pct)))
# Faustregeln:
# PSI < 0.10 stabil
# 0.10-0.25 Warnung
# > 0.25 deutlicher Drift
In der Produktion läuft PSI nightly über jedes Feature, Ergebnis fließt in Grafana oder einen Slack-Alert. Schwelle nicht statisch — pro Feature kalibriert auf historische PSI-Schwankungen.
Champion-Challenger-Setup.
Ein einzelnes Modell in Produktion ist eine fragile Konfiguration. Besser: Champion (das aktuell live tradende Modell) plus mehrere Challenger (Kandidaten, die parallel rechnen aber nicht traden).
Setup:
- Champion produziert echte Trades.
- Jeder Challenger bekommt dieselben Live-Features und produziert eigene Predictions, die in einer Schatten-Tabelle landen — ohne Order.
- Performance-Vergleich rollierend (z. B. 30 Handelstage Sharpe, Hit-Rate, Net-P&L).
- Promotion-Regel: Challenger schlägt Champion signifikant über N Tage → wird neuer Champion. Signifikanz heißt: nicht „ein bisschen besser", sondern statistisch nachweislich (Bootstrap, Block-Bootstrap, oder DSR — Deflated Sharpe Ratio).
Wichtig: Promotion-Regel vorher festlegen und nicht im Nachhinein anpassen. Sonst optimiert man die Promotion-Regel statt das Modell.
Shadow Trading vor Live-Deployment.
Bevor ein Modell echtes Geld bewegt, muss es in Produktions-Umgebung gegen Live- Markt-Daten laufen, ohne Orders zu schicken. Shadow Trading deckt drei Klassen von Bugs auf, die im Backtest nie auffallen:
- Daten-Latenz-Probleme: Im Backtest stehen alle Features pünktlich da; in Produktion verspätet sich eine Macro-Reihe um 7 Minuten.
- Feature-Berechnungs-Skew: Offline-Pipeline berechnet anders als Online-Pipeline. Klassiker, den Feature Stores teilweise entschärfen.
- Execution-Logik-Bugs: Order-Größe rundet falsch, Stop-Loss berechnet auf falscher Basis. Nur sichtbar, wenn die Order generiert wird — auch ohne Versand.
Mein Minimum für Shadow Trading: 4 Wochen plus mindestens 100 Schatten-Trades. Ergebnisse werden gegen das Live-Modell verglichen. Wenn die Verteilung der Schatten-Predictions stark von der erwarteten abweicht, ist etwas falsch — und es muss beantwortet werden, was, bevor Live-Geld läuft.
Re-Training-Trigger.
Drei Trigger-Familien, die sich in der Praxis bewährt haben:
- Zeitbasiert: Alle 4 / 8 / 12 Wochen Re-Training, fester Rhythmus. Vorteil: planbar, einfach. Nachteil: kein adaptiver Schutz gegen plötzliche Regime-Shifts.
- Drift-basiert: Bei PSI > Schwelle für N aufeinanderfolgende Tage automatisches Re-Training. Vorteil: reagiert auf Realität. Nachteil: Drift-Metrik kann selber rauschen.
- Performance-basiert: Bei Trailing-Sharpe unter Schwelle. Vorteil: bindet das Re-Training an das, was wirklich zählt. Nachteil: spät reagierend — wenn die Performance kaputt ist, ist sie schon kaputt.
Realistisch nutzt man eine Kombination: feste Untergrenze zeitbasiert (z. B. quartalsweise), zusätzlich Drift-Trigger als Frühwarnung, Performance-Trigger als Notbremse mit Auto-Pause (siehe Rollback).
Rollback und Auto-Pause.
Was passiert, wenn das frisch deployte Modell in den ersten zwei Tagen ungewöhnlich schlecht läuft? Ohne Plan: Diskussion im Chat, Bauchgefühl, zu spätes Eingreifen. Mit Plan: harte Regeln, die vorher festgelegt wurden.
- Position-Size-Ramp: neues Modell startet bei 25 % der vollen Größe und ramped über 10 Tage hoch — nur wenn keine Auffälligkeit auftritt.
- Auto-Pause: Tagesverlust unter X % oder rollender 5-Tage-Verlust unter Y % stoppt automatisch alle neuen Trades. Wieder-Aktivierung nur durch manuelle Freigabe nach Root-Cause-Analyse.
- Rollback zur vorherigen Modell-Version: in Sekunden, über MLflow-Model-Registry, ohne Code-Deploy. Modell-Artefakt und Feature-Hash genügen.
Monitoring: was wirklich überwacht werden muss.
Trading-MLOps-Monitoring hat vier Schichten, die alle live sein müssen:
- Infrastruktur: Feature-Pipeline-Latenz, Daten-Aktualität, Order-API-Health. Kein ML-Spezial, aber kritisch.
- Daten: Feature-Verteilungen, fehlende Werte, Schema-Drift, Out-of-Range-Werte. Tools: Great Expectations, evidently.ai.
- Modell: Prediction-Verteilung, Drift-Metriken, Modell-Latenz-p99. MLflow / Weights & Biases / Neptune.
- Trading-Outcome: P&L, Sharpe trailing, Slippage realisiert vs. erwartet, Order-Fill-Rate, Spread-Kosten. Eigene Dashboards aus Order-/Trade-Log.
Ein Alert auf Trading-Outcome ohne Alerts auf Daten und Modell ist gefährlich: wenn das P&L-Signal schlecht wird, ist es schon zu spät. Frühwarnung lebt auf Daten- und Modell-Layer.
Tools 2032.
- MLflow: Open-Source, robust, Standard für Tracking, Registry, Model Serving. Mein Default für mittlere Setups.
- Weights & Biases: stärker bei Experiment-Tracking und Plots, weniger bei Registry. Sinnvoll, wenn Modelle iterativ erforscht werden.
- Neptune: zwischen MLflow und W&B, gute Reporting-Features.
- Eigene Lösung: bei sehr spezifischen Latenz- oder Datenschutz-Anforderungen. Heißt: Postgres + S3 + ein paar hundert Zeilen Code. Funktioniert, lohnt aber selten gegen MLflow Open-Source.
- Evidently.ai: Drift-Reports und Daten-Quality-Monitoring als Open-Source-Library — passt in jede Pipeline.
- Great Expectations: Daten-Validierung als Code, mit Schema- und Constraint-Tests.
Meine Praxis.
Eine Faustregel aus zehn Jahren systematischem Trading und MLOps-Beratung: Production-Trading-Models brauchen ungefähr dreimal so viel MLOps-Aufwand wie ein typisches SaaS-ML-Modell. Drei mal mehr Monitoring, drei mal mehr Drift- Detection, drei mal sorgfältiger Rollback, drei mal strenger Champion-Challenger. Wer das nicht aufbringt, bezahlt es mit Performance-Einbrüchen, die niemand früh genug erkennt.
Praktisch heißt das für Mandantenprojekte: das ML-Modell selbst macht 20 % der Arbeit. Pipelines, Monitoring, Re-Training-Logik, Shadow-Setup und Operations machen 80 %. Das ist nicht unangenehm — das ist die ehrliche Verteilung. Wer eine Strategie auf Wochen-Zeitskala Geld verdienen lassen will, baut die Infrastruktur, die diese Verteilung respektiert.
Was ich Mandanten konkret rate, bevor wir Live gehen:
- Drift-Dashboard auf Feature-Level live, mit kalibrierten Schwellen.
- Champion-Challenger mit mindestens einem Challenger.
- Minimum 4 Wochen Shadow Trading mit dokumentiertem Vergleichsbericht.
- Auto-Pause-Regeln schriftlich festgehalten, technisch implementiert, einmal getestet.
- MLflow- oder gleichwertige Model-Registry mit klarem Promotion-Workflow.
Das ist die Untergrenze. Alles darüber — Streaming-Drift, automatische Hyperparameter- Retuning, Online-Learning — ist sinnvoll, aber kommt erst, wenn das Fundament steht.
Sie wollen Ihre Trading-ML-Pipeline auf Production-Niveau bringen? Erstgespräch buchen — wir bauen Drift-Monitoring, Champion-Challenger und Auto-Pause-Regeln so, dass sie zur Strategie passen.