Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 469

 

Hier ist der Code, um die Arym-Parameter zu finden, Sie können es in der atacha Beitrag auf den Link zu finden. Ich habe den ersten Beitrag ein wenig korrigiert und das erste eher erfolglose Beispiel durch ein normales ersetzt.

  arimaModel <- auto.arima(y = ts(DT$value[trainIndexes],frequency=48),
                           seasonal.test = "ocsb",
                           trace=TRUE,
                           stepwise = FALSE,
                           max.q = 48, 
                           max.order = 48+5
                         )

Die Funktion auto.arima sucht selbständig nach geeigneten p d q P D Q Parametern
ts(DT$value[trainIndexes],frequency=48) # Daten werden in ein Format aus dem Vorhersagepaket konvertiert, wichtig ist die Angabe der Häufigkeit, sonst wird die Saison nicht verwendet
seasonal.test = "ocsb" # Google sagt, es sei besser, ich bin mir nicht sicher
stepwise = FALSE #false ermöglicht eine umfassendere Suche. Der Standardwert true würde bedeuten, dass die Suche wahrscheinlich am lokalen Minimum hängen bleibt und abgebrochen wird.
max.q =48 #maximaler Wert von q in der Suche. Standardwert == 5, für diese Daten ist niedrig
max.order = 48+5 # max sum p+q+P+Q. Standardwert == 5, nicht ausreichend für diese Daten

Die Funktion wird viel Zeit in Anspruch nehmen, sollte aber letztendlich die gleichen Parameter wie die von mir verwendeten abrufen und vielleicht sogar noch bessere finden.

Ich habe nicht darauf gewartet, dass diese Funktion alles findet, sondern habe einfach intuitiv die richtigen Parameter gewählt. Die Daten sind tendenziös, also p = 1 und P = 1. Und das Diagramm zeigt die vorherrschenden Perioden 24 und 48, also q = 24, und Q = 48 / Frequenz = 1
Ich konnte den Zeitraum 336 nicht mehr in arim einfügen, es braucht eine zweite Saisonalität, das Vorhersagepaket weiß nicht, wie man das macht.

Arima mit bereits bekannten Parametern p d q P D Q wird wie folgt erstellt:

Arima(y = ts(DT$value[trainIndexes],frequency=48), order = c(1, 0, 24), seasonal = c(1, 0, 1))

die Saisonalität ist nicht (1,0,1), sondern (1,0,48), weil Q in gewisser Weise dominiert wird von



SanSanych Fomenko:

Eine Diskussion über arima ohne eine Analyse der Residuen von ARCH ist eine völlig leere Übung. Es gibt einige Reihen, die nach einer ARCH-Simulation ein stationäres Residuum aufweisen. Aber die Diskussion über Vorhersagefehler unter der Annahme, dass sie stationär sind, ist nicht seriös. Dieser Rest ist extrem facettenreich.

Ja, ich stimme zu, es ist nur so, dass diese Daten sehr zyklisch und einfach sind, so dass arima ohne Probleme funktioniert. Wenn ich eurusd m30 in denselben Code einfüge, kommt das Modell mit den neuen Daten nicht in starke Kurssprünge.
 
Dr. Trader:

Hier ist der Code, um die Arym-Parameter zu finden, Sie können es in der atacha Beitrag auf den Link zu finden. Ich habe den ersten Beitrag ein wenig korrigiert und das erste eher erfolglose Beispiel durch ein normales ersetzt.

die Funktion auto.arima sucht selbständig nach geeigneten p d q P D Q Parametern
ts(DT$value[trainIndexes],frequency=48) # Daten werden in ein Format aus dem Vorhersagepaket konvertiert, wichtig ist die Angabe der Häufigkeit, sonst wird die Saison nicht verwendet
seasonal.test = "ocsb" # Google sagt, es sei besser, ich bin mir nicht sicher
stepwise = FALSE #false ermöglicht eine umfassendere Suche. Der Standardwert true würde bedeuten, dass die Suche wahrscheinlich am lokalen Minimum hängen bleibt und abgebrochen wird.
max.q =48 #maximaler Wert von q in der Suche. Standardwert == 5, für diese Daten ist niedrig
max.order = 48+5 # max sum p+q+P+Q. Standardwert == 5, nicht ausreichend für diese Daten

Die Funktion wird viel Zeit in Anspruch nehmen, sollte aber letztendlich die gleichen Parameter wie die von mir verwendeten abrufen und vielleicht sogar noch bessere finden.

Ich habe nicht darauf gewartet, dass diese Funktion alles findet, sondern habe einfach intuitiv die richtigen Parameter gewählt. Die Daten sind tendenziös, also p = 1 und P = 1. Und das Diagramm zeigt die vorherrschenden Perioden 24 und 48, also q = 24, und Q = 48 / Frequenz = 1
Ich konnte den Zeitraum 336 nicht mehr in arim einfügen, dafür brauche ich die zweite Saisonalität, die Paketvorhersage kann das nicht.

Arima mit bereits bekannten Parametern p d q P D Q wird wie folgt erstellt:

Die Saisonalität ist eigentlich nicht (1,0,1), sondern (1,0,48), weil Q von der Häufigkeit dominiert wird.



Ja, ich stimme zu, es ist nur so, dass diese Daten sehr zyklisch und einfach sind, so dass arima ohne Probleme funktioniert. Wenn ich eurusd m30 in den gleichen Code einfüge, wird das Modell nicht in Preisspitzen mit den neuen Daten erhalten.
Ich war nicht an diesen "optimalen" pParametern interessiert, den Parametern, die die Koeffizienten in der Regressionsgleichung - nach der Anpassung - ausgeben
 
summary(arimaModel)
Series: ts(DT$value[trainIndexes], frequency = period) 
ARIMA(1,0,24)(1,0,1)[48] with non-zero mean 

Coefficients:
         ar1     ma1     ma2     ma3     ma4     ma5     ma6     ma7     ma8     ma9    ma10    ma11    ma12    ma13    ma14    ma15    ma16    ma17    ma18
      0.8531  0.3469  0.3324  0.3512  0.3564  0.3176  0.2676  0.2223  0.1904  0.2015  0.2241  0.2529  0.2424  0.2383  0.2408  0.2507  0.2279  0.1701  0.1418
s.e.  0.0316  0.0350  0.0413  0.0462  0.0506  0.0542  0.0559  0.0554  0.0537  0.0514  0.0494  0.0481  0.0477  0.0469  0.0455  0.0451  0.0448  0.0439  0.0415
        ma19    ma20   ma21     ma22     ma23     ma24    sar1     sma1       mean
      0.0813  0.0525  0.028  -0.0152  -0.0226  -0.0159  0.9899  -0.4300  1816.9447
s.e.  0.0390  0.0358  0.032   0.0280   0.0224   0.0180  0.0015   0.0132   687.9652

sigma^2 estimated as 1442:  log likelihood=-23883.84
AIC=47825.68   AICc=47826.05   BIC=48012.95

Training set error measures:
                     ME     RMSE      MAE         MPE     MAPE      MASE         ACF1
Training set -0.1648644 37.86381 25.64976 -0.07217873 1.573367 0.1610166 0.0002493082
Dateien:
arimaModel.zip  140 kb
 
Dr. Trader:

Es ist ein seltsamer Tisch.

Dennoch.

Vergleichen Sie den Koeffizientenwert mit dem s.e. Mit wenigen Ausnahmen mehr als 10%. Aus irgendeinem Grund sehe ich keine Schätzung über t, sondern über Kopf, das heißt 10%:

Nullhypothese zur Koeffizientenschätzung: Wahrscheinlichkeit, dass der Koeffizient nicht signifikant ist. Eine Abweichung von mehr als 10% bedeutet, dass alle diese Koeffizienten NICHT signifikant sind, d.h. Sie haben KEINE Regressionsgleichung.


PS.

In der Regel sind die signifikanten Koeffizienten mit Sternchen gekennzeichnet. Da die Koeffizienten NICHT signifikant sind, sind alle anderen Zahlen nur Zahlen.

hist(residuals(arimaModel), breaks= 100)


Der Grund dafür, dass die Koeffizienten NICHT signifikant sind, liegt darin, dass der Schweif auf der linken Seite dicker ist als der Schweif auf der rechten Seite.

Es gibt Tests, die es Ihnen ermöglichen, Probleme quantitativ und nicht nach Augenmaß zu erkennen und die Werkzeuge zu ihrer Lösung in die Hand zu nehmen.

Schlussfolgerung:

Das ARIMA-Modell ist auf die verwendeten Zeitreihen nicht anwendbar.

 
Maxim Dmitrievsky:

Auf dem Markt wird jeder Klassifikator neu trainiert, da der Markt nicht stationär ist. Wenn wir wollen, dass es nicht überlernt, müssen wir den NS für die gesamte Geschichte unterrichten. Andernfalls wird es immer der Fall sein, dass sich der Marktzyklus geändert hat und das Modell verfälscht ist. Der einzig sinnvolle Ansatz ist Übertraining oder Umschulung im Laufe des Handels :) Wir glauben nicht an Rollen, die ständig 1000% monatlichen Gewinn auf die Geschichte von 15 Jahren ohne jede Intervention geben.

Im Allgemeinen sehe ich immer noch nicht, dass Rand - was bedeutet übertrainiert NM in Forex. Ist es, wenn es bei einer Stichprobe nicht verdient wird? Nein, nein, nein... es geht um Nicht-Stationarität. Wenn Sie nicht wissen, wie Sie das überprüfen können, ist es nicht praktisch und nicht realistisch.


Hier haben Sie völlig Recht, wie kann man von Umschulung sprechen, wenn man den Begriff selbst nicht kennt???? Was meinen Sie mit "umgeschulter NS"? Jeder soll sagen, wie er es sieht, und ich fange an.

1. NS funktioniert nicht gut bei neuen Daten. Implizit bedeutet dies, dass die Signale nicht konsequent getrennt werden, es spielt keine Rolle, ob sie richtig oder falsch sind, was zählt, ist die Stabilität der Trennung der schlechten von den guten.... Es kann konsequent abfließen (Modellinversion), aber die Tatsache, dass man das Schlechte vom Guten trennt, steht auf der Kippe.

2. Das Modell zeigte bei weniger als der Hälfte des Trainingsintervalls gute Leistungen. Die Konsequenz dieses Ansatzes ist, dass ein gut trainiertes Modell 50 % oder mehr des Trainingsintervalls durchlaufen sollte.

3.balance Kurve auf neue Daten hat starke Höhen und Tiefen (zufällige Modell funktioniert in einem bestimmten Zeitraum und führte zu Rentabilität aufgrund von 1-2 große Geschäfte, aber im Allgemeinen die Senkblei)

Und was die Klassifizierung betrifft, so lautet meine Antwort wie folgt.

NOT STATIONARY ist ein sich gleichmäßig verändernder Wert. Sobald ein Balken geschlossen ist, beginnt er langsam wegzudriften. Und je weiter der Balken in der Geschichte fortschreitet, desto weiter wird dieser berüchtigte STATIONÄRE Wert (ein Symbol für irgendein Chaos oder einen ätherischen Wert, der den Markt im Allgemeinen verändert), so dass wir, wenn wir das Modell der Klassifizierung lehren, erfahren, dass dieser Wert direkt von der Qualität des Modells abhängt. Je älter das Modell ist, desto niedriger ist sein Qualitätsniveau, entsprechend der Änderung dieser sehr NICHT STATIONÄR. Das Ziel ist es, ein solches Modell zu bauen, das lange genug funktioniert, dass man ein paar Pips damit machen kann :-)

 
Mihail Marchukajtes:

Was meinen Sie mit "umgeschultem" NS?

Die Trainingsdaten, insbesondere im Forex-Bereich, sind in der Regel verrauscht, und wenn wir das Modell mit 100 %iger Genauigkeit trainieren, bringen wir ihm bei, dieses Rauschen zusammen mit dem gewünschten Ergebnis zu reproduzieren. Und wir müssen das Training in dem Moment beenden, in dem der NS beginnt, das Ergebnis richtig vorherzusagen, aber nicht anfängt, sich die richtigen Antworten zusammen mit dem Rauschen zu merken. Mit meinen eigenen Worten. Wissenschaftlich gesehen,https://ru.wikipedia.org/wiki/Переобучение.


https://commons.wikimedia.org/wiki/File:Overfitting.svg

Hier ist eine gute Illustration. Zwei Modelle,
die erste (die Hallenlinie) hat diese Daten mit 100%iger Genauigkeit gelernt. Mit dem Auge können wir erkennen, dass viele Punkte an der Grenze zwischen rotem und blauem Raum etwas zur Seite verschoben sind (Rauschen), und eigentlich sollte die Grenze zwischen diesen beiden Räumen keine gestrichelte Linie sein, sondern eine Art gemittelte Linie.
Das erste Modell wird neu trainiert.
Und es gibt ein zweites Modell (schwarze Linie), bei dem das Rauschen ignoriert wird und das die Ebene eindeutig sinnvoll teilt.

 
Dr. Trader:

Die Trainingsdaten, insbesondere im Forex-Bereich, sind in der Regel verrauscht, und wenn wir das Modell mit 100 %iger Genauigkeit trainieren, bringen wir ihm bei, dieses Rauschen zusammen mit dem gewünschten Ergebnis zu reproduzieren. Und wir müssen das Training in dem Moment beenden, in dem der NS beginnt, das Ergebnis richtig vorherzusagen, aber nicht anfängt, sich die richtigen Antworten zusammen mit dem Rauschen zu merken. Mit meinen eigenen Worten. Wissenschaftlich gesehen,https://ru.wikipedia.org/wiki/Переобучение.


https://commons.wikimedia.org/wiki/File:Overfitting.svg

Hier ist eine ziemlich gute Illustration. Zwei Muster,
die erste (Hall-Linie) hat diese Daten mit 100%iger Genauigkeit erlernt. Mit dem Auge können wir sehen, dass viele der Punkte an der Grenze zwischen rotem und blauem Raum leicht zur Seite verschoben sind (Rauschen), und eigentlich sollte die Grenze zwischen diesen beiden Räumen keine gestrichelte Linie sein, sondern eine Art gemittelte Linie.
Das erste Modell wird neu trainiert.
Und es gibt ein zweites Modell (schwarze Linie), bei dem das Rauschen ignoriert wird und das die Ebene eindeutig sinnvoll teilt.

Manchmal bricht das Gehirn zusammen... Was das Rauschen im Forex betrifft, es ist kein Radiosignal, richtig? Warum sollte es im Forex Lärm geben? Wenn Michaels Modell 30-50 Trades pro Monat machte, 1-2 pro Tag, war das Handelsrauschen oder was? Irgendwie passt diese Definition nicht hierher :)

Beim Überlernen im Forex-Bereich geht es um falsch klassifizierte (zeitliche) Muster. Aber es gibt keine anderen Muster im Forex, so dass jedes Muster zu einem gewissen Grad übertrainiert wird

p.s. Sie müssen also eine Instrumentensortierung vornehmen und die derzeit beständigsten BPs auswählen, wie steigende Aktien oder Indizes

 

Alle true!!!! Aber Übertraining hat auch eine mathematische Erklärung......

Wenn wir mit einem Lehrer trainieren, versuchen wir, den Fehler des Netzes in der Trainingsmenge zu reduzieren. Und diese Fehlerreduzierung kann unendlich sein, wenn wir mit reellen Zahlen arbeiten. Es kommt jedoch ein Moment, in dem die Fehlerreduzierung zu einer Verschlechterung des Modells auch bei der Testmenge führt. Daraus können wir die folgende Schlussfolgerung ziehen!

Theoretisch gibt es für jeden Datensatz ein absolutes Lernen, d. h. eine bestimmte Linie auf der Fehlerskala, bei der 0,000000000000000000000001 Modell nicht neu trainiert wird und 0,0000000000000000000000009 neu trainiert wird, eine Art "absoluter Nullpunkt", um es mit den Worten der Physik zu sagen. Alle Modelle, deren Fehler rechts von diesem Punkt liegen, gelten als ungelernt, die links davon als überlernt. Ich möchte daran erinnern, dass dies nur eine Theorie meines persönlichen Verständnisses ist.

Dies ist eine Art ideales Modell für einen bestimmten Datensatz.

Die Aufgabe jeder KI besteht darin, sich dem Punkt der absoluten Lernfähigkeit so weit wie möglich zu nähern, ihn aber nicht zu überschreiten. IMHO.


Diese Theorie geht davon aus, dass es sich nicht um einen Punkt handelt, sondern um einen Bereich vollständig trainierter und übertrainierter Modelle. Ein gemischtes Gebiet, das nicht groß genug ist. Nur... imagine...... Warum? Das habe ich durch Beobachtung festgestellt.

Jedenfalls muss die KI als Erstes dafür sorgen, dass sie diesen Übergangsbereich trifft. Aber hier ist die Sache......

Wenn Sie die Stichprobe stationär aufteilen, ist es wahrscheinlich, dass es sich um einen bestimmten Wert der Übertrainingsgrenze handelt (höchstwahrscheinlich), wenn die Stichprobe jedes Mal zufällig aufgeteilt wird, ist es OVER.... transient.... IMHO

Wenn die KI nicht garantiert in diese Region kommt, dann ist es nicht richtig gemacht. Die andere Sache ist, welches Modell es dort anhalten wird!!!!

All dies habe ich durch die Verwendung von JPrediction erfahren.

Beginnend mit der gleichen Datei zu trainieren, unter Berücksichtigung Random Sampling, erhielt ich 10 verschiedene Trainingsergebnisse, die schlechteste war 75%, die beste 85% Generalisierung (wir nehmen jetzt die Zahlen des Optimierers, richtig oder falsch es spielt KEINE Rolle, jetzt... als ein Beispiel....) Wir können also davon ausgehen, dass wir einen Bereich zwischen 75 und 85 haben, der eine unendliche Anzahl von Varianten des Modells, eines neuronalen Netzes, enthält. In der Regel wähle ich einen Durchschnitt um 80-82 und dann kann man auf ein solches Modell stoßen, das auf OOS schwach sein wird. Denn die Bestimmung des ultimativen Polynoms ist keine einfache Angelegenheit.

Hier ist ein Video und schauen Sie ab 35 Minuten, dort spricht er über es....

https://www.youtube.com/watch?v=qLBkB4sMztk

001. Вводная лекция - К.В. Воронцов
001. Вводная лекция - К.В. Воронцов
  • 2014.12.22
  • www.youtube.com
Курс "Машинное обучение" является одним из основных курсов Школы, поэтому он является обязательным для всех студентов ШАД. Лектор: Константин Вячеславович Во...
 
Mihail Marchukajtes:

Hier ist das Video und schauen Sie ab der 35. Minute, er spricht darüber....

https://www.youtube.com/watch?v=qLBkB4sMztk


Ja, ich habe den Kerl schon mal gesehen, ich werde ihn mir noch mal ansehen, danke).

Wenn Sie nicht verstehen, den mathematischen Sinn davon, aber die realen Sinn - die übertrainiert NS in Forex hat eine ganz andere Bedeutung, und es gibt kein Entkommen aus einer solchen übertrainiert :) Deshalb entweder starres Sortieren und Suchen nach Trendinstrumenten oder permanent umgeschultes adaptives NS, aber nach welchen Kriterien - das ist eine kreative Frage.

 
Maxim Dmitrievsky:

Ja, ich habe den Kerl schon mal gesehen, ich werde ihn wiedersehen, danke).

Die mathematische Bedeutung ist klar, aber die wirkliche Bedeutung - dass es eine übertrainierte NS in Forex hat eine ganz andere Bedeutung, und es gibt kein Entkommen aus solchen overtraining :) Deshalb brauchen wir entweder eine strenge Sortierung und Suche nach Trendinstrumenten oder eine permanente Umschulung auf adaptive NS, aber nach welchen Kriterien - das ist hier eine kreative Frage.


Der eigentliche Punkt ist jedoch dieser. Bei einem schlechten Split auf dem Testabschnitt spielt es KEINE Rolle, ob der Split korrekt ist oder nicht, sondern nur, dass der Split schwach ist. Und das Modell hat nicht mehr als 50% des Trainingsintervalls gearbeitet, dann wird ein solches Modell als übertrainiert angesehen.... IMHO