← Alle Insights

KI für Bond-Markets: was bei Anleihen wirklich funktioniert.

Die meisten KI-Trading-Beiträge handeln von Aktien. Bonds bekommen einen Bruchteil der Aufmerksamkeit — und das, obwohl der globale Anleihenmarkt rund doppelt so groß ist wie der Aktienmarkt. Ein Grund dafür: Bonds sind technisch unangenehm. Die gute Nachricht ist, dass genau diese Unannehmlichkeiten Machine Learning eine echte Nische bieten, sobald man die Eigenheiten verstanden hat.

Warum Bonds anders sind als Aktien.

Wer aus dem Equity-Trading kommt und denselben Werkzeugkasten auf Anleihen anwendet, scheitert verlässlich. Drei Gründe:

Wer das ignoriert und LSTM auf TLT-Daten wirft, bekommt das übliche Ergebnis: ein Modell, das im Backtest funktioniert, weil es Zinsänderungen einen Tag vorhersagt, die in den Trainingsdaten leicht vorgehen — und live nichts mehr liefert.

Yield-Curve-Forecasting: der dankbarste Use-Case.

Die Zinsstrukturkurve ist gut messbar, täglich verfügbar und hat eine begrenzte Anzahl sinnvoller Treiber. Klassisch: Nelson-Siegel-Svensson zerlegt die Kurve in Level, Slope und Curvature. Diese drei Faktoren erklären in den allermeisten Zeiträumen mehr als 95 % der Varianz. Genau das macht sie zu einer dankbaren ML-Zielgröße — nicht den absoluten Yield, sondern die Faktoren.

Ein typischer Ansatz, den ich seit Jahren produktiv nutze:

import pandas as pd
import numpy as np
from sklearn.ensemble import GradientBoostingRegressor

# Treasury-Yields aus FRED (DGS1, DGS2, DGS5, DGS10, DGS30)
yields = pd.read_csv("treasury_yields.csv", parse_dates=["date"], index_col="date")

# Nelson-Siegel-Faktoren als Zielgrößen
ns = compute_nelson_siegel(yields)  # Level, Slope, Curvature

# Features: Macro + Marktstress + Fed-Signale
X = pd.concat([
    macro_features(),       # CPI, Unemployment, ISM, etc.
    stress_features(),      # VIX, MOVE, TED-Spread
    fed_text_features(),    # NLP-Embeddings aus FOMC-Minutes
], axis=1).dropna()

y_slope = ns["slope"].shift(-5)  # 5-Tages-Forecast
model = GradientBoostingRegressor(n_estimators=400, max_depth=3)
model.fit(X.loc[:"2027"], y_slope.loc[:"2027"])

Realistische Out-of-Sample-Erwartung für einen 5-Tages-Slope-Forecast: R² zwischen 0,05 und 0,12. Das klingt mager, ist aber in dem Kontext brauchbar. Wenn das Modell nur in den 30 % der Fälle mit höchster Konfidenz traded, bleibt eine echte Information-Ratio übrig. Wer zweistellige R² verspricht, hat irgendwo Look-Ahead.

NLP für Fed- und EZB-Statements.

Hier ist der Aufwand klein, der Nutzen real. Statements und Pressekonferenzen der wichtigsten Notenbanken sind die größten exogenen Treiber von Zinsbewegungen. Ein LLM kann Statement-Veränderungen quartalsweise extrahieren — was wurde gestrichen, was neu hinzugefügt, welcher Tonfall ist die Forward Guidance.

Bei uns laufen zwei Pipelines: eine misst die kosinusähnliche Distanz zwischen aufeinanderfolgenden FOMC-Statements und kürzt den Datensatz auf jene Sitzungen, in denen die Distanz im obersten Dezil lag. In diesen Fällen war die Marktreaktion in den Folgetagen signifikant größer — das ist ein klassisches Volatilitäts-Signal, kein Direktions-Signal. Die zweite Pipeline lässt Claude ein strukturiertes JSON über jedes Statement erzeugen: Inflations-Ton (hawkish/neutral/dovish), Arbeitsmarkt-Ton, Forward-Guidance-Festigkeit. Diese drei Skalen gehen als zusätzliche Features in das Yield-Curve-Modell.

Wichtig: ich verwende dafür immer dieselbe Prompt-Vorlage, denselben Modell-Snapshot und speichere jeden Roh-Output. Sonst bekommt man Look-Ahead durch Modell-Updates — der unsichtbarste und teuerste Fehler in NLP-Backtests.

Credit-Spread-Prediction mit Random Forests.

Bei Investment-Grade- und High-Yield-Spreads funktionieren Tree-Modelle besser als neuronale Netze. Der Grund ist banal: die Trainingsdaten sind klein. Selbst mit 25 Jahren täglicher CDX-IG- und CDX-HY-Daten reden wir über etwa 6 000 Datenpunkte. Deep Learning braucht Größenordnungen mehr.

Mein Standard-Setup für 20-Tages-Forecasts von HY-Spreads nutzt diese Features:

Eine Random-Forest-Regression mit rollierender Trainings-Window-Validierung liefert ehrlich gerechnet ein R² um 0,15 bei 20 Tagen Horizont. Das Modell ist nicht für Punkt-Forecasts gut, sondern um Schwellenwert-Signale zu erzeugen: „Wann ist die Wahrscheinlichkeit, dass Spreads in den nächsten 20 Tagen um mehr als 50 bp ausweiten, im obersten Quintil?" Dieses Signal ist real und nutzt ein Drawdown-Hedging-Programm, das ich für ein Family-Office mit aufgebaut habe.

Datenquellen — was wirklich brauchbar ist.

Ich nutze für reine Research-Projekte fast ausschließlich FRED plus EZB-Daten. Erst wenn ein Modell live geht, kommt teurer Datenfeed dazu.

Konkretes Python-Setup, das bei uns produktiv läuft.

Eine schlanke Pipeline für tägliche Yield-Curve- und Spread-Forecasts:

# pipeline.py — täglicher Lauf um 23:00 UTC
import pandas as pd
from fredapi import Fred
from joblib import load

fred = Fred(api_key=API_KEY)

def fetch_yields():
    series = ["DGS3MO","DGS2","DGS5","DGS10","DGS30","BAMLH0A0HYM2","VIXCLS"]
    df = pd.concat({s: fred.get_series(s) for s in series}, axis=1)
    return df.ffill().dropna()

def make_features(df):
    f = pd.DataFrame(index=df.index)
    f["slope_2_10"] = df["DGS10"] - df["DGS2"]
    f["hy_spread"] = df["BAMLH0A0HYM2"]
    f["hy_chg_20"] = df["BAMLH0A0HYM2"].diff(20)
    f["vix"] = df["VIXCLS"]
    f["vix_z"] = (df["VIXCLS"] - df["VIXCLS"].rolling(252).mean())
    return f.dropna()

def forecast():
    df = fetch_yields()
    X = make_features(df).iloc[[-1]]
    model = load("models/hy_spread_20d.joblib")
    pred = model.predict(X)[0]
    return {"date": df.index[-1].isoformat(), "pred_hy_chg_20d": float(pred)}

if __name__ == "__main__":
    out = forecast()
    print(out)

Der gesamte Lauf dauert unter 30 Sekunden, schickt das Ergebnis per Mail und schreibt es in eine SQLite-Datei für die Forecast-Historie. Das Modell-Retraining läuft wöchentlich am Sonntag, ebenfalls automatisiert.

Ehrliche Erwartung an die Performance.

Wer hofft, mit ML ein Bond-Trading-System zu bauen, das Sharpe 2 schießt, wird enttäuscht. Bonds sind diversifizierter, langsamer und in vielen Segmenten stärker durch Notenbanken getrieben als durch Marktteilnehmer. Was realistisch geht:

Jede dieser Anwendungen liefert für sich genommen 30–80 bp Mehrwert pro Jahr auf Portfolioebene — nicht spektakulär, aber stabil und gut skalierbar. Wer das mit drei oder vier solchen Bausteinen kombiniert und die Korrelationen sauber managed, kommt am Ende auf einen messbaren Edge, der in der Branche selten ist.

Sie wollen Bond-Forecasting in Ihren Anlageprozess integrieren? Erstgespräch buchen — ich zeige Ihnen, wo der Aufwand sich lohnt und wo nicht.