Kursprognose-Ansätze und Optimierungen
Inhaltsverzeichnis:
Folgende Modelle und Optimierungen sind die Herleitung für die im Kursprognose-Addon genutzten optimalen Setups. Diese sind vorkonfiguriert und müssen nicht selbst erstellt werden. Es muss nur der Kursprognose-Button im Programm gedrückt werden, eine Entscheidung zur gewünschten konkreten Prognoseart gegeben werden und danach Start gedrückt werden. Die nachfolgende Doku ist damit auch eine interne fortlaufende Dokumentation der Modelle.
Management-Summary
Nachfolgend werden die Maximalwerte aus den Modellen dargestellt auf Basis der Modell-Statistiken in den Validierungsdaten. Die konkrete praktische Vorhersagequalität kann hiervon abweichen, da das Training ausschließlich auf den Trainingsdaten stattgefunden haben, die im Datentraining eingebunden waren (siehe Spalte).
Vorhersage-Zeitraum | Datentraining | Binäre-Vorhersage (Long|Short) | Konkrete Vorhersage in Prozent | Diskrete Vorhersage -3|-2|-1|0|1|2|3 in Prozent | |
---|---|---|---|---|---|
1 | 5 Handelstage | DAX30 von 2005-2018 | 75% Trefferwahrscheinlichkeit in den Validierungsdaten
|
| 43% Trefferwahrscheinlichkeit-Gesamtmodell
|
2 | 10 Handelstage | DAX30 von 2005-2018 | 82% Trefferwahrscheinlichkeit in den Validierungsdaten
|
| 60% Trefferwahrscheinlichkeit-Gesamtmodell
|
3 | 30 Handelstage | DAX30 von 2005-2018 | 90% Trefferwahrscheinlichkeit in den Validierungsdaten
| 77% Trefferwahrscheinlichkeit-Gesamtmodell
|
Datenbasis für die trainierten Netze
Die Datenbasis kommt dabei aus Kursdaten, die über AlphaVantage und/oder Tai-Pan als End-Of-Day-Kursdatenlieferanten aufgebaut sind. Der Datenabruf, -Zusammenführung und Aufbereitung der Berechnungen und Indikatoren erfolgt dabei über ShareHolder.
Der Datenumfang der Trainings-und Lerndaten ist dabei definiert mit:
Aktuell 135 Datenspalten die im ML als Trainingsdaten verarbeitet werden | Beispiel 1 | Beispiel 2 | Beschreibung und Hintergründe | |
---|---|---|---|---|
1 | StockPrice | 4.96 | 3.40 | Asset/Aktienkurs |
2 | Open-Close-Range-Percent-4 | -7.61 | -1.32 | (Close-Open)*100/Close vom betrachten Tag - 4 Tage |
3 | Open-Close-Range-Percent-3 | 0.97 | 1.02 | (Close-Open)*100/Close vom betrachten Tag - 3 Tage |
4 | Open-Close-Range-Percent-2 | 1.92 | -2.11 | (Close-Open)*100/Close vom betrachten Tag - 2 Tage |
5 | Open-Close-Range-Percent-1 | 7.00 | -3.45 | (Close-Open)*100/Close vom betrachten Tag - 1 Tag |
6 | Open-Close-Range-Percent | 1.63 | 1.44 | (Close-Open)*100/Close vom betrachten Tag d.h. Verhältnis der Tages-Bewegungsbreite zwischen Schluss und Eröffnungskurs zum Schlusskurs. Starke Tage mit großen Bewegungen zum Eröffnungskurs können so betrachtet werden |
7 | Volumes-Normalized | 3.25 | 0.73 | Normalisiertes Handelsvolumen des Titels, wobei dieser im Verhältnis zum Durchschnittskurs der letzten 50 Tage betrachtet wird. |
8 | MA-Difference-89 | 0.08 | -0.13 | % Abstand des Schlusskurses zum Gleitenden Durchschnitt mit 89 Tagen (Fibonacci-Reihe) |
9 | MA-Difference-8 | -0.14 | 0.01 | siehe MA-Difference-89 |
10 | MA-Difference-55 | 0.00 | -0.08 | siehe MA-Difference-89 |
11 | MA-Difference-5 | -0.11 | 0.01 | siehe MA-Difference-89 |
12 | MA-Difference-34 | -0.07 | -0.03 | siehe MA-Difference-89 |
13 | MA-Difference-3 | -0.07 | 0.01 | siehe MA-Difference-89 |
14 | MA-Difference-21 | -0.13 | -0.02 | siehe MA-Difference-89 |
15 | MA-Difference-144 | 0.13 | -0.14 | siehe MA-Difference-89 |
16 | MA-Difference-13 | -0.17 | -0.01 | siehe MA-Difference-89 |
17 | High-Low-Range-Percent-4 | 7.61 | 4.14 | (High-Low)*100/Close vom betrachten Tag - 4 Tage Differenz zwischen Hoch-und Tiefstkurs im Verhältnis zum Schlusskurs |
18 | High-Low-Range-Percent-3 | 4.37 | 2.90 | (High-Low)*100/Close vom betrachten Tag - 3 Tage |
19 | High-Low-Range-Percent-2 | 1.92 | 3.09 | (High-Low)*100/Close vom betrachten Tag - 2 Tage |
20 | High-Low-Range-Percent-1 | 14.00 | 4.92 | (High-Low)*100/Close vom betrachten Tag - 1 Tag |
21 | High-Low-Range-Percent | 4.07 | 2.85 | (High-Low)*100/Close vom betrachten Tag |
22 | High-Close-Range-Percent-4 | 0.00 | 0.00 | (High-Close)*100/Close vom betrachten Tag - 4 Tage |
23 | High-Close-Range-Percent-3 | 0.97 | 1.02 | (High-Close)*100/Close vom betrachten Tag - 3 Tage |
24 | High-Close-Range-Percent-2 | 1.92 | 0.98 | (High-Close)*100/Close vom betrachten Tag - 2 Tage |
25 | High-Close-Range-Percent-1 | 7.00 | 0.06 | (High-Close)*100/Close vom betrachten Tag - 1 Tag |
26 | High-Close-Range-Percent | 1.63 | 1.67 | (High-Close)*100/Close vom betrachten Tag |
27 | StockPrices.MA[1d] | 4.96 | 3.40 | Aktienkurs mit der Option (je nach Einstellung im Client) diesen geglättet zur Verfügung zu stellen. Der Wert in Klammern gibt die Anzahl der Tage für die Berechnung der Glättung an. 1d=Keine Glättung |
28 | EMA-Difference-89 | 0.01 | -0.09 | Analog MA nur hier als expotentiell gleitender Durchschnitt. Dieser reagiert heftiger auf kurzfristige Schwankungen als der MA. |
29 | EMA-Difference-8 | -0.11 | 0.00 | siehe EMA-Difference-89 |
30 | EMA-Difference-55 | -0.02 | -0.07 | siehe EMA-Difference-89 |
31 | EMA-Difference-5 | -0.08 | 0.00 | siehe EMA-Difference-89 |
32 | EMA-Difference-34 | -0.07 | -0.04 | siehe EMA-Difference-89 |
33 | EMA-Difference-3 | -0.05 | 0.01 | siehe EMA-Difference-89 |
34 | EMA-Difference-21 | -0.11 | -0.02 | siehe EMA-Difference-89 |
35 | EMA-Difference-144 | -0.02 | -0.12 | siehe EMA-Difference-89 |
36 | EMA-Difference-13 | -0.13 | -0.01 | siehe EMA-Difference-89 |
37 | ISIN | AT0000A0E9W5 | AT0000A0E9W5 | ISIN zur Identifikation des Titels. Dieser Wert ist der Primärschlüssel. Alle Kursdaten für die Berechnung beziehen sich immer auf die Marktdaten mit dem höchsten Handelsvolumen. |
38 | MarktKap | 1.3 | 1.3 | Markt-Kapitalisierung in Mrd. der Heimatwährung |
39 | Date | 38670 | 42023 | Datum |
40 | DayOfWeek | 2 | 2 | Tag der Woche (0=Sonntag) |
41 | CalendarWeek | 46 | 4 | Kalenderwoche im Jahr |
42 | Close-Low-Range-Percent-4 | 7.61 | 4.14 | (Close-Low)*100/Close vom betrachten Tag - 4 Tage |
43 | Close-Low-Range-Percent-3 | 3.40 | 1.89 | (Close-Low)*100/Close vom betrachten Tag - 3 Tage |
44 | Close-Low-Range-Percent-2 | 0.00 | 2.11 | (Close-Low)*100/Close vom betrachten Tag - 2 Tage |
45 | Close-Low-Range-Percent-1 | 7.00 | 4.86 | (Close-Low)*100/Close vom betrachten Tag - 1 Tag |
46 | Close-Low-Range-Percent | 2.44 | 1.18 | (Close-Low)*100/Close vom betrachten Tag |
47 | Forecast[5d].MA[1d].Rounded.ts | -17.00 | 1.00 | % Vorhersagewert [ für X Tage hier 5] gerundet mit [ X Tage hier 1/ Gar nicht] als numerisch gerundet |
48 | Forecast[5d].MA[1d].Rounded.Enum.ts | -3.00 | 1.00 | % Vorhersagewert [ für X Tage hier 5] mit [ X Tage hier 1/ Gar nicht] als Enum-Wert entsprechend der gesetzten Grenzwerte. Defaulteinstellung hier zwischen -3 und 3%. d.h. | Werte | > |Grenzwert | werden zum Grenzwert gleich gesetzt |
49 | Forecast[5d].MA[1d].Normalized.ts | -1.00 | -0.49 | % Vorhersagewert normiert auf Werte zwischen -1 und 1 als Floating-Zahlen |
50 | Forecast[5d].MA[1d].ts | -16.94 | 1.41 | % Vorhersagewert exakt [ für X Tage hier 5] mit [ X Tage hier 1/ Gar nicht] |
51 | Forecast[5d].MA[1d].Binaer.ts | -1.00 | 1.00 | % Vorhersagewert binär d.h. -1, 0 oder 1 [ für X Tage hier 5] mit [ X Tage hier 1/ Gar nicht] 1=steigend 0=seitwärts -1=fallend |
52 | Forecast[30d].MA[1d].Rounded.ts | -6.00 | 9.00 | siehe oben, hier für 30-Tage Vorhersagewerte |
53 | Forecast[30d].MA[1d].Rounded.Enum.ts | -3.00 | 3.00 | siehe oben, hier für 30-Tage Vorhersagewerte |
54 | Forecast[30d].MA[1d].Normalized.ts | -1.00 | 1.00 | siehe oben, hier für 30-Tage Vorhersagewerte |
55 | Forecast[30d].MA[1d].ts | -6.05 | 8.53 | siehe oben, hier für 30-Tage Vorhersagewerte |
56 | Forecast[30d].MA[1d].Binaer.ts | -1.00 | 1.00 | siehe oben, hier für 30-Tage Vorhersagewerte |
57 | Forecast[10d].MA[1d].Rounded.ts | -6.00 | 0.00 | siehe oben, hier für 10-Tage Vorhersagewerte |
58 | Forecast[10d].MA[1d].Rounded.Enum.ts | -3.00 | 0.00 | siehe oben, hier für 10-Tage Vorhersagewerte |
59 | Forecast[10d].MA[1d].Normalized.ts | -1.00 | -0.87 | siehe oben, hier für 10-Tage Vorhersagewerte |
60 | Forecast[10d].MA[1d].ts | -6.45 | -0.32 | siehe oben, hier für 10-Tage Vorhersagewerte |
61 | Forecast[10d].MA[1d].Binaer.ts | -1.00 | 0.00 | siehe oben, hier für 10-Tage Vorhersagewerte |
62 | VolumeNotis.G1.signal | 0.00 | -0.10 | Indikator mit Signalgebung mit >0 für Kauf, <0 für Verkauf, 0 keine Signalgebung. Das Signal schwächt sich dabei über mehrere Tage ab. Beispiel Kaufsignal für 10.10.
Der exakte Wert berechnet sich über den Indikator-Spezifischen Wert der "Verfallszeit" des Signals. Indikatoren werden in Einstellungsgruppen organisiert. Dabei sind die Settings für steigende Märkte (Long) optimiert anders als für fallende Märkte (Short). Daher gibt es verschiedenen Indikatorengruppe, die eine eigene ID haben. Gx im Namen z.B. VolumeNotis.G1.Signal steht für Gruppe-ID=1 in diesem Fall für die Indikatoreneinstellungen der Long-Signal-Einstellungen. G2 wäre hier in diesem Setup für Short-Signal-Einstellungen. |
63 | VolumeNotis.G1.norm | -0.74 | -0.90 | Indikatorenwert |
64 | PosVolIndex.G1.signal | 0.80 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
65 | PosVolIndex.G1.norm | -0.90 | -0.79 | Indikatorenwert |
66 | NegVolIndex.G1.signal | 0.00 | -0.20 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
67 | NegVolIndex.G1.norm | 0.64 | -0.95 | Indikatorenwert |
68 | VolPriceTrend.G1.signal | 0.18 | -0.38 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
69 | VolPriceTrend.G1.norm | -0.99 | -0.75 | Indikatorenwert |
70 | OnBalanceVol.G1.signal | 0.18 | -0.38 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
71 | OnBalanceVol.G1.norm | -0.99 | -0.38 | Indikatorenwert |
72 | ForceIndex.G1.signal | 0.07 | 0.52 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
73 | ForceIndex.G1.norm | 0.71 | 0.71 | Indikatorenwert |
74 | TRWinkel.G1.signal | 0.24 | 0.20 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
75 | TRWinkel.G1.norm | -0.73 | -0.81 | Indikatorenwert |
76 | Aroon.G1.signal | 0.85 | 0.21 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
77 | Aroon.G1.norm | 0.67 | -0.17 | Indikatorenwert |
78 | RWI.G1.signal | 0.85 | 0.12 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
79 | RWI.G1.norm | 0.03 | -0.62 | Indikatorenwert |
80 | RAVI.G1.signal | -1.00 | 0.35 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
81 | RAVI.G1.norm | -0.78 | -0.89 | Indikatorenwert |
82 | DMIADXADXR.G1.signal | 0.27 | -0.45 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
83 | DMIADXADXR.G1.norm | 0.81 | 0.50 | Indikatorenwert |
84 | WilderVol.G1.signal | 0.00 | 0.85 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
85 | WilderVol.G1.norm | -0.56 | -0.87 | Indikatorenwert |
86 | VHF.G1.signal | -0.45 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
87 | VHF.G1.norm | -0.14 | -0.16 | Indikatorenwert |
88 | HistVol.G1.signal | 0.00 | -0.30 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
89 | HistVol.G1.norm | -1.66 | -0.90 | Indikatorenwert |
90 | Standardabweichung.G1.signal | 0.00 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
91 | Standardabweichung.G1.norm | -0.24 | -0.96 | Indikatorenwert |
92 | NewLow.G1.signal | 0.00 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
93 | NewLow.G1.norm | -0.76 | -0.81 | Indikatorenwert |
94 | NewHigh.G1.signal | 0.00 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
95 | NewHigh.G1.norm | -0.70 | -0.84 | Indikatorenwert |
96 | PVT.G1.signal | 0.58 | 0.33 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
97 | PVT.G1.norm | -0.98 | -0.38 | Indikatorenwert |
98 | TSF.G1.signal | 0.00 | 0.88 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
99 | TSF.G1.norm | -0.76 | -0.82 | Indikatorenwert |
100 | PFE.G1.signal | 0.57 | -0.58 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
101 | PFE.G1.norm | 0.52 | -0.01 | Indikatorenwert |
102 | RMI.G1.signal | 0.27 | -0.36 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
103 | RMI.G1.norm | 0.07 | -0.21 | Indikatorenwert |
104 | CCI.G1.signal | 0.21 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
105 | CCI.G1.norm | -0.07 | -0.12 | Indikatorenwert |
106 | TRIX.G1.signal | 0.57 | 0.15 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
107 | TRIX.G1.norm | 0.09 | -0.26 | Indikatorenwert |
108 | MACD.G1.signal | 0.57 | -0.35 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
109 | MACD.G1.norm | -0.17 | -0.04 | Indikatorenwert |
110 | RSL.G1.signal | 0.42 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
111 | RSL.G1.norm | 0.13 | -0.21 | Indikatorenwert |
112 | Coppock.G1.signal | 0.90 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
113 | Coppock.G1.norm | 0.14 | -0.15 | Indikatorenwert |
114 | MFI.G1.signal | 0.80 | -0.10 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
115 | MFI.G1.norm | 0.32 | -0.20 | Indikatorenwert |
116 | DSmS.G1.signal | 0.00 | -1.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
117 | DSmS.G1.norm | 0.47 | 0.18 | Indikatorenwert |
118 | Chaikin.G1.signal | -0.42 | -0.13 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
119 | Chaikin.G1.norm | -0.17 | -0.44 | Indikatorenwert |
120 | Stochastik.G1.signal | 0.13 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
121 | Stochastik.G1.norm | 0.73 | 0.05 | Indikatorenwert |
122 | RSI.G1.signal | 0.20 | -0.58 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
123 | RSI.G1.norm | -0.12 | 0.25 | Indikatorenwert |
124 | MOMROC.G1.signal | 0.29 | -0.75 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
125 | MOMROC.G1.norm | 0.52 | -0.26 | Indikatorenwert |
126 | GDUmsatz.G1.signal | 0.00 | 0.08 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
127 | GDUmsatz.G1.norm | -0.97 | -0.65 | Indikatorenwert |
128 | PSAR.G1.signal | 0.45 | 0.27 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
129 | PSAR.G1.norm | -0.69 | -0.82 | Indikatorenwert |
130 | Bollingerband.G1.signal | 0.85 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
131 | Bollingerband.G1.norm | -0.97 | -0.74 | Indikatorenwert |
132 | Gleitender Durchschnitt.G1.signal | 0.00 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
133 | Gleitender Durchschnitt.G1.norm | -0.73 | -0.82 | Indikatorenwert |
134 | Candlesticks.G1.signal | 0.00 | 0.00 | Indikatorensignal (siehe VolumeNotis.G1.Signal) |
135 | Candlesticks.G1.norm | 0.00 | 0.00 | Indikatorenwert |
Round 5: Optimierungen der Modellnutzung und andere Fragestellungen
Zwischenstand 26.08.2018
Frage | Details | Thesen | Antwort bzw. Ableitungen | |
---|---|---|---|---|
1 | Welcher der Vorhersagemodelle ist für die Praxis optimal, wenn ich den Markt systematisch nach starken Long oder Short-Positionen screenen möchte? | Anhand vom GBM-Modell-Rechnungen Forecast[5d].MA[1d].ts (-Unendlich..Unendlich)
Rounded-Enum[5d] (analog Rounded -3...3)
Binär[5d] (1|0|-1)
Rounded[5d] (-3..3)
Normalized (Wertebereich -1..1)
| Die Ansprüche bzw. Ideen hinter den Modellen sind recht unterschiedlich. Die Thesen dahinter sollten geprüft werden.
|
|
2 | Welcher der Vorhersagemodelle ist für die Praxis optimal, wenn ich nur eine Richtungsvorhersage benötige? | siehe #1 | These: Speziell trainierte Modelle für binäre Vorhersagen sollten verwendet werden | siehe #1 |
3 | Werden die Antworten besser, wenn ich kleinere Kursvorhersage-Tage habe? | Forecast[2d] -GBM-Modell für 2 Tage
Binär[2d]-GBM-Modell für 2 Tage
Forecast[10d] - GBM-Modell
Binär[10d]
Rounded-Enum [10d]
| These: Durch die Zusatzangaben der Candle-Range-Werten (Close-Low, Close-High etc.) sollte eventl. 1-2Tage-Prognose einer 5d-Prognose voraus sein. Zudem ist die Range der möglichen Vorhersagewerte kleiner und damit statistisch automatisch eine bessere Prognose möglich (in der Theorie). | Auswertung für 2 Tage
Wie zu erwarten beginnt der ML-Algo hier kurzfristige Datenspalten wie High-Low-Range, MA-Differenz stärker in die Gewichtung mit aufzunehmen. Auswertung für 10 Tage
Forecast[10d] Binär Rounded-Enum |
4 | Welche Signale und Werte der Indikatoren brauche ich?
| Binäres [5d]Vorhersagemodell 60.15.mit Ausgrenzung aller Indikatoren
Dabei wurden als Daten herausgenommen:
| Die Vorhersage muss deutlich schlechter werden, kann aber mit den MA-Daten und den Candlestick-Daten dennoch ein respektables Ergebnis erreichen in der Theorie. | Nehme ich alle Indikatoren und alle EMA-Werte heraus, kann das System dennoch in einem bestimmten Rahmen eine Einschätzung vornehmen. Hierbei kommt eine interessante Gewichtung heraus mit einer Vorhersagequalität insg. von 60%, die natürlich deutlich unter den 75% in der Gesamtkonstellation liegt. |
5 | Wie gut performt ein Neuronales Netz? | Deep-Learning mit
Rounded-Enum[5d]
Forecast[5d]
| Neuronale Netze sind gut in der Mustererkennung, aber nicht spezialisiert auf die Vorhersage von wahrscheinlichen Mustern. |
|
6 | Welche anderen ML-Algorithmen sind ebenfalls nutzbar neben GBM, DRF für den Kursprognose-Case? | Trainiert auf Forecast Orginalwert mit GBM 100|20 Ergebnis:
XGBoost (nur mit GPU-Support)[5d]
AutoML-GBM[5d]
mit folgenden Einstellungen
Trainiert auf Binär Orginalwert mit GBM 100|20
Stacked-Ensemble[5d]
| Der AutoML-Mechanismus und Experimente könnten noch weitere Subarten der Modelle bzw. Alternativen aufzeigen helfen. |
|
7 | Macht es einen Unterschied die Datenmengen sortiert oder per Zufall zur Verfügung zu stellen? | GBM-60-15-Netz mit 6er-Validierungssätze Auf Binärem Modell[5d] mit Shuffle
Auf Rounded-Enum-Modell[5d] mit Shuffle
|
|
|
8 | Macht es einen Unterschied, ob die Validierungsmenge separat zur Verfügung gestellt wird als Val.hex oder sollte das System selbst shuffeln? | GBM-60-15-Netz mit 6er-Validierungssätze
GBM-60-15-Netz mit kfolds=5 d.h. automatischer Cross-Validierungsdatenverwendung auf den Train-DAX-Werten d.h. OHNE die Validierungsdatensätze wieder einzuschließen
GBM-60-15-Netz mit Split-Daten auf Basis Trainingsdatensatz und 0.75 und 0.25 Val-Daten-Splitt über H2o.
|
|
|
9 | Können die Weighted-Columns helfen d.h. die Gewichtung einzelner Datenfelder? | Test mit weighted-Columns auf Basis "Normalized-Volume" wieder als GBM-60-15-Netz-Rounded-Enum-Forecast[5d]
|
|
|
10 | Optimierungen über die Anzahl der Trees und Depth möglich | GBM-Forecast-Direkt[5d] mit
Ergebnis:
versus (60, 15-System)
GBM-Binär[5d]
versus (60, 15-System), Binär (1|0|-1)
GBM-Rounded-Enum (-3..3)[5d]
versus(60,15-System)
|
|
|
Round 4: Technische Indikatorenoptimierungen in ShareHolder
Zwischenstand 14.08.2018
Kernaussagen:
- Binäre Kursvorhersagen sind mit einem DRM mit 72% (28% Fehlerquote) möglich!
- Mit DRM-Modellen sind bereits 26% exakte Rounded-Enum-Vorhersagen in der Validierung möglich auf -5 bis 5 exakte Einstufungen d.h. -5% als Kursvorhersage wurde korrekt 888x in den Validierungsdaten vorhergesagt und hat damit eine Vorhersagequalität von 52%. -4% allerdings nur von 7%! Achtung: Absolute Kursprognosen >5% werden auf 5% angenommen, was diese statistische Verschiebung auch erklärt. Dennoch kann so gezielt nach Prognosen auf mind. 5% gesucht werden, um Chancen am Markt wahrzunehmen!
- Die Optimierung der Indikatorenparameter bringen deutliche Ergebnisse (+6% Trefferquote Rounded-Enum, +3% Trefferquote Binär)
- DRF-Modelle sind für Quick-Checks durch die schnelle Berechnung gut geeignet. Die GBM-Modelle sollten final verwendet werden!
- Neuronale Netze konnten wiederholt nicht auf eine hinreichende Prognosequalität trainiert werden. Sie bleiben vorerst außen vor.
Achtung folgende Anpassungen wurden vorgenommen:
- Indikatoreneinstellungen in Shareholder erstmal optimiert
- Abstand des Kurses zu den gleitenden Durchschnitten (13, 25, 49, 100) einbezogen
- Zonenwerte werden nur noch als Einzelwert betrachtet mit dem Wertebereich 1..3 und dem Sonderfall 0 (kein Wert)
- Rounded-Enums sind nun auf -5 ... 5 ausgelegt, da dies für das Trading ausreichend erscheint.
Modell-ID | Zeitbedarf | Ignored Columns | nTrees | max_depth | Response-Column | Ergebnis Validation Metrics | Erkenntnisse | |
---|---|---|---|---|---|---|---|---|
1 | DRF-Net10-60nTrees-15-maxDepth-Rounded-Enum | 0min:52s |
| 60 | 15 | Rounded.Enum (5 Tage Kursrognose) | 0.77 Validation-Error | These: Indikatorenoptimierungen bringen weitere Optimierungen und verbessern die Prognosequalität. Die Werte konnten gesteigert werden für ein DRF-Netz mit 60|15|Allen Werte von 0.83 auf 0.77 d.h. um -6% Fehlerquote. Dies ist sehr gut, da die Optimierungen hier noch nicht abgeschlossen sind. |
2 | DRM-Net10-60nTrees-15-maxDepth-Rounded-Enum | 5min:33 |
| 60 | 15 | Rounded.Enum (5 Tage Kursrognose) | 0.74 Validation-Error | These: Indikatorenoptimierungen bringen weitere Optimierungen und verbessern die Prognosequalität. Das GBM kann noch etwas mehr herausholen als die DRF-Modelle Die Prognosewerten können tatsächlich nochmals von 77% Fehlerquote auf 74% (-3%) reduziert werden. Signalgenerierungen haben nun eine ausreichende Relevanz, so dass diese bereits in den vorderen Auswertungsreihen erscheinen (ForceIndex, TRWinkel). Die Moving-Average-(100d)-Analyse scheint ebenfalls mit einzugehen! Die Berechnungszeit ist mit 5min 5x so hoch wie die des DRF-Modells! |
3 | DRM-Net10-60nTrees-15-maxDepth-Bin | 1min:51s |
| 60 | 15 | Binär (5 Tage Kursprognose) | 0.2784 Validation-Error | These: Für binäre Aussagen sind weitere Verbesserungen analog den Rounded-Enum-Vorhersagen möglich. Die Prognosewerten können tatsächlich auf ca. 72% Trefferquote (von 70%) gesteigert werden. Signalgenerierungen haben nun eine ausreichende Relevanz, so dass diese bereits in den vorderen Auswertungsreihen erscheinen (WilderVol, GDUmsatz, RAVI, PVT). Die Moving-Average-(100d)-Analyse geht ebenfalls mit ein! Die Berechnungszeit ist mit 5min 5x so hoch wie die des DRF-Modells! |
4 | Deep-Learning-Net10 | 2min |
| 50 Epochen | hidden | Binär (5 Tage Kursprognose) | 0.52 Validation-Error | These: Erneuter Anlauf mit Neuronalen Netzen Leider bringen auch die erneuten Durchläufe keine Erfolge mit diesem konkreten Setup. Eine Fehlerquote von 52% für einfache Binäraussagen ist nicht wirklich verwendbar! Neuronale Netze bleiben daher vorerst außen vor in den weiteren Betrachtungen! |
Round 3: Gradient Boost Machines - Optimierung nach max-depth, nTrees und Response-Columns sowie Ignored-Columns
Zwischenstand: 13.08.2018
Kernaussagen:
- GBM kann bei binären Modellen eine Trefferquote bis 70% erreichen. Bei Rounded-Enum sind exakte Treffer von 17% möglich (-10..10).
- GBM hat etwas längere Berechnungszeiten, ist aber dem DRF-Modellen überlegen (70% versus 65%)
- 60nTrees und 15depth sind optimal für das Modell-Training (DRF und GBM)
- Für einfache Validierungen kann auf StockPrice, Zones und Kauf/Verkaufs-Signale verzichtet werden. Für Produktionsmodelle sollten diese einbezogen werden, da dies bis zu +2% bei binären Modellen ausmachen in der Trefferquote.
- Die Optimierung der Indikatorenparameter ist zwingend weiter notwendig
Modell-ID | Zeitbedarf | Ignored Columns | nTrees | max_depth | Response-Column | Ergebnis Validation Metrics | Erkenntnisse | |
---|---|---|---|---|---|---|---|---|
1 | GBM-60ntrees-15depth-without-Zones-without-Kauf-Verkauf-.Rounded-Enum | 04min:15s |
| 60 | 15 | Rounded-Enum (5 Tage Kursrognose) | 0.84 Validation-Error | These: Wenn Kauf/Verkauf und Zones herausgenommen wird, wird das GBM-Modell eine Reaktion zeigen. Die Klassifikation ist mit 84% Fehlerquote erstaunlich ähnlich zu den vorherigen Modellen, wenn Kauf/Verkauf und Zonen-Werte herausgenommen wurden. Die Variablen haben zum jeztigen Zeitpunkt daher noch nicht die Bedeutung oder geschickte Wertbelegung oder sind wirklich irrrelevant. |
2 | GBM-60ntrees-15depth-with-Zones-Kauf-Verkauf-.Rounded-Enum | 31min:29s |
| 60 | 25 | Rounded-Enum (5 Tage Kursrognose) | 0.83 Validation-Error-Date-Rate und 0 Training? | These: Die Erhöhung der Entscheidungsbaumtiefe verbessert auch in GBM-Modellen die Prognose-Qualität nur unwesentlich. Auch das GBM kann mit einer Erhöhung der Baumtiefe keine wesentlichen Verbesserungen erreichen. In Produktions-Umgebungen bleibt die Erhöhung aber eine finaler Optimierungsschritt. Das GBM-Modell ist dem DRF-Modell hier nicht überlegen, benötigt aber deutlich mehr Zeit mit 25-depth mit 31min versus 5min. |
3 | GBM-60ntrees-15depth-without-Zones-without-Kauf-Verkauf-.Binaer | 1min:02s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.3152 Error Validation (0.27 für -1 und 0.17 für 1) | These: GBM kann algorithmisch dem DRF überlegen sein GBM ist dem DRF leicht überlegen mit 0.31 zu 0.33 |
4 | GBM-60ntrees-15depth-without-Zones-without-Kauf-Verkauf-+Stockprice-Binaer | 1min:02 |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.3169 Error-Validation StockPrice - 611.36 und 0.0225 | These: Höhe des Kurses könnte bei den Entscheidungsbäume feine Differenzierungen erlauben, da hochpreisige Titel oft auch eine andere Marktkapitalisierung haben Stockprice nicht nennenswert relevant |
5 | 2min:49s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.310 | These: Zonenwerte werden algorithmisch zusätzlich berechnet und erlauben eine normierte Betrachtung der Norminalwerte der Indikatoren und können einen Mehrwert darstellebn. Zones erhöhen die Berechnungsdauer deutlich, minimieren aber das Ergebnis nur minimal und unbedeutend. Die Betrachtung sollte daher umgestellt werden auf nur einen Zonenwert bzw. kann komplett ignoriert werden! | |
6 | 1min:39s |
| 60 | 15 | Binär (5 Tage Prognose) | 0.3116 | These: Konkrete Kauf-und Verkaufssignale helfen die Prognose-Qualität zu erhöhen Signale sind im Gesamtergebnis in diesem Indikatorensetup aktuell noch nicht so relevant wie erwartet. Sie verbessern das Gesamtsystem aber leicht. Hier ist sowohl eine Optimierung der Indikatoren-Setups notwendig, als auch weitere Experimente. | |
7 | Gegencheck | 03min:20s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.3081 | These: Umsomehr Informationen und Daten als Variablen gegeben werden, desto mehr können hier feine Differenzierungen vorgenommen werden. Zusammen mit den Signalen und Zonen kann das Gesamtsystem verbessert werden. Nachfolgend hierzu auch die Variablen-Relevanz, da diese im System in der sortierten Liste doch mehrfach genutzt werden. Bis auf weiteres sollten diese daher mit exportiert werden! Sie können allerdings als Einzel-Signale verwendet werden. Das GBM kann hier mit 0.3 gegenüber 0.35 bei binären Entscheidungen eine deutlich bessere Fehlerquote d.h. 70% versus 65% aufweisen. |
Round 2: Distributed Random-Forest - Optimiert nach nTrees und max-depth
Zwischenstand: 13.08.2018
Kernaussagen:
- Für Model-Trainings haben sowohl die nTrees, als auch die Depth eine relevante Bedeutung auf die Berechnungszeit (scheinbar lineares Zeitmodell). Diese ist aber ohnehin im Minutenbereich.
- Die nTrees können mit einem einmaligen Lauf direkt aus dem Graph heraus optimiert werden. In den Beispielen liegen diese bei 60. In der Defaulteinstellung sind diese 50 von H2o.
- Die Entscheidungsbaum-Tiefe sollte zwischen 10 und 20 liegen
Modell-ID | Zeitbedarf | Ignored Columns | nTrees | max_depth | Response-Column | Ergebnis Validation Metrics | Erkenntnisse | |
---|---|---|---|---|---|---|---|---|
1 | DRF-Net8-200nTrees-10-maxDepth-without-Zones-Rounded-Enum | 2min:33s |
| 200 | 10 | Rounded-Enum (5 Tage Kursrognose) | 0.85 Rate | These: Die Anzahl der nTrees bestimmt die Anzahl der Berechnungsläufe. Bis zu einem bestimmten Grenzwert könnte das Netz verbessert werden. Wie bereits die Deviance-Grafik zeigt ist der Grenzwert bei 60. Eine Erhöhung auf 200nTrees bringt daher tatsächlich keine Verbesserung. Rounded-Enum sind hier einmal als Beispiel verwendet. Die Berechnungszeit erhöht sich von 1:33 auf 2min:33s und ist damit nicht komplett linear. |
2 | DRF-Net8-50nTrees-10-maxDepth-without-Zones-Rounded-Enum | 0min:38s |
| 50 | 10 | Rounded-Enum (5 Tage Kursrognose) | 0.85 Rate | These: Kurzer Gegencheck mit einem erneuten Lauf sollten die Ursprungswerte für die Rate bestätigen. 50nTrees und 10-max-depth zeigt keine nennenswerte Verschlechterung gegenüber 200-ntrees. |
3 | DRF-Net8-60nTrees-5-maxDepth-without-Zones-Rounded-Enum | 0min:19s |
| 60 | 5 | Rounded-Enum (5 Tage Kursrognose) | 0.86 Rate | These: Eine Verkürzung der Tree-Tiefe von 10 auf 5 erhöht die Generalisierungsfähigkeit. Mit 5-max-depth verschlechtert sich die Rate tatsächlich nur minimal. Die Berechnungszeit halbiert sich. |
4 | DRF-Net8-60nTrees-15-maxDepth-without-Zones-Rounded-Enum | 1min:53s |
| 60 | 15 | Rounded-Enum (5 Tage Kursrognose) | 0.83 Rate | These: Leichte Erhöhung der Baumtiefe kann Verbesserungen bringen. Mit 15-max-depth bringt sichtbare Erfolge und wird weiter betrachtet. |
8 | DRF-Net8-60nTrees-25-maxDepth-with-Zones-Rounded-Enum | 5min:53 |
| 60 | 25 | Rounded-Enum (5 Tage Kursrognose) | 0.822 Validation-Error-Data-Rate | These: Erhöhung der Baumtiefe von 15 auf 25 wird bei der Art der Variablen keinen nennenswerten Vorteil mehr bringen. Gleichzeitig wurden die Zonen herausgenommen. In der Tat erhöht sich mit 25-Tiefe hauptsächlich die Berechnungszeit. Die exakte Feld-Trefferquote liegt weiterhin nur bei 18%. Die Zonen zeigen keine ausreichende Relevanz zum jetzigen Zeitpunkt. |
5 | DRF-Net8-60nTrees-15-maxDepth-without-Zones-Binaer | 0min:29s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.35 Error-Validate-Data | These: Verwendung der Baumtiefe von 15 könnte optimtal sein. Zonen werden vorerst herausgenommen, da diese scheinbar nicht ausreichend relevant sind (bei Rounded-Enum-Tests). In der Tat kann mit 60er und 15-depth eine Trefferquote von 65% erreicht werden auf binäre Aussagen! Damit kann man gut weiterarbeiten! |
6 | DRF-Net8-50nTrees-15-maxDepth-without-Zones-Binaer-Minus-CalenderWeek | 0min:28s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.375 Error-Validate-Data | These: In den vorherigen Trainings wurde immer wieder die Kalenderwoche als sehr relevant eingestuft mit 1er-Gewichtungen. Wenn diese Variable herausgenommen wird, sollte das System nicht komplett instabil werden! In der Tat bleiben die Vorhersagewerte hoch mit 63% Trefferquote (zuvor 65%). Die Kalenderwoche sollte jedoch betrachtet werden! |
7 | DRF-Net8-60nTrees-15-maxDepth-with-Zones-Binaer | 1min:13s |
| 60 | 15 | Binär (5 Tage Kursrognose) | 0.33 Error Validate-Data | These: Binäre Aussagen können optimiert werden unter Zunahme aller verfügbaren Daten mit einem scheinbar optimalen Modell-Setup von 60-nTrees und 15depth. In der Tat können die Vorhersagewerte auf 67% Trefferquote (zuvor 65%) gebracht werden, wenn alle Daten verwendet werden (inkl. Zonen). |
Round 1: Distributed Random-Forest - Optimierung auf Response und Ignored Columns
Zwischenstand: 13.08.2018
Kernaussagen:
- Rounded-Enum sind durch die Matrizen-Validierungen gegenüber Rounded zu bevorzugen
- Wenn uneingeschränkte Vorhersagen notwendig sind, dann machen die Orginal-Forecast-Werte Sinn
- Binäre-Vorhersagen sind nutzbar mit >55% .. >80% (je nach Optimierungsgrad)
Modell-ID | Zeitbedarf | Ignored Columns | nTrees | max_depth | Response-Column | Ergebnis Validation Metrics | Erkenntnisse | |
---|---|---|---|---|---|---|---|---|
1 | "DRF-Net8-100nTrees-10-maxDepth-without-Zones-Rounded" | 0:19s |
| 100 | 10 | Rounded (5 Tage Kursrognose) | 16.55 Validate - Deviance | These: Rounded-Kursprognosewerte d.h. gerundete Forecast-Werte für die Kursprognose können verwendet werden Die Abweichung von 16.55 ist noch sehr hoch. Das Modell ist nicht ausbalanciert. Interessant ist hier, dass die Validierungsdaten leicht besser liegen als die Trainingsdaten. Eine 10er-Tiefe des Entscheidungsbaums ist wahrscheinlich zu klein. Beeindruckend ist die sehr gute Performance von 10s, womit schnelle Validierungen auf die Eingabevariablen-Relevanz möglich sind (Quick-Checks). |
2 | "DRF-Net8-100nTrees-10-maxDepth-without-Zones-Rounded-Enum" | 1min:33s |
| 100 | 10 | Rounded-Enum (5 Tage Kursrognose) | 0.85 Error-Rate | These: Rounded-Enum-Werte verringern die Prognosemöglichkeit auf exakt -10..10 d.h. 21 möglichen Vorhersagewerten. Dies erleichtert das Interpretieren als auch das Modell-Training. Durch die Matrizenauswertung bei Enum-Werten ist eine Interpretation leicht möglich. Die Fehlerquote von 85% ist nur auf die exakte Einordnung zu verstehen. Die Richtung wird analog der späteren Binärbetrachtungen mit >75% korrekt vorhergesagt. |
3 | "DRF-Net8-100nTrees-10-maxDepth-without-Zones-Rounded-Normalized" | 0:26s |
| 100 | 10 | Normalized (5 Tage Kursrognose) | 0.147 Validate - Deviance | These: Normalisierte Vorhersagewerte die hier zwischen -10 und 10 auf -1 und 1 normalisiert werden, bringen keinen Vorteil Gegenüber den Enum-Varianten, könnten aber bei der Berechnung eventl. relevant sein und eventl. die Interpretation erleichtern da immer nur zu -1 und 1 der Zahlenbereich betrachtet werden sollte. TBD / Bin mir über die Interpretation noch unsicher. Durch die normierte Betrachtung könnte aber praktisch jedes Modell miteinander verglichen werden. |
4 | "DRF-Net8-100nTrees-10-maxDepth-without-Zones-Rounded-Origin" | 0:21s |
| 100 | 10 | Origin-Forecasts (5 Tage Kursrognose) | 16.48 Validate Deviance | These: Wenn Zahlwerte vorhergesagt werden sollen, kann dies direkt auf die Orginalwerte erfolgen ohne Manipulation. Die Deviance-Werte sind mit 16.48 wie zu erwarten ähnlich den Rounded-Werten (16.55). Hier sollten weitere Tests gemacht werden, ob hier nicht direkt die Origin-Werte bei exakter "offener" Prognose verwendet werden sollten. |
5 | "DRF-Net8-100nTrees-10-maxDepth-without-Zones-Binaer" | 0:16s |
| 100 | 10 | Binär (5 Tage Kursrognose) | 0.45 Error-Rate Validation-Data (0.128 -1, 0.65 -1 und 0.997 - 0) | These: Binärentscheidungen (1-steigend, -1-fallen) sind durch die Art der Entscheidung treffsicherer durch ein Modell abzubilden. Es bleiben dadurch natürlich nur einfache Entscheidungen (long oder short) übrig. Es sollte damit eine >>50% Trefferquote notwendig sein. Die Trefferquote liegt mit 55% tatsächlich über den Soll-Wert. Hier sind weitere Optimierungen sinnvoll. Für Binäre-Optionsschein-Trades ist es bereits ein interessanter Ansatz. |