Skip to main content

Kursprognose-Ansätze und Optimierungen

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.

image-1655733647293.png

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

  • Long: 88%
  • Short: 80%


  • Durschschnittlicher Absoluter Fehler (MAE): 2.2%
  • R2: 0.504
  • MSE: 10.27

43% Trefferwahrscheinlichkeit-Gesamtmodell

  • Korrekt <=-3%: 70%
  • Korrekt >=3%: 77%
2 10 Handelstage DAX30 von 2005-2018

82% Trefferwahrscheinlichkeit in den Validierungsdaten

  • Long: 93%
  • Short: 85%


  • Durschschnittlicher Absoluter Fehler (MAE): 2.29%
  • R2: 0.72
  • MSE: 10.80

60% Trefferwahrscheinlichkeit-Gesamtmodell

  • Korrekt <=-3%: 89%
  • Korrekt >=3%: 95%
3 30 Handelstage DAX30 von 2005-2018

90% Trefferwahrscheinlichkeit in den Validierungsdaten

  • Long: >90%
  • Short: >90%

77% Trefferwahrscheinlichkeit-Gesamtmodell

  • Korrekt <=-3% >90%
  • Korrekt >=3% >90%


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.
  • 10.10. = 1 (Kaufsignal)
  • 11.10. = 0.8 (Kaufsignal abgeschwächt)
  • 12.10. = 0.2 (Kaufsignal expotentiell abgeschwächt)
  • 13.10. = 0 (Kein Signal mehr)

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)

  • MSE 10.273237
  • RMSE 3.205189
  • nobs 15419
  • r2 0.504696
  • mean_residual_deviance 10.273237
  • mae 2.226095

Rounded-Enum[5d] (analog Rounded -3...3)

  • MSE 0.548741
  • RMSE 0.740771
  • nobs 15419
  • r2 0.866098
  • logloss 1.629311
  • mean_per_class_error 0.682464

Binär[5d] (1|0|-1)

  • MSE 0.236146
  • RMSE 0.485949
  • nobs 15419
  • r2 0.729077
  • logloss 0.728397
  • mean_per_class_error 0.434816

Rounded[5d] (-3..3)

  • MSE 10.365455
  • RMSE 3.219543
  • nobs 15419
  • r2 0.501119
  • mean_residual_deviance 10.365455
  • mae 2.249900

Normalized (Wertebereich -1..1)

  • MSE 0.301726
  • RMSE 0.549296
  • nobs 15419
  • r2 0.426001
  • mean_residual_deviance 0.301726
  • mae 0.451962

Die Ansprüche bzw. Ideen hinter den Modellen sind recht unterschiedlich. Die Thesen dahinter sollten geprüft werden.

  • Forecast.ts : Orginalvorhersage mit allerdings auch zugelassenen freien Werten
  • Rounded-Enum: Klassifikation der Zahlenwerten im Bereich -3..3 d.h. 7 Werten mit 0 hilft hier weiter
  • Rounded: Vereinfacht den Modellen die Berechnung da die Forecast-Werte gerundet werden und Extrempunkte vermieden werden
  • Binär: Wenn nur Steigend oder Fallend vorausgesagt werden sollen, dann sollte das Netz auch nur das Lernen müssen. Binäre Vorhersagen sind einfacher uns sollte treffsicherer sein.

(Info) Wenn nur Long|Short-Signale generiert werden sollen, dann sollten auch Binäre-Forecasts durchgeführt werden. Diese haben ein Mean-Per-Class-Error von nur 0.43 bzw. sind sehr treffsicher mit insg. fast 73%.

image-1655733659597.png

(Info) Wenn konkretere Chancen gesucht werden sollen, d.h. starke Anstiege oder starke Verluste dann sind die Forecast den Rounded etwas überlegen (MAE und R2 ähnlich).

(Info) Die normalisierten Werte zeigen keine verbesserte Prognosequalität und können perspektivisch generell "deaktiviert" werden.

(Info) Die Rounded-Enum haben einen Mean-per-Class-Error von 0.68. Bei genaurer Betrachtung sind aber ausgerechnet die gewünschten Extrempunkte sehr gut in den Vorhersagen und sollten daher gezielt verwendet werden. D.h. Rounded-Enum mit +3 oder -3-Werten sind sehr interessant mit hohen Trefferquoten (-3: 70%, +3: 77%)

image-1655733664662.png

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

  • MSE 6.329485
  • RMSE 2.515847
  • nobs 15419
  • r2 0.190371
  • mean_residual_deviance 6.329485
  • mae 1.737813

Binär[2d]-GBM-Modell für 2 Tage

  • MSE 0.351165
  • RMSE 0.592592
  • nobs 15419
  • r2 0.556843
  • logloss 1.098272
  • mean_per_class_error 0.508951

Forecast[10d] - GBM-Modell

  • MSE 10.804908
  • RMSE 3.287082
  • nobs 15419
  • r2 0.720063
  • mean_residual_deviance 10.804908
  • mae 2.293830

Binär[10d]

  • MSE 0.155766
  • RMSE 0.394672
  • nobs 15419
  • r2 0.827971
  • logloss 0.658212
  • mean_per_class_error 0.384103

Rounded-Enum [10d]

  • MSE 0.378345

  • RMSE 0.615098

  • nobs 15419

  • r2 0.911514

  • logloss 1.604135

  • mean_per_class_error 0.663119

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

(Info) Das Training zeigt deutliche Verbesserungen für 2d-Vorhersagen, was aber schlicht an der nun verdichteten Vorhersage-Range liegt. Damit werden die absoluten Fehler-Abstände natürlich auch kleiner bei Forecast-Modellen. Prüft man gleichzeitig das Binäre-GBM-Modell fällt die Vorhersage-Qualität sogar deutlich ab von 75% (bester Wert) auf hier 56%.

(Warnung) Auf 2d-Vorhersagen sollte daher mit dem Modell verzichtet werden!

image-1655733670128.png

Wie zu erwarten beginnt der ML-Algo hier kurzfristige Datenspalten wie High-Low-Range, MA-Differenz stärker in die Gewichtung mit aufzunehmen.

image-1655733674224.png

Auswertung für 10 Tage

(Info) Das Training für einen verlängerten Zeitraum von 10d zeigt, dass die Daten sehr stark auf Indikatoren verschoben werden. Gleichzeitig wird eine extrem hohe Sicherheit von >90% erreicht für richtig Long-Vorhersagen und ca. 85% für Short-Positionen in der Testdatenmenge.

(graue Glühbirne) Damit ist die Gesamttrefferrate bei 82% und steigt deutlich gegenüber der 5 Tage Prognose an!

Forecast[10d]

image-1655733679606.png

Binär

image-1655733684575.png

Rounded-Enum

image-1655733688683.png

4

Welche Signale und Werte der Indikatoren brauche ich?

  • Wie verhält sich das System, wenn ich alle Indikatoren entferne?
  • Wie verhält sich das System, wenn ich KEINE Signalgebungen durch die Indikatoren zulasse?

Binäres [5d]Vorhersagemodell 60.15.mit Ausgrenzung aller Indikatoren

  • MSE 0.311878
  • RMSE 0.558461
  • nobs 15419
  • r2 0.642478
  • logloss 0.914897
  • mean_per_class_error 0.544829


Dabei wurden als Daten herausgenommen:

  • ignored_columns StockPrice, MA-Difference-89, MA-Difference-8, MA-Difference-55, MA-Difference-5, MA-Difference-34, MA-Difference-3, MA-Difference-21, MA-Difference-144, MA-Difference-13, StockPrices.MA[1d], ISIN, MarktKap, Date, Forecast[5d].MA[1d].Rounded.Enum.ts, Forecast[5d].MA[1d].Rounded.ts, Forecast[5d].MA[1d].Normalized.ts, Forecast[5d].MA[1d].ts, VolumeNotis.G1.signal, VolumeNotis.G1.norm, PosVolIndex.G1.signal, PosVolIndex.G1.norm, NegVolIndex.G1.signal, NegVolIndex.G1.norm, VolPriceTrend.G1.signal, VolPriceTrend.G1.norm, OnBalanceVol.G1.signal, OnBalanceVol.G1.norm, ForceIndex.G1.signal, ForceIndex.G1.norm, TRWinkel.G1.signal, TRWinkel.G1.norm, Aroon.G1.signal, Aroon.G1.norm, RWI.G1.signal, RWI.G1.norm, RAVI.G1.signal, RAVI.G1.norm, DMIADXADXR.G1.signal, DMIADXADXR.G1.norm, WilderVol.G1.signal, WilderVol.G1.norm, VHF.G1.signal, VHF.G1.norm, HistVol.G1.signal, HistVol.G1.norm, Standardabweichung.G1.signal, Standardabweichung.G1.norm, NewLow.G1.signal, NewLow.G1.norm, NewHigh.G1.signal, NewHigh.G1.norm, PVT.G1.signal, PVT.G1.norm, TSF.G1.signal, TSF.G1.norm, PFE.G1.signal, PFE.G1.norm, RMI.G1.signal, RMI.G1.norm, CCI.G1.signal, CCI.G1.norm, TRIX.G1.signal, TRIX.G1.norm, MACD.G1.signal, MACD.G1.norm, RSL.G1.signal, RSL.G1.norm, Coppock.G1.signal, Coppock.G1.norm, MFI.G1.signal, MFI.G1.norm, DSmS.G1.signal, DSmS.G1.norm, Chaikin.G1.signal, Chaikin.G1.norm, Stochastik.G1.signal, Stochastik.G1.norm, RSI.G1.signal, RSI.G1.norm, MOMROC.G1.signal, MOMROC.G1.norm, GDUmsatz.G1.signal, GDUmsatz.G1.norm, PSAR.G1.signal, PSAR.G1.norm, Bollingerband.G1.signal, Bollingerband.G1.norm, Gleitender Durchschnitt.G1.signal, Gleitender Durchschnitt.G1.norm, Candlesticks.G1.signal, Candlesticks.G1.norm
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.

image-1655733693180.png

image-1655733697388.png

5 Wie gut performt ein Neuronales Netz?

Deep-Learning mit

  • hidden 100, 50 Hidden layer sizes (e.g. [100, 100])
  • epochs 20

Rounded-Enum[5d]

  • MSE 0.656183
  • RMSE 0.810051
  • nobs 15419
  • r2 0.839880
  • logloss 1.844687
  • mean_per_class_error 0.796682

Forecast[5d]

  • MSE 16.940916

  • RMSE 4.115934

  • nobs 15419

  • r2 0.183228

  • mean_residual_deviance 16.940916

  • mae 2.915877

Neuronale Netze sind gut in der Mustererkennung, aber nicht spezialisiert auf die Vorhersage von wahrscheinlichen Mustern.
  • (Info) Die Deep-Learning-Ansätze funktionieren unzureichend da die r2 nur bei 0.18 liegt bzw. MAE_Werte von 2.9 viel zu hoch sind.
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:

  • MSE 9.546808
  • RMSE 3.089791
  • nobs 15419
  • r2 0.539720
  • mean_residual_deviance 9.546808
  • mae 2.109862

XGBoost (nur mit GPU-Support)[5d]

  • model_category Regression
  • MSE 11.164040

  • RMSE 3.341263

  • nobs 15419

  • r2 0.476745

  • mean_residual_deviance 11.164040

  • mae 2.318052

AutoML-GBM[5d]

  • MSE 9.062982
  • RMSE 3.010479
  • nobs 15563
  • r2 0.551056
  • mean_residual_deviance 9.062982
  • mae 2.112427

mit folgenden Einstellungen

  • nfolds 5

  • keep_cross_validation_predictions true

  • score_tree_interval 5

  • fold_assignment Modulo

  • ntrees 348 Number of trees.

  • max_depth 10 Maximum tree depth.

  • distribution gaussian

  • sample_rate 0.8

  • col_sample_rate 0.8

  • col_sample_rate_per_tree 0.8

Trainiert auf Binär

Orginalwert mit GBM 100|20

  • MSE 0.226473
  • RMSE 0.475892
  • nobs 15419
  • r2 0.740174
  • logloss 1.124607
  • mean_per_class_error 0.421958

Stacked-Ensemble[5d]

  • MSE 0.220594
  • RMSE 0.469675
  • nobs 15419
  • r2 0.747121
  • logloss 0.656527
  • mean_per_class_error 0.420293
  • residual_deviance 20245.979526
  • null_deviance 30329.251087
Der AutoML-Mechanismus und Experimente könnten noch weitere Subarten der Modelle bzw. Alternativen aufzeigen helfen.
  • (Info) Im Kern konnte keine Alternative zu den bestehenden Modellen gefunden werden weder mit XGBoost, XRT, Stacked-Ensembles
  • (Info) Manuell entwickelte Stacked-Ensemble zur Zusammenarbeit verschiedener Einzel-Systeme kann noch eine sehr interessante Kombination darstellen
7 Macht es einen Unterschied die Datenmengen sortiert oder per Zufall zur Verfügung zu stellen?

GBM-60-15-Netz mit 6er-Validierungssätze
mit internem Shuffle durch SHAREholder


Auf Binärem Modell[5d] mit Shuffle

  • MSE 0.236146
  • RMSE 0.485949
  • nobs 15419
  • r2 0.729077
  • logloss 0.728397
  • mean_per_class_error 0.434816

Auf Rounded-Enum-Modell[5d] mit Shuffle

  • MSE 0.548741

  • RMSE 0.740771

  • nobs 15419

  • r2 0.866098

  • logloss 1.629311

  • mean_per_class_error 0.682464

  • Der Shuffle sollte der Standard sein und eine bessere Aufteilung der Datenmenge organisieren. Die Prognosewerte könnten sich sogar verschlechtern, dafür der Abstand zwischen Training und Validierung sich verbessern.
  • (Info) Das Modell verbessert sich sehr leicht. Da dies keine zusätzliche Kosten verursacht sollte die Daten immer geschuffelt werden.
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
auf Rounded-Enum[5d] ohne internem Shuffle durch SHAREholder

  • Laufzeit 2min:07s

  • MSE 0.549947

  • RMSE 0.741584

  • nobs 15419

  • r2 0.865803

  • logloss 1.633537

  • mean_per_class_error 0.687293

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

  • Nachteil keine Preview während des Job-Runs mehr vorhanden!
  • Laufzeit: Abbruch bei >30min

GBM-60-15-Netz mit Split-Daten auf Basis Trainingsdatensatz und 0.75 und 0.25 Val-Daten-Splitt über H2o.

  • Laufzeit 2min:04s
  • MSE 0.542601

  • RMSE 0.736615

  • nobs 23055

  • r2 0.868866

  • logloss 1.620967

  • mean_per_class_error 0.684966

  • Es kann sich positiv auswirken wenn ein interner zufälliger Shuffle-Algorithmus verwendet wird, da die Zufälligkeit stärker gegeben ist. Bei jedem 6. Beispiel verschiebt sich der Tag immer schrittweise, da immer nur 5 Handelstage vorhanden sind. Bei genau 5 kann es aber passieren, das ein Tag in den Trainingsdaten fehlt!
  • Die Ergebnisse von zwei Läufen sind dann aber wahrscheinlich nicht mehr vergleichbar.
  • Die Laufzeit kann durch die notwendigen Shuffle-Mechanismen leiden
  • (Info) Die kfold-Funktion ist sehr teuer und sollte vermieden werden!
  • (Info) Ob ein Daten-Split-über H2o vorgenommen wird oder in der Vorverarbeitung scheint unterheblich zu sein. Die Error-Metriken unterscheiden sich praktisch nicht.
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]

  • Laufzeit 2min:30s
  • MSE 0.543010

  • RMSE 0.736892

  • nobs 23055

  • r2 0.869496

  • logloss 1.622349

  • mean_per_class_error 0.685769

  • Die Verwendung sollte sich auf die Laufzeit auswirken und eventl. einen positiven Einfluss auf die Stabilität des Systems durch die Gewichtung von Datensätzen
  • (Info) In dem verwendetem Setup keine Verbesserung.

10 Optimierungen über die Anzahl der Trees und Depth möglich

GBM-Forecast-Direkt[5d]

mit

  • ntrees 200
  • max_depth 25

Ergebnis:

  • MSE 9.546808
  • RMSE 3.089791
  • nobs 15419
  • r2 0.539720
  • mean_residual_deviance 9.546808
  • mae 2.109862

versus (60, 15-System)

  • MSE 10.273237
  • RMSE 3.205189
  • nobs 15419
  • r2 0.504696
  • mean_residual_deviance 10.273237
  • mae 2.226095

GBM-Binär[5d]

  • Laufzeit allerdings 5min: 30s
  • MSE 0.226473
  • RMSE 0.475892
  • nobs 15419
  • r2 0.740174
  • logloss 1.124607
  • mean_per_class_error 0.421958

versus (60, 15-System), Binär (1|0|-1)

  • MSE 0.236146
  • RMSE 0.485949
  • nobs 15419
  • r2 0.729077
  • logloss 0.728397
  • mean_per_class_error 0.434816

GBM-Rounded-Enum (-3..3)[5d]

  • Laufzeit allerdings 16min
  • MSE 0.509305
  • RMSE 0.713656
  • nobs 15419
  • r2 0.875721
  • logloss 1.986936
  • mean_per_class_error 0.674909

versus(60,15-System)

  • MSE 0.548741
  • RMSE 0.740771
  • nobs 15419
  • r2 0.866098
  • logloss 1.629311
  • mean_per_class_error 0.682464


  • Verbesserung kann durch Differenzierung erreicht werden. Dies passiert auf Kosten der Rechenzeit. Aufgrund vorheriger Berechnungen wird dies allerdings linear passieren können und ist damit vertretbar.
  • (Info) Für produktive Systeme scheinen 200|25 Systeme statt 60|15-Modelle angebracht. Diese verbessern die Performance nochmals deutlich in allen Prognose-Systemen unter dem Preis einer höheren Berechnungszeit.
  • (Info) Die Berechnungszeit erhöht sich praktisch linar mit der Anzahl der Modelle und der Tiefe der Bäume
  • (Info) Binäre Vorhersage-Ergebnisse sind ebenfalls zu verbessern auf 75% von 73%
  • image-1655733707916.png

     versus
  • (Info) Rouned-Enum-Vorhersagen verbessern sich für -3 von 70% auf 78% und für +3-Vorhersagen von 77% auf 81%:

    image-1655733729738.png


    versus

    image-1655733735203.png




Round 4: Technische Indikatorenoptimierungen in ShareHolder

Zwischenstand 14.08.2018

Kernaussagen:

  • Binäre Kursvorhersagen sind mit einem DRM mit 72% (28% Fehlerquote) möglich!

    image-1655733751869.png


  • 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!

    image-1655733757287.png


  • 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
  • Date
  • Forecast[5d].MA[1d].ts,
  • Forecast[5d].MA[1d].normalized[-1.00-1.00].ts,
  • Forecast[5d].MA[1d].Rounded.ts,
  • Forecast[5d].MA[1d].Binaer.ts
60 15 Rounded.Enum
(5 Tage Kursrognose)

0.77 Validation-Error

image-1655733765953.png

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
  • Date
  • Forecast[5d].MA[1d].ts,
  • Forecast[5d].MA[1d].normalized[-1.00-1.00].ts,
  • Forecast[5d].MA[1d].Rounded.ts,
  • Forecast[5d].MA[1d].Binaer.ts
60 15 Rounded.Enum
(5 Tage Kursrognose)

0.74 Validation-Error

image-1655733777854.png

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
  • Date
  • Forecast[5d].MA[1d].ts,
  • Forecast[5d].MA[1d].normalized[-1.00-1.00].ts,
  • Forecast[5d].MA[1d].Rounded.ts,
  • Forecast[5d].MA[1d].Rounded-Enum.ts
60 15

Binär

(5 Tage Kursprognose)

0.2784 Validation-Error

image-1655733783966.png

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
  • Date
  • Forecast[5d].MA[1d].ts,
  • Forecast[5d].MA[1d].normalized[-1.00-1.00].ts,
  • Forecast[5d].MA[1d].Rounded.ts,
  • Forecast[5d].MA[1d].Rounded-Enum.ts
50 Epochen

hidden
200,200

Binär

(5 Tage Kursprognose)

0.52 Validation-Error

image-1655733792728.png

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

  • Date
  • Forecasts
  • Zones
  • Kauf/Verkauf
60 15

Rounded-Enum

(5 Tage Kursrognose)

0.84 Validation-Error

image-1656157463097.png


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
  • Date
  • Forecasts
60 25

Rounded-Enum

(5 Tage Kursrognose)

0.83 Validation-Error-Date-Rate und 0 Training?

image-1656157469425.png

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
  • Date
  • Forecasts
  • Zones
  • Kauf/Verkauf
60 15

Binär

(5 Tage Kursrognose)

0.3152 Error Validation (0.27 für -1 und 0.17 für 1)

image-1656157481179.png

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
  • Date
  • Forecasts
  • Zones
  • Kauf/Verkauf
  • + StockPrice
60 15

Binär

(5 Tage Kursrognose)

0.3169 Error-Validation

image-1656157486768.png

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
  • Date
  • Forecasts
  • Zones
  • Kauf/Verkauf
  • + StockPrice
60 15

Binär

(5 Tage Kursrognose)

0.310

image-1656157492093.png

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
  • Date
  • Forecasts
  • Zones
  • +SignaleKauf/Verkauf
60 15

Binär

(5 Tage Prognose)

0.3116

image-1656157498140.png

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
  • Date
  • Forecasts
60 15

Binär

(5 Tage Kursrognose)

0.3081

image-1656157504578.png

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
  • Zones
  • Date
  • Forecasts
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
  • Zones
  • Date
  • Forecasts
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
  • Zones
  • Date
  • Forecasts
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
  • Zones
  • Date
  • Forecasts
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
  • Date
  • Forecasts
60 25

Rounded-Enum

(5 Tage Kursrognose)

0.822 Validation-Error-Data-Rate

image-1656182229255.png

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
  • Zones
  • Date
  • Forecasts
60 15

Binär

(5 Tage Kursrognose)

0.35 Error-Validate-Data

image-1656182233687.png

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
  • Zones
  • Date
  • Forecasts
  • CalendarWeek
60 15

Binär

(5 Tage Kursrognose)

0.375 Error-Validate-Data

image-1656182239328.png

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
  • Date
  • Forecasts
60 15

Binär

(5 Tage Kursrognose)

0.33 Error Validate-Data
(0.34 für -1 und 0.13 für 1)

image-1656182247385.png

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
  • Zones
  • Date
  • Forecasts
100 10

Rounded

(5 Tage Kursrognose)

16.55 Validate - Deviance

image-1656182257125.png

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
  • Zones
  • Date
  • Forecasts
100 10

Rounded-Enum

(5 Tage Kursrognose)

0.85 Error-Rate

image-1656182262857.png

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
  • Zones
  • Date
  • Forecasts
100 10

Normalized

(5 Tage Kursrognose)

0.147 Validate - Deviance

image-1656182268065.png

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
  • Zones
  • Date
  • Forecasts
100 10

Origin-Forecasts

(5 Tage Kursrognose)

16.48 Validate Deviance

image-1656182273563.png

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
  • Zones
  • Date
  • Forecasts
100 10

Binär

(5 Tage Kursrognose)

0.45 Error-Rate Validation-Data (0.128 -1, 0.65 -1 und 0.997 - 0)

image-1656182278098.png

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.