← Alle Insights

Quote-Stuffing-Defense: Manipulationsmuster erkennen.

Wer als Market-Maker quotet, ist ein Ziel. Nicht im paranoiden Sinn, sondern strukturell: Es gibt Marktteilnehmer, deren Strategie darin besteht, Ihre Quotes zu falschen Reaktionen zu provozieren — durch massenhafte Orderflut, durch Schein-Liquidität, durch Layering. Wer diese Muster nicht erkennt und filtert, gibt manipulativen Akteuren einen Teil seiner Edge ab.

Was Manipulation im Orderbuch wirklich bedeutet.

Drei Mustertypen sind in der Praxis relevant, und alle drei sind in vielen Jurisdiktionen offiziell verboten — was nicht heißt, dass sie nicht vorkommen.

Für einen Market-Maker sind diese Muster doppelt gefährlich. Sie verändern Ihr Toxizitätssignal (Microprice, OFI), sodass Sie Ihre Quotes in die falsche Richtung verschieben — und genau dann werden Sie auf der schwachen Seite gefüllt.

Erkennungsmerkmale.

Manipulationsmuster haben statistische Signaturen, die sich von echter Liquiditätsdynamik unterscheiden. Die vier wichtigsten:

Detektion in Echtzeit.

Sie können nicht jede einzelne Order analysieren — der Aufwand wäre zu hoch. Aber Sie können Aggregat-Metriken in Echtzeit führen, die Ihnen sagen, ob das Orderbuch gerade „verschmutzt" ist:

from collections import deque
from dataclasses import dataclass
import time

@dataclass
class OrderEvent:
    side: str        # 'bid' oder 'ask'
    price: float
    size: float
    event: str       # 'new', 'cancel', 'fill'
    timestamp: float

class StuffingDetector:
    def __init__(self, window_seconds: float = 1.0):
        self.window = window_seconds
        self.events: deque[OrderEvent] = deque()

    def push(self, ev: OrderEvent) -> dict:
        now = ev.timestamp
        self.events.append(ev)

        # Sliding Window auf die letzten N Sekunden
        cutoff = now - self.window
        while self.events and self.events[0].timestamp < cutoff:
            self.events.popleft()

        new_count = sum(1 for e in self.events if e.event == 'new')
        cancel_count = sum(1 for e in self.events if e.event == 'cancel')
        fill_count = sum(1 for e in self.events if e.event == 'fill')

        total = new_count + cancel_count
        cancel_ratio = cancel_count / max(1, total)
        order_rate = new_count / self.window

        # Heuristiken
        is_stuffing = order_rate > 200 and cancel_ratio > 0.95
        is_quiet_manipulation = cancel_ratio > 0.98 and fill_count == 0

        return {
            'order_rate': order_rate,
            'cancel_ratio': cancel_ratio,
            'stuffing_suspected': is_stuffing,
            'manipulation_suspected': is_quiet_manipulation,
        }

Die Schwellenwerte sind börsen- und assetabhängig. 200 Orders pro Sekunde sind in einem Top-Crypto-Pair normal, in einem mittelgroßen Aktienmarkt ein klares Manipulationszeichen. Kalibrieren Sie immer auf eine normale Handelsphase.

Spoofing erkennen über Größenanalyse.

Ein einzelner Spoof-Spike ist schwer zu sehen, ein Muster aber sehr wohl. Hier eine kompakte Implementierung, die ungewöhnlich große Orders im Verhältnis zur Median-Größe flaggt und ihre Lebenszeit verfolgt:

import numpy as np
from collections import defaultdict

class SpoofingDetector:
    def __init__(self, history_size: int = 500):
        self.recent_sizes: deque[float] = deque(maxlen=history_size)
        self.open_orders: dict[str, dict] = {}
        self.suspicious_count = 0

    def on_new(self, order_id: str, size: float, ts: float):
        self.recent_sizes.append(size)
        if len(self.recent_sizes) < 50:
            return

        median = np.median(self.recent_sizes)
        if size > 8 * median:
            self.open_orders[order_id] = {'size': size, 'ts': ts}

    def on_cancel(self, order_id: str, ts: float) -> bool:
        if order_id not in self.open_orders:
            return False
        meta = self.open_orders.pop(order_id)
        lifetime = ts - meta['ts']
        if lifetime < 0.150:  # unter 150 ms
            self.suspicious_count += 1
            return True
        return False

    def on_fill(self, order_id: str):
        self.open_orders.pop(order_id, None)

Wenn der suspicious_count über einen Schwellenwert klettert, ist das Buch mit hoher Wahrscheinlichkeit kontaminiert — und Sie sollten Ihre auf Orderbuch-Tiefe basierten Signale für eine Weile mit niedrigerem Gewicht verwenden.

Verteidigungsstrategien.

Wenn Sie Manipulation erkennen, haben Sie mehrere Optionen — und keine davon ist „weiter quoten wie bisher":

Compliance-Perspektive.

Ein wichtiger Punkt für institutionelle Mandanten: Wer aktiv Manipulationsmuster erkennt und darauf reagiert, dokumentiert damit auch, dass das eigene Trading nicht manipulativ ist. Audit-Logs Ihrer Detektoren — wann wurde welches Muster wo erkannt, wie hat das System reagiert — sind im Fall einer regulatorischen Untersuchung Goldwert.

In der EU regelt MiFID II Marktmanipulation; in den USA der Dodd-Frank Act. Beide verlangen von professionellen Marktteilnehmern, dass sie über Mechanismen verfügen, um manipulative Praktiken zu erkennen — bei sich selbst und bei Gegenparteien. Eine saubere Implementierung Ihrer Detektoren ist also nicht nur P&L-Schutz, sondern Compliance.

Was Sie nicht überschätzen sollten.

Bei aller Wachsamkeit: Die meisten Cancellations sind keine Manipulation. Hochfrequente Market-Maker haben strukturell hohe Cancel-Raten, weil sie ihre Quotes ständig an wechselnde Marktbedingungen anpassen. Wer jede hohe Cancel-Rate als Manipulation interpretiert, fängt sich falsche Alarme ein und reagiert zu oft.

Die Kombination der Signale macht den Unterschied: hohe Cancel-Rate und ungewöhnliche Ordergrößen und kurze Lebenszeiten und wiederholtes Muster. Nur wenn mehrere dieser Signale gleichzeitig aktiv sind, lohnt eine defensive Reaktion.

Und ein letzter, oft vergessener Aspekt: Auch Ihr eigenes System produziert Muster, die für andere wie Manipulation aussehen könnten. Cancel-Replace-Schleifen mit zu hoher Frequenz, zu große Orders im Verhältnis zur durchschnittlichen Tiefe — das alles triggert die Detektoren der anderen Marktteilnehmer und der Börse selbst. Saubere Hygiene des eigenen Order-Flows ist die andere Hälfte der Defense.

Sie wollen Manipulationsdetektion und Compliance-Logging in Ihr Trading-System integrieren? Erstgespräch buchen — gerade für institutionelle Mandate ist das ein wiederkehrendes Thema.