← Alle Insights

Adverse Selection erkennen: Toxizität im Orderbuch.

Wenn ein Trade ausgeführt wird, gibt es zwei Möglichkeiten: Entweder die Gegenseite ist uninformiert (Liquidity-Taker, der einen Hedge braucht) oder informiert (jemand, der weiß, was Sie nicht wissen). Im ersten Fall verdienen Sie den Spread. Im zweiten Fall zahlen Sie ihn — und mehr. Die Kunst des Market-Makings besteht darin, diese beiden Fälle zu unterscheiden, bevor der Trade stattfindet.

Was Adverse Selection wirklich kostet.

Adverse Selection ist kein abstraktes Konzept. Sie können sie in Ihren P&L-Daten direkt messen, indem Sie sich anschauen, wie sich der Mittelkurs nach einem Trade entwickelt. Wird Ihr Bid gefüllt und der Mittelkurs fällt unmittelbar danach, war der Trade toxisch — die Gegenseite wusste, dass der Preis fallen würde. Steigt der Mittelkurs nach einem Bid-Fill, war der Flow benign.

In Studien zu hochfrequenten Märkten liegt der Anteil toxischer Trades typischerweise bei 20–40 %. Bei diesen Trades verlieren Sie nicht nur den Spread, sondern oft ein Mehrfaches davon. Wer Adverse Selection nicht in seine Quote-Strategie einbaut, gibt einen relevanten Teil seines Kapitals an informierte Akteure ab.

Toxizität messen: drei Signale.

Es gibt keine perfekte Toxizitätsmessung — aber drei Signale, die sich kombinieren lassen und in der Praxis robust funktionieren.

1. Order-Flow-Imbalance (OFI). Wenn signifikant mehr Volumen am Bid verschwindet (durch Aggressor-Sells oder Cancellations) als am Ask, sagt das eine unmittelbar bevorstehende Mittelkurs-Bewegung nach unten voraus. Cont, Kukanov und Stoikov haben gezeigt, dass OFI ein deutlich besserer Prädiktor für kurzfristige Preisbewegungen ist als der Volume-Imbalance allein.

2. Microprice vs. Midprice. Der Microprice ist ein volumengewichteter Mittelkurs: microprice = (bid · ask_size + ask · bid_size) / (bid_size + ask_size). Wenn der Microprice deutlich über dem Mittelkurs liegt, deutet das Orderbuch auf Aufwärtsdruck hin. Ein Trade, der gegen diesen Druck geht (Bid-Fill, wenn Microprice hoch ist), ist mit höherer Wahrscheinlichkeit toxisch.

3. VPIN (Volume-Synchronized Probability of Informed Trading). Ein Maß von Easley, López de Prado und O'Hara, das das Volumen in Buckets zerlegt und für jeden Bucket den Anteil der Buy- vs. Sell-Volumina misst. Hoher VPIN signalisiert toxische Phasen und korreliert empirisch mit Flash-Crashes.

Order-Flow-Imbalance in Code.

Hier eine kompakte Implementierung, die aus einem Strom von Orderbuch-Snapshots ein OFI-Signal berechnet:

from dataclasses import dataclass
from collections import deque

@dataclass
class BookLevel:
    bid: float
    bid_size: float
    ask: float
    ask_size: float

class OFICalculator:
    def __init__(self, window: int = 50):
        self.history = deque(maxlen=window)
        self.last: BookLevel | None = None

    def update(self, level: BookLevel) -> float:
        if self.last is None:
            self.last = level
            return 0.0

        # OFI-Komponente: Veränderung an Bid und Ask
        if level.bid > self.last.bid:
            bid_change = level.bid_size
        elif level.bid < self.last.bid:
            bid_change = -self.last.bid_size
        else:
            bid_change = level.bid_size - self.last.bid_size

        if level.ask > self.last.ask:
            ask_change = -self.last.ask_size
        elif level.ask < self.last.ask:
            ask_change = level.ask_size
        else:
            ask_change = level.ask_size - self.last.ask_size

        ofi = bid_change - ask_change
        self.history.append(ofi)
        self.last = level

        # Normalisiert auf rollendes Fenster
        return sum(self.history) / max(1, len(self.history))

Der Output ist ein Signal, das positiv bei Aufwärtsdruck und negativ bei Abwärtsdruck ist. Wie stark Sie es in Ihre Quote-Berechnung einfließen lassen, hängt von Ihrer empirischen Korrelation mit der Mittelkurs-Veränderung über den nächsten Sekunden ab.

Quote-Anpassung an Toxizität.

Sobald Sie ein Toxizitätssignal haben, gibt es drei Wege, es in Ihre Quotes einzubauen:

Welche Variante optimal ist, hängt davon ab, wie aggressiv Ihre Konkurrenz quotet. In sehr kompetitiven Märkten (BTC-USDT, Top-Aktien) führt das Zurückziehen oft dazu, dass Sie keinen Flow mehr abbekommen, weil andere Maker einspringen. In weniger kompetitiven Märkten ist das Zurückziehen die richtige Antwort, weil Sie nichts verlieren, indem Sie kurz pausieren.

Eine integrierte Quote-Funktion.

Wie alles zusammenspielt:

def toxic_aware_quotes(
    mid: float,
    inventory: int,
    sigma: float,
    ofi_signal: float,
    microprice: float,
    base_spread: float,
    tox_pull_threshold: float = 2.5,
) -> tuple[float | None, float | None]:
    """
    Erweitert AS-Quotes um eine Toxizitätskomponente.
    Gibt None auf einer Seite zurück, wenn die Quote zurückgezogen werden soll.
    """
    # Standardisierter Toxizitätsscore
    micro_dev = (microprice - mid) / max(sigma, 1e-9)
    tox_score = 0.6 * ofi_signal + 0.4 * micro_dev

    # Bias in Richtung Toxizitätssignal
    bias = tox_score * sigma * 0.1
    adjusted_mid = mid + bias

    # Asymmetrischer Spread
    spread_bid = base_spread / 2 + max(0, -tox_score) * sigma * 0.05
    spread_ask = base_spread / 2 + max(0, tox_score) * sigma * 0.05

    bid = adjusted_mid - spread_bid
    ask = adjusted_mid + spread_ask

    # Quote-Pull bei extremem Signal
    if tox_score > tox_pull_threshold:
        bid = None  # kein Bid, wir glauben nicht an die Long-Seite
    elif tox_score < -tox_pull_threshold:
        ask = None

    return bid, ask

Was die Daten Ihnen verraten.

Adverse Selection ist messbar — und Sie sollten sie messen. Für jeden Trade, den Sie ausführen, loggen Sie:

Aggregieren Sie die Mittelkurs-Veränderung post-Fill nach Seite. Wenn Bid-Hits im Schnitt eine negative Mittelkurs-Veränderung nach sich ziehen und Ask-Hits eine positive, haben Sie es mit toxischem Flow zu tun. Die Differenz zwischen erwartetem Spread-Ertrag und tatsächlichem Inventar-P&L 60 Sekunden später ist Ihr Adverse-Selection-Kosten-Stempel.

Diese Auswertung ist nicht optional. Wer sie nicht macht, kennt seine Edge nicht — und wer seine Edge nicht kennt, kann sie nicht optimieren.

Grenzen und ehrliche Worte.

Toxizitätssignale sind keine Wahrsagerei. Sie haben Trefferquoten im Bereich von 55–60 % über sehr kurze Zeithorizonte — das reicht, um einen Vorteil zu konstruieren, aber nicht, um jeden toxischen Trade zu vermeiden. Wer glaubt, Adverse Selection vollständig ausschalten zu können, hat das Geschäft nicht verstanden: Ein gewisser Anteil toxischer Trades ist der Preis dafür, überhaupt Liquidität bereitzustellen.

Das Ziel ist nicht null toxische Trades, sondern: Spread-Ertrag minus Adverse-Selection-Kosten ist deutlich positiv. Die Messung dieser Differenz, in Echtzeit und nach Zeitraum, ist die KPI, an der ein Market-Making-System steht oder fällt.

Sie wollen Ihre Adverse-Selection-Exposure quantifizieren oder Toxizitätsmodelle in Ihre Strategie integrieren? Erstgespräch buchen — das ist eines der Themen, an denen wir am häufigsten arbeiten.