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

 
SanSanych Fomenko:

2. Siehe Video:

Sorry, aber der übliche Unsinn eines ungebildeten Doktoranden ...

Wie man so schön sagt: Was ich kaufe, verkaufe ich auch. Mir wurde eine Frage gestellt, die ich in einem Video ausführlich beantwortet habe. Der Dozent ist nicht schlau, er redet von statistischer Lerntheorie.

siehe. Vapnik V.N. Statistische Lerntheorie. NY: John Wiley, 1998.

SanSanych Fomenko:

1. Eine deutliche Verschlechterung der Verallgemeinerbarkeit, wenn wir mindestens einen informativen Prädiktor aus der Stichprobe entfernen.


Glauben Sie mir, das beweist leider nichts. Wenn die Menge der Prädiktoren schlecht ist (viel Rauschen), ist dieser Effekt umso stärker, je mehr Rauschen vorhanden ist. Dies lässt sich ganz einfach erklären: Je mehr Rauschen, desto einfacher ist es für den Algorithmus, einen "günstigen" Wert zu finden.

Wie man so schön sagt, nach Geschmack und Farbe ...

SanSan Fomenko:

Bezüglich Ihrer Akte.

1. Es ist mir nicht gelungen, 6 Klassifizierungsmodelle für Ihre Daten zu erstellen: Fehler von mehr als 50%. Wenn Sie möchten, kann ich die Ergebnisse hier veröffentlichen

Vielen Dank für die Informationen. Die Ergebnisse sind bereits klar - sie fehlen völlig.

SanSanych Fomenko:

2. Der Grund für dieses Ergebnis ist, dass Sie einen sehr schlechten Satz von Prädiktoren haben - Rauschen, d. h. Prädiktoren, die für die Zielvariable nicht relevant sind. Die Prädiktoren 6, 7 und 8 haben eine gewisse, aber sehr geringe Vorhersagekraft. Ich arbeite nicht mit solchen Prädiktoren. Die anderen sind nur Lärm.

Nun ja, ohne Rauschen kann jeder Dummkopf richtig klassifizieren. Der Lärm ist da und in angemessener Menge. Es gibt auch nützliche Informationen. Hier sind zum Beispiel die Ergebnisse der alten libVMR 3.01:

/**
* Die Qualität der Modellierung in "out of sample":
*
* TruePositives: 245
* TrueNegatives: 113
* FalschePositive: 191
* FalschNegative: 73
* Gesamtzahl der Muster in den Stichproben mit Statistik: 622
* Gesamtfehler in der nicht erfassten Stichprobe: 264
* Empfindlichkeit der Verallgemeinerungsfähigkeit: 56.19266055045872%
* Spezifität der Verallgemeinerungsfähigkeit: 60,752688172043015%
* Verallgemeinerungsfähigkeit: 16,94534872250173%
* Indikator von Reshetov: 0.1075044213677977

*/

Ich meine, ich habe meine Verallgemeinerungsfähigkeit um fast 17 % verbessert.

Die Leistung des neuen Mannes ist deutlich besser.

 
Alexey Burnakov:
Verwenden Sie die Kreuzvalidierung, um die Anzahl der Komponenten zu ermitteln. Bester Wert in der Kreuzvalidierung, dann Prüfung in der Validierungsmenge.

Das Ergebnis war wieder nicht gut. Ich hätte 20 Komponenten genommen, da min(trainwinrate. validate1winrate, validate2winrate) im Vergleich zu den anderen Komponentenmengen am größten ist. Und ich würde ~55% Ergebnis im Fronttest bekommen, noch schlechter als vorher. Es kam ein seltsames Modell heraus - der Gewinnanteil liegt bei etwas über 50 % (nicht für Forex geeignet), die Kreuzvalidierung funktioniert nicht, die Bedeutung der Prädiktoren kann nicht herausgerechnet werden. Ich kann es nur ausdrucken und an die Wand hängen :)


 
Yury Reshetov:

* TruePositives: 245

* TrueNegatives: 113
* FalschePositive: 191
* FalschNegative: 73

Sie haben also eine Gewinnquote von 57,6 % in test.csv, richtig? Ich werde meine Methode ausprobieren, um die Prädiktoren herauszufiltern und das Neuron zu trainieren, und morgen über die Ergebnisse berichten.
 
Dr. Trader:

Das Ergebnis war wieder nicht gut. Ich hätte 20 Komponenten genommen, da min(trainwinrate. validate1winrate, validate2winrate) im Vergleich zu den anderen Komponentenmengen am größten ist. Und ich würde ~55% Ergebnis im Fronttest bekommen, noch schlechter als vorher. Es kam ein seltsames Modell heraus - der Gewinnanteil liegt bei etwas über 50 % (nicht für Forex geeignet), die Kreuzvalidierung funktioniert nicht, die Bedeutung der Prädiktoren kann nicht herausgerechnet werden. Ich kann es nur ausdrucken und an die Wand hängen :)


Wenn Sie nicht genügend Daten haben, kann die Kreuzvalidierung zu schlechten Ergebnissen führen. Das maschinelle Lernen umfasst Zehntausende von Beobachtungen. Wenn die Kreuzvalidierung schlecht ist, bedeutet dies, dass das Modell als Ganzes schlecht ist.
 

Dies sind die Ergebnisse meines großen Experiments. Aufgrund eines Windfehlers wurde der Code unterbrochen, und ich habe nicht alle Zeichen fertig gelernt. Aber das reicht mir im Moment. Gute Ergebnisse beim Eurusd.

Ich habe nur die maximalen Werte angegeben, die ich gefunden habe, ohne irgendwelche Parameter anzugeben. Es gibt bereits ein gutes Ergebnis. Die Feinheiten der GBM-Einstellung helfen dabei.

 

Durch die Vorhersage der eurusd 512 Minuten im Voraus, können Sie verdienen 1,5 Pips pro Handel, bin ich richtig? Und die Spanne wird auch berücksichtigt? Es ist auch wichtig, den maximalen Drawdown für diese Zeit zu kennen. Es macht keinen Sinn, auch nur für 10 Pips zu handeln, wenn der Drawdown für diese Zeit bei zweihundert liegt. Um den Handel einzuschätzen, wäre es gut, die Sharpe Ratio zu verwenden, aber ich habe sie in R nicht gesehen. Für den Anfang können wir uns auf den folgenden Faktor beschränken: (Endgewinn)/(maximaler Drawdown des Eigenkapitals über die gesamte Zeit).

Nehmen wir zum Beispiel an, wir haben ein Signal 1. Der Händler hat im Laufe des Jahres 1000% verdient, aber sein maximaler Drawdown betrug 50%. Gleichzeitig hat Signal 2 nur 600% Gewinn über das Jahr, aber der maximale Drawdown betrug 25%. Es mag den Anschein haben, dass Händler 1 besser ist (in Bezug auf den Gewinn), aber das ist nicht der Fall, er riskiert nur doppelt so viel. Der erste Händler hat 1000/50 = 20, der zweite hat 600/25 = 24. Es ist also besser, sich für das zweite Signal anzumelden und das Risiko zu verdoppeln, wenn Sie 50 % der Einlage riskieren wollen.

Auch bei Ihrem Experiment ist es wichtig, die Risiken abzuschätzen. Der Handel in einem kleinen Intervall kann sehr viel profitabler sein, da das Modell rechtzeitig auf Preisspitzen reagieren und davon profitieren kann, anstatt einen großen Drawdown abzuwarten, bei dem die Gefahr besteht, einen Stop-Loss zu erwischen.

 
Alexey Burnakov:

Liebe Kolleginnen und Kollegen, wenn Sie Zeit haben, können Sie mir unter diesem Artikel Fragen stellen. https://habrahabr.ru/company/aligntechnology/blog/303750/

Denn Habr ist still!

Hubr ist nicht still - Hubr liest.
Sehr viele Buchstaben.
 
Dr. Trader:

Durch die Vorhersage der eurusd 512 Minuten im Voraus, können Sie verdienen 1,5 Pips pro Handel, bin ich richtig? Und die Spanne wird auch berücksichtigt? Es ist auch wichtig, den maximalen Drawdown für diese Zeit zu kennen. Es macht keinen Sinn, auch nur für 10 Pips zu handeln, wenn der Drawdown für diese Zeit bei zweihundert liegt. Um den Handel einzuschätzen, wäre es gut, die Sharpe Ratio zu verwenden, aber ich habe sie in R nicht gesehen. Für den Anfang können wir uns auf den folgenden Faktor beschränken: (Endgewinn)/(maximaler Drawdown des Eigenkapitals über die gesamte Zeit).

Nehmen wir zum Beispiel an, wir haben ein Signal 1. Der Händler hat im Laufe des Jahres 1000% verdient, aber sein maximaler Drawdown betrug 50%. Zur gleichen Zeit hat Signal 2 nur 600% Gewinn über das Jahr, aber der maximale Drawdown war 25%. Es mag den Anschein haben, dass Händler 1 besser ist (in Bezug auf den Gewinn), aber das ist nicht der Fall, er riskiert nur doppelt so viel. Der erste Händler hat 1000/50 = 20, der zweite hat 600/25 = 24. Es ist also besser, sich für das zweite Signal anzumelden und das Risiko zu verdoppeln, wenn Sie 50 % der Einlage riskieren wollen.

Auch bei Ihrem Experiment ist es wichtig, die Risiken abzuschätzen. Der Handel in einem kleinen Intervall kann sehr viel profitabler sein, da das Modell rechtzeitig auf Preisspitzen reagieren und davon profitieren kann, anstatt einen großen Drawdown abzuwarten, bei dem die Gefahr besteht, einen Stop-Loss zu erwischen.

Ja 1,5 Punkte mit einer Spanne von 1.

Alle anderen Indikatoren werden gemeinsam ausgewertet: Ich werde Eulen auf mt4 auf das trainierte Modell setzen.

Leider kann ich Sharp und Co. nicht in R berechnen, da ich 49 Zufallsstichproben habe, die die Reihenfolge der Trades nicht wiederherstellen.

Die Ergebnisse werden für 13000 Trades für eurusd im Besonderen angegeben.
 
Dr. Trader:
Ihre Gewinnquote bei test.csv beträgt also 57,6 %, richtig? Ich werde meine Methode ausprobieren, um die Prädiktoren auszusieben und das Neuron zu trainieren, und morgen über die Ergebnisse berichten.

Nicht der Gewinn, sondern die Anzahl der korrekten Vorhersagen der zukünftigen Kursrichtung. Der Klassifikator erzeugt einen von zwei Werten für die Teststichprobe: Positiv - künftiger Preisanstieg wird erwartet, Negativ - künftiger Preisrückgang wird erwartet. Wenn sie ein Testmuster richtig vorhersagt, wird sie als wahr eingestuft. Wenn es falsch ist, ist es Falsch.

Sensitivität der Verallgemeinerungsfähigkeit: 56,19266055045872% - das zukünftige Preiswachstum ist korrekt: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Spezifität der Verallgemeinerungsfähigkeit: 60,752688172043015% - korrekt vorhergesagter zukünftiger Preisrückgang: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%

 
Yury Reshetov:

Nicht der Gewinn, sondern die Anzahl der korrekten Vorhersagen der zukünftigen Kursrichtung. Der Klassifikator für die Teststichprobe liefert einen von zwei Werten: Positiv - es wird ein zukünftiges Preiswachstum angenommen, negativ - es wird ein zukünftiger Preisrückgang angenommen. Wenn sie ein Testmuster richtig vorhersagt, wird sie als wahr eingestuft. Wenn es falsch ist, ist es Falsch.

Sensitivität der Verallgemeinerungsfähigkeit: 56,19266055045872% - das zukünftige Preiswachstum ist korrekt: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56,192660550458715%

Spezifität der Verallgemeinerungsfähigkeit: 60,752688172043015% - korrekt vorhergesagter zukünftiger Preisrückgang: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%

Yuri, der erste Versuch mit deinen Daten:

Methode verlust_funktion cv_folds bag_frac model_params AUC_cv genauigkeit_trainieren genauigkeit_validieren
GBM bernoulli 4 0.4 0.015_|_7_|_70_|_600 0.429659 0.590361 0.50501
GBM bernoulli 4 0.6 0.02_|_5_|_110_|_600 0.485727 0.586345 0.51503

Zwei verschiedene Sätze von Parameterwerten für das Training. Es ist bemerkenswert, dass die AUC bei der Kreuzvalidierung unter dem Sockel liegt.

Insgesamt ist eine Genauigkeit von 51,5 % bei dem Test das Beste, was bisher erreicht wurde.

Ich weiß nicht einmal, wie Sie auf 60 % kommen.

Grund der Beschwerde: