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

 
Andrej Dik:

Hier habe ich genau gesagt, was ich tue:

Im Detail: auf der aktuellen Bar das Kaufsignal, wie kaufen, zählen die geringste Anzahl von Bars vorwärts in die Zukunft und prüfen, ob der Handel profitabel sein wird, wenn ja, wie zu schließen, wenn nicht - zählen eine weitere Bar vorwärts und wieder überprüfen. Auf diese Weise erreichen wir die maximale Anzahl von Balken und schließen sie schließlich. Dies ist ein Lernmechanismus.

Was ist nicht klar? Das ist kein Hirngespinst, das ist genau das, was ich jetzt mache. Die Zielfunktion ist die Maximierung der Gewinne bei minimalen Drawdowns. Ich trainiere mit meiner eigenen Genetik.

Was lehren wir? Es ist doch möglich, sie einfach umzusetzen, oder?
 

SanSanych Fomenko:
1. was unterrichten wir?

2. Ist es nicht möglich, sie einfach so zu implementieren?

1.Die Zielfunktion ist die Maximierung der Gewinne bei minimalen Drawdowns. Ich unterrichte mit Hilfe meiner Genetik.

2. Ja, ganz einfach.

 
Weiß jemand, wie man herausfinden kann, in welcher Sprache das R-Paket geschrieben ist?
 
mytarmailS:
Weiß jemand, wie man herausfinden kann, in welcher Sprache das R-Paket geschrieben ist?

Dokumentation. Geöffnet von der Hilfe in R:

  • R-Erweiterungen schreiben
  • R Interna

Außerdem gibt es eine ausführliche Beschreibung, wie man mit Cp

 

Meine Herren, eine neue Aufgabe von mir:

Hier ist ein Datensatz im .R-Format: https://drive.google.com/open?id=0B_Au3ANgcG7CcjZVRU9fbUZyUkE

Der Satz enthält etwa 40.000 Zeilen und 101 Spalten. Die Spalte ganz rechts ist die Zielvariable. Auf der linken Seite befinden sich 100 Eingänge.

Ich schlage vor, dass Sie versuchen, ein Regressionsmodell zu erstellen, das den Wert der 101. Spalte auf der Grundlage der 100 verbleibenden Spalten und der ersten 20.000 Beobachtungen vorhersagt.

Bei den verbleibenden 20 000+ Beobachtungen sollte das konstruierte Modell einen R^2 von mindestens 0,5 aufweisen.

Dann zeige ich auf, wie die Daten erzeugt werden, und gebe meine Lösung an.

Der Anhaltspunkt sind die Zeitreihendaten. Die Eingabe besteht aus 100 Proben, wobei 1 vorausgesagt wird. Es handelt sich nicht um Preise oder Notierungen oder deren Derivate.

Alexej

 
Ich kann diese Daten auch im csv-Format veröffentlichen. Es wäre interessant, die Meinung der Koryphäen über die Bedeutung der Prädiktoren zu erfahren.

Auch hier handelt es sich um rein synthetische Daten, die nur zum Spaß erhoben wurden.
 

Ich habe versucht, die Bedeutung der Prädiktoren mit Hilfe des vtreat-Pakets zu ermitteln. Das Paket ist jedoch nicht in der Lage, nach Beziehungen zwischen Prädiktoren zu suchen, es berücksichtigt nur direkte Beziehungen zwischen Prädiktor und Ziel, was für diese Aufgabe nicht sehr geeignet ist.

treatments <- designTreatmentsN(dat_ready[1:20000,], colnames(dat_ready)[1:100], tail(colnames(dat_ready),1))
treatments$scoreFrame #важность  предикторов определяется через колонку "sig"
treatments$scoreFrame[order(treatments$scoreFrame$sig),] #предикторы  отсортированы по важности

Nach der Bedeutung von vtreat beurteilt, sind lag_diff_51 und lag_diff_52 am nützlichsten. Nach und nach fügte ich weitere Prädiktoren aus der erhaltenen Liste hinzu und betrachtete das Wachstum von R^2 bei den Trainingsdaten für den Wald. Am Ende blieb ich bei diesen Prädiktoren stehen - 51, 52, 53, 54, 55, 17, 68, die wahrscheinlich zur Berechnung des Ziels verwendet werden. R^2 auf Trainingsdaten mit ihnen > 0,9, aber auf Test und Validierungen alle schlecht. Jetzt muss ich verschiedene mathematische Operationen mit diesen Prädiktoren ausprobieren, um Formeln auszuwählen usw., damit bei der Kreuzvalidierung auch R^2 wächst. Ich werde nicht weiter danach suchen :)

Ich habe es später beendet:
Ich habe ein bisschen mehr experimentiert und eine Reihe neuer Prädiktoren aus bestehenden erstellt, mit verschiedenen mathematischen Operationen. Sowohl vtreat als auch forest mögen diese beiden Kombinationen sehr: sum(51,52) und average(51,52). Aber ich habe nie eine Formel für den Zielwert finden können. Und Modelle, die auf der Grundlage dieser Prädiktoren trainiert wurden, können ebenfalls keine adäquaten Vorhersagen treffen.

 

100 Einträge? Das ist stark.

Warum nicht tausend?

Ihr habt absolut keine Ahnung, was ein Nervennetz ist.

 
Dr. Trader:

Ich habe versucht, die Bedeutung der Prädiktoren mit Hilfe des vtreat-Pakets zu ermitteln. Das Paket ist jedoch nicht in der Lage, nach Beziehungen zwischen Prädiktoren zu suchen, es berücksichtigt nur direkte Beziehungen zwischen Prädiktor und Ziel, was für diese Aufgabe nicht sehr geeignet ist.

Nach der Bedeutung von vtreat beurteilt, sind lag_diff_51 und lag_diff_52 am nützlichsten. Nach und nach fügte ich weitere Prädiktoren aus der erhaltenen Liste hinzu und betrachtete das Wachstum von R^2 bei den Trainingsdaten für den Wald. Am Ende blieb ich bei diesen Prädiktoren stehen - 51, 52, 53, 54, 55, 17, 68, die wahrscheinlich zur Berechnung des Ziels verwendet werden. R^2 auf Trainingsdaten mit ihnen > 0,9, aber auf Test und Validierungen alle schlecht. Jetzt muss ich verschiedene mathematische Operationen mit diesen Prädiktoren ausprobieren, um Formeln auszuwählen usw., damit bei der Kreuzvalidierung auch R^2 wächst. Ich werde nicht weiter nach ihr suchen :)

Ich habe es später beendet:
Ich habe ein bisschen mehr experimentiert und eine Reihe neuer Prädiktoren aus bestehenden erstellt, mit verschiedenen mathematischen Operationen. Sowohl vtreat als auch forest mögen diese beiden Kombinationen sehr: sum(51,52) und average(51,52). Aber ich habe nie eine Formel für den Zielwert finden können. Und Modelle, die auf der Grundlage dieser Prädiktoren trainiert wurden, können ebenfalls keine adäquaten Vorhersagen treffen.

In der Nähe, aber im Vorbeigehen. Es wurde nicht auf alles hingewiesen. Es gibt lineare Korrelationen zwischen Outputs und Inputs. Aber sie sind nicht sehr hilfreich.

Sie haben den Wald übertrainiert. Es ist besser, sich den Lebenslauf anzusehen. Ich werde Ihnen das Geheimnis der Daten später verraten. Es sollte ganz einfach sein. Es gibt eine Menge Redundanz bei den Eingaben.
 

Auch 0,9 ist Übertraining. Ein R^2 von mehr als 0,6 bei einer Trainingsmenge ist ein realistisches Maximum.

Und noch etwas: Denken Sie an die Interaktionen. Einzelne Verbindungen können in eine falsche Richtung führen.

Ich selbst versuche, meine eigene Aufgabe zu lösen. Ich habe einschichtigen NS aufgetragen. Der R^2-Test ist nicht größer als 0,148. Passt nicht...