Iceberg-Orders

Als Iceberg-Order bezeichnet die Finanzwelt eine Limit-Order, bei der nur ein Bruchteil des gesamten Auftragsvolumens im Limit-Order-Buch (LOB) angezeigt wird (die Spitze bzw. der Peak). Der Rest des Volumens bleibt verborgen. Erst wenn der noch ruhende (ausstehende) Peak ausgeführt wird, zeigt sich der nächste verborgene Teil des Iceberg-Volumens (Tranche oder Auffüllung) im LOB. Dieser Vorgang wird so lange wiederholt, bis die ursprüngliche Order vollständig gehandelt oder storniert ist.

Lösung von dxFeed zur Erkennung von Iceberg-Orders

Für die Erkennung und Vorhersage von Iceberg-Orders an der Chicago Mercantile Exchange (CME) verwendet dxFeed einen proprietären Algorithmus*:

Die CME unterstützt zwei Arten von Iceberg-Orders, Native und Synthetic.

  • Native Icebergs verarbeitet die Börse selbst: Alle neuen Tranchen werden als Änderungen der ursprünglichen Order eingereicht. Somit bleibt die ursprüngliche Order-ID während der gesamten Lebensdauer des Iceberg erhalten.
  • Synthetic Icebergs werden von unabhängigen Softwareanbietern (ISV) eingereicht, deren Infrastruktur räumlich von der Börse getrennt ist. ISVs teilen die ursprüngliche Iceberg-Order auf, reichen neue Tranchen ein und verfolgen deren Ausführung. Diese Tranchen sind von normalen Limit-Orders, die von anderen Marktteilnehmern eingereicht werden, nicht zu unterscheiden.

Der Algorithmus unterstützt die Verarbeitung beider Order-Arten. Synthetic Icebergs werden von der Börse auf identische Art und Weise wie andere Orders verarbeitet. Daher lassen sie sich nur heuristisch und aufgrund einer Reihe von Annahmen erkennen. Bei Native Icebergs hingegen ist ein eindeutiger Nachweis möglich.

 

Anteil der Iceberg-Orders an allen Orders eines Tages (gemäß Algorithmus)

 

 

Nachstehend sind die Verteilungen der Peak-Volumen und die Anzahl der Tranchen an einem Handelstag (gemäß Algorithmus) abgebildet:

 

Volumenverteilung der Peaks
Verteilung der Tranchen-Anzahl

Sobald ein Iceberg entdeckt wird, lässt sich seine Gesamtgröße vorhersagen.

API von dxFeed

Die Marktdaten-Feeds von dxFeed (in Echtzeit, verzögert oder historisch) ermöglichen die Rekonstruktion von analytischen Orderbüchern. Dazu bietet die Java-API von dxFeed die Klasse OrderBookModel, die anhand einer Reihe von Marktereignissen ein qualitativ hochwertiges analytisches Orderbuch erstellt. Iceberg-Orders werden durch die Klasse AnalyticOrder dargestellt, die die zugrunde liegende Order-Klasse um die folgenden nützlichen Attribute erweitert:

  • icebergPeakSize: die Größe des Peaks
  • icebergHiddenSize: die vorhergesagte, noch verborgene Größe des Iceberg, abgeleitet aus dem Modell
  • icebergExecutedSize: die ausgeführte Größe der Iceberg-Order

Beispiele

Native Iceberg

Wir verfolgen eine Order mit der ID **********2466. Es werden 11 Einheiten (sichtbares) Volumen bei 2890,25 platziert und dann ausgeführt.

ask LIMIT 11 @ 2890.25
bid TRADE 3 @ 2890.25 (against ********2495)
bid TRADE 4 @ 2890.25 (against ********2505)
bid TRADE 4 @ 2890.25 (against ********2508)

Die zweite Tranche mit dem Volumen 11 wird ins Orderbuch aufgenommen. An diesem Punkt erkennen wir, dass es sich um eine Iceberg-Order handelt. Wir liefern eine Schätzung des Gesamtvolumens (und des entsprechenden verborgenen Volumens) und verbreiten eine AnalyticOrder-Instanz.

ask MODIFY 11 @ 2890.25
AnalyticOrder(icebergPeakSize = 11, icebergHiddenSize = 33, icebergExecutedSize = 11)
bid TRADE 2 @ 2890.25 (against ********2518)
bid TRADE 9 @ 2890.25 (against ********2532)

Danach folgen weitere Tranchen, wobei jede eine andere Größe haben kann. Wenn eine neue Tranche erkannt wird, wird die Vorhersage präzisiert. Sobald die letzte Tranche ausgeführt ist, wird die Order aus dem Buch entfernt.

 

ask MODIFY 11 @ 2890.25 AnalyticOrder(icebergPeakSize = 11, icebergHiddenSize = 22, icebergExecutedSize = 22) bid TRADE 6 @ 2890.25 (against ********2593) bid TRADE 3 @ 2890.25 (against ********2594) bid TRADE 2 @ 2890.25 (against ********2602) ask MODIFY 11 @ 2890.25 AnalyticOrder(icebergPeakSize = 11, icebergHiddenSize = 22, icebergExecutedSize = 33) (...) ask MODIFY 3 @ 2890.25 AnalyticOrder(icebergPeakSize = 3, icebergHiddenSize = 0, icebergExecutedSize = 44) bid TRADE 3 @ 2890.25 (against ********2639) ask DELETE 3 @ 2890.25

In diesem Beispiel hat die Iceberg-Order 5 Tranchen, das Peak-Volumen beträgt 11 (die letzte Tranche hat einen restlichen Peak mit dem Volumen 3) und das Gesamtvolumen beträgt 47.

 

Synthetic Iceberg

Die Tranchen von Synthetic Icebergs sind normale Limit-Orders. Eine eingehende Order gilt dann als Tranche, wenn sie innerhalb eines kurzen Zeitrahmens platziert wird, nachdem eine vorhergehende Order derselben Größe zum selben Kurs ausgeführt wurde. Daraus ergeben sich die folgenden deutlichen Unterschiede zu Native Icebergs:

  • Da mehr als eine Order als übergeordnete Tranche in Frage kommt, lässt sich der Iceberg am besten als ein Netzwerkdiagramm von Orders darstellen (vgl. Abb. 1). Dann ist icebergExecutedSize eine aggregierte Menge des ausgeführten Volumens jeder Tranchenkette (gemeinsam als Kurve abgebildet).
  • Da der Erkennungsprozess als solcher spekulativ ist, können unter Umständen auch normale Orders als Iceberg-Tranchen eingeordnet werden. Ein Parameter für die Mindestlänge der Tranchenketten gibt die Anzahl der Tranchen an, ab der eine Kette als Iceberg-Order gilt: je größer der Wert, desto höher die Genauigkeit und desto geringer die Zahl der Rückrufe.

Das Verbreitungsmodell für Synthetic Icebergs ist dasselbe wie für Native Icebergs.

Im nachstehenden Diagramm für einen Synthetic Iceberg sind die Knoten mit den Order-IDs bezeichnet; die Beschriftung der Pfeile entspricht der Zeit in Sekunden zwischen aufeinanderfolgenden Tranchen:

 

 

Visuelle Darstellungen

Erkannte Iceberg-Orders
Erkannte Iceberg-Orders im gesamten Ereignisstrom
Nahaufnahme eines bestimmten Order-Netzes in einem Iceberg

 

* Der Artikel CME Iceberg Order Detection and Prediction wird unter der Lizenz CC BY-NC-SA 4.0 publiziert und steht auch unter https://arxiv.org/abs/1909.09495 zur Verfügung.