← Alle Insights

Bund-Future & Yieldcurve: Steepener, Flattener, Butterfly.

Der Bund-Future (FGBL) ist das wichtigste Zinsinstrument in Europa und einer der liquidesten Futures der Welt. Wer ihn isoliert handelt, lässt den eigentlichen Hebel liegen — denn der wahre Edge entsteht in der Kombination mit anderen Punkten der Zinskurve. Hier geht es um Steepener, Flattener und Butterfly-Spreads über Schatz, Bobl und Bund.

Die vier Bundesanleihen-Futures.

Die Eurex listet vier Anleihen-Futures auf deutsche Staatsanleihen, jeder mit einer anderen Restlaufzeit. Zusammen bilden sie die Zinskurve in vier diskreten Punkten ab:

Jeder dieser Kontrakte hat eigene Margins, eigene Liquiditätsprofile und reagiert unterschiedlich auf Makro-Ereignisse. Wer Spread-Strategien fährt, arbeitet typischerweise mit Kombinationen aus Schatz/Bobl/Bund oder Bobl/Bund/Buxl.

Was ein Steepener wirklich ist.

Ein Steepener (Versteilerung) ist eine Position, die profitiert, wenn die Zinskurve steiler wird — also wenn die Renditen am langen Ende stärker steigen als am kurzen Ende (oder am kurzen Ende stärker fallen). Umgekehrt der Flattener.

In Bund-Futures gedacht: Steepener heißt long Schatz, short Bund. Wenn die Zinskurve steiler wird, steigt der Schatz-Preis stärker als der Bund-Preis fällt — oder umgekehrt. Wichtig: die Positionsgrößen müssen Duration-gewichtet sein. Wer einen Schatz gegen einen Bund tradet, hat keinen Steepener, sondern eine Mischung aus Steepener und Duration-Direction.

def duration_neutral_ratio(
    dv01_short_leg: float,  # DV01 pro Kontrakt am kurzen Ende (Schatz)
    dv01_long_leg: float,   # DV01 pro Kontrakt am langen Ende (Bund)
) -> float:
    """
    Liefert das Verhaeltnis: wie viele Kontrakte des kurzen Endes
    pro Kontrakt am langen Ende, damit Duration neutral ist.
    DV01 = Wertaenderung in EUR bei 1 Basispunkt Zinsaenderung.
    """
    return dv01_long_leg / dv01_short_leg


# Beispiel: Schatz DV01 ca. 20 EUR, Bund DV01 ca. 90 EUR pro Kontrakt
ratio = duration_neutral_ratio(20.0, 90.0)
print(f"Pro 1 Bund-Kontrakt: {ratio:.1f} Schatz-Kontrakte")  # ca. 4.5

Das DV01 (Dollar Value of 01) eines Future-Kontrakts ergibt sich aus dem Cheapest-to-Deliver (CTD) der zugrundeliegenden Anleihe. Beim Schatz aktuell etwa 20 EUR pro Basispunkt, beim Bund etwa 90 EUR. Wer Spreads handelt, muss diese Zahlen regelmäßig aus den aktuellen CTD-Daten neu berechnen — sie verändern sich mit jedem Roll.

Wann Steepener funktionieren.

Aus zehn Jahren Eurozonen-Zinsen lässt sich ein Muster destillieren:

Eine systematische Steepener/Flattener-Strategie braucht also einen Regime-Filter, der mindestens auf EZB-Erwartungen und Inflations-Surprises basiert. Wer das ohne diesen Kontext systematisiert, kommt am Ende auf Sharpe nahe null.

Butterfly: drei Punkte der Kurve.

Ein Butterfly handelt eine Konvexitätsverschiebung der Kurve — sie wird in der Mitte stärker oder schwächer als an den Enden. Klassische 2-5-10-Butterfly: long am 5-Jahres- Punkt (Bobl), short am 2-Jahres-Punkt (Schatz) und am 10-Jahres-Punkt (Bund), in Duration-neutraler Gewichtung.

Warum interessant: Butterflys sind oft mean-reverting. Wenn der Bobl gegenüber Schatz und Bund auseinanderläuft, gibt es einen statistischen Druck zur Reversion, weil Marktteilnehmer auf der Kurve glattstellen, sobald die Abweichung über historische Z-Scores hinausgeht. Wer den Bund-Bobl-Schatz-Butterfly als Z-Score-System handelt, hat eine der wenigen wirklich mean-reverting Strategien im Eurozonen-Fixed-Income-Bereich.

import pandas as pd
import numpy as np

def butterfly_zscore(
    schatz: pd.Series,
    bobl: pd.Series,
    bund: pd.Series,
    weights: tuple = (1.0, -2.0, 1.0),
    window: int = 60,
) -> pd.Series:
    """
    Z-Score des 2-5-10-Butterfly aus den Future-Preisen.
    Annahme: weights sind grob duration-gewichtet.
    """
    fly = weights[0] * schatz + weights[1] * bobl + weights[2] * bund
    mean = fly.rolling(window).mean()
    std = fly.rolling(window).std()
    return (fly - mean) / std


def butterfly_signal(z: pd.Series, entry: float = 2.0, exit: float = 0.5) -> pd.Series:
    """
    Long Butterfly (long Wings, short Belly) wenn z <= -entry.
    Short Butterfly wenn z >= entry. Exit bei |z| < exit.
    """
    signal = pd.Series(0, index=z.index, dtype=float)
    pos = 0
    for t, val in z.items():
        if pos == 0:
            if val <= -entry:
                pos = 1
            elif val >= entry:
                pos = -1
        elif abs(val) < exit:
            pos = 0
        signal.loc[t] = pos
    return signal

Risiko: was Anfängern in Fixed-Income-Spreads passiert.

Zinsspreads wirken auf den ersten Blick „harmlos" — die Duration ist neutral, das Direction-Risiko gering. Das stimmt im normalen Markt. In Stressphasen (2011 Eurokrise, März 2020 Pandemie-Schock, 2022 Inflations-Repricing) sind aber genau diese Spreads aufgerissen, weil Liquidität verschwunden ist und das Funding-Risiko zugenommen hat. Wer Spreads gross gehebelt hält, kann an einem einzelnen Tag mehr Geld verlieren als an einer Direction-Position in derselben Größenordnung.

Mein Rahmen: Spread-Positionen werden mit der gleichen Risiko-pro-Trade-Logik gesizt wie Direction-Trades. Stops kommen aus historischer Spread-Vol, nicht aus „klingt klein".

Die EZB als externer Schock.

EZB-Tage zerlegen technische Bund-Strategien zuverlässig. Mein Vorgehen: 24 Stunden vor jeder geplanten EZB-Pressekonferenz keine neuen Bund-Spread-Positionen, bestehende Positionen werden auf 50 % reduziert. Das kostet Trefferquote im Backtest, schützt aber vor einem Schwanz-Risiko, das durch Backtests systematisch unterschätzt wird.

Datenquellen und Praxis.

Bund-Future-Daten sind über die Eurex und alle institutionellen Datendienste verfügbar. Für CTD-Berechnungen brauchen Sie aktuelle Anleihen-Daten und Conversion-Factors — Bloomberg, Refinitiv oder direkt der Eurex-Datenfeed. Für systematische Strategien sind Tagesdaten meist ausreichend. Wer Intraday handelt, sollte Tick-Daten von Refinitiv oder einem ähnlich qualitativ hochwertigen Anbieter beziehen — die Volumina sind hoch genug, dass Tick-Granularität echten Mehrwert bringt.

Live-Handel über IBKR oder einen direkten Eurex-Zugang. Kommissionen sind moderat (typisch 1–2 EUR pro Kontrakt), Spreads im Front-Month meist ein einzelner Tick. Margins für den Bund liegen aktuell bei ca. 2.000–3.000 EUR Overnight.

Sie wollen Zinsstrategien systematisch im Portfolio einsetzen — als Diversifikation, nicht als Spekulation? Erstgespräch buchen — wir schauen, welcher Spread zu Ihrem Risiko-Profil passt.