zentrader
Mitglied seit 10 Jahre 9 Monate

Monte Carlo Simulation für Handelssysteme

Kennt Ihr das auch, die Unzuverlässigkeit von vermeintlich sehr guten Handelssystemen, die aufgrund von Backtest und "out-of-sample"-Tests eigentlich den Weg zum "schnellen Erfolg" vorgezeichnet hatten?

Mich hat es jedenfalls bewogen, mich mehr auch mit Simulationen des zukünftigen Systemverhaltens zu beschäftigen und so bin ich auf die Methode der Monte Carlo Simulation gestoßen, um mögliche Profits und Drawdowns der Handelsansätze besser einschätzen zu können.

Auf meiner Website http://www.zentrader.de habe ich Freeware in Form einer Excel-Simulation und eines schnelles Windowsprogramms, welches i.e.Linie für EOD-Daten einsetzbar ist, per Download zur Verfügung gestellt:
http://www.zentrader.de/download.html

Wer die Software brauchbar findet, aber mehr Funktionalität benötigt, kann auf der Website auch die professionellen Versionen günstig erwerben.

Feedback insb. auch konstruktive Kritik sind immer willkommen!

ciao,
zentrader

YingYang
Mitglied seit 10 Jahre 9 Monate

Wenn ich ein Hochkomma vor die Zeile
ActiveSheet.Cells(1, 10) = i setze

schaffe ich die Simulation in 4 Sekunden. Diese Zeile ist nicht unbedingt nötig.

'ActiveSheet.Cells(1, 10) = i

Gruß
YingYang

Osten
Mitglied seit 10 Jahre 9 Monate

@zentrader

die MCS in allen Ehren, aber sie kommt über eine statistische Ableitung von noch möglichen Extremwerten, welche auch "noch" den Systemkennzahlen entsprechen nicht hinaus und verliert die Aussagekraft der Methode an der Grenze zu:

-sehr kurzfristigen statistischen Intradaysystemen
-Wellen/Pattern Systemen (Wellen/Pattern lassen sich nicht sinnvoll simuliert "gleichverteilt" nachbilden
-dynamischen Systemen mit der Auswertung von Volumen/Ticks/Dauer je Zeitbereich
-Systemen mit Beachtung von "magischen" Werten (xx00, xx05, +/-Pivot's, +/- Fibo's ...)

Zur Verdeutlichung:
Alle indikatorbasierten Systemtest's benötigen "Conitinue"-Kontrakte, um Backtests zu ermöglichen.
Aber es gibt Systeme, welche auf absoluten Bezug & Folge der Realkurse, welche auch gehandelt wurden, angewiesen sind, da hier dynamische Beziehungen zwischen bestimmten asoluten Marken und den jeweiligen relativen Änderungen ausgewertet werden. Hier liefert jede Adjustierung (egal ob back/forward/random) eine völlig andere Basis und damit unbrauchbare Veränderung !

Kurzfristige Systeme welche per Marketprofiles ("Volumen/Kurs in Zeitraum" oder "Summe der Zeiteinheiten/Kurs in Zeitraum") gesteuert werden, arbeiten quasi mit dem "Gedächtnis" der Kurse (=Statistik des Herdentriebs der handelnden Masse). Selbst das Mischen von Daten verschiedener Tage/Kontrakte bringt hier absolut unbrauchbare Ergebnisse, da einfach nicht das zum Glück bestehende "Besondere" in realer ECHTZEIT Folge von Kursen neu nachgebildet werden kann.

Intermarket Test's in korrelierenden Märkten, welche per NUR auf die Marktdynamik und absoluten/relativen Marktbewegungen angepasst sind, können solche Systeme besser "Austesten", versagen aber meist bei nomalen OHLC "Indikatorsystemen"...

-> MCS ist sinnvoll, aber nicht "DAS" Werkzeug für alles :)
-> Die puren Grenzwerte nach Systemkennzahlen von Drawdown... könnte man meiner Meinung nach auch per Tabelle ermitteln (siehe irgendeinen der letzten zwei "Traders")

zentrader
Mitglied seit 10 Jahre 9 Monate

@YingYang,

danke für die Optimierungshinweise!

Ich werde dies demnächst mal in das Excelbeispiel einbauen, um nicht weitere kostbare Zeit von Usern zu verschwenden...:-)

danke,
zentrader

zentrader
Mitglied seit 10 Jahre 9 Monate

@Osten,

"...MCS ist sinnvoll, aber nicht "DAS" Werkzeug für alles :)..."

d'accord - ohnehin bleibt bei jeder statistischen Methode das sog. unbeherrschbare Restrisiko...

Deine Beispiele über die Diversität von Systemansätzen sind gut - jedoch solltest Du auch bei diesen "anderen" Ansätzen in der Lage sein einen Systemreport bzgl. der Profitabilität des Systems zu erstellen und dieser kann durchaus wiederrum per MCS verifiziert werden!

"...Die puren Grenzwerte nach Systemkennzahlen von Drawdown... könnte man meiner Meinung nach auch per Tabelle ermitteln (siehe irgendeinen der letzten zwei "Traders")..."

Da muß man genau aufpassen, was da genau ermittelt wird: sprechen die Autoren von Drawdown aufgrund einer max. Reihe von sog. consecutive losses oder wirklich von einem "account drawdown" (worst equity), die der Kontostand in seinem zukünftigen Tradinglebenslauf erreichen kann. Letzteres ist mit Sicherheit(!) mit einer ordentlich implementierten Monte Carlo Simulation realistischer abzubilden, als mit sonstigen mir bekannten Methoden...zumindest glaube ich dies, bis mich jemand vom Gegenteil überzeugt!

ciao,
zentrader

metatrader
Mitglied seit 10 Jahre 9 Monate

Hallo,

hier noch ein paar Links für Menschen, die zu viel Zeit haben

(Sehr gute Einführung)
http://gummy-stuff.org/index.shtml

(siehe: http://gummy-stuff.org/Monte-Carlo.htm
http://gummy-stuff.org/Monte_Carlo_2.htm
http://gummy-stuff.org/Monte-predictions.htm
http://gummy-stuff.org/MC-consistency.htm
http://gummy-stuff.org/MC-stuff.htm )

Gummy bietet auch jede Menge weitere gute Tools/Beschreibungen zu vielen anderen Börsenthemen, ein kleines Muss ;)

(Einführung, incl. einfacher Code)
http://www.anthony-vba.kefra.com/vba/vba12.htm

(Viele, viele,... kostenlose statistische und sonstige Funktionen)
http://www.deakin.edu.au/~rodneyc/software.htm

Freeware (Statistische Funktionen)
http://home.uchicago.edu/~rmyerson/addins.htm

Finance and Statistics Models Open Source Code, 29 USD
http://www.ozgrid.com/excel-add-ins/finance-statistics-models.htm#1
( http://www.ozgrid.com/excel-add-ins/monte-carlo-simulation.htm )

(Super Schnelle MC, 40 USD, Trial)
http://www.dawgroup.com/mc/#download

(Gute Einführung in MC)
http://www.vertex42.com/ExcelArticles/mc/index.html

(MC Kostenlos)
http://homepage.mac.com/martin.auer/montecarlito/

Hompage Molecular Monte Carlo
http://www.cooper.edu/engineering/chemechem/monte.html

Multivariate Monte Carlo Simulation (Freeware)
http://www.numtech.com/NtRand/index.htm

zentrader
Mitglied seit 10 Jahre 9 Monate

@ metatrader,

danke für die Linksammlung. Werde noch ein paar dieser Links auf meiner Website einbauen.

@ YingYang,

die Verbesserung der Performance im Excel-Sheet ist durch Ausschaltung der Grafikaktualisierung natürlich enorm - auch wenn ich aufgrund meiner etwas veralteten Hardware hier nicht ganz an Deine Zeiten herankomme...

Trotzdem liegen bzgl. der Performance von den häufig für MCS angebotenen Excel-Lösungen (siehe auch Links von Metatrader) und einer "echten" compilierten Lösung wie "Zen Monte Carlos Simulator v3" Welten!

Da sich die Aussagekraft der MCS mit der Anzahl der simulierten Trades verbessert, war der Hauptgrund für eine Eigenentwicklung ein extrem schnelles Tool zu entwickeln, daß exakt meine Anforderungen an die simulative Prüfung eines Handelssystems / Trading Systems erfüllt.

Das untenstehende Performance-Sheet zeigt, daß die Unterschiede zwischen reinen Excel-Lösungen und des Zen Monte Carlo Simulators insb. mit ansteigendem Mengengerüst sehr deutlich werden!

Und Zeit ist schließlich Geld. :-)

ciao,
zentrader

gautama2
Mitglied seit 10 Jahre 9 Monate

@zentrader:
da Du Mandelbrot erwähnst.
Wie funktioniert denn Deine Datensimulation?
Er widemt diesem Bereich doch einige Seiten und das zu recht, wie ich finde.
Demnach sind die meisten Datensimluationen Mit Up und Down auf Zufallsbasis wegen der Gaussschen Glockenverteilung der Wahrscheinlichkeiten unbrauchbar.

Zudem meine ich mich aus meinen Uraltcomputerzeiten erinnern zu können, daß viele Arten der Erzeugung von Zufallszahlen durch den Computer keine echten Zufallszahlen ergeben.

Viele Grüße

zentrader
Mitglied seit 10 Jahre 9 Monate

@gautama2,

wie es Mandelbrot/Hudson auf S.303 (der dt. Ausgabe) ausdrücken: "...eine künstliche Kursreihe zu erzeugen, die sich von der realen zwar unterscheidet, aber dem gleichen statistischen Muster folgt..."

Genau dieses habe ich im "Zen Monte Carlo Simulator" in der Datensimulation implementiert. Natürlich mit meinem Algorithmus - den von Mandelbrot/Hudson kenne ich ja nicht... :-)

Ich simuliere die Originaldaten folgendermaßen:

1. bilde ich aus der Originaldatei eine temporäre Tabelle, welche keine absoluten Kurse, sondern relative Werte enthält. Diese relativen Werte werden aus dem relativen Abstand des Close (des Vorgängerdatensatzes) zum aktuellen Open, sowie aus dem relativen Abstand des aktuellen Open zu den aktuellen High, Low und Close gebildet.

2. im zweiten Schritt werden diese relativen Sätze zufallsgesteuert (klar haben Computer nur die Fähigkheit, sog. Pseudo-Zufallszahlen zu erzeugen - aber durch den sog. "random seed" bei jeder Dateisimulation ist gewährleistet, daß das Programm "ausreichend" zufällig arbeitet und somit keine reproduzierebare Simulationen erzeugt!) in neuer zeitlicher Abfolge zugeordnet.

Ausgangspunkt ist dabei der erste Datensatz der Originaldatei. Die Kurven der simulierten Dateien sehen somit über die gesamte Laufzeit alle etwas anders aus. Der Close-Kurs des letzten Original-Datensatzes wird aber bei der Simulation annähernd erreicht.

(in der professionellen Version sind die Abweichungen bzgl. des Schlußkurses etwas größer, da zusätzlich auch gewährleistet wird, daß absolute Obergrenzen der Originalkursschwankungen nicht überschritten werden. Hier sorgt ein Ausgleichsalgorithmus für noch etwas realistischere Simulationen!)

Warum der Aufwand?

Wenn ein Tradingsystem nun sowohl mit den Originaldaten, als auch mit simulierten Dateien ähnliche Ergebnisse bringt, kann es zumindest bzgl. Überoptimierung oder "curve fitting" als relativ stabil angesehen werden.

Dies ist das Hauptziel der Funktion "Datensimulation" in meiner MCS-Software.

Zukünftige Kurse kann man auch mit MCS nicht prognostizieren, aber man kann ein System per MCS (wie oben beschrieben) durchaus auf Robustheit testen.

Das Restrisiko im "echten" Handel kann auch ein MCS-Tool nicht vermeiden und der "Zen Monte Carlo Simulator" ersetzt ein Systemtest-Tool wie Metastock auch nicht - aber er ergänzt es, um das Risiko für den Anwender um ein weiteres (wesentliches) Stück einzuschränken und auch die profitchancen realistischer darzustellen, als dies z.B. ein normaler Metastock System Report hergibt!

ciao,
zentrader

http://www.zentrader.de

gautama2
Mitglied seit 10 Jahre 9 Monate

@zentrader:
Danke für die Antwort.
"2. im zweiten Schritt werden diese relativen Sätze zufallsgesteuert (klar haben Computer nur die Fähigkheit, sog. Pseudo-Zufallszahlen zu erzeugen - aber durch den sog. "random seed" bei jeder Dateisimulation ist gewährleistet, daß das Programm "ausreichend" zufällig arbeitet und somit keine reproduzierebare Simulationen erzeugt!) in neuer zeitlicher Abfolge zugeordnet."

Damit hast du zwar realtiv zufällige Variationen der realen Kursverläufe, aber ob das reicht?
Prüfst Du auch, ob Du in etwa gleich viele Ups und Downs in deinen relativen Sätzen hast? wenn du z.B. 80% Ups hast, dann ist es egal wie Du sie verteilst.

Ansonsten klingt es recht brauchbar.

Ich frage deshalb, weil ich schon länger versuche so etwas zu basteln, aber bisher neben den anderen Aktivitäten nicht voran gekommen bin.
Ich halte es für gut wenn man realitätsnahe Kursverläufe erzeugen kann, um mehr Sicherheit zu haben, daß man nicht zu sehr maßschneidert.

Desweiteren schwebt mir vor eine Art Teststrecke für HS zu bauen.
Also Kursverläufe, bei denen bestimmte Parameter kontrolliert eingebaut sind.
Wenn man ein HS darüber jagt, dann soll man sehen in welchen Bereichen der Teststrecke es klappt oder nicht klappt, um dann z.B. sagen zu können "Aha, da wird die Vola kleiner, da fängt es an zu stottern, hier in der Gap Kurve fliegt es raus" oder so in der Art.
Also kontrollierte Variationen im Kursverhalten. Wie eine Teststrecke bei Autos mit genau definierten Höhen und Abständen von Unebenheiten usw.
Beim Test über einem realen Verlauf sieht man zwar, wo das System versagt, aber dann muss man anschließend schauen welche Parameter im Kursverlauf dafür verantwortlich sein könnten und das ist meist ein Mix aus verschiedenen Bedingungen, die da zusammen kommen. Auf einer Teststrecke wäre das vielleicht schneller klar. So die Überlegung. Dazu gehört natürlich, welche Parameter man kontrolliert verändert usw. Das Pflichtenheft der Teststrecke ist recht rudimentär. Aber das ist der Hintergrund weshalb ich mich mit der "Herstellung" von Kursverläufen befasse. Hinterher weiß man dann ob es nützlich ist, aber das läuft eben bei mir so nebenbei ab.

Vielleicht hätte metatrader als Mathematiker Anmerkungen dazu, die entweder bei der Entwicklung helfen oder eine Menge Arbeit sparen, wenn es eine Schnapsidee ist.

Viele Grüße

zentrader
Mitglied seit 10 Jahre 9 Monate

@gautama2,

(...Damit hast du zwar realtiv zufällige Variationen der realen Kursverläufe, aber ob das reicht?...)
Ob es reicht, weiß ich natürlich auch noch nicht und bin ich offen für weitere Ansätze. Aber zumindest ist diese Simulation eine deutliche Verbesserung ggü. der bisherigen Lage, nur die historischen Originalkurse für die Systemtests zu verwenden.

(...Prüfst Du auch, ob Du in etwa gleich viele Ups und Downs in deinen relativen Sätzen hast? wenn du z.B. 80% Ups hast, dann ist es egal wie Du sie verteilst...)
Wenn ich Dich richtig verstanden habe, zielt die Frage darauf ab, ob gleichviele weiße und schwarze Candlesticks in Original- und Simulationsdateien vorhanden sind? Antwort: ja natürlich, nur eben in anderer zeitlicher Verteilung und i.d.R. auch in anderen absoluten OHLC-Kurswerten.

Dieser Ansatz erhält das sog. "statistische Muster" (siehe Mandelbrot/Hudson) der Originalkurse und erzeugt andererseits aber eine neue Kurskurve.

Kritisch angemerkt wurde in E-Mails, die ich diesbzgl. erhalten habe u.a. die Tatsache, daß aufeinanderfolgende Kurse abhängig voneinander sein können und bei dieser Methode Abhängigkeiten der Kurse verloren gingen. Diese gehen wirklich verloren, aber dies nehme ich bewußt in Kauf, da ich diese historisch aufgetretene Konstellation eben nicht zwangsweise in den Simulationsdaten wiederfinden möchte, sondern nur zufällig.

Dein "Teststreckenansatz" klingt nicht schlecht. Eigentlich würde ich solch eine Handelssystemanalyse-Funktionalität aber von der Systemtestsoftware wie z.B. Metastock, Tradestation etc. erwarten (zumindest Metastock EOD mit der ich arbeite, hat so etwas leider nicht).

ciao,
zentrader

Rückrufservice
Beschreiben Sie bitte Ihr Anliegen, damit wir uns auf den Rückruf vorbereiten können.
Ja, ich habe die Datenschutzerklärung zur Kenntnis genommen und willige ein, dass die von mir angegebenen Daten inklusive der Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen elektronisch erhoben und gespeichert werden. Meine Daten werden dabei nur streng zweckgebunden zur Bearbeitung meiner Anfrage genutzt und nicht ohne Einwilligung weitergegeben. Diese Einwilligung kann jederzeit mit Wirkung für die Zukunft widerrufen werden.

Jetzt registrieren

Jetzt registrieren und ZMP Live+ 14 Tage kostenlos testen!
  • Dauerhaft kostenfrei
  • Keine Zahlungsinformationen erforderlich