Donnerstag, 18. April 2024, 22:21 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.

JB Morgan

unregistriert

1

Freitag, 20. Mai 2005, 18:23

Neuronales Netz für den Dax-Future mit Ausreißerdämpfung

Hallo,

ich habe mal folgendes neuronales Netz auf Basis des Dax-Futures erstellt.

Neuronales Netz

Name: Dax_Future_01_NN 1-Tagesprognose
Kurzname: Dax_Future_01_NN
Info:
Angelegt am: 28.12.2003 11:10:48
Komprimierung: Täglich
Trainiert am: 20.05.2005 17:06:03
Trainierte Titel: DE: DAX-Future

**** Output (Prognoseziele) ****
1) Berechnung:
Const Diff: 3;
Calc Basis: Close;
Calc Wertänderung: If(ROC(Basis,1,%)>Diff,Diff,If(ROC(Basis,1,%)<-Diff,-Diff,ROC(Basis,1,%)));
Ref(Wertänderung,1)
Formel:
Const Diff: 3;
Calc Basis: Close;
Calc Wertänderung: If(ROC(Basis,1,%)>Diff,Diff,If(ROC(Basis,1,%)<-Diff,-Diff,ROC(Basis,1,%)));
Ref(Wertänderung,1)

**** Verwendete Inputs ****
1.) Input 1:
Calc Daten_01: MOM(Close, 10) / MOM("US: Nasdaq Composite", Close, 10);
Calc Daten_02: ROC(Daten_01, 1, %);
Calc Daten_03: (Close - LLV(Close, 10)) / (HHV(Close, 10) - LLV(Close, 10));
Calc Daten_04: (Close + High + Low) / 3;

Ref(Daten_01, 0);
Ref(Daten_01, -1);
Ref(Daten_01, -2);
Ref(Daten_01, -3);
Ref(Daten_01, -4);
Ref(Daten_01, -5);
Ref(Daten_01, -6);
Ref(Daten_01, -7);
Ref(Daten_01, -8);
Ref(Daten_01, -9);

Ref(Daten_02, 0);
Ref(Daten_02, -1);
Ref(Daten_02, -2);
Ref(Daten_02, -3);
Ref(Daten_02, -4);
Ref(Daten_02, -5);
Ref(Daten_02, -6);
Ref(Daten_02, -7);
Ref(Daten_02, -8);
Ref(Daten_02, -9);

If(Daten_03 > 0.2, 1, If(Daten_03 < 0.8, -1, 0));

2 * Daten_04 - Low;
Daten_04 + (High - Low);
2 * Daten_04 - High;
Daten_04 - (High - Low);


**** Architektur ****
Reduktionsschicht: - keine -
Hiddenschicht: 3 Hidden-Units

Inputrekonstruktion: Nein

Linearer Output: Nein

**** Training ****
Bewertungsmethode: Crossvalidation mit 10 Samples
Mindest-Epochen: 100
Max.-Epochen: 5000
Lernversuche: 1
Bestes Netz speichern: Ja


**** Trainingsergebnis ****
Lernepochen: 114

Ergebnisse im Trainingszeitraum:
Start: 13.12.1996
Ende: 06.09.2002
Absolute Abweichung: 1,1588
Quadratische Abweichung: 2,0932
Prozentuale Abweichung: 131,66%
Treffer: 58,70%
Korrelation: 0,25
Trivial-Test: 0,68
Random-Walk-Test: 0,40


Crossvalidation-Ergebnisse:
Start: 13.12.1996
Ende: 06.09.2002
Absolute Abweichung: 1,3366
Quadratische Abweichung: 2,6902
Prozentuale Abweichung: 177,20%
Treffer: 50,75%
Korrelation: 0,03
Trivial-Test: 0,76
Random-Walk-Test: 0,44


Ergebnisse im Kontrollzeitraum:
Start: 07.09.2002
Ende: 13.05.2004
Absolute Abweichung: 1,3641
Quadratische Abweichung: 2,8478
Prozentuale Abweichung: 146,35%
Treffer: 54,36%
Korrelation: 0,12
Trivial-Test: 0,70
Random-Walk-Test: 0,40

Systembeschreibung:

Beschreibung für System 'DAX_FUTURE_01_NN'
Uhrzeit: 20.05.2005 17:43:11
Angelegt am: 28.12.2003 12:57:30
Zuletzt bearbeitet: 20.05.2005 17:30:42
Komprimierung: Täglich

***** Regeln ******

Enter Long:
Cross(NN_01, NN_Linie, 1) = 1

Exit Long:
0

Enter Short:
Cross(NN_01, -NN_Linie, 1) = -1

Exit Short:
0

Übergreifende Definitionen:
Const NN_Linie: 0.2;
Global Calc NN_01: Dax_Future_01_NN(O);




***** Optimierung *****

Start: 13.12.1996
Ende: 06.09.2002

Optimierte Titel:
DE: DAX-Future

Optimierungskriterien:
Maximiere 'Sharpe Ratio', Gewichtung: 1
Maximiere 'Profit-Ratio zu Buy/Hold', Gewichtung: 1
Maximiere 'Bestimmtheitsgrad der Steigung', Gewichtung: 1

GA-Einstellung: Optimiere maximal 750 Generationen mit 15 Eltern und 100 Nachkommen.

***** Test-Einstellungen *****

Positionen: Long+Short
Enter-Basis: Open
Delay: 1
Exit-Basis: Open
Delay: 1
Buy/Hold-Basis: Close
Trade-Mindestdauer: 0
Out-Mindestdauer: 0
Startkapital: 2500 €
Margin: 100%
Risikofreie Zinsen 0,3
Hebel: 15
High/Low-Kurse zur Verlustberechnung verwenden!
Entry-Gebühren: 9,9 €
Exit-Gebühren: 9,9 €
Slippage: 1%
Portfolio Zinssatz: 2,75
Risikotoleranz: 25
Money-Manag. Immer Startkapital
Kein Kapitalmangel-Stop
***** Optimierungs-Report *****

Kein Optimierungsergebnis vorhanden

Systemergebnis Optimierung

Testergebnis von System 'DAX_FUTURE_01_NN'
Datum 20.05.2005 18:19:03

Getesteter Titel: DE: DAX-Future
Ergebnis im Optimierungszeitraum

System Start 13.12.1996
System Ende 06.09.2002
Bezahlte Gebühren 4.732,18 €
Einnahmen aus Zinsen 501,11 €
Getestete Perioden 1444
Perioden mit Trades 99,7%
Anzahl aller Trades 239
Anzahl Long Trades 120
Anzahl Short Trades 119
Anzahl Trades/Jahr 41,7
Profitable Trades (%) 54,81%
Profitable Long Trades (%) 59,17%
Profitable Short Trades (%) 50,42%
Durchschn. Trade-Länge 6,03
Netto-Profit 66.518,63 €
Buy/Hold-Profit 506,58 €
Durchschn. Return 276,22 €
Max. realisiertes Kapitalrisiko -6.944,03 €
Max. Einzelgewinn 7.737,67 €
Max. realisierter Einzelverlust -2.509,90 €
Durchschn. Einzelgewinn 1.283,10 €
Durchschn. real. Einzelverlust -945,08 €
Summe aller Einzelgewinne 168.086,30 €
Summe aller Einzelverluste -102.068,70 €
Durchschn. Länge der Gewinnserien 2,08
Durchschn. Länge der Verlustserien 1,71
Längste Serie mit Gewinntrades 7
Längste Serie mit Verlusttrades 5
Profitfaktor 1,65
Sharpe Ratio 1,24
Max. Perioden bis zum neuen Kapitalhoch 135
Max. Perioden in Verlustzone 1
Bestimmtheitsgrad der Steigung 0,950

Systemergebnis Kontrolle

Testergebnis von System 'DAX_FUTURE_01_NN'
Datum 20.05.2005 18:20:13

Getesteter Titel: DE: DAX-Future
Ergebnis im Kontrollzeitraum

System Start 09.09.2002
System Ende 13.05.2004
Bezahlte Gebühren 1.049,40 €
Einnahmen aus Zinsen 67,39 €
Getestete Perioden 424
Perioden mit Trades 99,3%
Anzahl aller Trades 53
Anzahl Long Trades 27
Anzahl Short Trades 26
Anzahl Trades/Jahr 31,6
Profitable Trades (%) 66,04%
Profitable Long Trades (%) 62,96%
Profitable Short Trades (%) 69,23%
Durchschn. Trade-Länge 7,94
Netto-Profit 25.420,44 €
Buy/Hold-Profit 212,11 €
Durchschn. Return 478,36 €
Max. realisiertes Kapitalrisiko -4.267,82 €
Max. Einzelgewinn 7.267,28 €
Max. realisierter Einzelverlust -2.509,90 €
Durchschn. Einzelgewinn 1.322,75 €
Durchschn. real. Einzelverlust -1.163,50 €
Summe aller Einzelgewinne 46.296,13 €
Summe aller Einzelverluste -20.943,06 €
Durchschn. Länge der Gewinnserien 3,18
Durchschn. Länge der Verlustserien 1,50
Längste Serie mit Gewinntrades 6
Längste Serie mit Verlusttrades 4
Profitfaktor 2,21
Sharpe Ratio 0,29
Max. Perioden bis zum neuen Kapitalhoch 83
Max. Perioden in Verlustzone 25
Bestimmtheitsgrad der Steigung 0,904

Systemergebnis unbekanter Zeitraum

Testergebnis von System 'DAX_FUTURE_01_NN'
Datum 20.05.2005 18:22:16

Getesteter Titel: DE: DAX-Future
Ergebnis mit allen vorliegenden Daten

System Start 14.05.2004
System Ende 19.05.2005
Bezahlte Gebühren 376,20 €
Einnahmen aus Zinsen 8,83 €
Getestete Perioden 269
Perioden mit Trades 99,3%
Anzahl aller Trades 19
Anzahl Long Trades 10
Anzahl Short Trades 9
Anzahl Trades/Jahr 18,2
Profitable Trades (%) 57,89%
Profitable Long Trades (%) 70,00%
Profitable Short Trades (%) 44,44%
Durchschn. Trade-Länge 14,05
Netto-Profit 8.051,53 €
Buy/Hold-Profit 162,23 €
Durchschn. Return 423,30 €
Max. realisiertes Kapitalrisiko -1.267,69 €
Max. Einzelgewinn 4.152,76 €
Max. realisierter Einzelverlust -1.268,44 €
Durchschn. Einzelgewinn 957,55 €
Durchschn. real. Einzelverlust -311,29 €
Summe aller Einzelgewinne 10.533,00 €
Summe aller Einzelverluste -2.490,31 €
Durchschn. Länge der Gewinnserien 1,83
Durchschn. Länge der Verlustserien 1,60
Längste Serie mit Gewinntrades 4
Längste Serie mit Verlusttrades 3
Profitfaktor 4,23
Sharpe Ratio 2,09
Max. Perioden bis zum neuen Kapitalhoch 66
Max. Perioden in Verlustzone 9
Bestimmtheitsgrad der Steigung 0,870


Bei einem Prognoseziel für die prozentuale Wertänderung in einer Periode ohne Ausreißerdämpfung läßt sich das Netz nicht optimieren. Nimmt man jedoch als Output die prozentuale Wertänderung in einer Periode mit +/- 3% Ausreißerdämpfung an, so ergibt sich eine recht ordentliche Kapitalkurve. Mit Ausreißerdämpfung meine ich, daß große prozentuale Wertänderung begrenzt werden auf z.B. +/- 3% um damit Sonderereignisse wie z.B. Terroranschläge nicht überzubewerten.

Ich habe es nur auf das Prognoseziel angewendet. Wahrscheinlich wäre es für die Optimierung des NN günstig dies auch bei den Inputs durchzuführen. Hat jemand ähnliche Erfahrungen gemacht? Ich möchte jetzt die Rohzeitreihen (Dax-Future, Nasdaq etc.) bereinigen, so das diese Ausreißer bei Berechnungen wie z.B. beim ROC("US: Nasdaq Composite", Close, 10) nicht mehr auftreten. Wie könnte dies durchgeführt werden?
»JB Morgan« hat folgende Bilder angehängt:
  • Bild1.png
  • Bild2.png
  • Bild3.png

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »JB Morgan« (20. Mai 2005, 19:58)


JB Morgan

unregistriert

2

Freitag, 20. Mai 2005, 23:29

RE: Neuronales Netz für den Dax-Future mit Ausreißerdämpfung

Habe mal Versucht über folgende Formel:

Calc Daten:
If(ROC(Close, 1, %) > 3, Ref(Close, -1) * 1.03, If(ROC(Close, 1, %) < -3, Ref(Close, -1) * 0.97, Close));

ROC(Daten, 1, %)


die Rohzeitreihe des Dax-Futures von den Ausreißern zu bereinigen. Leider sind dann noch einige Ausreißer, sobald der ROC darauf berechnet wird zu erkennen. Erkennt jemand meinen Denk bzw. Formelfehler, oder liegt es evtl. sogar an den Datensatz z.B. fehlende Kurse?
»JB Morgan« hat folgendes Bild angehängt:
  • Bild1.png

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Samstag, 21. Mai 2005, 00:22

RE: Neuronales Netz für den Dax-Future mit Ausreißerdämpfung

Hallo Jörg,

in Investox ist standardmäßig schon so was ähnliches eingebaut:

Die logarithmische Dämpfung kann sinnvoll eingesetzt werden, wenn es darum geht, große Schwankungen von Werten abzumildern. Auf diese Weise kann das „Auflösungsvermögen", das heißt die Darstellung von kleinen Werten verbessert werden (zum Beispiel als Methode der Vorverarbeitung der Daten für Neuronale Netze). Sinnvoll ist der Einsatz aber nur dann, wenn der absolute Maßstab der Werte nicht relevant ist.

Schreibweise

Dämpfung(Daten)

Beispiel

Dämpfung(Close)

Viele Grüße
Torsten

PS:
Der unbekannte Zeitraum sieht im Chart gut aus. Mir scheint nur der NN-Output etwas zu sehr zu "schwimmen".

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »sten« (21. Mai 2005, 10:19)


Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

4

Montag, 23. Mai 2005, 10:40

RE: Neuronales Netz für den Dax-Future mit Ausreißerdämpfung

Hallo,

die Formel ist für den gewünschten Zweck eher nicht geeignet, denn sie liefert z.B.

100 -> 100
110 -> 103
111 -> 111(!)

Sinnvoller ist es hier wohl, die Dämpfung oder den Filter direkt auf die ROC anzuwenden.

Viele Grüße
Andreas Knöpfel

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

5

Montag, 23. Mai 2005, 12:21

RE: Neuronales Netz für den Dax-Future mit Ausreißerdämpfung

Hallo Herr Knöpfel,

ich würde die Dämpfung wie folgt anwenden.

Beispiel: Ausgangsberechnung Daten_01
Calc Daten_01: MOM(Close, 10) / MOM("US: Nasdaq Composite", Close, 10);

meine ersten Überlegung war die Datenreihe so zu Dämpfen:
Calc Daten_01: Dämpfen(MOM(Close, 10) / MOM("US: Nasdaq Composite", Close, 10));

Wäre das so okay?
Danke.

Viele Grüße
Torsten

Adrian

unregistriert

6

Montag, 23. Mai 2005, 15:15

Hallo,

vielleicht geht auch folgendes:

ABS(ROC(Close, 1, %)), 2)<3

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Montag, 23. Mai 2005, 22:13

Hallo Adrian,

ABS(ROC(Close, 1, %)), 2)<3 ... Sorry Adrian aber die 2 kann ich nicht zuordnen?

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (23. Mai 2005, 22:24)


sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

8

Montag, 23. Mai 2005, 22:23

Hallo,

ich habe mal die verscheidenen Dämpfungsvarianten und noch eine zusätzliche gegenüber gestellt.
Die Sache hat mir einfach keine Ruhe gelassen.

Viele Grüße
Torsten
»sten« hat folgende Bilder angehängt:
  • 050523_verschiedene_Dämpfungsvarianten3.gif
  • 050523_verschiedene_Dämpfungsvarianten4.gif

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »sten« (23. Mai 2005, 22:34)


Adrian

unregistriert

9

Dienstag, 24. Mai 2005, 04:17

Hi,

richtig ist natürlich:
ABS(ROC(Close, 1, %)), 1)<3

Hab mich vertippt, sorry! :baby:

JB Morgan

unregistriert

10

Dienstag, 24. Mai 2005, 08:25

Hallo Adrian,

die Formel "ABS(ROC(Close, 1, %)), 1)<3" kann ich bei mir so nicht eingeben. Den unklaren bereich habe ich fett markiert. Vofür steht die 1 (Anzahl Perioden?). Ich benutze Investox Version 3.7.14. Hat sich da was vielleicht in der neuen Version geändert.

Jörg

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

11

Dienstag, 24. Mai 2005, 08:42

Hallo,

nein geändert hat sich nichts! Versuch es mal damit:

ABS(ROC(Close, 1, %))

und als binärer Wert:

ABS(ROC(Close, 1, %))<3

Ich weiss allerdings nicht ob Adrian noch etwas anderes mit der formel ausdrücken wollte! Soll das rauschen der gesamten Zeitreihe unterdrückt werden oder nur an Extrempunkten (Krisen,Kriege,ect)?
Happy Trading

JB Morgan

unregistriert

12

Dienstag, 24. Mai 2005, 12:27

Hallo Udo,

es sollen die Extrempunkte (Kriesen, Kriege usw.) garnicht mehr in der
Rohzeitreihe z.B. Dax-Future enthalten sein. Man muss wahrscheinlich eine Mehrfachbereinigung durchführen, da an meheren Tagen hintereinander Wertänderung von +/-3% aufgetreten sind.

Habe daher mal folgendes probiert:

Calc Daten:
If(ROC(Close, 1, %) > 3, Ref(Close, -1) * 1.03, If(ROC(Close, 1, %) < -3, Ref(Close, -1) * 0.97, Close));

Calc Daten_01:
If(ROC(Daten, 1, %) > 3, Ref(Daten, -1) * 1.03, If(ROC(Daten, 1, %) < -3, Ref(Daten, -1) * 0.97, Daten));

.
.
.

Calc Daten_07:
If(ROC(Daten_06, 1, %) > 3, Ref(Daten_06, -1) * 1.03, If(ROC(Daten_06, 1, %) < -3, Ref(Daten_06, -1) * 0.97, Daten_06));

ROC(Daten_07,1,%)

Dann sind alle Wertänderungen > 3% und < -3% verschwunden, aber irgendwie gefällt mir diese Art der Bereinigung von Kriesen, Kriege usw. nicht. Probleme wird es dann wohl geben wenn z.B. 5x hintereinader eine Wertänderung von z.B. 4% auftreten, wie sollte man es dann auf max. 3% begrenzen damit die Zeitreihe nicht zu sehr verfälscht wird?

Hintergrund ist eigentlich das ich extreme Wertänderungen für die Berechnung in einem NN nicht berücksichtigen möchte, aber trotzdem wertemäßig die relevanten Daten nicht verändert werden sollen wie es z.B.
bei dem Indikator "Dämpfen" der Fall ist. Ich möchte es deshalb auf die
Rohzeitreihe anwenden, da sich andere Indikatoren wie z.B. MOM, RSI etc. auf die Rohzeitreihe beziehen. Würden die Berücksichtigung der Extremwerte erst beim Indikator erfolgen, dann wäre der Extrmewert bereits in den Indikator mit eingeflossen und es müßte für jeden eingesetzten Indikator einzeln der Extremwert herausgefiltert werden. Wie seht ihr das?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »JB Morgan« (24. Mai 2005, 19:11)


Adrian

unregistriert

13

Dienstag, 24. Mai 2005, 13:59

Hallo,

ich bin hier selbst total durcheinander. Ich habe das bei mir rauskopiert:

(Ref(ABS(ROC(Close, 2, %)), 2)<2.5)

Das, was unklar war, bezieht sich noch auf den Ref-Befehl. Also wäre die Formel:

ABS(ROC(Close, 1, %))<3

also so, wie Udo es geschrieben hat.