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

 
Eidechse_:
"Gopher" konnte ich nicht finden, habe es vermasselt))) Und wozu all diese Übungen gut sind... Jeder, der ein Hippie ist, wird das verstehen.
Um ehrlich zu sein, verstehe ich es nicht.........
 
mytarmailS:

Ja, aber das ist nicht richtig, ein guter Prädiktor ist einer, der das Ziel erklärt, nicht einer, der sich selbst erklärt, ich weiß nicht, wie man die Qualität eines Prädiktors erkennen kann, ohne ihn mit dem Ziel zu vergleichen, ich verstehe es nicht....

Es kommt darauf an, an welchem Ende des Problems man ansetzen will. Zu Beginn kennen wir weder die gewünschten Prädiktoren noch die Zielvariable. Und um erfolgreich handeln zu können, müssen wir beides wissen. Es ist unmöglich, beides gleichzeitig zu wissen, deshalb sollten wir die Prädiktoren entweder nach unserer Zielvariablen auswählen. Oder Sie können gute Prädiktoren sammeln und dann Ihre Erfahrung nutzen, um vorherzusagen, was mit ihnen passieren könnte.

Erster Ansatz. Ich habe z.B. eine Zielvariable - Preisanstieg/-rückgang über den nächsten Balken. Ich habe es nicht genommen, weil es eine gute Zielvariable ist, sondern weil ich irgendwo anfangen musste, also habe ich etwas Einfacheres genommen :) Als Nächstes nahm ich eine Reihe von Indikatoren und versuche nun, dem Modell anhand "einer Reihe von Indikatoren" beizubringen, "Anstieg/Abfall" zu erkennen. Ich bin froh, dass es zumindest einigermaßen funktioniert hat, denn es gibt keine Garantie dafür, dass eine zufällig ausgewählte Zielvariable vorhersehbar ist, und es gibt keine Garantie dafür, dass die Prädiktoren über genügend Informationen verfügen, um eine Vorhersage zu treffen. ForeCA dient in diesem Fall nur der Vorverarbeitung der Daten, um sie in eine Form zu bringen, auf der das neuronale Netz leichter lernen kann. Beispielsweise können die Daten stattdessen normalisiert werden, oder es können Deltas benachbarter Werte genommen werden, oder es können PCA-Komponenten daraus gebildet werden, usw. All dies erleichtert die Arbeit von neuronka, denn es ist einfacher, auf solchen vorverarbeiteten Daten zu trainieren. Die Aufgabe von ForeCA besteht in diesem Fall darin, ähnliche Klassen auf irgendeine Weise zu gruppieren. Aber es ist nicht sicher, dass ForeCA dabei helfen wird - es hängt von Ihrem Glück und den verfügbaren Prädiktoren und Zielvariablen ab.
Kurz gesagt, in diesem Fall wird die Zielvariable mit einem Modell und Prädiktoren abgeglichen, die alle zusammen auf wundersame Weise zumindest eine gewisse Vorhersagekraft haben.

Ein anderer Ansatz. Wir nehmen eine Reihe von Prädiktoren, sortieren sie nach ihrer "Zuverlässigkeit" und löschen die irrelevanten. Wenn der Indikator zum Beispiel immer einen konstanten Wert hat, ist er offensichtlich nutzlos. Wenn der Prädiktor mit der Funktion random() erstellt wurde, ist er ebenfalls unbrauchbar. D.h. es ist wichtig, die Prädiktoren zu belassen, die wirklich eine gewisse Information besitzen. Ich weiß nicht viel darüber, das Einzige, woran ich mich erinnere, ist, wie man die Wichtigkeit des Prädiktors für die PCA-Komponente findet (pruneSig-Parameter in caret), was eine angemessene Schätzung zu sein scheint. ForeCA soll in diesem Fall die Fliegen von den Koteletts trennen und helfen, zuverlässige Prädiktoren zu finden. Woher all diese Pakete wissen, was wichtig ist und was nicht, ist ein Rätsel, aber sie finden verrauschte und zufällige Prädiktoren und weisen sie zurück. Ein guter Prädiktor ist einer, der nicht zufällig und verrauscht ist.
Wenn Sie eine Reihe von Qualitätsprädiktoren haben, sollten Sie versuchen, mit ihnen etwas vorherzusagen. So kann man beispielsweise eine Kohonenkarte erstellen und die Abhängigkeit des Marktverhaltens von der Klasse in der Kohonenkarte feststellen. Ziehen Sie Schlussfolgerungen darüber, in welchen Klassen Sie handeln sollten und in welchen nicht, und bilden Sie so eine neue Zielvariable für sich selbst. Die Zielvariable wird eine hohe Vorhersagbarkeit mit Prädiktoren haben, da sie auf ihnen aufbaut. Das hört sich alles gut an, aber ich denke, es wird eine Menge Probleme und Fallstricke geben.

 
Dr. Trader:

Es kommt darauf an, an welchem Ende des Problems man ansetzen will. Zu Beginn kennen wir weder die gewünschten Prädiktoren noch die Zielvariable. Und um erfolgreich handeln zu können, müssen wir beides wissen. Es ist unmöglich, beides gleichzeitig zu wissen, deshalb sollten wir die Prädiktoren entweder nach unserer Zielvariablen auswählen. Oder man wählt einen guten Prädiktor aus und prüft dann, was mit diesem vorhergesagt werden kann.

Erste Annäherung.....

Ein weiterer Ansatz....

Es gibt verschiedene Ansätze, aber werden wir auch handeln?

Was werden wir eintauschen?

Ein Trend?

Abweichung?

Niveau?

Denken Sie daran, dass wir nur zwei Aufträge haben - KAUFEN/VERKAUFEN. Oder gibt es eine bestimmte Sorte von ihnen? BUY eingeben / BUY verlassen / SELL eingeben / SELL verlassen

Dies sind Varianten der Zielvariablen.

Nächste.

Können wir eine Zielvariable für das, was wir handeln, bilden?

Oder gibt es eine Lücke zwischen dem Ziel und der Idee des Handelssystems, die einen Fehler darstellt?

Etc.

Aber wir müssen damit beginnen, WAS wir handeln.

 
Mihail Marchukajtes:
müssen Sie die Variable v2 mit ihrem Rückstand multiplizieren und durch v3 dividieren.
Zeige 10 Zeilen mit den folgenden Spalten (v2; Lag1_v2; v3; v11 (Ziel) und eine Spalte mit der Formel v2*Lag1_v2/v3)

v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3

Das Archiv mit der Datei muss nicht heruntergeladen werden.
 
Mihail Marchukajtes:
lag sieht das Netz nicht.
Sie schneiden leere Zeilen ab und kleben sie ein, wo immer Sie wollen...
 

SanSanych Fomenko:

Genau zu wissen, was zu handeln ist. Es gibt viele Möglichkeiten, aber man kann auch etwas Unvorhersehbares wählen und viel Zeit damit verbringen, etwas über Unvorhersehbarkeit zu lernen. Es ist notwendig, etwas zu wählen, das sich anhand der verfügbaren Prädiktoren leichter vorhersagen lässt. Man muss sich sehr genau überlegen, wie man das macht.

Ich habe einen Testcode für die Vorhersage mit ForeCA erstellt. Sie benötigen eine trainData-Tabelle mit der Zielvariablen in der letzten Spalte. Es wird reihenweise in 2 Teile für die Ausbildung/Validierung unterteilt (wird streng in der Mitte geteilt). Das prädiktive Modell ist lm, aus irgendeinem Grund wird es immer mit PCA in Beispielen verwendet, ich denke, es wird auch hier funktionieren. Sie können die Funktion lm(...) im Code durch ein anderes Modell ersetzen.
ForeCA erfordert Daten in einer Matrix mit vollem Rang nach cov(). Ich habe einen Code beigefügt, der dies im Voraus prüft und Spalten mit niedrigem Eigenwert entfernt. Das Ganze ist eine Schleife, deren Ausführung viel Zeit in Anspruch nimmt und die wahrscheinlich einfacher hätte gestaltet werden können. Ich habe einen Teil der Prädiktoren auf diese Weise eliminiert, ich weiß nicht, ob das gut ist oder nicht.
Bisher habe ich noch kein Ergebnis, das Paket hat 5 Gigabyte Verzweiflung verschlungen, und lange Zeit habe ich mich gefragt, ob ich es ausprobieren soll, vielleicht gibt es eine gute Vorhersage für jemanden.

Dateien:
 
Eidechse_:
Zeige 10 Zeilen mit diesen Spalten (v2;Lag1_v2;v3;v11(target) und eine Spalte mit der Formel v2*Lag1_v2/v3)

v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3

Das Archiv mit der Datei muss nicht heruntergeladen werden.
Um ehrlich zu sein, verstehe ich den Sinn dieses Spiels nicht.... Es hat keinen Sinn, die Ausgangsvariable auf der Grundlage der nicht raffinierten Transformation der Eingangsdaten zu erstellen. Wenn die TK gut funktioniert, ist es nicht notwendig, das Netz zu benutzen. Eine andere Sache, die mich zum Nachdenken bringt, ist, dass der Optimierer eine Trainingsdatei nicht Zeile für Zeile, sondern als Ganzes analysieren kann. Durch die Suche nach Korrelationen nicht nur zwischen den Spalten, sondern auch in den Vergangenheitswerten der einzelnen Spalten. Das Ergebnis kann recht interessant sein. Zusätzlich zur Normalisierung der Daten erfolgt auch eine Vorverarbeitung der Daten, wobei nicht nur eine Normalisierungsformel, sondern auch eine Vorverarbeitungsformel erstellt wird, wie z. B.: Vor der Normalisierung muss v2 mit lag1 v5 usw. multipliziert werden. Dann wird die Suche meiner Meinung nach viel interessanter. Oder besser gesagt, das Pre-Processing liefert uns Umrechnungsformeln, eine Art Voroptimierer. Dann wenden wir diese Formeln auf die Daten an und erhalten einen weiteren Datensatz, den wir dann in den Optimierer schieben, um das Modell zu erstellen.... Wie wäre es damit für Sie.....???? Eine Art multidimensionale Suche nach Abhängigkeiten, nicht nur zwischen Spalten, sondern auch zwischen Beziehungen mit vergangenen Werten. Kann mir jemand sagen, wie ich das in MKUL???? organisieren kann? Ich würde es ausprobieren :-)
 
Zum Beispiel optimiere ich vor der Erstellung eines Modells jede Eingabe für die Ausgabe mit dem Optimierer MKUL. Das heißt, wenn ich einen Zauberstab verwende, dann wähle ich vor der Erstellung eines Modells die Parameter des Zauberstabs im Trainingsintervall so aus, dass er so viele gewinnbringende Signale wie möglich gibt, und so mit jeder Eingabe, dann gebe ich das alles in den Optimierer....iiiund.... wird das Modell stabiler. Das Modell ist stabil, aber etwa 50% der Generalisierung oder ein wenig mehr, weil jedes der Prädikate während der Optimierung in MKUL gibt in einem seltenen Fall die Anzahl der profitablen Trades größer als 50%. Aber ich mache das mit jedem Eingang einzeln, und hauptsächlich wird der Mittelungsparameter und die Verzögerung in einem bestimmten Abschnitt ausgewählt, und es gibt keine Beziehung zu anderen Eingängen. Angenommen, wir suchen mit dem Optimierer nach dieser Korrelation, wie ich oben geschrieben habe. Dann erhalten Sie die Parameter der Beziehung zwischen den Daten. Sie auf die Daten anzuwenden und dann alles in den Optimierer zu packen. Ich denke, dass es dann Sinn macht und das Modell den entsprechenden Verallgemeinerungsgrad erhält. Aber ich bin mir nicht sicher, wie ich es anstellen soll... Ich denke... Ich bin für alle Ideen offen... ...... Ich denke, dass ein einfaches neuronales Netzwerk auf MKUL helfen kann, das eine solche Kurve erstellen kann, die alle Signale auf dem Testset maximal korrekt beschreiben würde, und damit hilft, ein gutes Modell in Reshetovs Basisoptimierer zu erstellen (es ist eine Frage, wer auf was sitzt). Es gibt einige einfache Maschen in MKUL????
 
Dr. Trader:

Ich habe einen Testcode für die Vorhersage mit ForeCA..... erstellt.

ich auch... Ich beschloss, eine schnelle Version zu erstellen, nahm Iris, fügte 10 Prädiktoren mit Rauschen hinzu

und ich habe nur Forest trainiert, dann habe ich dasselbe Datum genommen und es mit foreca auf 4 Prädiktoren reduziert und wieder Forest trainiert

Ergebnis:

nur für die neuen Daten

Prediction   setosa versicolor virginica

  setosa         16          0         0
  versicolor      0         15         1
  virginica       0          0        18

Overall Statistics

Accuracy : 0.98    

forrest hat das Rauschen in den Daten nicht einmal bemerkt ...

und foreca ist noch schlimmer

Prediction   setosa versicolor virginica
  setosa          6          6         4
  versicolor      5         10         1
  virginica       8          5         5

Overall Statistics
                                          
               Accuracy : 0.42 
Dateien:
code.txt  1 kb
 
mytarmailS:

Ich auch... Ich beschloss, eine schnelle Lösung zu finden und fügte 10 Prädiktoren mit Rauschen hinzu

und nur Forest trainiert, dann dasselbe Datum mit Rauschen genommen und mit foreCA die Dimension auf 4 Prädiktoren reduziert und Forest erneut darauf trainiert

Ergebnis:

nur für die neuen Daten

forrest hat das Rauschen in den Daten nicht einmal bemerkt ...

und bei foreca ist es noch schlimmer.

Die Wahrheit ist gut, aber Glück ist besser!

Wahrheit = 42 %, ach so positiv für das Depo.

Es ist zwar möglich, glücklich zu leben, aber mit Null-Depo