(01.11.2019, 16:28)Borkenkäfer schrieb: [ -> ]Wenn man eine Handelsstrategie testet, verwendet man oft zwei Zeitabschnitte. Einen Optimierungszeitraum, in dem man die Handelsstrategie auf ein bestmögliches Ergebnis trimmt und einen daran anschließenden Testzeitraum (out-of-sample Test), in dem man prüft, ob das System hier auch noch funktioniert hätte.
Ich entwickle Portfolio-Strategien, bei denen aus einer großen Menge an Aktien die bestmöglichen ausgewählt und gekauft werden sollen. Damit wäre auch ein anderer out-of-sample Test möglich. Ich könnte die die Auswahlmenge der Aktien mittels Zufallsgenerator in zwei Gruppen teilen. Mit der ersten Gruppe an Aktien erstelle und optimiere ich die Handelsstrategie. Mit der zweiten Gruppe teste ich die Strategie (im selben Zeitraum).
Ist das sinnvoll? Wo liegen die Nachteile?
Hi,
wenn du die Aktienauswahl als Classifier Problem behandeln möchtest (0 = "nicht
bestmöglichen" und 1 = "
bestmöglichen") kann an das so machen. Das ist aber IMHO schwierig, weil Finanzmarktprobleme immer eine zeitliche Komponente haben. Das ist eben keine Image Classification...sondern es handelt sich eben um Zeitreihen. In der Regel zerlegst du das Set in ein train set, validation set und ein test set.
Ob dein Vorgehen valide ist und Sinn macht, hängt dabei von einer Menge Dingen ab:
1) wie bestimmst du "bestmöglich". Aus der Perspektive: zum Zeitpunkt heute (jetzt) wäre es gut gewesen, wenn ich die Aktie damals (Wann? Zu welchem Zeitpunkt?) gekauft hätte? Was ist dann mit all den Aktien die mal eine Erfolgsgeschichte gewesen sind, es jetzt aber nicht mehr sind? Aus der Sicht 2007 wäre es eine tolle Idee gewesen 1995 British Petroil(BP) Aktien zu kaufen. Aus Sicht 2019 nicht so wirklich. Sowas meine ich z.B. mit zeitlicher Komponente.
2) graveyard!!!! Damit das sample nicht einen survivor ship bias hast brauchst du auch alle Aktien, die inzwischen Bankrott sind. Du brauchst auch einen Weg Merger und Aquisitions zu behandeln. Um deinem Algo wirkliches diskriminieren beizubringen brauchst du auch Verlierer.
3) Dein Test Set muss wirklich zufällig sein. Auch bezüglich der zeitlichen Komponente (wie lange gibt es die Aktie schon). . Und es muss sicher sein, das du keinen forward looking bias über die verwendeten features (variablen zur Auswahl) einbaust.
4) Ein simpler train/test split sagt nicht immer das aus was man denkt. Ein Cross Validation (auf jeden Fall machen!!) auf dem train set kann zwarhelfen eine Überoptimierung zu vermeiden und dich für das Verhalten des Modells auf dem Test Set (out of sample) vorzubereiten. Aber das reicht IMO noch nicht. Ich rate dringend sich mit Bayesianischen Ansätzen auseinanderzusetzen und das Lernverfahren auf die Robustheit zu prüfen (wenn du train/test neu splittest, verhält sich das Modell noch immer so?). Ich bin bisher mit einer Mischung aus Randomisierung von Test und Train, Monte Carlo Simulationen und Bayesian Zeugs gut zurecht gekommen.
5) Bist du sicher, dass die Auswahlkriterien (features) stationär sind, sich also über die Zeit nicht verändern?
und und und ....
Man muss auch mega diszipliniert sein. Du lässt das auf dem train Test laufen...optimierst auf dem Validierungs Set....und dann schaust du auf den Test....und es ist nix. Im Prinzip hast du dein Datenset verbrannt.
Die simplen Back Test sind in der Regel nutzlos.....