Selbstmatch-Vermeidung und Wash Trades erklärt
Wie Selbstmatch-Vermeidung in der Matching Engine eigene Orders stoppt, warum sie Wash Trades nicht ersetzt und worauf Sie bei mehreren Strategien achten müssen.
Selbstmatch-Vermeidung ist eine Funktion der Matching Engine. Sie verhindert, dass zwei Orders derselben Firma miteinander handeln. Bei der Einstellung erhält jede Order eine Kennung. Wenn zwei Orders mit derselben Kennung einander kreuzen würden, löscht die Engine eine oder beide Orders, bevor ein Trade ausgeführt wird. Die Selbstmatch-Vermeidung ist eine technische Funktion des Handelsplatzes, die Sie aktivieren. Das Verbot von Wash Trades ist dagegen gesetzlich vorgeschrieben. Beides deckt nicht denselben Sachverhalt ab.
Sobald eine zweite Strategie ein Instrument quotiert, das bereits von Ihrer ersten Strategie quotiert wird, gilt diese Regel für Sie. Ein zweistufiger Grid-Bot auf einem Symbol unterliegt ihr genauso wie ein Bank-Desk.
So funktioniert die Selbstmatch-Vermeidung in der Matching Engine
Jede Order, die ein Handelsplatz erhält, enthält Felder, die die Engine vor dem Matching ausliest: Seite, Preis, Stückzahl und Gültigkeitsdauer. Die Selbstmatch-Vermeidung fügt zwei weitere Angaben hinzu. Die erste ist eine Kennung. Sie besteht aus einer Zahl oder Zeichenfolge und gibt an, zu welcher Firma, welchem Konto oder welcher Strategiefamilie die Order gehört. Die zweite ist eine Anweisung. Sie legt fest, was die Engine tun soll, wenn zwei aktive Orders mit dieser Kennung miteinander handeln würden.
Die Prüfung erfolgt in dem Moment, in dem eine aggressive Order den Preis einer ruhenden Order erreicht, mit der sie matchen würde. Vier Ergebnisse sind üblich:
- Die ruhende Order wird gelöscht. Die eingehende Order wird weiter in das Orderbuch eingestellt und kann mit anderen Orders auf diesem Preis matchen.
- Die eingehende Order wird gelöscht. Die ruhende Order behält ihre Position in der Warteschlange, während die aggressive Order entfällt.
- Beide Orders werden gelöscht. Dies ist die strengste Einstellung.
- Reduzieren und löschen. Die größere Order wird um die Stückzahl der kleineren reduziert. Die kleinere Order wird gelöscht, und der Rest der größeren Order bleibt aktiv.
In keinem der vier Fälle findet ein Trade statt. Es erscheint kein Print im Tape, es wird kein Fill-Log-Eintrag erzeugt, und stattdessen trifft eine unaufgeforderte Löschung für eine oder beide Orders ein.
Die stille Kostenkomponente ist die Position in der Warteschlange. Eine ruhende Order, die nach der Anweisung „älteste Order löschen“ entfernt wird, verliert den gesamten Vorteil ihrer bisherigen Wartezeit. Nach der Preis-Zeit-Priorität ist dieser Verlust vollständig: Beim erneuten Einstellen steht die Order hinter allen, die während ihrer Liegezeit der Warteschlange beigetreten sind. Unser Leitfaden zur Schätzung der Warteschlangenposition erläutert, welchen Wert diese Position hat.
Ein Instrument, viele Orderbücher
Die Prüfung erfolgt je Handelsplatz. Eine Engine vergleicht nur die Orders, die sie selbst verwaltet. Zwei Ihrer Orders, die in zwei verschiedenen Orderbüchern liegen, sind füreinander unsichtbar. Kein US-amerikanischer Aktienmarktmechanismus erstreckt sich über beide Bücher. Eine einzelne US-Aktie wird gleichzeitig in vielen Orderbüchern quotiert. Die folgende Grafik zählt für sechs bekannte Namen die unterschiedlichen Handelsplätze, an denen sie während eines Zeitfensters von fünfzehn Minuten am Morgen des 10. Juni 2026 quotiert und gehandelt wurden.
Das exakte SQL hinter jeder Zahl
SELECT
q.ticker AS ticker,
q.quoting_venues AS quoting_venues,
t.printing_venues AS printing_venues
FROM
(
SELECT
ticker,
countDistinct(bid_exchange) AS quoting_venues
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND sip_timestamp >= toDateTime('2026-06-10 14:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 14:15:00', 'UTC')
AND bid_price > 0
GROUP BY ticker
) AS q
INNER JOIN
(
SELECT
ticker,
countDistinct(exchange) AS printing_venues
FROM global_markets.stocks_trades
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND sip_timestamp >= toDateTime('2026-06-10 14:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-10 14:15:00', 'UTC')
GROUP BY ticker
) AS t ON t.ticker = q.ticker
ORDER BY quoting_venues DESC, tickerAAPL erhielt in diesem Viertelstundenintervall Gebote von 16 verschiedenen Handelsplätzen. Prints wurden an 17 dieser Plätze ausgeführt. Der am dünnsten gehandelte Name in der Grafik erhielt weiterhin Quotes von 11 Handelsplätzen. Ein Smart Order Router, der Child-Orders systematisch aufteilt, platziert Ihre beiden Strategien häufig in unterschiedlichen Orderbüchern. Dort greift keine Prüfung auf Ebene der Matching Engine. Firmen schließen diese Lücke vorgelagert in der Order-Management-Schicht, bevor eine Order das Unternehmen verlässt. Eigene Orders, die auf gegenüberliegenden Seiten zum selben Preis in zwei Orderbüchern liegen, erzeugen außerdem einen locked oder crossed market, für den eigene Regeln gelten.
Wie viele Matches ein Orderbuch in einer Sitzung erzeugt
Die Selbstmatch-Prüfung liegt im Pfad jedes Matches, das die Engine erzeugt. Bei einem liquiden Namen bleibt dieser Pfad den ganzen Tag über stark ausgelastet. Die folgende Grafik teilt eine vollständige Handelssitzung einer Aktie in Fünfzehn-Minuten-Intervalle auf und zählt die Prints in jedem Intervall. Berücksichtigt werden nur Intervalle mit mindestens 200 Prints.
Das exakte SQL hinter jeder Zahl
SELECT
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 15 MINUTE), '%H:%i') AS et_time,
count() AS trade_count
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-11 04:00:00', 'UTC')
GROUP BY et_time
HAVING count() >= 200
ORDER BY et_timeUm 04:00 ET wurden bei diesem Namen innerhalb von fünfzehn Minuten 9402 Trades ausgeführt. Um 19:45 ET waren es 1345 Trades. Insgesamt gab es 64 Intervalle, die die Schwelle von 200 Prints erreichten. Jeder Print entspricht einem Orderpaar, das die Engine zusammengeführt hat. Vor der Ausführung prüft sie die Kennungen auf beiden Seiten. Jede Order, die im Orderbuch ruht, kann später am selben Tag mit einer weiteren Order desselben Kontos zusammentreffen.
Was das Tape bei einem ausgeführten Self-Trade zeigt
Eine verhinderte Selbstübereinstimmung hinterlässt keine Spuren. Das Tape enthält nur ausgeführte Trades. Jeder Print kommt mit Condition Flags, also Codes, die der meldende Handelsplatz zur Beschreibung des Handelsablaufs anhängt. Die folgende Grafik unterteilt eine vollständige Sitzung einer Aktie nach diesen Flags.
Das exakte SQL hinter jeder Zahl
SELECT
condition_name,
print_count,
round(100 * print_count / sum(print_count) OVER (), 2) AS share_pct
FROM
(
SELECT
cc.id AS condition_id,
any(cc.name) AS condition_name,
count() AS print_count
FROM
(
SELECT toInt32(arrayJoin(conditions)) AS condition_id
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL'
AND sip_timestamp >= toDateTime('2026-06-10 08:00:00', 'UTC')
AND sip_timestamp < toDateTime('2026-06-11 04:00:00', 'UTC')
) AS f
INNER JOIN
(
SELECT
toInt32(id) AS id,
any(name) AS name
FROM global_markets.stocks_condition_codes
WHERE asset_class = 'stocks'
AND has(data_types, 'trade')
GROUP BY id
) AS cc ON cc.id = f.condition_id
GROUP BY condition_id
)
ORDER BY print_count DESC
LIMIT 10Odd Lot Trade umfasst 48.34% der gekennzeichneten Prints dieser Sitzung. Die Grafik führt die 10 häufigsten Flags des Tages auf. Achten Sie beim Lesen auf das, was fehlt. Kein Code weist darauf hin, dass zwei Orders von einer Firma stammten. Ein ausgeführter Self-Trade sieht bei diesem Preis wie jeder andere Trade aus. Die Überwachung stützt sich daher auf das Tape sowie auf die Teilnehmerkennungen und Kontonummern, die der Handelsplatz zu den Orders speichert.
Wo die Selbstmatch-Vermeidung endet und das Wash-Trade-Recht beginnt
Die Selbstmatch-Vermeidung ist ein Service des Handelsplatzes. Sie entscheiden, ob Sie ihn nutzen, und konfigurieren ihn. Wenn Sie ihn nicht einrichten, wird die Engine Ihre beiden Orders ohne Weiteres miteinander matchen. Das Verbot von Wash Trades ist dagegen nicht optional und hängt von keiner Einstellung ab.
Section 9(a)(1) des Securities Exchange Act von 1934 erfasst Wertpapiertransaktionen ohne Änderung des wirtschaftlichen Eigentums, wenn sie den Anschein eines aktiven Handels irreführend erzeugen sollen. Der Commodity Exchange Act enthält die entsprechende Regel für Futures. CME Rule 534 übernimmt sie in das Regelwerk der Börse. Für Broker-Dealer gilt zusätzlich FINRA Rule 5210. Das dazugehörige ergänzende Material behandelt Selbst-Trades unmittelbar: Trades zwischen zwei voneinander unabhängigen Algorithmen einer Firma sind für sich genommen kein Regelverstoß. Die Firma muss jedoch Richtlinien unterhalten, mit denen sie solche Trades überprüft und reduziert.
Für jeden, der mehr als eine Strategie betreibt, ergeben sich daraus zwei Konsequenzen. Ein Self-Cross kann auf einem Handelsplatz gegen das Verbot verstoßen, selbst wenn Sie dort keine Selbstmatch-Anweisung eingerichtet haben. Denn die Regel knüpft an die Transaktion und die dahinterstehende Absicht an. Ein Self-Cross, den die Selbstmatch-Vermeidung verhindert hat, verstößt dagegen gegen nichts. Genau dafür ist die Funktion vorgesehen.
So konfigurieren Betreiber die Funktion: CME, ICE, LME und MiFID II
Auf CME Globex basiert die Selbstmatch-Vermeidung auf einer Kennung, die bei der Auftragseingabe übermittelt wird. Firmen registrieren die Kennungen, die sie verwenden wollen. Jede Order enthält eine solche Kennung. Eine zusätzliche Anweisung legt fest, welche Seite die Engine löscht, wenn zwei Orders mit derselben Kennung zusammentreffen. Orders ohne Kennung werden normal gematcht. Das ist die typische Falle für neue Betreiber: Standardmäßig ist die Funktion deaktiviert.
ICE betreibt die Self-Trade Prevention Functionality. Sie wird anhand einer Kennung der Handelsfirma und nicht für jede Order einzeln konfiguriert. Die möglichen Löschvarianten sind vergleichbar. Die London Metal Exchange bietet auf LMEselect die Self-Execution Prevention für Handelskennungen von Mitgliedern an. In Europa verpflichtet MiFID II Artikel 17 jedes Wertpapierunternehmen, das algorithmischen Handel betreibt, zu geeigneten Systemen und Kontrollen. Dazu gehören Tests, eine Kill-Funktion und die Vermeidung eines ungeordneten Handels. Artikel 48 auferlegt dem Handelsplatz eine entsprechende Pflicht. Funktionen zur Vermeidung von Self-Matches wurden parallel dazu zum Standard.
Die Konfiguration erfolgt auf Konto- oder Firmenebene und nicht für jedes Symbol einzeln. Die Größe der Optionsoberfläche eines einzelnen Basiswerts zeigt, warum.
Das exakte SQL hinter jeder Zahl
SELECT
toString(date) AS session_date,
countDistinct(ticker) AS contracts_traded,
countDistinct(strike_price) AS strikes_traded
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-06-01'
AND date <= '2026-06-30'
AND volume > 0
AND iv_converged = 1
GROUP BY date
ORDER BY dateAm 2026-06-01 umfasste ein Basiswert 1579 separat handelbare Kontrakte mit Volumen. Diese verteilten sich auf 112 Ausübungspreise. Die Grafik umfasst 21 Sitzungen mit ähnlicher Struktur. Bei dieser Anzahl ist eine Konfiguration für jeden einzelnen Kontrakt nicht praktikabel. Stattdessen wird die Kennung dem Konto zugeordnet und mit jeder Order übertragen, die dieses Konto sendet.
Der Fehler, den Ihre Fill-Logs nicht erklären werden
So zeigt sich das in der Praxis. Eine Anweisung zum Löschen der neuesten Order entfernt die soeben gesendete Order unmittelbar nach ihrem Eingang, bevor sie matchen kann. Im Bot erscheint die Abfolge als neue Order und anschließende Löschung, die von keiner eigenen Komponente angefordert wurde. Es gibt keinen Fill, keine Ablehnung und keine Fehlermeldung mit dem entsprechenden Grund. Betreiber, die dieses Verhalten zum ersten Mal sehen, suchen daher häufig nach einem Fehler in ihrer eigenen Löschlogik.
Zwei Gewohnheiten machen den Vorgang nachvollziehbar. Protokollieren Sie die Statusmeldungen des Handelsplatzes wörtlich und nicht als normalisierte Zusammenfassung. Der Grund für die Verhinderung wird meist als Feld in dieser Meldung übertragen. Lösen Sie einen Alarm für jede Löschung aus, die nicht von Ihrem eigenen Code stammt. Dieser Alarm gehört zu Ihren Schutzschaltern für den automatisierten Handel, weil es sich um dieselbe Fehlerklasse handelt: Der Handelsplatz hat den Status Ihrer Order geändert, während Ihr Prozess so weiterlief, als wäre nichts geschehen.
FAQ
Was ist Selbstmatch-Vermeidung?
Eine Prüfung der Matching Engine, die verhindert, dass zwei Orders mit derselben Firmen- oder Kontokennung miteinander handeln. Wenn sie matchen würden, löscht die Engine je nach Anweisung die ruhende Order, die eingehende Order oder beide.
Ist ein Self-Trade dasselbe wie ein Wash Trade?
Nein. Ein Self-Trade ist jede Ausführung zwischen zwei Orders desselben wirtschaftlich Berechtigten. Ein Wash Trade ist ein Self-Trade, der ohne echtes Marktrisiko und mit der Absicht eingegangen wird, einen irreführenden Eindruck von Handelsaktivität zu erzeugen. Unbeabsichtigte Self-Trades zwischen voneinander unabhängigen Algorithmen werden anders behandelt als arrangierte Trades. Firmen müssen sie dennoch überwachen.
Funktioniert die Selbstmatch-Vermeidung über verschiedene Börsen hinweg?
Nein. Jede Matching Engine wendet die Prüfung nur auf Orders in ihrem eigenen Orderbuch an. Zwei Orders einer Firma, die auf zwei Handelsplätzen liegen, können miteinander handeln. Für diese Prüfung ist die Firma selbst mit ihren Pre-Trade-Kontrollen oberhalb der Handelsplätze zuständig.
Warum wurde meine Order ohne Fill und ohne Begründung gelöscht?
Eine Anweisung zum Löschen der neuesten Order bei einem Self-Match ist eine mögliche Ursache. Der Handelsplatz löscht die Order bei ihrem Eingang, bevor sie mit einer ruhenden Order mit Ihrer Kennung matchen kann. Der Grund steht meist als Feld in der Löschmeldung des Handelsplatzes und nicht in einer Ablehnung.
Welche Handelsplätze verlangen eine Kennung zur Selbstmatch-Vermeidung?
Die Anforderungen unterscheiden sich je nach Handelsplatz und Produkt. CME verlangt bei der Auftragseingabe eine zuvor registrierte Kennung. ICE und die London Metal Exchange bieten eigene Konfigurationen auf Firmenebene an. Europäische Handelsplätze unterliegen den Pflichten zu Systemen und Kontrollen nach MiFID II. Maßgeblich ist das Regelwerk des Handelsplatzes für das von Ihnen gehandelte Produkt.
Jede Grafik enthält das SQL, mit dem sie erzeugt wurde. Öffnen Sie eine beliebige Grafik und lesen Sie die Abfrage. Wenn Sie die Handelsplätze zählen wollen, an denen ein von Ihnen gehandelter Name quotiert wird, oder eine Sitzung nach Condition Flags aufschlüsseln möchten, stellen Sie die Frage auf Deutsch im Strasmore-Terminal.