Die Ressourcen sind geladen. Beförderung...

5.2 Wie man quantitatives Handels-Backtesting durchführt

Schriftsteller:Gutes, Erstellt: 2019-05-08 13:08:52, aktualisiert:

Zusammenfassung

Die Bedeutung und Bedeutung von Backtesting ist unbestreitbar. Beim quantitativen Backtesting sollte die Strategie in die historische Umgebung so real und nah wie möglich gestellt werden. Wenn einige Details in der historischen Umgebung ignoriert werden, kann das gesamte quantitative Backtesting ungültig sein. Dieser Artikel wird erklären, wie man das entsprechende quantitative Trading-Backtesting durchführt.

Backtesting ist gleichbedeutend mit Datenwiedergabe. Durch das Wiedergeben historischer K-Linie-Daten und die Ausführung von Handelsregeln auf dem realen Markt, wie z. B. Sharpe-Verhältnis, maximale Retracement-Rate, jährliche Rendite und Kapitalkurven, gibt es derzeit viele Software, die all dies tun können, wie z. B. MetaTrader, MultiCharts und IB Trader Workstation, die alle sehr umfassend sind.github.com, die flexibel angepasst werden kann.

Die FMZ Quant als kommerzielle quantitative Handelssoftware, kommt mit der Hochleistungs-Backtest-Engine, mit For-Loop (Polling) Backtest-Rahmen, um die Berechnung schneller zu quantifizieren.

FMZ Quant Backtest Schnittstelle Einführung

  • Schritt 1

Wir nehmen zum Beispiel die Zeitstrategie FMZ Quant Thermostat und öffnen die offizielle Website des FMZ Quant (www.fmz.com) Klicken Sie auf Dashboard, Strategie, wählen Sie eine Strategie aus, klicken Sie auf Backtest und gehen Sie zur folgenden Seite:

img img

In der Backtest-Konfigurationsoberfläche können Sie es an Ihre tatsächlichen Bedürfnisse anpassen. Zum Beispiel: Backtest-Zeitraum, K-Linienzyklus, Datentyp (Simulations-Niveau-Daten oder reale Markt-Niveau-Daten). Im Gegensatz dazu ist die Simulations-Niveau-Daten-Backtesting-Geschwindigkeit schneller, die reale Markt-Niveau-Daten-Backtesting ist genauer). Darüber hinaus können Sie auch die Provisionsgebühr für den Backtest und die anfänglichen Mittel des Kontos festlegen.

  • Schritt 2

Klicken Sie auf die mylanguage core Trading-Bibliothek (weil diese Strategie in M-Sprache geschrieben ist, wenn Sie eine andere Programmiersprache verwenden, erscheint diese Option möglicherweise nicht) Zunächst legen Sie das Handelslabel fest. Die FMZ Quant M-Sprache hat zwei Arten von Backtest-Ausführungsmethoden, nämlich: das Schlusspreismodell und das neueste Preismodell. Das Schlusspreismodell bezieht sich auf die Ausführung des Modells nach Abschluss der aktuellen K-Linie und der Handel wird zu Beginn der nächsten K-Linie ausgeführt; Das neueste Preismodell bezieht sich auf die Ausführung eines Modells für jede Preisänderung, und wenn das Handelssignal festgelegt wird, wird es sofort gehandelt. Wie unten gezeigt:

img img

Die Standardgröße des offenen Loses bezieht sich auf den Betrag der Eröffnungs- und Schließposition beim Backtesting. Der maximale Handelsbetrag einmal ist die maximale Eröffnungsposition, die durch eine einzige Transaktion an die Backtest-Engine gesendet wird.

Es wird immer eine Abweichung zwischen dem tatsächlichen Handelspreis und dem geplanten Handelspreis geben. Dieser Offset bewegt sich im Allgemeinen in eine Richtung, die für den Händler nicht günstig ist, was zu zusätzlichen Verlusten im Handel führt. Daher ist es notwendig, eine Verschiebung hinzuzufügen, um das reale Handelsumfeld zu simulieren.

  • Schritt 3

Füllen Sie den Futures-Vertrag mit der Art des Vertrages, den Sie backtest, für cryptocurreny, müssen wir nur die Periode der k-Linie, die wir backtest, in diesem Fall, verwenden Sie nur wöchentliche k-Linie, so, setzen this_week in.

img

real-market-Settings Option wird hauptsächlich für den Handel auf dem realen Markt verwendet, in der Backtesting-Umgebung halten wir es einfach für die Standard-Einstellung, die in Ordnung ist. Wenn die automatische Wiederherstellung Fortschritt markiert ist wahr, dann, wenn der Roboter im realen Markt stoppt, wird der Roboter automatisch die vorherige Signalposition wiederherstellen, ohne das Signal neu zu berechnen. die Anzahl der Auftragsversuche standardmäßig auf 20 festgelegt. Wenn die Bestellung fehlschlägt, wird es versuchen, bis zu 20 Mal zu senden. Netzwerk-Umfrageintervall (Millisekunden) ist, wo der Roboter den Strategiecode jedes andere Mal ausführt.

img

  • Schritt 4

Spot-Handel Option ist in erster Linie für den Handel mit Kryptowährung, wenn Backtesting, halten Sie es in den Standard-Einstellungen in Ordnung sein wird. Wenn Sie möchten, können Sie alle Parameter in diesen Einstellungen angeben. Darüber hinaus, für einige Kryptowährungsbörsen, können Sie auch Hebelwirkung Größen und andere verwandte Einstellungen festlegen.

img

Strategie-Backtest

Vor dem Backtesting, bestimmen Sie Ihre Handelsstrategie. Hier nehmen wir die Thermostat Timing-Strategie als Beispiel. Diese Strategie wird eine Trendstrategie im Trendmarkt entsprechend dem Marktzustand annehmen, und eine Schwingungsstrategie im volatilen Markt annehmen. Der Quellcode ist wie unten gezeigt (kann auch von der Strategie Square Seite der FMZ Quant Website heruntergeladen werden):

// Calculate CMI indicator to distinguish between Oscillating and trend market
CMI:=ABS(C-REF(C,29))/(HHV(H,30)-LLV(L,30))*100;

// Define key prices
KOD:=(H+L+C)/3;

// In the Oscillating market, the closing price is greater than the key price is suitable for selling market, otherwise it is for buying market
BE:=IFELSE(C>KOD,1,0);
SE:=IFELSE(C<=KOD,1,0);

// Define 10-day ATR indicator
TR:=MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));
ATR10:=MA(TR,10);

// Define the highest and lowest price 3-day moving average
AVG3HI:=MA(H,3);
AVG3LO:=MA(L,3);

// Calculate the entry price of the Oscillating market
LEP:=IFELSE(C>KOD,O+ATR10*0.5,O+ATR10*0.75);
SEP:=IFELSE(C>KOD,O-ATR10*0.75,O-ATR10*0.5);
LEP1:=MAX(LEP,AVG3LO);
SEP1:=MIN(SEP,AVG3HI);

// Calculate the entry price of the trend market
UPBAND:=MA(C,50)+STD(C,50)*2;
DNBAND:=MA(C,50)-STD(C,50)*2;

// Calculate the quit price of the trend market
MA50:=MA(C,50);

// Oscillating strategy logic
CMI<20&&C>=LEP1,BK;
CMI<20&&C<=SEP1,SK;
CMI<20&&C>=AVG3HI,SP;
CMI<20&&C<=AVG3LO,BP;

// Trend strategy logic
CMI>=20&&C>=UPBAND,BK;
CMI>=20&&C<=DNBAND,SK;
CMI>=20&&C<=MA50,SP;
CMI>=20&&C>=MA50,BP;
AUTOFILTER;

In der Simulations-Backtesting-Schnittstelle klicken Sie nach Konfiguration der Backtest-Einstellungen auf die Schaltfläche Start Backtest, und die Backtest-Ergebnisse werden sofort nach wenigen Sekunden angezeigt. Im Backtest-Log wird angezeigt, wie viele Sekunden für den Backtest, die Protokolle und die Gesamtzahl der Transaktionen verwendet wurden. Die Kontoinformationen drucken die endgültigen Ergebnisse des Strategie-Backtests aus: durchschnittlicher Gewinn und Verlust, Positionsgewinn und Verlust, Marge, Provisionsgebühren und geschätzte Renditen.

img

Die Statusleiste erfasst die Handelsvielfalt, Positionen, Positionspreise, den neuesten Preis, die vorherigen Handelssignaltypen, den höchsten und niedrigsten Kurs der Positionen, die Anzahl der Aktualisierungen sowie Kapital- und Zeitinformationen.

Unter ihnen ist der wichtigste Leistungsindikator: Sharpe-Ratio. Es war bei der Umsetzung eines umfassenden Index berücksichtigen Sie die Vorteile und Risiken, und es ist ein wichtiger Index, um ein Fonds Produkte zu messen. Im Allgemeinen ist es, wie viel Risiko Sie tragen, jedes Mal, wenn Sie Gewinn machen, so ist der Sharpe-Ratio Wert höher, desto besser.

Die jährliche Volatilität, einfach ausgedrückt, annalisiert eine Zahl geht davon aus, dass Beobachtungen über einen kurzen Zeitrahmen im Laufe eines Jahres fortgesetzt werden. Es ist ein Maß für das Risiko des Fonds, aber es ist definitiv nicht das volle Risiko. Zum Beispiel hat Strategie A eine größere Volatilität, aber es war Volatilität nach oben, der Gewinn ist gut; Strategie B hat eine geringe Volatilität, aber es hat sich stetig bewegt ((kaum nicht bewegt). Können wir sagen, dass Strategie B besser ist als Strategie A? Strategie A wie unten gezeigt:

img

Schließlich ist in den Protokollinformationen eine detaillierte Aufzeichnung jeder Handelsvermittlungssituation beim Backtesting zu finden, einschließlich der spezifischen Zeit des Handels, der Börseninformationen, der Art der offenen und geschlossenen Positionen, des Mechanismus für die Übereinstimmung von Auftragsmechanismen mit dem Backtest-Motor sowie der Anzahl der Transaktionen und der ausgedruckten Informationen.

img

Nach der Rückprüfung

Die Ergebnisse von Backtesting sind oft und in den meisten Fällen weit entfernt von den Erwartungen. Schließlich ist eine langfristige, stabile und profitable Strategie nicht so einfach zu bekommen, was Ihre Fähigkeit erfordert, den Markt zu verstehen.

Wenn Ihre Strategie-Backtest-Ergebnisse Geld verlieren, lassen Sie sich nicht entmutigen. Dies ist eigentlich ganz normal. Überprüfen Sie, ob die Strategie-Logik vom Code falsch interpretiert wurde, ob es einige extreme Parameter verwendet, ob es zu viele Eröffnungspositionsbedingungen verwendet usw. Es ist auch notwendig, die Handelsstrategien und Handelsideen aus einem anderen Blickwinkel zu überprüfen.

Wenn Ihre Strategie-Backtest-Ergebnisse sehr gut sind, ist die Finanzierungskurve perfekt, mit einem Sharpe-Verhältnis von mehr als 1. Bitte haben Sie keine Eile. In diesem Fall verwenden die meisten Situationen die zukünftigen Funktionen, stehlen Preise, übermäßige Anpassung oder keine Schlupfpreise hinzugefügt, usw. Sie können die Daten außerhalb der Stichprobe und den Simulations-Echtmarkthandel verwenden, um diese Probleme auszuschließen.

Zusammenfassend

Das oben genannte ist der gesamte Prozess des Trading-Strategie-Backtestings, man kann sagen, dass er auf jedes Detail spezifisch ausgerichtet war. Es sollte beachtet werden, dass das historische Daten-Backtesting ein ideales Umfeld ist, in dem alle Risiken bekannt sind. Daher ist es am besten, für die Backtestzeit der Strategie einen Runde des Bullen- und Bärenmarktes zu durchlaufen. Die effektive Anzahl der Trades sollte nicht weniger als 100 Mal betragen, um einige Überlebende-Vorurteile zu vermeiden.

Der Markt befindet sich immer im Prozess des Wandels und der Entwicklung. Die historische Backtesting-Strategie bedeutet nicht, dass die Zukunft die gleiche sein wird. Es geht nicht nur darum, die Strategie mit den bekannten möglichen Risiken im Backtesting-Umfeld umzugehen, sondern auch mit den unbekannten Risiken in der Zukunft umzugehen. Daher ist es sehr notwendig, die Risikobereitschaft und Universalität der Strategie zu erhöhen.

Nachschulübungen

  1. Versuchen Sie, die Strategie in diesem Abschnitt zu kopieren und zu testen.

  2. Versuchen Sie, die Strategie in diesem Abschnitt auf der Grundlage Ihrer Handelserfahrung zu verbessern und zu optimieren.


Mehr