Die Ressourcen sind geladen. Beförderung...

Mechanismus zur Abgleichung von Transaktionen auf Tick-Ebene für die Hochfrequenz-Strategie-Backtesting

Schriftsteller:Gutes, Erstellt: 2019-09-09 11:46:24, Aktualisiert: 2023-11-07 20:51:21

img

Zusammenfassung

img

Was ist das Wichtigste beim Backtest der Handelsstrategie? die Geschwindigkeit? die Leistungsindikatoren?

Die Antwort ist Genauigkeit! Der Zweck des Backtests ist es, die Logik und Machbarkeit der Strategie zu überprüfen. Dies ist auch die Bedeutung des Backtests selbst, die anderen sind sekundär. Ein Backtest-Ergebnis, das die historischen Daten der Strategie wirklich widerspiegelt, hat einen Referenzwert. Diese scheinbar perfekten Backtestkurven können eine schöne Geschichte erzählen, können aber nicht im realen Marktumfeld durchgeführt werden.

Welche Daten für das Backtesting erforderlich sind

Wie man genaues Backtesting erreicht, ist ein Problem, das viele quantitative Händler interessiert. Das erste, was wir herausfinden müssen, ist, welche Daten im Handel sind, weil die Qualität der Daten weitgehend die Qualität des Backtests bestimmt.

Für diese Datentypen denken die meisten Leute vielleicht an den Eröffnungspreis, den höchsten Preis, den niedrigsten Preis, den Schlusskurs und das Handelsvolumen auf dem K-Liniendiagramm. Für eine bessere Unterscheidung bezeichnen wir diese Daten zusammen als Bar-Daten, die Sie als K-Linie verstehen können. Aber haben Sie jemals darüber nachgedacht, woher die Daten stammen und wo die Quelle dieser Daten ist?

img

Tick-Daten können als Fluss dargestellt werden. Dieser Fluss enthält detaillierte Daten für jeden Auftrag. Die Tick-Daten sind ein Stück im Datenstrom. Die Frequenz beträgt 2 Stück pro Sekunde. Es ist eine Reproduktion einer bestimmten Marktsituation.

Dann basieren die Bar-Daten auf Tick-Daten und werden nach der Zeitspanne aufgeteilt. Die 1-minütigen Bar-Daten bestehen aus Tick-Daten innerhalb von 1 Minute, die 5-minütigen Bar-Daten bestehen aus Tick-Daten innerhalb von 5 Minuten und so weiter. Sie bildeten eine Vielzahl von Minutendiagrammen, Stundendiagrammen, Tagesdiagrammen und so weiter. Die einminütige K-Linie hat nur eine Bar-Daten, kann aber 120 Tick-Daten enthalten. Daher können die historischen Backtest-Daten in: Bar-Daten und Tick-Daten aufgeteilt werden, und die Datenmenge in Tick-Daten ist viel größer als die Bar-Datenmenge im gleichen Zyklus.

Backtest auf Basis von Bar-Daten

Die meisten quantitativen Handelssoftware auf dem Markt unterstützen alle das Backtesting von Bar-Daten. Da die Datenmenge klein ist, wird die Arbeitsbelastung der Backtesting-Engine erheblich vereinfacht. Daher ist dieses Backtesting in der Regel sehr schnell und die Daten von zehn Jahren können innerhalb weniger Sekunden zurückgetestet werden. Auch wenn der Backtest von Dutzenden von Futures-Varianten gleichzeitig nicht mehr als eine Minute dauert. Aber Bar-Daten-Backtesting hat viele Probleme:

  • Extreme Preise

Die meisten Händler wissen, dass es schwierig ist, am täglichen Grenzpreis zu kaufen oder zu verkaufen, aber es kann im Backtest-Umfeld gehandelt werden.

img

  • Das Preisvakuum

Wenn der Preis plötzlich von der untersten Grenze zum höchsten Grenzpreis springt oder eine Preislücke auftritt, wird er als eine große positive K-Linie auf dem großen Zyklus-K-Liniendiagramm angezeigt, aber es gibt keine Transaktionen, die während der gesamten Zeit durchgeführt werden.

Zum Beispiel: Die aktuelle K-Linie schwebt um den Preis 5000 herum und steigt plötzlich um den Marktschluss auf 5100 an, und es gibt fast keine ausstehenden Aufträge und Transaktionen in der Mitte.

  • Diebstahl von Preisen und zukünftigen Daten

Ich glaube, dass viele quantitative Händler auf solche Pits gestoßen sind, und die meisten dieser 45-Grad-Winkel-Backtest-Kurven stammen daraus. Um das Verständnis aller zu erleichtern, möchte ich ein anderes Beispiel geben: Wir wissen, dass eine K-Linie 4 Preise hat. Wenn es sich um eine 1-minütige positive k-Linie handelt, dann sollte die Bildung dieser K-Linie sein: Eröffnungspreis >>> niedrigster Preis >>>> höchster Preis >>> Schließpreis.

Die große Zykluslinie k wird jedoch nicht so einfach sein. Sie kann ein neues Hoch, dann ein neues Tief erreichen und dann schließen; sie kann auch ein neues Tief erreichen, dann ein neues Hoch und dann schließen; oder sogar nach einer Runde von Wendungen und Wendungen erreicht sie ein neues Tief, und dann das neue Hoch, und dann das neue Tief und dann schließt; aber sie erscheint nur als K-Linie mit oberem und unterem Schatten, es gibt viele Möglichkeiten in der Mitte, wie sie gebildet wurde.

Wenn eine K-Linie wie folgt erscheint: Eröffnungspreis 4950, niedrigster Preis 4900, höchster Preis 5100, Schlusspreis 5050, eine normale positive K-Linie. Ihre Strategie ist: Wenn der letzte Preis den vorherigen Höchstpreis 5000 übersteigt, kaufen Sie lang und setzen Sie einen Stop-Loss von 1% nach der Eröffnung der Position, dh wenn der Preis unter 4950 fällt, wird er einen Stop-Loss vornehmen.

Okay, fangen wir mit dem Backtest an:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Earned 1% when the market closed

aber die wirkliche Situation könnte so aussehen:

Opening price 4950
The price exceeds the previous high 5000
Opening long position
Soon the price begins to fall
Continue to fall to 4949
Stop loss signal triggers stop loss 1%
Price rises to 5100
Market close at 5050

Wie Sie sehen können, gab es im obigen Beispiel, die gleiche Strategie, die gleichen Daten, zwei sehr unterschiedliche Ergebnisse. Der Grund ist immer noch der Unterschied in den Daten. Im Bar-Level-Backtest, wenn Sie den täglichen K-Linien-Backtest verwenden, würden Sie nicht wissen, wie diese K-Linien gebildet werden. Wenn Sie den stündlichen K-Linien-Backtest verwenden, würden Sie nicht wissen, ob diese stündlichen k-Linien gebildet werden. Kurz gesagt, Bar-Daten-Test sind schwach!

  • Backtest auf Basis von Tick-Daten

Wenn Sie Tick-Daten für Backtesting und Analyse verwenden können, besteht kein Zweifel daran, dass es große Vorteile hat. Es scheint jedoch keine quantitative Handelsplattform für Tick-Daten-Backtesting und -Analyse auf dem Markt zu geben. Zum Beispiel verwendet MT4 Interpolation-Simulationsdaten. Dies simuliert nur Änderungen der Daten, nicht echte Tick-Daten.

Natürlich gibt es Software, die behauptet, in der Lage zu sein, Tick-Level-Backtesting zu tun. aber diese Software machte einen tödlichen Fehler bei der Gestaltung der Backtesting-Engine, das heißt: Preis-Matching-Mechanismus. Was bedeutet das? Wenn die aktuellen Tick-Daten sind: Verkaufspreis 5001, Kaufpreis 5000, wenn mein ausstehender Kaufbefehl bei 5000 ist, auf dem realen Markt, ist es definitiv nicht in der Lage, zu handeln, aber die Wahrheit ist nicht.

Beachten Sie, dass in einer realen Handelsumgebung die von uns platzierten Aufträge im Tick-Datenstrom der Börse übereinstimmen. Die Übereinstimmungsregeln der Börse sind: Preispriorität, Zeitpriorität. Wenn die Auftragstiefe zu diesem Zeitpunkt nicht zu dick ist, wird der von uns gesendete Kaufbefehl zum Preis von 5000 wahrscheinlich passiv gehandelt.

  • Das Prinzip der auf Marktdaten basierenden Backtesting-Engine

Die FMZ Quant-Plattform (fmz.com) Die Tick-Level-Backtesting-Engine entstand, diese Backtesting-Engine passt nicht nur die Aufträge anhand der Preispriorität der Tick-Daten an. Gemäß derselben Preispriorität wird die Anzahl der ausstehenden Aufträge berechnet, um festzustellen, ob die aktuelle ausstehende Bestellung den Zustand der passiven Transaktion erreicht hat, um eine echte Simulationsumgebung zu erreichen. Nehmen wir Folgendes als Beispiel:

  • Der erste Tick lautet: Verkauf: 101 Volumen: 80 Kauf: 100 Volumen: 30

  • Der zweite Tick lautet: Verkauf: 101 Volumen: 60 Kauf: 100 Volumen: 50

  • Der dritte Tick ist: Verkauf: 101 Volumen: 80 Kauf: 100 Volumen: 30

  • Der vierte Tick lautet: Verkauf: 101 Volumen: 80 Kauf: 100 Volumen: 10

Für den ersten Tick beträgt der Kaufpreis 100, die Menge der ausstehenden Aufträge beträgt 30 Lose; zu diesem Zeitpunkt kommt das Kaufsignal, kaufe 20 Lose zu 100 Preis; der zweite Tick wird generiert, der Kaufpreis beträgt 100, und die ausstehende Auftragsmenge beträgt 50. es gibt 20 Lose ausstehenden Aufträgen; der dritte Tick wird produziert, der Kaufpreis beträgt 100, und die Menge der ausstehenden Aufträge beträgt 30 Lose. Dies beweist, dass 20 Lose ausgeführt oder storniert wurden, und wir schließen den Deal; der vierte Tick wurde produziert, der Kaufpreis beträgt 100, und die Menge der ausstehenden Aufträge beträgt 10 Lose. Es war ein großer Verkäufer, und alle unsere Kaufopträge wurden auf einmal ausgeführt.

Durch das obige Beispiel können wir feststellen, dass in den Tick-Daten unter der Prämisse, dass sich der Preis nicht geändert hat, berechnet werden kann, ob es eine passive Transaktion der ausstehenden Bestellung durch die Änderung des Betrags der ausstehenden Bestellung gibt. Die Verwendung des gleichen Preises, Zeit-erster Ansatz. Diese Art von Backtesting-Engine bionisiert fast das reale Handelsumfeld, beseitigt den Preis-Matching-Mechanismus der Transaktion und die falsche Transaktion, so dass jedes Marktdaten wirklich angezeigt wird, so dass der Backtest mit dem realen Markt identisch ist, nur ein solcher Backtest ist sinnvoll.

Welcher Weg zum Backtest?

Auf der FMZ Quant-Plattform gibt es Bar- und Tick-Level-Backtesting gleichzeitig. Jeder quantitative Trader kann unterschiedliche Backtesting-Engines entsprechend seiner eigenen Handelsstrategien verwenden, und egal welche Art von Backtesting Sie verwenden. Die Engine muss den Strategiecode nicht ändern, und jede Art von Backtesting kann nahtlos gewechselt werden.

Das Low-Frequency-Strategie-Backtesting erfordert keine komplexe Matching-Engine, da die Anzahl der Transaktionen für solche Strategien klein ist, die Kosten für den Rutsch keinen großen Einfluss auf die Strategie selbst haben. Im Allgemeinen müssen nur wenige Rutschpunkte während des Backtests hinzugefügt werden, verwenden Sie das Bar-Level-Backtesting wird ausreichen. Was wirklich Aufmerksamkeit braucht, ist das Problem der Überanpassung.

Einige Intraday-Handel oder Strategien, bei denen die Position während des Tages geöffnet wird, können bei Bedarf auch die Datengranularität auf der Backtesting-Konfigurationsparameterseite anpassen, z. B. Backtesting auf einem 1-Stunden-Zyklus, der auf feinere 15-Minuten-Daten angepasst werden kann.

Hohe Frequenzhandel, weil die Anzahl der Transaktionen hoch genug ist, kann eine einzelne Sorte Dutzende oder sogar Hunderte von Malen am Tag handeln, so lange die Matching-Engine vernünftig ist, dann sind die Ergebnisse des Backtestings grundsätzlich zuverlässig.

Im Hochfrequenz-Handels-Backtest ist der durchschnittliche Gewinn einer einzelnen Transaktion je kürzer, je höher die Transaktionsfrequenz, je niedriger der Durchschnittsgewinn einer einzelnen Transaktion.

Tick-Level-Daten-Backtest nach den realen Marktdaten

Wir zeigen Ihnen, wie ein Tick-Level-Backtest mit einer in C++ geschriebenen Hochfrequenz-Marktmachungsstrategie (die auch Python und JavaScript unterstützt) funktioniert. Sie können die Strategie abschließen und Online-Backtesting durchführen, indem Sie auf den folgenden Link klicken. Das folgende Bild wurde aus den Protokollinformationen entnommen. Beachten Sie, dass wir 1 Lot zum Preis von 2231 am 2019-07-12 14:59 gekauft und es bei 2232 verkauft haben.

img

  • Der erste Tick lautet: Verkauf: 2232 Volumen: 409 Kauf: 2231 Band: 73

  • Der zweite Tick lautet: Verkauf: 2232 Volumen: 351 Kauf: 2231 Band: 84

  • Der dritte Tick ist: Verkauf: 2232 Volumen: 369 Kauf: 2231 Band: 67

Diese Demonstrationsstrategie besteht darin, die Position zu schließen, wenn ein Preis-Ticking-Gewinn erzielt wird. Nach dem Öffnen der Position senden wir den Schlusspositionsbefehl bei 2232 an, um eine Long-Position zu schließen, und 2231 zur Schließung einer Short-Position. Gemäß dem traditionellen Bar-Level-Backtest kann der Preis dieser ausstehenden Order nicht geschlossen werden. Die Tick-Level-Backtesting-Engine der Plattform berechnet jedoch ständig die Veränderung der Ordermenge auf dem Markt. Wenn die dritten Tick-Daten generiert werden, wird nach dem Börsenumtausch-Order-Marschmechanismus der Börse, wenn der Preis derselben ist, gemäß der Time-First-Regel, unser Schlusspositions-Long-Operation gehandelt.

Kopierstrategie

Klicken Sie auf diesen Link (https://www.fmz.com/strategy/162372) die komplette Strategie kopieren, ohne Parameter konfigurieren zu müssen

Hinweis: Derzeit unterstützen wir nur die gesamte Palette der chinesischen inländischen Rohstoff-Futures und die Tick-Level-Daten der Kryptowährungsbörse OKEX. Wir werden in Zukunft mehr Börsen unterstützen.

Ende

Das obige ist die FMZ Quant Plattform Analyse und tatsächliche Kampf des All-Level Backtesting. Nicht nur das, sondern zusätzlich zur Unterstützung von professionellen Händlern und institutionellen Benutzern, ist es auch sehr freundlich für Anfänger, die noch nicht begonnen haben. Visuelle Sprache kann ohne Schreiben von Code implementiert werden. Darüber hinaus kann die My-Sprache in 10 Sätzen festgelegt werden.

Wir haben eine Reihe von Möglichkeiten, wie wir den Handel auf dem Tick-Level durchführen können, und wir sind in der Lage, alle möglichen Kombinationen von mehreren Varianten, mehreren Strategien und mehreren Zyklen zu testen, um Ihnen zu helfen, ein optimales Anlageportfolio aufzubauen.


Verwandt

Mehr