Du hast mir erzählt, dass dein Paper-Trading-Prozess über Nacht abgestürzt ist. Du hast ihn vor der nächsten Entscheidung neu gestartet, keine Fehler gesehen und angenommen, dass er dort weitermacht, wo er aufgehört hatte. Dann hat er einen Kauf für einen Vermögenswert eingereicht, den du bereits besaßt. Du möchtest wissen, ob die Strategie einen Fehler hat.
Vielleicht. Prüfe aber zuerst, ob der neu gestartete Prozess denselben Kenntnisstand hat wie das Paper-Konto. Ein Neustart ist ein Problem der Zustandswiederherstellung: Positionen, Cash, offene Orders und alle Strategieinformationen, die die nächste Entscheidung beeinflussen, müssen übereinstimmen. Den Code wieder zum Laufen zu bringen, ist der einfache Teil.
Was glaubte die Strategie, bevor sie abstürzte?
Notiere die letzte Entscheidung, die der Prozess vor dem Anhalten getroffen hat. Erfasse für jedes gehandelte Instrument die beabsichtigte Position, die tatsächliche Position im Konto, ausstehende Orders und den Signalzustand, der sich auf die nächste Aktion auswirkt. Wenn diese Aufzeichnungen fehlen, kannst du nicht feststellen, ob der Neustart den Zustand wiederhergestellt oder lediglich eine frische Strategie initialisiert hat.
Nehmen wir an, deine stündliche Strategie kauft 1 Einheit, wenn ihr Trendsignal positiv wird, und hält sie, bis das Signal negativ wird. Der Prozess reicht um 14:00 den Kauf ein, stürzt aber ab, bevor er festhält, dass die Order angenommen wurde. Der Paper-Handelsplatz führt sie aus. Beim Neustart sieht die Strategie keine aufgezeichnete Position und weiterhin ein positives Signal, also reicht sie einen weiteren Kauf ein. Das Signal verhält sich konsistent. Ihre Erinnerung daran, was das Konto besitzt, ist veraltet.
Deshalb muss die aktuelle Position im Konto mit dem gespeicherten Strategiezustand abgeglichen werden, bevor neue Orders zugelassen werden. Ein lokaler Snapshot kann hilfreich sein, aber für tatsächlich ausgeführte Orders ist das Konto oder der Handelsplatz maßgeblich.
Welcher Zustand muss einen Neustart überstehen?
Beginne mit dem Zustand, der die nächste Order verändern kann. Führe für jede Aktualisierung einen dauerhaften Datensatz mit Zeitstempel und Version. Erstelle eine Kopie, bevor du deine Wiederherstellungslogik änderst, damit du den Fehler später erneut abspielen kannst.
| Zustand | Warum er wichtig ist | Prüfung bei der Wiederherstellung |
|---|---|---|
| Positionen und Cash | Sie bestimmen das Exposure und die verfügbare Kaufkraft | Gespeicherte Werte mit dem Paper-Konto vergleichen |
| Offene Orders | Eine Order könnte ausgeführt worden sein, während der Prozess nicht lief | Orderstatus abfragen und Teilausführungen abgleichen |
| Signalspeicher | Crossovers, Cooldowns und Haltedauern können sich über mehrere Entscheidungen erstrecken | Die zuletzt bestätigten Entscheidungseingaben wiederherstellen |
| Zuletzt verarbeitetes Ereignis | Es bestimmt, an welcher Stelle die Strategie die Datenverarbeitung fortsetzt | Ereignisse ab diesem Punkt erneut abspielen, ohne sie doppelt anzuwenden |
Der Signalspeicher wird leicht übersehen. Eine Strategie, die auf einen Crossover handelt, kann den Indikatorwert vom Vortag speichern, um einen neuen Crossover zu erkennen. Startet sie mit einem leeren Wert, kann sie eine bestehende Bedingung für ein neues Ereignis halten. Bei einem Cooldown-Timer tritt dasselbe Problem auf: Ein Neustart darf eine Regel, die dauerhaft gelten sollte, nicht unbemerkt zurücksetzen.
Wie lässt sich die Wiederherstellung reproduzierbar machen?
Vergib jeder Order eine stabile Client-ID, die sich aus dem Strategielauf und der zugehörigen Entscheidung ableitet. Versucht der Prozess es nach einer Zeitüberschreitung erneut, kann er prüfen, ob diese Entscheidung bereits eine Order erzeugt hat, statt ein Duplikat zu platzieren. Speichere Zustandsänderungen erst, nachdem du das entsprechende Kontoereignis bestätigt hast, und bewahre die Order- und Fill-IDs auf, die die Änderung erklären.
Teste dann genau den Ablauf, der zu deinem Vorfall geführt hat. Lass die Strategie eine Entscheidung treffen, speichere den Zustand, halte sie an und stelle sie mit den Positionen und der Orderhistorie des Paper-Kontos wieder her. Vergleiche die nächste Entscheidung und die daraus entstehenden Orders mit einem ununterbrochenen Lauf. Wiederhole den Test mit einer teilweise ausgeführten Order und mit einem Absturz zwischen Einreichung und Bestätigung. Der fortgesetzte Lauf sollte weder eine neue Position erfinden noch eine abgeschlossene Aktion wiederholen.
Führe ein Wiederherstellungsprotokoll: zuletzt verarbeitetes Ereignis, Zeitpunkt des Konto-Snapshots, Status offener Orders, wiederhergestellte Strategieversion und erste Entscheidung nach dem Neustart. So wird aus „der Prozess ist wieder hochgefahren“ etwas, das du prüfen kannst.
Worauf solltest du nach dem Neustart vertrauen?
Vertraue dem Prozess erst, wenn Konto- und Strategiezustand abgeglichen sind, die Status ausstehender Orders bekannt sind und die nächste Entscheidung der entspricht, die du bei einem durchgehenden Lauf erwarten würdest. Kannst du eine Abweichung nicht erklären, pausiere das Einreichen von Paper-Orders und prüfe den Ereignisverlauf. Ein laufender Prozess beweist nicht, dass die Strategie wiederhergestellt wurde.
Du hast im Absturz bereits etwas Nützliches entdeckt: Er hat eine Annahme offengelegt, mit der sich dein normaler Lauf nie auseinandersetzen musste. Mach den Neustart zu einem reproduzierbaren Szenario, und du weißt, woran sich deine Strategie erinnert, bevor du sie wieder handeln lässt.
← Alle Beiträge


