Eine Order ist kein Kaufvertrag, sondern ein Angebot an das Orderbuch. Ausgeführt wird nur, was auf der Gegenseite zum passenden Preis tatsächlich liegt. Bietet der Bot 1.000 Einheiten zum Limit, stehen dort aber nur 380, werden 380 gefüllt — der Rest wartet. Vielleicht kommen in den nächsten Sekunden neue Verkäufer, vielleicht läuft der Markt weg und die Restmenge bleibt für immer offen. Genau diese Lücke zwischen „bestellt" und „besessen" ist die Quelle einer ganzen Fehlerklasse im Bot-Betrieb.
Warum Teilausführungen entstehen
- Dünnes Orderbuch: In illiquiden Märkten oder Randzeiten liegt schlicht zu wenig Volumen auf dem gewünschten Preisniveau — grosse Orders werden zwangsläufig scheibchenweise gefüllt.
- Enges Limit: Je näher das Limit am aktuellen Kurs klebt, desto wahrscheinlicher wird es nur angeschnitten, bevor der Preis dreht.
- Schnelle Märkte: In volatilen Phasen ändert sich das Buch zwischen Absenden und Ankunft der Order — was eben noch verfügbar war, ist weg.
- Time-in-Force-Regeln: Eine IOC-Order (Immediate-or-Cancel) führt aus, was sofort geht, und storniert den Rest. Nur FOK (Fill-or-Kill) erzwingt „ganz oder gar nicht" — um den Preis, dass viele Orders komplett verfallen.
Was Partial Fills im Bot kaputt machen
Der klassische Fehler ist ein Bot, der seinen Zustand aus den gesendeten Orders ableitet statt aus den bestätigten Fills. Die Folgen ziehen sich durch die ganze Logik: Die Stop-Loss-Order wird für 1.000 Einheiten platziert, obwohl nur 380 im Bestand sind — beim Auslösen entsteht ungewollt eine Short-Position. Der Durchschnittspreis stimmt nicht, weil mehrere Teilausführungen zu unterschiedlichen Preisen liefen. Das Risikomodul rechnet mit einer Positionsgrösse, die es nie gab. Und beim Ausstieg versucht der Bot, eine Menge zu verkaufen, die er nicht besitzt — die Exchange lehnt ab, der Fehler eskaliert im schlechtesten Moment.
Die Order ist eine Absichtserklärung, der Fill ist die Realität. Jede Grösse, die im Bot etwas steuert — Position, Stop, Risiko, P&L — muss aus Fills berechnet werden, niemals aus Orders.
Wie ein Bot sauber damit umgeht
Erstens: Fill-basierte Buchführung. Der Bot verarbeitet jede Ausführungsmeldung einzeln, aktualisiert Bestand und Durchschnittspreis pro Fill und passt abhängige Orders — vor allem Stops — an die tatsächliche Menge an. Zweitens: eine explizite Restmengen-Logik, die vor dem Start definiert wird: Wie lange darf eine Restmenge offen bleiben? Wird nachgezogen, zum neuen Preis neu bewertet oder storniert? Ohne Regel entscheidet der Zufall. Drittens: Mindestgrössen beachten. Exchanges haben minimale Ordergrössen und Schrittweiten — wer Restmengen stumpf nachbestellt, produziert irgendwann unhandelbare „Dust"-Positionen, die sich nicht mehr schliessen lassen. Viertens: Reconciliation. In festen Intervallen und nach jedem Neustart gleicht der Bot seinen internen Bestand mit dem tatsächlichen Kontostand der Exchange ab. Weichen die Zahlen ab, ist das ein Stopp-Signal, kein Schönheitsfehler.
Im Backtest existiert dieses Problem übrigens oft gar nicht: Viele Backtests unterstellen stillschweigend, dass jede Order vollständig zum Wunschpreis gefüllt wird. Wer mit grösseren Ordergrössen oder in dünnen Märkten testet, sollte Teilausführungen und Orderbuch-Tiefe explizit modellieren — sonst vergleicht der Live-Betrieb später Äpfel mit einer Simulation, die es so nie geben konnte.
Dieser Beitrag dient ausschliesslich der Information und Bildung. Er ist keine Anlageberatung und keine Handelsempfehlung. Automatisierter Handel ist mit erheblichen Risiken bis hin zum Totalverlust verbunden; auch technisch sauber gebaute Systeme schützen nicht vor Marktverlusten.