PdfSR ist ein Teilnehmer in der Amazon Services LLC Associates Programm, ein Affiliate-Werbeprogramm entwickelt, um ein Mittel für Websites, um Werbekosten durch Werbung und Verknüpfung zu Amazon zu verdienen bieten. Monte Carlo Simulation und Systemhandel. Chancenbewertung, Risikoanalyse und Validierung von mechanischen Handelssystemen Der Systemhandel mit mechanischen Handelssystemen weltweit bestimmt zunehmend die Finanzmarktaktivitäten von professionellen und privaten Händlern. Unglücklicherweise kann die gegenwärtige Erfolgsquote eines solchen systematischen Handels, d. H. Um langfristig rentabel zu handeln, nicht mit der steigenden Beliebtheit dieser Methode Schritt halten. Gründe dafür sind unter anderem ungenügende Entwicklungsprozesse sowie ungenügend getestete Systeme. Der zusätzliche Einsatz von Monte Carlo Simulationen während der Systementwicklung und der Systemtestphasen trägt dazu bei, dass Chancenauswertung, Risikoanalyse und Validierung von mechanischen Handelssystemen qualitativ deutlich verbessert werden können. Volker Butzlaff, Diplom als Ingenieur für Stadtplanung, war viele Jahre als Projektleiter, Systemdesigner und Qualitätssicherungscontroller im Bereich Informationstechnologie von DaimlerChrysler in Deutschland tätig. Heute arbeitet er als freier Ingenieur mit dem Schwerpunkt Systementwicklung und Simulationsmethodik. Diese Vorschau wird von Google, mit der Genehmigung ihrer Verleger und Autoren zur Verfügung gestellt. Mehr infoby Michael R. Bryant Die Monte Carlo-Analyse ist eine Berechnungsmethode, die es ermöglicht, die statistischen Eigenschaften von Modellparametern in eine Simulation aufzunehmen. In der Monte-Carlo-Analyse werden die Zufallsvariablen eines Modells durch statistische Verteilungen repräsentiert, die zufällig abgetastet werden, um die Modelle auszugeben. Die Ausgabe ist daher auch eine statistische Verteilung. Im Vergleich zu Simulationsmethoden, die keine Zufallsstichproben enthalten, liefert die Monte Carlo-Methode aussagekräftigere Resultate, die konservativer sind und bei der Verwendung als Vorhersage genauer sind. Bei der Verwendung von Monte Carlo-Analysen zum Simulieren des Handels wird die Handelsverteilung, wie sie durch die Liste der Trades dargestellt ist, abgetastet, um eine Handelssequenz zu erzeugen. Jede derartige Sequenz wird analysiert und die Ergebnisse werden sortiert, um die Wahrscheinlichkeit jedes Ergebnisses zu bestimmen. Auf diese Weise wird jedem Ergebnis ein Wahrscheinlichkeits - oder Konfidenzniveau zugeordnet. Ohne die Monte-Carlo-Analyse wäre der Standardansatz zum Berechnen der historischen Rendite beispielsweise die Analyse der derzeitigen Abfolge von Trades unter Verwendung der festen fraktionalen Positionsbestimmung. Es könnte festgestellt werden, dass die Rendite über die Sequenz 114 war. Mit der Monte-Carlo-Analyse werden hingegen Hunderte oder Tausende von verschiedenen Sequenzen von Trades analysiert und die Rendite mit einem Wahrscheinlichkeitsqualifizierer ausgedrückt. Zum Beispiel könnte die Rendite, die durch die Monte-Carlo-Analyse bestimmt wurde, 83 mit 95 Vertrauen sein. Dies bedeutet, dass von allen Tausenden von betrachteten Sequenzen 95 Renditeraten von größer oder gleich 83 aufwiesen. Die Monte-Carlo-Analyse ist besonders hilfreich bei der Schätzung des maximalen Sink-Sinkens. Soweit Drawdown ein nützliches Maß für das Risiko darstellt, wird es durch eine verbesserte Berechnung des Drawdowns möglich sein, ein Handelssystem oder eine Methode besser zu bewerten. Obwohl wir nicht vorhersagen können, wie sich der Markt morgen von dem unterscheidet, was wir in der Vergangenheit gesehen haben, wissen wir, dass es anders sein wird. Wenn wir den maximalen Drawdown auf der Grundlage der historischen Abfolge von Trades berechnen, basieren unsere Berechnungen auf einer Abfolge von Trades, die wir wissen, nicht genau wiederholt werden. Auch wenn die Verteilung der Trades (im statistischen Sinne) in der Zukunft dieselbe ist, ist die Reihenfolge dieser Trades weitgehend Zufall. Die Berechnung des Drawdowns auf der Grundlage einer bestimmten Sequenz ist etwas willkürlich. Darüber hinaus hat die Sequenz der Trades einen sehr großen Einfluss auf den berechneten Drawdown. Wenn Sie eine Abfolge von Trades auswählen, bei denen fünf Verluste in einer Reihe auftreten, könnten Sie einen sehr großen Drawdown erhalten. Die gleichen Trades, die in einer anderen Reihenfolge angeordnet sind, so dass die Verluste gleichmäßig verteilt sind, können einen vernachlässigbaren Abzug haben. Bei der Verwendung eines Monte-Carlo-Ansatzes zur Berechnung des Drawdowns wird die historische Sequenz von Trades randomisiert und die Rendite und der Drawdown für die randomisierte Sequenz berechnet. Der Vorgang wird dann mehrere hundert oder tausendmal wiederholt. Betrachtet man die Ergebnisse in Aggregat, könnten wir zum Beispiel finden, dass in 95 der Sequenzen war der Drawdown weniger als 30, wenn 4 des Eigenkapitals auf jedem Handel riskiert wurde. Wir würden interpretieren, dass dies bedeutet, dass es eine Chance, dass der Drawdown wird weniger als 30, wenn 4 ist auf jedem Handel riskiert. Im Allgemeinen gibt es zwei Möglichkeiten, die Abfolge von Trades in einer Monte-Carlo-Simulation zu generieren. Eine Option besteht darin, jede Abfolge von Trades durch Zufallsstichproben der gleichen Trades wie in der aktuellen Sequenz zu konstruieren, wobei jeder Trade einmal enthalten ist. Dieses Verfahren zur Probenahme der Handelsverteilung wird als Zufallsauswahl ohne Ersatz bezeichnet. Eine weitere mögliche Stichprobenmethode ist zufällige Auswahl mit Ersatz. Wenn diese Methode verwendet würde, würden Trades zufällig aus der ursprünglichen Liste der Trades ausgewählt, ohne Rücksicht darauf, ob der Handel bereits ausgewählt worden war oder nicht. Bei Auswahl mit Ersatz kann ein Handel mehrmals in der neuen Reihenfolge auftreten. Der Vorteil der Auswahl ohne Ersatz ist, dass sie genau die Wahrscheinlichkeitsverteilung der Eingangsfolge dupliziert, wohingegen Auswahl mit Ersetzen nicht möglich ist. Der Nachteil der Auswahl ohne Ersatz ist, dass die zufällig abgetasteten Sequenzen auf die Anzahl der Trades in der Eingabesequenz beschränkt sind. Wenn Sie eine kurze Abfolge von Trades haben (z. B. weniger als 30 Trades), kann dies die Genauigkeit bestimmter Berechnungen wie dem Drawdown beschränken. Ein Beispiel, das auf einer Probenahme ohne Austausch basiert, ist unten gezeigt. Der Handel wird unter Verwendung einer festen Verhältnispositionskalierung, beginnend mit einem Konto-Eigenkapital von 10.000, simuliert. Jede Simulation verwendet 500 Trade-Sequenzen (Samples). Der erste Ergebnisabschnitt in der Figur zeigt wichtige Ergebnisse, wie die Rendite, bei einer Reihe von Konfidenzniveaus. Beachten Sie beispielsweise, dass niedrigere Renditen für höhere Konfidenzniveaus vorhergesagt werden. Beispiel für Monte Carlo Analyse Ergebnisse. Monte Carlo Simulation Ihres Handelssystems HINWEIS: Fortgeschrittenes Thema. Achten Sie darauf, vorherige Teile des Tutorials zuerst zu lesen. Um die Monte-Carlo-Simulationsergebnisse richtig interpretieren zu können, müssen Sie diesen Abschnitt des Handbuchs lesen. Nicht-triviale Einstellungen und nicht offensichtliche Details werden nachfolgend erläutert. Bitte überspringen Sie es nicht. Allgemein gesprochene quotMonte Carloquot-Verfahren repräsentieren eine breite Klasse von Computeralgorithmen, die wiederholte Stichproben verwenden, um statistische Eigenschaften eines gegebenen Prozesses zu erhalten. Es wurde von dem polnischen Mathematiker Stanislaw Ulam erfunden, der an Atomwaffenprojekten im Los Alamos Labor arbeitet. Da er nicht in der Lage war, komplexe physikalische Prozesse mit konventionellen mathematischen Methoden zu analysieren, dachte er, er könne eine Reihe von Zufallsexperimenten aufbauen, die Ergebnisse beobachten und sie nutzen, um statistische Eigenschaften des Prozesses ableiten zu können. In der Trading-System-Entwicklung bezieht sich Monte-Carlo-Simulation auf Prozess der Verwendung von randomisierten simulierten Handelssequenzen, um statistische Eigenschaften eines Handelssystems zu bewerten. Es gibt viele Möglichkeiten, um tatsächliche Berechnungen durchzuführen, die sich unterscheiden, wenn es um Implementierungsdetails geht, aber wahrscheinlich die einfachste und zuverlässigste ist bootstraping Methode, die zufällige Stichproben mit Ersatz der tatsächlichen Handelsliste durch den Back-Test generiert. Verschiedene Monte-Carlo-Simulationsmethoden erlauben es, die Robustheit des Handelssystems zu verifizieren, die Wahrscheinlichkeit des Ruins zu ermitteln und viele andere statistische Eigenschaften des Handelssystems. Wie funktioniert es bei AmiBroker Um die Monte-Carlo-Simulation (oder den Bootstrap-Test) Ihres Handelssystems durchzuführen, führt AmiBroker folgendes aus: A. Erstellen des Eingabesatzes A.1 Führen Sie ein Backtesting Ihres Handelssystems durch, um den ursprünglichen Satz von N zu erzeugen Trades B. Wiederholt (1000 Mal) B.1 Auswahl zufällig Trades aus der ursprünglichen Liste, um neue, zufällige Reihe von N Trades zu produzieren (genannt Realisierung) Dieser zufällige Satz enthält die gleiche Anzahl von Trades, sie sind zufällig und einige ursprüngliche Trades bestellt Kann übersprungen werden und einige mehr als einmal verwendet (Permutation mit Wiederholung oder zufällige Stichproben mit Ersatz). Da die Anzahl der eindeutigen Realisierungen NN ist (also mit nur 100 Input-Trades haben wir 100 100 eindeutige Realisierungen), mit einer ausreichenden Anzahl von Trades (gt100) ist die Wahrscheinlichkeit, die identische Sequenz als Original zu wählen, praktisch Null. B.2 sequentiell die Glättungsberechnung für jeden zufällig ausgewählten Handel unter Verwendung der Positionsbestimmung durchführen, die durch den Benutzer definiert wird, um das System-Eigenkapital zu erzeugen. B.3 Aufzeichnungssystem-Eigenkapital in der Verteilung C.1 Prozeßdaten, die in B erhalten werden, um Verteilungsstatistiken und - diagramme zu erzeugen Oben geschieht, wenn Sie die Schaltfläche "Backtest" im Fenster "Neue Analyse" drücken. AmiBrokers Monte Carlo Simulator ist so schnell, dass es in der Regel nur einen Bruchteil von Sekunden auf der normalen Backtest-Verfahren. Es sollte beachtet werden, dass simulierte Trades während des Bootstrap sequentiell ausgeführt werden. Wenn Ihr ursprüngliches Handelssystem mehrere Positionen gleichzeitig gehandelt hat (so dass einige oder alle Trades überlappen), kann es zu kleineren Systemabschlägen kommen, die vom Bootstrap-Test berichtet werden, da Abschläge von einzelnen Trades sequentiell stattfinden würden (nicht parallel wie bei überlappenden Trades) ) Aufweist. Die Funktionsweise des Monte-Carlo-Simulators kann auf der Seite "Analyseeinstellungen", Registerkarte "Mono Carloquot": "Monte Carlo-Simulation aktivieren" gesteuert werden, wenn die MC-Simulation automatisch als Teil des Backtests durchgeführt wird (direkt hinter Backtest-Liste) Der zu simulierenden MC-Simulationen (sollte 1000 oder mehr sein) Simulieren Sie mit Portfolio-Equity-Änderungen, die diese Option bewirkt, dass die MC-Simulation Bar-by-Bar-Portfolio-Aktienprozentänderungen statt einzelner Trades verwendet. Diese einzelnen Eigenkapitalveränderungen werden nach dem Zufallsprinzip ausgewählt und durchlaufen, um einen Simulationslauf zu ermöglichen. In diesem Modus werden Bar-by-Bar-Eigenkapitalveränderungen als Verhältnis berechnet (also 10-Zunahme wird als 1,1 dargestellt), wird zufällig ausgewählt und kumuliert multipliziert. Diese Einstellung ermöglicht Situationen, in denen Sie mehrere überlappende Trades in Ihrem System haben und keine spezielle Einstellung für die Positionsbestimmung benötigen. Simulieren mit Trade List Diese Option bewirkt, dass MC Simulation nutzt einzelne Trades aus dem ursprünglichen Backtest zu Simulationslauf zu erstellen. Um die Simulation in diesem Modus durchzuführen, wählt der MC-Simulator nach dem Zufallsprinzip originale Trades aus und wendet eine neue Positionsbestimmung an, wie nachstehend definiert. Dieser Modus ist nützlich, wenn Sie nicht überlappende Trades haben. Definiert die Positionsbestimmungsmethode, die von dem MC-Simulator in der Drop-Liste verwendet wird: Dont change - verwendet die ursprüngliche Positionsgröße, die beim Backtest verwendet wird. Denken Sie daran, dass es immer verwendet Original-Dollar-Wert des Handels (oder was auch immer Sie verwenden), auch wenn Ihre Formel ist mit Prozent der Portfolio-Equity. Feste Größe - verwendet feste Anzahl von Aktienverträgen pro Trade Konstanter Wert - verwendet festen Dollarbetrag für die Eröffnung eines Handels Anteil des Eigenkapitals - verwendet definierte Prozent des aktuellen simulierten Eigenkapitalwertes. Seien Sie vorsichtig, wenn Sie diese Einstellung - es bewirkt, dass die Position Größe eines Handels hängt von Gewinnen aus früheren Geschäften (Compoundierung Gewinne) und schafft serielle Abhängigkeit. Es kann auch zu zusätzlichen Compoundierungseffekt führen, wenn Sie überlappende Trades in Ihrem ursprünglichen Backtest haben, da bootstrap Trades nacheinander durchführt (so dass sie sich nicht überlappen). Aus diesem Grund ist ihre Verwendung auf Fälle beschränkt, in denen keine übergreifenden Geschäfte stattfinden. MC-Eigenkapitalkurven aktivieren (MinMaxAvg) schaltet MC-Aktienkurven ein (einschließlich der höchsten, niedrigsten und durchschnittlichen Aktienplots sowie der Stromenbesen-Eigenkapitalcharts). Beachten Sie, dass grüne und rote Linien (Minmax Equity) nicht wirklich einzelne quotbestquot und quotworstquot Aktien sind. Sie sind Bar-by-Bar-höchste (max) und niedrigste (min) Punkte von ALL-Aktien, die während der MC generiert werden. Also sind sie tatsächlich die besten Punkte aus allen Aktien und schlechtesten Punkte aus allen Aktien. Und blaue Linie (Durchschnitt) ist der Durchschnitt aus allen Aktienlinien (alle Läufe). Zeigen Sie den absoluten Wert s in der linearen Skala an - zeigt die Aktien in absoluten Dollarwerten mit Hilfe des linearen Maßstabs an. Zeigt den absoluten Wert s im logarithmischen Maßstab an - zeigt die Aktien in absoluten Dollarbeträgen an Strohbesen Diagrammbilder - definiert, wie viele einzelne Test-Equites als Strohbesen-Chart (große Anzahl kann verlangsamen Processing-Zeichnung) verwenden Logarithmische Skala für Finale Equity Anzeigen endgültige Equity CDF-Diagramm mit semi-log-Skala anstelle von linear Verwenden Sie logarithmische Skala für Drawdown Anzeigen von Dollar-Drawdown-CDF-Charts mit Semi-Log-Skala anstelle von Linear Verwenden Sie negative Zahlen für Drawdown (Reverse Drawdown CDF) Wenn diese Option aktiviert ist, werden sowohl Dollar als auch Prozent Drawdown als negative Zahlen gemeldet. Dies wirkt sich auch auf die CDF-Verteilung aus. Es kehrt die Reihenfolge der Quotrequestock-Spalte in der MC-Tabelle um und kehrt die Bedeutung um (dh 10 Perzentilwert bedeutet, dass es 10 Wahrscheinlichkeit gibt, dass Drawdowns gleich oder schlechter (negativer) sind als die angegebene Menge ), Werden die Abschläge als Zahlenwerte von mehr als null (positiv) und 10-prozentiger Wert gemeldet, was bedeutet, dass die Wahrscheinlichkeit von Drawdowns gleich oder größer ist (kleiner) als die angegebene Menge. Um Risiken der seriellen Korrelation zu beseitigen, die die Ergebnisse der Monte-Carlo-Simulation beeinflussen, (Festverzinsliche Wertpapiere oder feste Anzahl von Aktienverträgen), so dass die Reihenfolge, in der ein bestimmter Handel in ursprünglicher Reihenfolge auftritt, keinen Einfluss auf den Gewinnverlust aufgrund der Compoundierung hat, und je nachdem, wann immer Ihr System mehrere überlappende Positionen öffnet, Wählen Sie die Simulationsmethode wie folgt Simulieren mit Trade List - für Systeme mit nicht überlappenden Trades oder Simulation mit Portfolio-Equity-Änderungen für Systeme mit überlappenden Trades (gleichzeitige Positionen) Die Ergebnisse der Monte-Carlo-Simulation werden auf der Seite "Monte Carloquot" des Backtest-Berichts angezeigt . Am oberen Rand der Seite sehen wir eine Tabelle, die Werte von wenigen Schlüsselstatistiken liefert, die aus den kumulativen Verteilungsdiagrammen (CDFs) der Monte-Carlo-Simulationsergebnisse abgeleitet werden. Hier sind Musterergebnisse (Highlights werden manuell zur Veranschaulichung hinzugefügt). Das anfängliche Eigenkapital betrug in diesem Beispiel 10000. Der Test erfolgte über 7 Jahre (EOD-Daten). Dieses Mal ist die Bedeutung der Drawdown Spalte umgekehrt - es sagt Ihnen, dass die Drawdowns schlimmer (negativer) als die angegebene Menge, 99-Perzentil-Wert von -7,23 bedeutet, dass in 99 Fällen werden Sie sehen, Drawdowns schlimmer (mehr negativ) als - 7.23. 1 Prozent-Wert von -63,82 sagt Ihnen, dass in 1 von Fällen, die Sie erleben würde Drawdowns gleich oder schlechter (mehr negativ) als -63.82 Auf diese Weise kann die Tabelle gelesen werden quer-wisequot und die Spitze der Tabelle (kleine Perzentile) beziehen sich auf quotpessimisticquot Szenarien. Unterhalb der Tabelle finden wir minavgmax Stroh Broom-Diagramm der simulierten Aktien: Beachten Sie, dass grüne und rote Linien (Minmax-Equity) nicht wirklich einzigen quotbestquot und quotworstquot Aktien sind. Sie sind Bar-by-Bar-höchste (max) und niedrigste (min) Punkte von ALL-Aktien, die während der MC generiert werden. Also sind sie tatsächlich die besten Punkte aus allen Aktien und schlechtesten Punkte aus allen Aktien. Und blaue Linie (Durchschnitt) ist der Durchschnitt aus allen Aktienlinien (alle Läufe). Die Wolke der grauen Linien stellt einzelne Test-Aktien dar. Wie wir sehen können, kann das gleiche Handelssystem unterschiedliche Ergebnisse erzeugen, wenn sich die Marktbedingungen ändern und die MC-Simulation versucht, verschiedene Ergebnisse zu simulieren und Ihnen einige statistische Informationen darüber zu liefern, wie schlecht es ist. Nach dem Strohbesen finden Sie kumulative Verteilungsfunktionen (CDF) der abschließenden Equity, CAR, Drawdowns und des niedrigsten Eigenkapitals (auch grüne und rote Annotationslinien wurden manuell hinzugefügt): Kumulative Verteilungsdiagramme zeigen die gleichen Informationen, die in der Tabelle enthalten waren Die Oberseite von quotMonte Carloquot Seite aber in der graphischen Form. Wenn wir das jährliche Profit (CAR) - Verteilungsdiagramm betrachten, können wir sehen, dass in etwa 10 Fällen unser System nicht brechen würde (negatives CAR). Wir können auch sehen, dass in etwa 35 der Fälle unsere AUTO unter 5 sein würde. Gewinne über 10 pro Jahr nur in Top 20 der Tests auftreten. Alle anderen Diagramme auf der MC-Seite sind gleich aufgebaut und können mit derselben Methode gelesen werden. Endgültige Aktienkurve zeigt die kumulative Verteilung der Funktion des Endwertes des Eigenkapitals (am Ende der Testperiode) Jährliches Rendite-Diagramm zeigt die kumulative Verteilungsfunktion der zusammengesetzten jährlichen prozentualen Rückkehr des Tests Max. Drawdown und Max. Drawdown-Diagramme zeigen die kumulative Verteilungsfunktion von Drawdowns (maximale Spitzenwerte bis zu valey dollarpercent Abstände), die während des Tests erlebt werden. Niedrigstes Equity-Diagramm zeigt die kumulative Verteilungsfunktion des niedrigsten Equity, die jemals während des Tests erlebt wurde Dialog, können Sie Monte-Carlo-Simulator mit SetOption () - Funktion zu steuern. Sie können diese Werte auch über die GetOption-Funktion abrufen. SetOption (quotMCEnablequot, 2) value 2 zwingt MC, überall aktiviert zu werden (in jedem Modus, einschließlich Optimierung - SLOW.) SetOption (quotMCEnablequot, 0) Wert 0 deaktiviert MC Simulation SetOption (quotMCEnablequot, 1) Wert 1 aktiviert MC nur bei Portfolio-Backtests ) Beachten Sie, dass die Aktivierung von MC in der Optimierung ist sehr entmutigt, wenn Sie tatsächlich verwenden MC Metriken als Optimierungsziel über benutzerdefinierte Backtester oder auf andere Weise verwenden MC Distributionen in der Optimierung. Monte Carlo Prozess ist rechnerisch kostspielig und während einige hundert Millisekunden zu einem Backtest hinzugefügt werden dont matter viel, im Falle von Optimierungen, wenn diese durch Anzahl von Schritten multipliziert werden, können Sie leicht erhöhen Optimierung Zeit um Größenordnungen. Also, wenn Sie WIRKLICH brauchen MC-Distribution als benutzerdefinierte Metrik und Optimierung Ziel, aktivieren Sie nicht MC in der Optimierung. SetOption (quotMCRunsquot, 1000) definieren Anzahl der MC Simulationsläufe (Realisierungen) Andere MC Parameter, die unter Verwendung von SetOption eingestellt werden kann und retrived GetOption mit: quotMCChartEquityCurvesquot (Truefalse) quotMCStrawBroomLinesquot (0..100) quotMCPosSizePctEquityquot (0..100) quotMCPosSizeMethodquot - 0 - dont ändern, 1 - feste Größe, 2 - konstante Menge, 3 - Prozent des Eigenkapitals, quotMCPosSizeSharesquot (Zahl), quotMCPosSizeValuequot (Nummer) quotMCPosSizePctEquityquot (Nummer) quotMCUseEquityChangesquot (Anzahl), 1 Mittel Eigenkapital Änderungen anstelle der Handelsliste quotMCChartEquityScalequot (Anzahl ), 1 für Log-Skala, 0 für lineare Skala quotMCLogScaleFinalEquityquot (Anzahl), 1 für Log-Skala, 0 für lineare Skala quotMCLogScaleDrawdownquot (Anzahl), 1 für Log-Skala, 0 für lineare Skala quotMCNegativeDrawdownquot (Zahl), 1 - verwenden negative Zahlen für Drawdown (Reverse Drawdown CDF) Hinzufügen von benutzerdefinierten Metriken basierend auf MC-Testverteilung (en) zum Backtest-Bericht Zusätzlich zum integrierten MC-Bericht können Sie dem Bericht mithilfe der GetMonteCarloSim () - Methode des Backtests eigene benutzerdefinierte Metriken hinzufügen Objekt und das Objekt MonteCarloSim, das diese Funktion zurückgibt. Wenn Sie zu benutzerdefinierten Metriken neu sind, konsultieren Sie bitte die Anleitung zum Hinzufügen von benutzerdefinierten Metriken für Backtester-Berichte. Das Objekt "MonteCarloSim" verfügt über eine Funktion GetValue (quotfieldquot, percentile), die den Zugriff auf die CDF-Werte ermöglicht. Verfügbare quotfieldquot Werte sind: quotFinalEquityquot quotCARquot quotLowestEquityquot quotMaxDrawdownquot quotMaxPercDrawdownquot hier Jetzt ist der Beispielcode, der zeigt, wie der 30. Perzentile FinalEquity und CAR dem Bericht hinzuzufügen: SetOption (. MCEnable True) SetOption (. MCRuns 1000) SetCustomBacktestProc () if (Status (Aktion ) AktionsPortfolio) bo GetBacktesterObject () bo. Backtest () Ausführen der Standard-Backtest-Prozedur Zugriff auf die Ergebnisse von Monte Carlo erhalten Anmerkung 1: es kann NULL sein, wenn MC nicht aktiviert ist Anmerkung 2: MC-Ergebnisse sind nach Backtest () oder PostProcess als MC-Simulation verfügbar getan wird in der Endphase der Nachverarbeitung mc bo. GetMonteCarloSim () if (mc) erhalten 30-Perzentil der endgültigen Aktien und CAR Verteilung bo. AddCustomMetric (FinalEq30. mc. GetValue (FinalEquity. 30)) bo. AddCustomMetric (CAR30. mc. GetValue (CAR. 30)), können Sie auch kombinieren Statistiken MC mit normalen Statistiken st bo. GetPerformanceStats (0) bo. AddCustomMetric (CAR30MDD. mc. GetValue (CAR. 30) st. GetValue (MaxSystemDrawdownPercent)) Sobald benutzerdefinierte Metriken Addiert, kann es als Optimierungsziel verwendet werden (vergessen Sie nicht, MCEnable zu 2 zu ändern) und verwendet im Weg vorwärts Testprozeß als objektive Funktion. Um benutzerdefinierte Metrik als Optimierungsziel auszuwählen, müssten Sie ihren Namen exakt so eingeben, wie er im AddCustomMetric-Aufruf im FeldOptimization Targetquot im Dialogfeld Settings auf der Seite Walk Forward angezeigt wird. Auf diese Weise können Sie Optimierung Walk forward-Test, der durch Werte der MC-Simulation Distribution gerichtet ist. So zum Beispiel anstatt mit CARMDD können Sie CAR30MDD (30th percentile MC CAR geteilt durch max. System-Drawdown). Wie wäre es mit Monte Carlo Randomisierung statt Bootstrap-Test Die Monte Carlo Randomisierung ist anders als Bootstrap-Test, weil es nicht tatsächliche (realisierte) Handelsliste aus dem Backtest verwendet, aber es versucht, quotall individuelle Rückkehr verwenden, wenn sie realisiert oder hyphoteticalquot. Zum Beispiel, wenn Trading System generiert viel mehr Signale, als wir tatsächlich Handel aufgrund begrenzter Kaufkraft können, dann müssen wir wählen, welche Geschäfte wir nehmen würde und die wir überspringen würde. Normalerweise ist diese Auswahl ein Teil des Handelssystems und in AmiBroker PositionScore Variable teilt dem Backtester mit, welche Positionen bevorzugt sind und gehandelt werden sollten. Im Randomisierungstest, anstatt einige analytisch-deterministische PositionScore zu verwenden, verwenden Sie zufällig einen. Wenn es mehr Signale, um Positionen zu öffnen, als wir könnten, würde dieser Prozess zu randomisierten Trade Picks führen. Mit Optimize () - Funktion und zufälligem PositionScore können wir Tausende von solchen zufälligen Picks ausführen, um den Monte Carlo-Randomisierungstest zu erstellen: Schritt Optimieren (Schritt 1. 1. 1000. 1) 1000 Backtests mit zufälligen Trade-Picks aus dem breiten Universum (stellen Sie sicher Sie führen es auf große Watch-Listen) PositionScore mtRandom () Randomisierung Test hat einen großen Nachteil: kann nicht in vielen Fällen verwendet werden. Wenn das System nicht genug Signale produziert, gibt es nicht viel (wenn überhaupt) zur Auswahl. Zudem führt die MC-Randomisierung zu einer falschen Annahme, dass alle Quotientenchancenquot (Signale) gleich sind. In vielen Fällen sind sie es nicht. Häufig hat unser Handelssystem spezifische, deterministische Weise, Trades von vielen oppotunities durch irgendeine Art von rankingscoring zu wählen. Wenn System eine Kerbe (Rang) als eine Kernkomponente des Systems verwendet (Rotationssysteme tun) - wenn Sie analytische Kerbe mit zufälliger Zahl ersetzen Sie gerade prüfen, weißes Rauschen nicht das System.
No comments:
Post a Comment