Monday, 29 May 2017

How To Backtest Trading System

Backtesting: Interpretation der Vergangenheit Backtesting ist ein wesentlicher Bestandteil der effektiven Entwicklung von Handelssystemen. Es wird erreicht, indem mit historischen Daten, die in der Vergangenheit aufgetreten sind, durch Regeln, die durch eine gegebene Strategie definiert wurden, rekonstruiert wird. Das Ergebnis bietet Statistiken, die verwendet werden können, um die Wirksamkeit der Strategie zu messen. Mit diesen Daten können Händler ihre Strategien optimieren und optimieren, technische oder theoretische Mängel finden und Vertrauen in ihre Strategie gewinnen, bevor sie auf die realen Märkte angewendet werden. Die zugrundeliegende Theorie ist, dass jede Strategie, die gut in der Vergangenheit funktionierte, wahrscheinlich in der Zukunft gut funktionieren wird und umgekehrt jede Strategie, die schlecht in der Vergangenheit durchgeführt wird, wahrscheinlich in der Zukunft schlecht funktionieren wird. In diesem Artikel wird untersucht, welche Anwendungen für Backtests verwendet werden, welche Art von Daten erhalten werden und wie sie verwendet werden können. Die Daten und die Tools Backtesting können viel wertvolles statistisches Feedback über ein gegebenes System bereitstellen. Einige allgemeine Backtesting-Statistiken umfassen: Nettogewinn oder - verlust - Nettogewinn oder - verlust. Zeitrahmen - Vergangene Termine, in denen ein Test durchgeführt wurde. Universe - Aktien, die im Backtest enthalten waren. Volatilitätsmaßnahmen - Maximaler Prozentsatz nach oben und unten. Durchschnittswerte - Prozentsatz durchschnittlicher Gewinn und durchschnittlicher Verlust, durchschnittliche Bars gehalten. Exposure - Prozentsatz des investierten Kapitals (oder dem Markt ausgesetzt). Ratios - Gewinn-Verlust-Verhältnis. Annualisierte Rendite - Prozentuale Rendite über ein Jahr. Risiko-adjustierte Rendite - Prozentuale Rendite in Abhängigkeit vom Risiko. Typischerweise wird Backtesting-Software haben zwei Bildschirme, die wichtig sind. Der erste erlaubt dem Händler, die Einstellungen für Backtesting anzupassen. Diese Anpassungen umfassen alles von der Zeit bis zur Provision. Hier ist ein Beispiel für einen solchen Bildschirm in AmiBroker: Der zweite Bildschirm ist der eigentliche Backtesting-Bericht. Hier finden Sie alle oben genannten Statistiken. Auch hier ist ein Beispiel für diesen Bildschirm in AmiBroker: Im Allgemeinen enthält die meisten Trading-Software ähnliche Elemente. Einige High-End-Software-Programme enthalten auch zusätzliche Funktionalität, um automatische Positionsbestimmung, Optimierung und andere erweiterte Funktionen durchzuführen. Die 10 Gebote Es gibt viele Faktoren, die Händler darauf achten, wenn sie Backtesting Handelsstrategien sind. Hier ist eine Liste der 10 wichtigsten Dinge zu erinnern, während Backtesting: Berücksichtigen Sie die breite Markttrends in den Zeitrahmen, in dem eine bestimmte Strategie getestet wurde. Zum Beispiel, wenn eine Strategie nur von 1999-2000 zurückgetestet wurde, kann es nicht gut in einem Bärenmarkt. Es ist oft eine gute Idee, Backtest über einen langen Zeitrahmen, der mehrere verschiedene Arten von Marktbedingungen umfasst. Berücksichtigen Sie das Universum, in dem Backtesting aufgetreten ist. Zum Beispiel, wenn ein breites Marktsystem mit einem Universum aus Tech-Aktien getestet wird, kann es nicht gut in verschiedenen Sektoren zu tun. Als allgemeine Regel, wenn eine Strategie auf eine bestimmte Gattung der Bestände ausgerichtet ist, das Universum auf dieses Genre beschränken, aber in allen anderen Fällen ein großes Universum für Testzwecke beibehalten. Volatilitätsmaßnahmen sind bei der Entwicklung eines Handelssystems äußerst wichtig. Dies gilt insbesondere für Leveraged Accounts, die Margin Calls unterliegen, wenn ihr Eigenkapital unter einen bestimmten Punkt sinkt. Die Händler sollten versuchen, die Volatilität niedrig zu halten, um das Risiko zu senken und einen leichteren Übergang in und aus einer bestimmten Aktie zu ermöglichen. Die durchschnittliche Anzahl der gehaltenen Bars ist auch sehr wichtig zu beobachten, wenn die Entwicklung eines Handelssystems. Obwohl die meisten Backtesting-Software Provisionskosten in den abschließenden Berechnungen einschließt, bedeutet das nicht, dass Sie diese Statistik ignorieren sollten. Wenn möglich, kann die Erhöhung der durchschnittlichen Anzahl der gehaltenen Bars die Provisionskosten senken und die Gesamtrendite verbessern. Exposition ist ein zweischneidiges Schwert. Eine erhöhte Exposition kann zu höheren Gewinnen oder höheren Verlusten führen, während eine verminderte Exposition niedrigere Gewinne oder geringere Verluste bedeutet. Allerdings ist es im Allgemeinen sinnvoll, die Exposition unter 70 zu halten, um das Risiko zu reduzieren und einen leichteren Übergang in und aus einem bestimmten Bestand zu ermöglichen. Die durchschnittliche Gewinn / Verlust-Statistik, kombiniert mit dem Gewinn-Verlust-Verhältnis, kann nützlich sein für die Bestimmung der optimalen Position Größenbestimmung und Geld-Management mit Techniken wie dem Kelly Criterion. (Siehe Money Management mit dem Kelly-Kriterium.) Händler können größere Positionen einnehmen und die Provisionskosten senken, indem sie ihre durchschnittlichen Gewinne erhöhen und ihr Gewinn-Verlust-Verhältnis erhöhen. Die jährliche Rendite ist wichtig, da sie als Instrument zur Benchmarking einer Systemrendite gegenüber anderen Anlageorten verwendet wird. Es ist wichtig, nicht nur die Gesamtjahresrendite zu betrachten, sondern auch das erhöhte oder verminderte Risiko zu berücksichtigen. Dies kann durch Betrachtung der risikoadjustierten Rendite erfolgen, die verschiedene Risikofaktoren berücksichtigt. Bevor ein Handelssystem angenommen wird, muss es alle anderen Anlageorte bei gleichem oder geringerem Risiko übertreffen. Backtesting Anpassung ist äußerst wichtig. Viele Backtesting-Anwendungen haben Input für Provisionsbeträge, runde (oder gebrochene) Losgrößen, Tickgrößen, Margin-Anforderungen, Zinssätze, Rutschannahmen, Positionsgrößenregeln, gleiche Barausgangsregeln, (schleppende) Stopp-Einstellungen und vieles mehr. Um die genauesten Backtesting-Ergebnisse zu erhalten, ist es wichtig, diese Einstellungen zu optimieren, um den Broker nachzuahmen, der verwendet wird, wenn das System in Betrieb geht. Backtesting kann manchmal zu einer so genannten Über-Optimierung führen. Dies ist eine Bedingung, in der Leistungsergebnisse so stark auf die Vergangenheit abgestimmt sind, dass sie in Zukunft nicht mehr so ​​genau sind. Es ist allgemein eine gute Idee, Regeln zu implementieren, die für alle Bestände oder einen ausgewählten Satz von zielgerichteten Beständen gelten und nicht in dem Maße optimiert werden, wie die Regeln vom Schöpfer nicht mehr verständlich sind. Backtesting ist nicht immer der genaueste Weg, um die Wirksamkeit eines bestimmten Handelssystems zu messen. Manchmal sind Strategien, die in der Vergangenheit gut funktionierten, in der Gegenwart nicht gut. Die Wertentwicklung in der Vergangenheit ist kein Hinweis auf zukünftige Ergebnisse. Achten Sie darauf, Papier-Handel ein System, das erfolgreich zurückgetestet wurde, bevor Sie leben, um sicherzustellen, dass die Strategie noch in der Praxis gilt. Fazit Backtesting ist einer der wichtigsten Aspekte der Entwicklung eines Handelssystems. Wenn sie ordnungsgemäß erstellt und interpretiert wird, kann sie Tradern helfen, ihre Strategien zu optimieren und zu verbessern, technische oder theoretische Fehler zu finden, Vertrauen in ihre Strategie zu gewinnen, bevor sie sie auf die realen Märkte anwendet. Resources Tradecision (Tradecision) - High-End-Trading-System-Entwicklung AmiBroker (amibroker) - Budget Trading System Development. You fragen, wie ein Handelssystem auf NinjaTrader (NT) erstellen und zurück testen. Es kann getan werden, aber es ist nicht einfach. Ohne in Codierung und Softwarearchitektur / Design zu gehen, kann ich Ihnen nur eine allgemeine Vorstellung geben, wie man das machen könnte. Der erste Schritt ist, ein Handelssystem zu schreiben. Vereinfacht ausgedrückt besteht diese aus mehreren Teilen: (i) Schreiben Sie ein Modul, das alle verschiedenen Setups für die Trades enthält, die Sie ausführen möchten (Identifizieren Sie die Bedingungen, die die optimale Möglichkeit darstellen, einen Trade einzugeben) (Ii) ein Modul schreiben, das in Ihren Daten in Echtzeit nach diesen Einstellungen sucht, (iii) ein Modul schreiben, das die gefundenen Setups katalogisiert und speichert Die Echtzeitdaten, und (iv) Schreiben eines Moduls, das einen Handel ausführt, der auf irgendeiner dieser Setups basiert. Dies ist eine Herausforderung, da dies in Echtzeit erfolgen muss. Außerdem müssen Sie die Fälle behandeln, in denen Sie mehrere Set-ups finden, die Trades in der gleichen oder entgegengesetzten Richtung anzeigen können (z. B. lang und kurz). Sie müssen auch Ziele, Rentabilitätskriterien für Ihre Setups, Stop-Loss und nachfolgende Kriterien berücksichtigen. Last but not least, müssen Sie darüber nachdenken, Skalierung in und out-Strategien mit Ihrem Trade-up-Kriterien. Abgesehen davon habe ich nicht einmal erwähnt, Überprüfung und Fehlerbehandlung Komponenten des Codes, die Sie müssen auch Adresse. Um dies effizient zu tun, müssen Sie diesen Code einfädeln. Das Problem mit dem Schreiben dieses in NT ist, dass NT nur eine Teilmenge der C-Sprache unterstützt und derzeit nur unterstützt das. Net 3.5-Framework. Dies bedeutet, dass Sie es in C als eine DLL schreiben und es in Ihrem NT-Code verweisen müssen. Nun, da Sie Ihre dll geschrieben haben, um einen Handel zu identifizieren, müssen Sie Code schreiben, um den Handel auszuführen. NT bietet eine verwaltete und einen nicht verwalteten Ansatz, dies zu tun. Ich verwende derzeit und Code NT, und ich werde sagen, dass dieser Teil von NT nicht gut dokumentiert ist - zumindest habe ich es nicht gefunden, aber in aller Fairness können Sie einige Hilfe von der NT-Mitarbeiter auf ihrem Support-Forum zu bekommen. Sie wollen den unmanaged Ansatz dafür nutzen, um die meisten Flexibilität zu erhalten. Natürlich wollen Sie einige Datenbank-Struktur in Ihrem Code implementieren, um Ihre Trades loggen. Dieser Teil des Programms wird auch eine Herausforderung sein, denn es gibt einige Probleme, die Sie hier begegnen werden. Jeder Handel muss überprüft werden, die Aufträge müssen sequenziert und überwacht werden extrem gut, und Ihre Position müssen sorgfältig beobachtet werden - vor allem, wenn Sie auch planen, Trades durch Umkehr Positionen eingeben. Nun, da Sie so weit gekommen, können Sie eine NT-Strategie schreiben, um Ihr System zu testen. Auch hier wird der nicht verwaltete Ansatz von größtem Wert sein, da er die größte Flexibilität für Sie bietet. Auch dieser Code ist trickreich und nicht besonders gut dokumentiert. Es kann jedoch getan werden. Herzlichen Glückwunsch, Sie sind jetzt getan Kodierung und kann beginnen, um Ihren Code leben zu testen. Möglicherweise müssen Sie Ihren Code ändern, um mit Echtzeit-Bedingungen in Live-Daten umzugehen. Abhängig von den Märkten, die Sie planen zu handeln, müssen Sie darüber nachdenken, wie Sie handeln während der Berichte, Positionen über Nacht halten, Handelsgrenzen, sowie wenn der Handel von der Börse suspendiert wird. Vorausgesetzt, Sie haben das alles getan, haben Sie jetzt ein zurück getestet Handelssystem auf NT. Wie gesagt, nicht einfach, aber es ist sicher machbar. Nach dieser, für Stunden und Stunden (und Stunden) der Arbeit und Prüfung vorbereitet werden. Als ich anfing, unterschätzte ich den Aufwand grob unterschätzt. 1.4k Views middot Ansicht Upvotes middot Nicht für ReproductionHi alle, Im ein neues Mitglied hier und ein Neuling am Handel (aber hob viele gute Sachen auf diesem Forum, Dank auf). Ich halte hören über Backtesting Ihr System oder Strategie, aber wie bekommt man die letzten 5 Jahre Daten zu backtest sie auf Gibt es einen Ort, den ich gehen können, um historische Daten herunterladen Iquotm versuchen, einen Software-Simulator zu schreiben, um mir zu helfen Backtest mehrere Systeme Im interessiert In jetzt, aber das Problem ist, ich weiß nicht, wo die Daten zu backtesting tun. Mar 15, 2004, 2:11 pm Joined Juni 2003 für das Ende des Tages, wie immer versuchen, viele Daten hat Löcher es usw., und andere Fehler, aber diese Jungs scheinen relativ genau. Für intraday können die anderen Datenquellen vorschlagen. Es gab eine von einer russischen Seite, aber ich kann nicht für das Leben von mir den Link finden. Wird noch einen Blick haben, Mar 15, 2004, 3:10 pm Joined Mar 2003 Mar 15, 2004, 4:36 pm Joined Dec 2003 Ich dachte über Backtesting, aber mein Broker sagte mir, ich Konnte nur in der Gegenwart handeln, nicht in der Vergangenheit. Sie haben eine Anzahl von Techniken, die in verschiedenen Marktbedingungen arbeiten - weil seine immer ändern haben. Der Versuch, das gleiche System unter allen Bedingungen Handel ist ein sicherer Weg, um die arme Haus / loony bin. Wenn es ein optimales System von Indikatoren, Signalen usw. gäbe, denken Sie nicht, dass die Banken mit ihrem Reichtum und der Computerleistung es entdecken würden, bevor Sie Ihre Zeit sparen - vergessen Sie die Rücktests - es ist für Analysten und Gurus, ihre Existenz zu rechtfertigen, und nur macht Der Software-Entwickler reich, nicht der Händler. Verbringen Sie Ihre Zeit lernen, handeln, was jetzt geschieht - seine mehr rentabel - vertrauen Sie mir. Mar 15, 2004, 4:38 pm Joined Dec 2003, wenn Sie Backtest tun, müssen Sie sicherstellen, dass Sie Zeit / Umsatz Daten gehen mehrere Jahrzehnte. Mar 16, 2004, 1:19 am Beitritt Mar 2004 Hallo alle, Vielen Dank für die Links, Ill gehen durch sie im Detail nach der Arbeit. GtgtSpend Ihre Zeit lernen, handeln, was jetzt geschieht - seine gtgtmore rentabel - vertrauen Sie mir. Im Planung, um so viele gute Bücher zu lesen, dass ich lernen kann, und lesen Foren, um von anderen Händlern zu lernen, und vielleicht ein wenig in den Kurs hier angeboten investieren: - Neben der Suche nach einem Mentor, der bereit ist, mich zu lehren, Im nicht sicher, wie sonst fortfahren. Könnten die alten Timer mir einige Tipps geben Im wirklich leidenschaftlich über dieses und bin bereit, sehr hart daran zu arbeiten.


No comments:

Post a Comment