Dienstag, 16. April 2024, 17:02 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Samstag, 4. Januar 2014, 01:30

Teilautomatisierung beim Robustheitstest mit Auswertung

Hallo,

für Berufstätige wäre jede Zeitersparnis bei der HS-Entwicklung sehr hilfreich, wie z.B. beim Robustheitstest mit einfacher automatischer Auswertung.

Konkret:
Ich würde gerne alle Optimierungsvariablen eines HS, von oben angefangen, nacheinander von Investox robusten lassen (immer nur ein 1dimensionaler Robustheitstest, das beste Optimierungsergebnis ist dann die Ausgangsbasis für die nächste OptVariablen, usw.).
Als Input bekommt Investox zusätzlich das Optimierungskriterium (z.B. Nettogewinn) und das Optimierungsziel (z.B. Maximim oder Minimum) für jede einzelne OptimierungsVariable.

Den Rest könnte dann Investox automatisch erledigen. Das auf diese sequentielle Art und Weise berechnete Optimierungsergebnis über alle Variablen des HS, wird dann einfach als HS-Kopie_optimiert hinter dem AusgangsHS im Investox-Projekt angehängt.

Das würde den Zeitaufwand für die Entwicklung eines HS, wo man wirklich interaktiv mit Investox arbeitet, ganz drastisch reduzieren. Ich hoffe in der Richtung läst sich was machen, d.h. mehr Automatisierung bei den HS-Entwicklungsabläufen.
Danke.

Viele Grüße,
Sten

PS:
Wie kann Investox automatisch das Maximum (bzw. Minimum) einer OptVariable automatisch ermitteln?
-ist nur ein eindimensionales Array, d.h. alle Werte vergleichen und der größte ist es
-falls es mehrere Maximums gibt, dann das auswählen, wo die Nachbarwerte am höchsten sind, z.B. 87,100,86 und 95,100,90 ... hier wäre das 2.Maximum bei 100 das beste Ergebnis

Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »sten« (4. Januar 2014, 06:47)


klexer

unregistriert

2

Samstag, 4. Januar 2014, 12:27

Anleitung zur Überoptimierung ?

Hallo Sten

nach Maxima zu suchen ist mM nach eine Anleitung zu einer Überoptimierung.
Ich selbst bevorzuge, Flächen zu suchen.
Ein Beispiel: ein Indikator hat die Einstellung 20-120. Dann suche ich mir beim Robustheitstest die Bereiche, die eine möglichst breite Fläche haben. Wenn ich diese definieren kann, schränke ich den Optimierungsbereich ein, z. B auf 50-65. Oder wenn die Fläche sehr homogen ist, fixiere ich sogar den Wert, damit er nicht weiter optimiert werden kann.
Im Übrigen können Spitzen bei einem Indi zu Dellen bei anderen Indis führen.
Beim Robusten eines Handelssystems ist für mich eine Reduzierung oder Fixierung der Parameter sinnvoller als nach Maxima zu suchen.
Schliesslich will ich eine robuste Performance im Realhandel(!) haben und nicht die virtuellen Gewinne mit realen Verlusten beenden.

Bei der Optimierung in Richtung Robustheit habe ich bei meinen Indikatoren die Bandbreiten der Optimierung stark eingeschränkt bzw. fixiert.
von 17 Optimierungsvariablen habe ich mittlerweile 11 fixiert, die Variablen der anderen Parameter wurden stark eingeschränkt, von ursprünglich z.B. 20-150 blieb nur noch 50-70 übrig. Dazu muss ich sagen, dass sich die 17 parameter auf 4 verschiedene Systeme verteilen, 2 long, 2 short. Somit sind pro System von 9 Variablen nur noch 3 stark eingeschränkt optimierbar.
Und es ist sehr sinnvoll, Indikatoren zu eliminieren, die wenig bis keinen Einfluss auf das System haben. Und im Zweifel eher eliminieren. Je weniger desto besser.
Die besten Indikatoren sind aber immer noch die unoptimierbaren, z.B. LastDayPrice, DailyPrice, DailyRange etc.

Das führte dazu, dass bei der Optimierung mit 25 Generationen häufig nach 15 Generationen keine bessere Optimierung mehr gefunden wird.
Das ist robust.

Ich bin es leid, optimierte fantastische Kurven im Realhandel abstürzen zu sehen. In meinen Optimierungskriterien (die ich im übrigen auch von 6 auf 2 reduziert habe) taucht ein Nettoprofit nicht mehr auf.

Und für den Liveeinsatz empfehle ich eine Begrenzung über die Kapitalkurve mittels eines AlltimeHigh minus dem max theoretischen Kapitalrisiko.
Wenn diese Linie durchbrochen wird ist meiner Meinung nach eine Situation aufgetreten, die durch das System nicht mehr profitabel gehandelt werden kann und es muss neu robustet bzw optimiert werden.
Und (optimierte) Systeme haben eine gewisse Lebensdauer.
Grob geschätzt würde ich sagen: 4 Jahre robuste Optimierung sorgen für 4 Monate realistische Gewinnchancen. Danach fängts an zu wackeln.
oder anders formuliert:
bei 600 optimierten Signalen hoffe ich auf ca. 50 robuste Signale. Und mein System (Intraday 1h-Komp, nur 1 trade pro tag) muss mind. 500 Signale erzeugen.
Aber darauf verlasse ich mich nicht, sondern sichere über die KK ab.
Und ich bevorzuge die Mischung aus mehreren fast gleichen Systemen, die im Portfolio für grössere Stabilität sorgen, denn ich weiss immer noch nicht, welches dieser Systeme abstürzen wird, den Indi dafür hab ich immer noch nicht gefunden :-)

igi
»klexer« hat folgende Bilder angehängt:
  • rob-opt System Feb13.PNG
  • rob-opt System Feb13 Portfolio.PNG

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Samstag, 4. Januar 2014, 15:00

Hallo Klexer,

whao, Deine KK sehen sehr gut aus.
Und Danke für Deine ausführliche Antwort.

Zitat

nach Maxima zu suchen ist mM nach eine Anleitung zu einer Überoptimierung.
Ich selbst bevorzuge, Flächen zu suchen.


Prinzipiell stimm ich dem zu, es kommt aber auch auf die Funktion der Variable an. Bei einer Entry-Variable würde ich eine Optimierungsspitze mitunter zulassen, z.B. könnte ein Komp bei 65min eine Spitze ausprägen und bei 64min bzw. 66min viel niedriger liegen und ich würde trotzdem auf die 65min optimieren.
Bei z.B. Stopvariablen bevorzuge ich Flächen, so wie Du schreibst.

Ist kein Problem bei meinem Ansatz, das kann man hier beim:

Zitat

Optimierungsziel (z.B. Maximim oder Minimum)

definieren, z.B. suche das absolute Maximim oder Minimum (kann auch eine einzelne Spitze sein) oder suche einen möglichst hohen bzw. niedrigen Wert auf einer Fläche.

Eigentlich ist die GA-Suche schon sehr gut, aber wenn man ihr zu viele Parameter mit einem zu großen Suchbereich übergibt, dann ist der Algorithmus schnell überfordert. Dadurch das er auch lokale Minimas wieder verlassen kann, ist die Berechnung sehr zeitaufwendig und man weis auch nie, ob es wirklich das beste mögliche Ergebnis ist, was er da gerade gefunden hat.
Im Grunde genommen funktioniert die GA-Suche dann am besten, wenn man das beste Optimierungsergebnis bereits kennt und die Suche so entsprechend konditioniert. ;)

Deshalb verwende ich die GA-Suche nur bei der Ermittlung der optimalen Entry-OptVariablen (weniger OptVariablen, kleinere OptBereiche). Für die Optimierung von Filtern und Stops nutze ich dann im Anschluß den Robustheitstest. Daher die Idee.

Viele Grüße,
Sten

PS:
Eine Einschränkung des OptVariablenbereiches würde natürlich auch bei meiner Optimierungsstrategie (die eher so eine schnelle Gradientenoptimierung ist, mit dem Nachteil in einem lokalen System-Minimum gefangen zu bleiben) weiterhin funktionieren.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »sten« (4. Januar 2014, 15:09)


Norbert

unregistriert

4

Samstag, 4. Januar 2014, 16:25

Hallo,

dem Wow kann ich mich nur anschließen. Hat's vielleicht z.T. auch damit zu tun: (?) Optimal f
Ziemlich interessant.

Gruß
Norbert

klexer

unregistriert

5

Samstag, 4. Januar 2014, 16:29

Hallo Sten
wenn man bei der GA-Suche nicht vorgibt, wo er suchen bzw. optimieren soll, kommt meistens nur Mist raus.
Die Lektion hab ich mittlerweile gelernt.
Ich habe viele Optimierungsläufe gemacht und mir die Daten rausgeschrieben, welche Einstellungen gute Ergebnisse gelifert haben. Wenn ich dann eine Häufung z. B. bei 85 festgestellt habe, habe ich die Parameter eingeschränkt und mich so stückweise vorgearbeitet. Nur mit dem Robustheitstest und 2 Variablen kommt man so nicht ans Ziel, da sich die Variablen ja gegenseitig beeinflussen und das ganze sehr komplex machen. Auch deshalb ist weniger oft besser. Aber es müssen nun mal die richtigen sein, das ist wie Diamanten suchen in der Wüste...

Dein Ansatz: "z.B. könnte ein Komp bei 65min eine Spitze ausprägen und bei 64min bzw. 66min viel niedriger liegen" find ich riskant.
Zumal sich die Zeiten ja immer verschieben, wenn in 65 min komprimiert wird.

Ich setze in meinem System Zeitfenster ein, die signifikante Auswirkungen auf die Performance haben. Jeden Tag darf z.B. nicht vor 19 Uhr gehandelt werden, abhängig z.B von der Vortagesrange.
Ich hab auch mal probiert, die Uhrzeiten an die Wochentage anzupassen, aber das gab zu wenig Signale.
z.B. : ich hab 600 Signale, davon 300 long, 300 short. Dass man long und short-Signale trennen sollte, ist ja bekannt.
die Long und Short haben jeweils nochmals eine Unterteilung, abhängig von der Range, somit je Short bzw long ca. 150 Signale.
Jetzt durch 5 Wochentage geteilt bedeutet das: nur 30 Signale.
Und da wirds mit der Aussagekraft der Signale sehr dünn. Idee super......... das Ergebnis aber war unbrauchbar.
Statistisch relevant sollten mind. 30 Signale vorhanden sein. je mehr desto besser. Ist wie beim Sport: je mehr du trainiert hast, desto höher die Wahrscheinlichkeit, gute Ergebnisse zu erzielen... wenn sich die Umstände bzw Voraussetzungen nicht geändert haben.

Bei der Optimierung mache ich am Anfang immer erst mehrere Durchläufe, um zu sehen, wohin die Reise geht.
ich nehme 25 Optimierungen, 15 Eltern. Dann nehme ich eine gute Version und lass nochmal 25 durchlaufen, dann wieder eine gute Version etc..
Ich habe den Eindruck, dass die Optimierungen danach immer besser werden, denn am Anfang kann er sich ziemlich in die falsche Richtung verirren.

klexer

unregistriert

6

Samstag, 4. Januar 2014, 16:33

Hallo Norbert

Optimal f benutze ich nicht mehr.

ich nehm als Opt-Kriterien nur Systemverhältnis Profit/Kapitalrisiko und Max realisiertes Kapitalrisiko, manchmal auch noch Anzahl Trades, aber letzteres presst machmal zu viele Trades aus dem System, das real nicht unbedingt förderlich ist.

der OoS Bereich ist ab Februar 2013 und man sieht: Ende des Jahres 2013 trat eine Situation auf, die das System nicht profitabel handeln konnte.
Ursache war wohl die sehr geringe Tagesrange während einer Seitwärtsphase. Seitwärtsphasen gab es in den 4 Jahren ja schon öfter, aber nicht mit so einer geringen Range.
Deshalb die Absicherung über die KK.
Das System wird dann auch mit den aktuellen Tick-Daten gefüttert und kann eine weitere "Trainingsvariante" einpflegen.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »klexer« (4. Januar 2014, 16:40)


reinerwein

unregistriert

7

Sonntag, 5. Januar 2014, 22:54

@Klexer

Wow, die Kapitalkurve ist echt fantastisch, auch die anderen Performancedaten!

Wie lange hast Du dafür gebraucht, so ein System hinzubekommen?

Grüße
rw

klexer

unregistriert

8

Montag, 6. Januar 2014, 00:41

Hallo ReinerWein
das waren ziemlich genau schlappe 2 Jahre :-)
und ich denke mal an die tausend Versionen, gezählt hab ich sie nicht, hab auch vieles wieder gelöscht, weil es nicht zielführend war.

Jetzt muss es live genauso laufen, dann wär ich schon zufrieden :-), teils lief es bereits schon live, aber noch mit den alten Systemen und es war profitabel.

schöne Grüße igi

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 331

9

Sonntag, 16. Februar 2014, 09:46

Hallo,

Ich möchte das ursprünglich von Sten aufgebrachte Thema gerne nochmals hochholen. Eine solche Automatisierung wäre auch für mich seeehr zeitsparend, da ich das aktuell alles manuell mache (und nein - es sind nicht 50 Variablen, die unnütz über-optimiert werden...). Von der Funktion her ist sicher einiges denkbar. Eventuell kann Herr Knöpfel ja hier etwas in eine der nächsten Versionen einbauen 8)

Viele Grüße
-dubi