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

 
Andrej Dik:
Für wie lange?

Ich verstehe, dass Ihr Code in dem Artikel bereits geeignet ist, den Handel mit den gefundenen Punkten zu simulieren, und es ist genau richtig, ihn zu verwenden. ) Das ist großartig.

Nun, sagen wir, in ein paar Tagen (oder einer Woche) des Maschinenbetriebs. In einem vorhersehbaren Zeitrahmen, sagen wir.

 
Alexey Burnakov:

Ich verstehe, dass Ihr Code in dem Artikel bereits geeignet ist, den Handel mit den gefundenen Punkten zu simulieren, und es ist genau richtig, ihn zu verwenden. ) Das ist großartig.

Nun, sagen wir, in ein paar Tagen des Maschinenbetriebs.

Der Algorithmus selbst funktioniert und erfordert (sofern Sie nicht zu wählerisch sind) keine zusätzliche Arbeit, während ein Codefragment mit idealem zz mit etwas zusätzlicher Arbeit als Handelssimulation verwendet werden kann.

Innerhalb von ein paar Tagen? - Nein, ich denke, man kann ein gutes Ergebnis viel schneller erzielen, in Stunden oder sogar Minuten. In dem Artikel dauerte die Suche etwa ein paar Sekunden, aber es waren 100 Balken. In Ihrem Fall kann es natürlich viel länger dauern. Sie können die Anzahl der Epochen experimentell abschätzen, so dass Sie das Ergebnis mit der angegebenen Genauigkeit erhalten und das Zeitlimit einhalten können.

 
Andrej Dik:

Der Algorithmus selbst funktioniert und braucht (sofern man nicht zu pingelig ist) keine Feinabstimmung, aber der Codeabschnitt mit dem perfekten zz könnte im Prinzip als Handelssimulation mit etwas Feinabstimmung verwendet werden.

Innerhalb von ein paar Tagen? - Nein, ich denke, man kann ein gutes Ergebnis viel schneller erzielen, in Stunden oder sogar Minuten. In dem Artikel dauerte die Suche etwa ein paar Sekunden, aber es waren 100 Balken. In Ihrem Fall kann es natürlich viel länger dauern. Sie können die Anzahl der Epochen experimentell so anpassen, dass Sie das Ergebnis mit der gewünschten Genauigkeit erhalten und die Zeitvorgaben einhalten können.

Also. Ich danke Ihnen. Ich werde es ausprobieren. Ich möchte Eingaben für Minutenbalken für die gesamte Historie generieren. Und dann werde ich sie auf mein Experiment anwenden.

Gute Arbeit, die Sie geleistet haben. Und die Tatsache, dass ideale Einträge nicht unbedingt mit der ZZ-Logik übereinstimmen, ist eine nicht triviale und wichtige Schlussfolgerung.

 
Alexey Burnakov:

Ja. Ich danke Ihnen. Ich werde es ausprobieren. Ich möchte Eingaben für die Minutenbalken in der gesamten Historie erzeugen. Und dann werde ich sie in mein Experiment einbauen.

Gute Arbeit, die Sie geleistet haben. Und die Tatsache, dass ideale Eingaben nicht unbedingt mit der ZZ-Logik übereinstimmen, ist eine nicht triviale und wichtige Schlussfolgerung.

Und ich danke Ihnen. Aus irgendeinem Grund haben nur wenige Leute auf die Fettschrift geachtet...

Ich möchte noch etwas hinzufügen. In dem Artikel wird der PPI unter Berücksichtigung der durchschnittlichen Streuung eines Instruments optimiert, aber jetzt bin ich geneigt zu denken, dass die Optimierung ohne Streuung erfolgen sollte, während die Streuung während der Testdurchläufe berücksichtigt werden muss.

 
Andrej Dik:

Auch Ihnen vielen Dank. Aus irgendeinem Grund achten nur wenige Leute auf die Fettschrift...

Ich möchte noch etwas hinzufügen. Der Artikel optimiert den WPI unter Berücksichtigung des durchschnittlichen Spreads des Instruments, aber jetzt bin ich geneigt, oder eher sicher, zu glauben, dass die Optimierung ohne Spread durchgeführt werden sollte, während die Testhandelsläufe mit dem Spread durchgeführt werden sollten.

Um "auf jedem Balken" zu optimieren, muss natürlich der Spread berücksichtigt werden. Andernfalls wird bei jedem Barren ein Geschäft in Richtung des nächsten Eröffnungskurses ausgeführt. Die Streuung macht die Aufgabe nichtlinear und bestimmt die optimale Geschäftskonfiguration.
 
Alexey Burnakov:

LSTM werden wir uns später ansehen.

Im Moment haben mein Kollege und ich bei dem Test einen R^2 von 0,2 erreicht. Ein paar Faltungsfilter und ein paar Neuronen in einer vollständig verknüpften Schicht. Die Idee ist, dass eine Wiederholung dort nicht nötig ist. Was wir brauchen, ist eine korrekte Extraktion der Merkmale.

Die bisherigen Ergebnisse für mein Problem lauten wie folgt (alle R^2-Werte auf der Testmenge):

ARIMA: 0,14

MLP (vollständig verbundenes NN): 0,12-0,15

GBM: 0,1

Convolutional Net (einfach, nicht gut entwickelt): mindestens 0,2

So hat sich die simulierte Abhängigkeit tatsächlich als nicht so einfach herausgestellt und gängige Methoden versagen. Wir werden das Faltungsnetzwerk verbessern.

Falls jemand Zeit hat, das Problem zu lösen (mit einem rekurrenten Netzwerk), bitte ich um Mitteilung des Ergebnisses.

 
Alexey Burnakov:

Bisher sind die Ergebnisse für mein Problem wie folgt (alle R^2-Schätzungen auf der Testmenge):

ARIMA: 0,14

MLP (vollständig verbundenes NN): 0,12-0,15

GBM: 0,1

Convolutional Net (einfach, nicht gut entwickelt): mindestens 0,2

So hat sich die simulierte Abhängigkeit tatsächlich als nicht so einfach herausgestellt und gängige Methoden versagen. Wir werden das Faltungsnetzwerk verbessern.

Falls jemand Zeit hat, das Problem zu lösen (mit einem rekurrenten Netzwerk), bitte ich um Mitteilung der Ergebnisse.

Ich habe auch an meinem Problem gearbeitet. Ich habe auch NS-Faltungsschichten mit vollständig verknüpften Schichten darüber verwendet.

Das beste Ergebnis, das ich für R^2 bei dem Test erhalten habe , war 0,23 .

Es scheint die Decke zu sein. Eine Erhöhung der Komplexität des Netzes bringt nichts mehr. Aber die Leistung des Netzes ist nicht perfekt. Dies ist ein Punktdiagramm der Reaktion gegenüber dem Modell. Es wird eine schmale, abfallende Wolke erwartet. Es ist nämlich zu erkennen, dass die komplexe Antwortfunktion nicht vollständig durch das Netz modelliert wird (Sprünge werden nicht erkannt). Die vom Netz erzeugte Funktion ist viel reibungsloser, als ich es geplant hatte.


Vielleicht hat jemand, der sich mit NS auskennt, eine Idee, wie eine solch komplexe Funktion modelliert werden könnte (Beispiel):

Erhöhung der Anzahl von Schichten, Neuronen?

In der Tat, ohne Vorbereitung der Eingabevariablen, haben alle populären Methoden verschmolzen. Convert kann potenziell die benötigten Merkmale extrahieren (durch Integration, Differenzierung, nichtlineare Glättung), und der NS lernt bereits normal aus ihnen. Das ist die Macht der Faltung.

Übrigens hat Herr Perervenko in seinem Artikel über neuronale Netze nichts über diese Art von Netzen gesagt. Nun, ich habe in dem gesamten Artikel nur eine einzige Erwähnung gefunden. Und es wäre möglich, die Frage der Anwendbarkeit auf Zeitreihen (gedanklich) zu klären.

Alexej

 

Vor allem Sie geben mehr Input.

Und Ausbildungsbeispiele.

 
Vadim Schischkin:

Vor allem Sie geben mehr Input.

Und Ausbildungsbeispiele.

Das ist genug.
 

Je mehr Neuronen in der versteckten Schicht - desto komplexere Funktionen kann das Neuron beschreiben, man braucht mehr versteckte Schichten und Neuronen darin.

Das Problem ist dann aber, dass das Neuron aufeinanderfolgende Additionen und Multiplikationen (und z.B. Sigmoide für die Aktivierungsfunktion) verwendet, um das Ziel zu beschreiben, d.h. Sie erhalten natürlich nicht Ihre ursprüngliche Funktion, sondern eine Art Annäherung. Und es kann sich herausstellen, dass sich diese Annäherung an einige Merkmale in den Trainingsdaten erinnert, so dass sie mit neuen Daten nicht korrekt funktioniert. Manchmal muss man also das Training unterbrechen, um zu sehen, ob der Fehler bei der Testprobe zurückgegangen ist, und das Training fortsetzen, wenn alles in Ordnung ist. Irgendwann beginnen die Fehler bei den Testdaten zu wachsen, dann muss das Training komplett eingestellt werden.

Außerdem wird die Ausgabe eines Neurons durch die Aktivierungsfunktion begrenzt. Für popular - sigmoid ist (0;1), relu ist [0;inf). Die Zielwerte müssen auf ein anderes Intervall skaliert werden, Ihre Ausgaben im Intervall (-7;7) sind für viele Pakete einfach unerreichbar.