Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 74
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Yuri, ich habe beschlossen, das Allerheiligste zu verwenden und einen Gral zu machen, aber ich habe eine Inschrift, die vorhergesagten Werte können nicht mehr als 10 sein. Ist dies eine absichtliche Einschränkung oder eine Begrenzung des Algorithmus ???? Weil mehr als 10 extrem relevant ist, so....
Nach 10 kann es zu einem Überlauf des Typs int kommen, und dieser hat nur 32 Bits, d.h. vor dem Überlauf kann er Zahlen enthalten, die den Wert 2^32=2147483648 nicht überschreiten. Es sind nur etwas mehr als zwei Milliarden. Natürlich können Sie auch Zähler mit höherer Ziffernkapazität einsetzen, aber die Berechnungsgeschwindigkeit wird dann um ein Vielfaches langsamer sein.
Aus diesem Grund konnte Dr.Trader die in R umgeschriebene libVMR nicht vollständig ausführen - zu viele Berechnungen und zu viel Speicherbedarf.
Nach 10 kann es zu einem Überlauf vom Typ int kommen, und dieser hat nur 32 Bits, d.h. er passt für Zahlen ohne Überlauf, die 2^32=2147483648 nicht überschreiten. Es sind nur etwas mehr als zwei Milliarden. Natürlich können Sie auch Zähler mit größerer Bittiefe schreiben, aber die Berechnungsgeschwindigkeit wird um ein Vielfaches langsamer sein.
Nach 10 kann es zu einem Überlauf des Typs int kommen, und dieser hat nur 32 Bits, d.h. er enthält vor dem Überlauf Zahlen, die den Wert 2^32=2147483648 nicht überschreiten. Es sind nur etwas mehr als zwei Milliarden. Natürlich können Sie auch Zähler mit höherer Ziffernkapazität schreiben, aber die Geschwindigkeit der Berechnungen sinkt dann um ein Vielfaches.
Aus diesem Grund konnte Dr. Trader nicht die gesamte libVMR, die auf R umgeschrieben wurde, ausführen - zu viele Berechnungen und zu viel Speicherbedarf.
Ich möchte Ihnen eine Geschichte erzählen - ich erinnere mich, dass ich Sie nach parallelen Berechnungen gefragt habe. Damit ich mehr Eingänge am mathematischen Koprozessor zählen kann. Ein einziges Arschloch kam daher, schrieb LibVMRx in C++ um und parallelisierte es irgendwie. Er hatte einen sehr leistungsstarken Computer und brauchte etwa 40 Minuten, um 8 Spalten zu verarbeiten, wie er sagte. Er hat mir nicht einmal das Programm oder irgendetwas anderes geschickt, sondern mich nur mit Ausreden und Schwachsinn geplagt. Obwohl ich ihm alle Daten zur Verfügung gestellt habe und bereit war, das System und die Überlegungen zum Aufbau des Modells mit ihm zu teilen. Aber er weigerte sich, mir zu helfen. Es gibt solche Menschen. Ein- und ausblasen ....
Ich habe alles in der neuesten Version 6.01 parallelisiert. Nichts anderes funktioniert. Wenn es möglich wäre, hätte ich noch einige Parallelen gezogen. Ich habe es für mich selbst getan, d.h. ich muss alles schneller berechnen können.
Jetzt habe ich einen Algorithmus entwickelt, um schwache Prädiktoren zu berechnen, damit sie entfernt werden können. Die Berechnung wird viel Zeit in Anspruch nehmen, aber es wird sich lohnen, denn statt eines schwachen Prädiktors können Sie ihn durch einen stärkeren ersetzen. Oder man beseitigt die schwachen Prädiktoren und erhöht damit sowohl die Berechnungsgeschwindigkeit als auch die Generalisierungsfähigkeit. Denn für den Handel muss man ständig eine Neuberechnung der Modelle durchführen, sobald der Markt zu schummeln beginnt. Und so ist der Markt: Sobald sich andere Händler zusammenschließen, ändern sie ihre Strategien, und man muss sich wieder neu darauf einstellen.
Ich habe alles in der neuesten Version 6.01 parallelisiert. Nichts anderes funktioniert. Wenn es möglich wäre, hätte ich noch einige Parallelen gezogen. Ich habe das für mich selbst gemacht, d.h. ich muss das alles selbst schneller berechnen.
Jetzt habe ich einen Algorithmus entwickelt, wie man schwache Prädiktoren berechnet, so dass sie entfernt werden können. Die Berechnung wird viel Zeit in Anspruch nehmen, aber sie wird sich lohnen, weil wir anstelle eines schwachen Prädiktors einen stärkeren ersetzen können. Oder man beseitigt die schwachen Prädiktoren und erhöht damit sowohl die Berechnungsgeschwindigkeit als auch die Generalisierungsfähigkeit. Denn für den Handel müssen Sie ständig eine Neuberechnung der Modelle durchführen, sobald der Markt zu schummeln beginnt. So ist der Markt: Sobald sich andere Händler zusammentun, ändern sie ihre Strategien, und man muss sich wieder neu darauf einstellen.
Das war's. Ich freue mich auf die Veränderungen.
Es ist möglich, die Prädiktoren manuell einen nach dem anderen durchzugehen, aber das ist langwierig und mühsam, wenngleich es auch der richtige Weg ist. Sie brauchen viel Zeit, aber es sollte automatisch und in angemessener Zeit geschehen und nicht so quälend sein.
Mihail Marchukajtes:
Wir sind auf der gleichen Seite des Zauns, ich glaube auch, dass der Markt sich ständig verändert und jedes Mal angepasst werden muss, wenn etwas passiert oder Neuigkeiten veröffentlicht werden. Suchen Sie nicht nach einem Gral in 5 Jahren, wie es manche Leute tun. Das ist eine Utopie, aber ich bin schon ganz erschöpft davon, es zu erklären...Es ist möglich, schwache Langspielgräber zu finden. Ich hatte ein paar von ihnen. Aber mein Gewinn ist am Rande des Ruins, mein Gewinn ist penny-ish, auch wenn ich eine gute Einzahlung haben.
Theoretisch ist es möglich, einen starken, lange spielenden Gral zu finden, aber die Wahrscheinlichkeit ist wahrscheinlich Nullkommanull?
Das ist der sicherste Weg:
HM... Schauen Sie, jetzt habe ich das Modell trainiert, beide Modelle haben die gleichen Werte für den Generalisierungsgrad, d.h. das Marktsegment wird von beiden Modellen auf die gleiche Weise zerlegt. Ich denke, das ist der Schlüssel zur Wahl des richtigen Modells. Ich trainiere weiter, suche nach Inputs usw.
Schauen Sie in der Java-Datei nach. Wenn es Linien "Variable unter Reduktion" gibt, weisen sie auf schwache Prädiktoren hin. Solche Prädiktoren sind aus dem Modellcode ausgeschlossen - sie werden nirgendwo im Code des binären Klassifikators berechnet.
Es stimmt, wenn alle Prädiktoren ungefähr gleich sind, erscheinen solche Linien nicht.
Hier ist ein Beispiel (fett hervorgehoben). Der sechste Prädiktor v5 (von Null an gezählt) - die siebte Spalte im CSV kann durch einen anderen, stärkeren Prädiktor ersetzt werden:
Schauen Sie in der Java-Datei nach. Wenn es Linien "Variable unter Reduktion" gibt, weisen sie auf schwache Prädiktoren hin. Solche Prädiktoren sind aus dem Modellcode ausgeschlossen - sie werden nirgendwo im Code des binären Klassifikators berechnet.
Es stimmt, wenn alle Prädiktoren ungefähr gleich sind, erscheinen solche Linien nicht.
Hier ist ein Beispiel (fett hervorgehoben). Der sechste Prädiktor v5 (von Null an gezählt) - die siebte Spalte in der CSV kann durch einen anderen, stärkeren Prädiktor ersetzt werden:
double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
double x0 = 2,0 * (v0 + 1,0) / 2,0 - 1,0;
double x1 = 2,0 * (v1 + 1,0) / 2,0 - 1,0;
double x2 = 2,0 * (v2 + 1,0) / 2,0 - 1,0;
double x3 = 2,0 * (v3 + 1,0) / 2,0 - 1,0;
double x4 = 2,0 * (v4 + 1,0) / 2,0 - 1,0;
//Variable v5 wurde unter Reduzierung
double decision = -0.23641879194630872 -0.10890380313199105 * x2
-0,14546040268456376 * x0 * x2
+ 0,07270693512304251 * x1 * x2
-0.07182997762863534 * x3
-0,07383982102908278 * x0 * x1 * x2 * x3
-0.4362541387024608 * x4
;
Rückkehrentscheidung;
}