Dienstag, 16. April 2024, 13:03 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Dienstag, 6. Januar 2015, 19:15

Neue Funktionen V7 - RobIteration

Hallo Hr. Knöpfel,

vielen Dank für die Umsetzung.
Habe es gerade mal manuell durchgeführt und dann mit der automatischen Rob-Iteration und ich bin auf die gleichen Ergebnisse gekommen. Gefallen hat mir auch sehr, dass man quasi live verfolgen kann, wie der Optimierungsalg. arbeitet. Super, schon allein wegen dieser neuen Optimierungsvariante hat sich die V7 für mich gelohnt.

Verbesserungsidee:
Wenn ich das manuell mache, dann schaue ich meistens nicht nur nach einer Optimierungskategorie (z.B. den Nettoprofit), sondern auch noch nach einer 2.Optimierungskategorie (z.B. Profitfaktor). Am liebsten ist mir dann der OptimierungsWert, wo beide Optimierungskategorien ihr Maximum haben. Wenn es verschiedene Werte sind, wäge ich dann ab, wo beide Optimierungsziele möglichst gut erfüllt sind.

Das lässt sich wahrscheinlich schwer implementieren, aber von der Idee her, könnte man in der Maske (siehe Anhang) eine 2.Optimierungskategorie (+ OptZiel: Minimum oder Maxium) angeben und bei jeder Iteration läuft es dann nacheinander über beide Optimierungskategorie in jedem Iterationsschritt.

Das dauert dann zwar länger vom Optimierungslauf, aber die Justierung der OptVariablen wäre dann noch etwas ausgewogener.
Bei ungeschickter (widersprüchlicher) Wahl der Optimierungskategorien besteht dann aber die Einschränkung, das die Optimierung nicht mehr konvergiert. Das müsste man mal austesten.

Ist nur so eine Idee. Vielleicht lässt sich da was machen.

Viele Grüße,
Sten
»sten« hat folgendes Bild angehängt:
  • 150106_RobIteration.jpg

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »sten« (6. Januar 2015, 21:31)


sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

2

Dienstag, 6. Januar 2015, 22:14

PS:
Eine Sache ist mir noch aufgefallen, wenn es mehrere gleichgute Optimierungswerte gibt.
Der Suchalg. scheint immer von links nach rechts zu laufen und nimmt dann den ersten linken Wert (wenn es mehrere Maximas auf einer Höhe gibt).
Vielleicht könnte man bei der Optimierungsvariable im HS mit angeben, ob das linke oder das rechte Maximum genommen werden soll.

Wozu?
* Bei der Justierung von Verluststops verwende ich den kleinsten möglichen Optimalwert -> d.h. hier von --> links optimieren & den kleinsten Wert nehmen, d.h. enger VStop
* Bei der Justierung von Gewinnstops verwende ich den größten möglichen Optimalwert -> d.h. hier von <-- rechts optimieren & den größten Wert nehmen, d.h weiter GStop

ZusatzIdee Erweiterung um Toleranz-Grenze:
* eventuell könnte man auch einen Toleranzwert (z.B. 10%) mit angeben, dann würde bei einer "Optimierung von der rechten Seite" (z.B. bei einem Gewinnstop) ein möglichst großer Stopwert bevorzugt werden, auch wenn dieser bis zu 10% kleiner sein sollte als ein mögliches Maximum auf der anderen Seite

Vielleicht kann man da was machen.
Danke.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »sten« (7. Januar 2015, 00:07)


sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Dienstag, 6. Januar 2015, 23:56

PS2:
Das ist das Ergebnis der automatisch Optimierung, siehe Anhang.
Es ist nicht ganz perfekt, d.h. ich hätte hier nicht das Maximum genommen (was der Alg. korrekt gefunden und justiert hat), sondern einen Wert weiter links (31), weil der Wert auch fast beim Maximum liegt, aber die 31 verspricht robuster zu sein, weil es auf einen Plateau liegt, d.h. die unmittelbaren Nachbarn der 31 "stützen nicht in die Tiefe".

Vielleicht kann man hier noch eine Plateau-Option einbauen (Häckchen), wenn dieses angehackt ist, dann wird nicht "stur" das Maximim selektiert, sondern ein Plateau bevorzugt, wenn der Plateau-Wert nicht schlechter als z.B. 10% ist.
Z.B.:
-das Maximum liegt bei 100, aber es ist ein "einsames Hoch"
-es gibt auch ein Plateau-Maximum bei 95, mit fast gleichhohen Nachbarn, dann würde bei 10%-Toleranz, das Plateau-Maximum selektiert werden
-der Toleranzwert kann vom User, neben den Häckchen mit eingestellt werden

Vorteile:
- mit aktiver Plateau-Option bekommt man zwar nicht das bestmöglichste HS, mit der steilsten KK
- dafür würde es aber sehr viel robuster sein
- und die intelligente Optimierung würde automatisch ablaufen !!!

Vielleicht ist die Idee, so wie beschrieben umsetzbar.
Danke.
»sten« hat folgendes Bild angehängt:
  • 150106_nicht_ganz_optimal.jpg

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Mittwoch, 7. Januar 2015, 10:54

Hallo,

danke für die Beobachtungen. Folgende Hinweise/Vorschläge dazu:
- Mit Anwender-Testergebnissen besteht die Möglichkeit, mehrere Testergebnisse zu kombinieren.
- Auch die Umkehrung eines Testergebnisses (kleinster/größter Wert) ist durch ein Anwender-Testergebnis möglich (einfache Negation des Originalergebnisses).
- Die in V7 vorhandene Möglichkeit zur Glättung des Ergebnisse im Robustheitstest kann man als eine Art von "Plateau-Option" verstehen, da sie die Auswahl von "Plateaus" gegenüber "einsamen Hochs" unterstützt.

Viele Grüße
Andreas Knöpfel

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

5

Mittwoch, 7. Januar 2015, 19:22

Hallo,

vielen Dank für die Hinweise. Diese Art der Kombination der verschiedenen Features hatte ich bisher so noch nicht gesehen gehabt.
Das werde ich ausprobieren. Super.

Viele Grüße,
Sten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

6

Dienstag, 7. April 2015, 00:10

Hallo,

ich habe noch 2 Verbesserungsvorschläge:
1.) Warteschlange für RobIterationen
- ähnlich wie z.B. beim GA, wo man mehrere Task definieren kann und diese in der Warteschlange abgespeichert und diese dann nach und nach abgearbeitet werden
- super wäre es, wenn man RobIterationen aus verschiedenen InvProjekten zur Warteschlange hinzufügen kann
- so kann dann Investox den ganzen Tag automatisiert arbeiten

2.) für jede OptVariable das letzte Robustheitstest-Balkendiagramme mit abpeichern
- also so eine Art History, wo man nach dem durchlaufen der RobIterationen sich die einzelnen Robustheitstest-Balkendiagramme ansehen kann
- in 90% passt die automatische Selektion, aber zum Schluß würde ich gerne noch Feinanpassungen durchführen, z.B. einen kleineren VerluststopWert wählen, wenn dieser nur geringfügig schlechter ist, als der automatisch selektierte
- man könnte prinzipiell auch alle OptVariablen nochmal manuell nachrobusten, aber das dauert wesentlich länger

Vielleicht läst sich da was machen.
Danke.

Viele Grüße,
Sten