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.
- Quote-Stuffing: massenhaftes Einstellen und sofortiges Stornieren von Orders, um Konkurrenten mit Latenz und Verarbeitungslast zu überlasten. Ziel: Wettbewerbsvorteil durch Verlangsamung anderer.
- Spoofing: Einstellen einer großen Order auf einer Seite, um die Wahrnehmung der Liquidität zu verzerren, dann Cancel und Trade auf der Gegenseite. Ziel: andere Teilnehmer zu Reaktionen zwingen.
- Layering: mehrere Spoof-Orders auf unterschiedlichen Preisebenen, um eine Tiefe vorzutäuschen, die nicht existiert.
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:
- Hohe Cancel-Rate: bei Spoofing werden meist über 95 % der eingestellten Orders storniert, ohne ausgeführt zu werden. Echte Market-Maker haben Cancel-Raten im Bereich 70–85 %.
- Kurze Lebenszeit: Spoof-Orders leben oft unter 100 ms. Echte Orders haben typische Lebenszeiten im Sekundenbereich.
- Asymmetrische Größe: eine ungewöhnlich große Order tief im Buch, die nicht zur Verteilung der anderen Levels passt.
- Wiederholbares Muster: Spoof-Sequenzen wiederholen sich. Wenn dieselbe Größe, derselbe Preisabstand, dieselbe Lebenszeit immer wieder auftauchen, ist das ein starker Hinweis.
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":
- Microprice ignorieren: solange Manipulation detektiert wird, schalten Sie Microprice und ähnliche Tiefen-basierte Signale aus dem Quote-Algorithmus aus. Sie verlassen sich auf gefüllte Trades und VWAP, nicht auf Orderbuch-Schatten.
- Spread verbreitern: ein breiterer Spread reduziert das Risiko, in einer Manipulationsphase zu falschen Preisen gefüllt zu werden. Die Opportunitätskosten sind verschmerzbar, wenn das Buch sowieso verzerrt ist.
- Größere Quote-Größe verlangsamen: statt mit voller Größe zu quoten, reduzieren Sie auf einen Bruchteil. Manipulation will Reaktionen — eine kleine Quote-Größe ist eine schwache Reaktion.
- Pausieren: bei extremer Detektion (stuffing_suspected = true) ziehen Sie die Quotes für 1–5 Sekunden zurück. Sie verzichten kurz auf Spread-Ertrag, vermeiden aber wahrscheinliche Verluste.
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.