Dokumentation

Anwendungen

Zuletzt aktualisiert am 24. 1. 2023 von Mark Fric

Stockpicker Backtest-Einschränkungen

Das Stockpicking und allgemein die täglichen Handelsstrategien haben einige Besonderheiten, die im Folgenden erläutert werden.

 

Zeitpunkt der Strategieumsetzung erklärt

Zunächst einmal können Sie den Zeitpunkt, zu dem die Strategie ausgelöst (ausgewertet) wird, aus drei möglichen Werten auswählen:

  • Vor Öffnung der Bar - bewertet die Strategie vor der Markteröffnung (für tägliche Strategien)
  • An der Bar geöffnet - bewertet die Strategie bei Marktöffnung
  • Auf Bar Close - bewertet die Strategie bei (kurz vor) Börsenschluss

Die Wahl des Zeitpunkts, zu dem die Strategie bewertet wird, wirkt sich dann darauf aus, welche Kurse sowohl im Live-Handel als auch im Backtesting verfügbar sind.

 

Wir verwenden den Parameter Shift, um den Index des Wertes zu bezeichnen, z.B. Open[0] bedeutet Open price mit Shift=0, und es bedeutet Open price des aktuellen (jüngsten) Balkens.
Open[1] bedeutet Open mit Shift=1, d.h. vor einem Takt.

Bei der Verwendung von Blöcken mit Shift=0 (Wert des aktuellen Balkens) in Ihrer Strategie sollten Sie besonders vorsichtig sein, da sie je nach Auswertungszeitpunkt der Strategie eine andere Bedeutung haben können.

Noch einmal die drei möglichen Bewertungszeitpunkte und ihre Auswirkungen:

Vor Öffnung der Bar

bewertet die Strategie vor der Markteröffnung (bei täglichen Strategien).

Die Plattform löst dies einige Minuten vor der tatsächlichen Markteröffnung aus, dann werden die Bedingungen ausgewertet und die Aufträge erstellt.
Der Handel wird bei Markteröffnung ausgeführt.

Auswirkungen
Block mit Shift=0 gibt den aktuellen Wert des letzten beendeten Taktes zurück.
So gibt Close[0] zum Beispiel den Schlusskurs des VORHERIGEN beendeten Markttages zurück, nicht den Markttag, der in Kürze beginnt.
Open[0] gibt den Eröffnungskurs des vorherigen Markttages zurück usw.
Sie können Shift=0 in allen Blöcken verwenden, aber sie beziehen sich auf den letzten geschlossenen Balken - vor dem Markttag.

 

An der Bar geöffnet

bewertet die Strategie bei Markteröffnung.

Die Plattform löst dies einige Minuten nach der eigentlichen Markteröffnung aus, um eine Preiskonsolidierung zu ermöglichen.
Der Handel wird sofort ausgeführt.

Auswirkungen
Der Block mit Shift=0 liefert den Wert des tatsächlichen Tages des offenen Marktes.
Open[0] gibt also den aktuellen Eröffnungskurs des Marktes zurück.
Close[0] gibt den Eröffnungskurs zurück, da der aktuelle Schlusskurs des Tages noch nicht bekannt ist (es ist der Beginn des Markttages).
Das Gleiche gilt für High[0], Low[0] - bei Markteröffnung sind die Höchst- und Tiefstwerte des aktuellen Handelstages noch nicht bekannt.
Sie können Shift=0 sicher NUR mit offenen Preisblöcken verwenden und Indikatoren nur mit offenen Preisen berechnen.

 

Auf Bar Close

bewertet die Strategie bei Marktschluss.

Die Plattform löst dies einige Minuten VOR dem eigentlichen Marktschluss aus, um eine korrekte Ausführung zu ermöglichen.
Der Handel wird sofort ausgeführt.

Auswirkungen
Der Block mit Shift=0 liefert die Werte des aktuellen Markttages.
Open[0] gibt den aktuellen Eröffnungskurs des Marktes zurück.
Close[0] gibt den tatsächlichen Echtzeitkurs zurück, der dem tatsächlichen Schlusskurs sehr nahe kommt.
Sie können Shift=0 sicher mit allen Arten von Preisen und Indikatoren verwenden. Da die Strategie sehr nahe am aktuellen Marktschluss bewertet wird
Die Höchst-, Tiefst- und Schlusskurse des aktuellen Handelstages werden sehr genau sein.

Besonderer Hinweis zu Indikatoren

Die obigen Beispiele zeigen, wie einfache Preise wie Open, High, Low, Close beeinflusst werden, wenn sie mit Shift=0 verwendet werden,
Sie sollten sich aber darüber im Klaren sein, dass es auch Indikatoren gibt, die aus noch nicht bekannten Preisen berechnet werden können.
Zum Beispiel wird die Berechnung des EMA aus Close mit Shift=0 falsche Ergebnisse liefern, wenn sie mit dem On Bar Open-Trigger verwendet wird, da die Close[0]-Werte dann noch nicht bekannt sind.
Dasselbe gilt für Standardindikatoren wie ATR - ATR mit Shift[0] wird unter Verwendung von High[0] und Low[0] berechnet, die wiederum bei Markteröffnung nicht bekannt sind.

 

Wöchentliche und monatliche Daten

Wöchentliche und monatliche Daten sind ebenfalls verfügbar. Für die aktuelle Woche und den aktuellen Monat wird der Schlusskurs einfach aus dem Kurs des letzten Handelstages abgeleitet. Die Daten für die aktuelle Woche und den aktuellen Monat werden einfach mit Bar [0] bezeichnet (z. B. Weekly High[0] oder Monthly Close [0] usw.).

 

Handhabung von Stop-Loss- und Gewinnzielen beim Backtesting

Das Backtesting von Stockpicker-Strategien muss schnell sein - wir müssen eine Strategie für Hunderte oder Tausende von Aktien bewerten. Aus diesem Grund verwenden wir für den Backtest nur OHLC-Tageskurse.
Es ist nicht möglich, Minuten- oder Tickdaten für die Stockpicker-Engine zu verwenden.

Die Verwendung täglicher OHLC-Daten hat einen Nachteil, der nicht leicht zu beheben ist - wir kennen die Intraday-Bewegung des Preises nicht.
In den meisten Fällen stellt dies kein Problem dar. Wir beschreiben, wie die SQ Backtesting-Engine damit umgeht, um sicherzustellen, dass die Backtests zuverlässig sind.

Das Problem könnte auftreten, wenn Sie SL + PT oder einen Einstieg bei Stop/Limit in Kombination mit SL oder PT verwenden.
In beiden Fällen gibt es mehr als ein Stop- oder Limit-Preisniveau - Einstieg (Stop/Limit), SL, PT.

Das Problem besteht darin, dass diese Niveaus so nahe beieinander liegen, dass sie beide am Markttag erfüllt werden könnten.
Ohne reale Tickdaten können wir nicht wissen, welche dieser Ebenen zuerst erreicht wird. Wir können also nicht zuverlässig einen Einstieg am Stop/Limit gefolgt von SL oder PT im selben Takt simulieren.

Im realen Handel wird SL+PT sofort bei Handelseröffnung hinzugefügt, aber aus den oben genannten Gründen können wir dies im Backtester nicht zuverlässig simulieren - es würde zu optimistischen und unrealistischen Backtests führen.

Um sicherzustellen, dass die Ergebnisse zuverlässig sind, erkennt die Backtester-Engine diese Art von Situationen und behandelt sie wie folgt:

  • Wenn Entry Market ist, wird nur SL oder nur PT gesetzt - in diesem Fall können wir SL oder PT sofort auswerten, im selben Takt
  • Wenn der Einstieg am Stop/Limit erfolgt und SL, PT oder beides gesetzt wird - in diesem Fall werden SL & PT erst am nächsten Tag angewendet, wir wissen nicht, ob der Einstieg oder der SL/PT-Kurs am Eröffnungsstrich erreicht wurde, so dass wir ihn nicht sofort bewerten können
  • Wenn sowohl SL als auch PT verwendet werden und beide in einem Balken hätten gefüllt werden können, nimmt Backtester SL, um eine pessimistische Variante zu erstellen, da wir nicht wissen, welcher von beiden zuerst gefüllt werden würde.

 

Diese Situation wirkt sich im Allgemeinen nur dann auf die Leistung der Strategie aus, wenn Sie sehr enge Stop-Loss- oder Gewinnziele verwenden - tun Sie das nicht, und Sie werden dieses Problem nicht haben.

 

Geringe Unterschiede in den Ausführungszeiten zwischen Backtest und Live-Handel

Beachten Sie, dass im Backtester, wenn der Handel bei Marktöffnung oder Marktschluss mit Enter at Market (oder Exit at end of day) eröffnet wird, er zum Eröffnungs-/Schlusskurs aus den Daten eröffnet wird - dem realen Eröffnungs- oder Schlusskurs des Marktes.

Im Live-Handel ist dies nicht 100% erreichbar - wenn Sie die Strategie On Bar Open auslösen, wird sie eine sehr kurze Zeit NACH der tatsächlichen Markteröffnung bewertet und ausgeführt. Dasselbe gilt für On Bar Close - sie wird sehr kurz VOR dem tatsächlichen Marktschluss ausgeführt.

Dies wird so gehandhabt, weil es nicht möglich ist, Ihre Aufträge genau zum Zeitpunkt des Öffnens oder Schließens des Marktes auszulösen. Aus diesem Grund werden die zu diesen Zeitpunkten ermittelten "Open"- und "Close"-Marktpreise nicht mit den in den historischen Daten ausgewiesenen Open- oder Close-Marktpreisen übereinstimmen. Der Unterschied ist vernachlässigbar und sollte die Leistung Ihrer Strategie nicht beeinträchtigen, aber er ist dennoch vorhanden.

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen