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

 
Evgeni Gavrilovi catboost erstellen kann, brauche Sharp.

Das Ergebnis der Ausbildung eines Modells mit meiner Version ist fast das gleiche wie mit RMSE, so gibt es einen Fehler irgendwo im Code.

preds und target sind return (a[i]-a[i+1])

Ich weiß nicht viel über Python oder Katbusta, aber ich werde dumme Fragen stellen)

1) Was sind Daten, warum ist der Mittelwert nicht aus preds?

2) Es scheint, dass man für Gradient Bousting mehr Formeln für Gradient und Hessian angeben muss?

 
Aleksey Nikolayev #:

Ich weiß nicht viel über Python oder Catbusta, aber ich werde dumme Fragen stellen)

1) Was sind Daten, warum ist der Durchschnitt nicht von preds?

2) Es scheint, dass für Gradient Bousting Sie Formeln für Gradient und hessischen angeben müssen?

Anscheinend ja, ich habe etwas übersehen. Ich habe die Vorlage von der offiziellen Website https://catboost.ai/en/docs/concepts/python-usages-examples verwendet .

Daten - generierte Liste von Modellvorhersagen, ich habe negative Werte in positive umgewandelt, um ihr arithmetisches Mittel für den Sharpe-Durchschnitt zu berechnen

 
Evgeni Gavrilovi #:

Daten - generierte Liste von Modellvorhersagen, negative Werte wurden in positive Werte umgewandelt, um ihr arithmetisches Mittel für den Sharpe-Durchschnitt zu berechnen

Warum? Für Sharpe wird der Durchschnitt mit den ursprünglichen Vorzeichen berechnet.

 
Aleksey Nikolayev #:

Warum? Für Sharpe wird der Durchschnitt mit den ursprünglichen Vorzeichen betrachtet.

Um auch Verkaufsaufträge zu berücksichtigen, nehmen wir an, es gibt 2 genaue Prognosen -0,002 (20 Pips) und +0,003 (minus - short, plus - long).

Der Gewinn ist +0,005, der Durchschnitt ist 0,0025, und ohne Änderung des Vorzeichens ist er 0,0005.


Es stellt sich heraus, dass eine benutzerdefinierte Metrik ihre eigene Verlustfunktion benötigt, analog zur KlasseRmseObjective(object )
 
Evgeni Gavrilovi #:

Offensichtlich ja, ich habe etwas übersehen. Ich habe die Vorlage von der offiziellen Website https://catboost.ai/en/docs/concepts/python-usages-examples verwendet .

Es gibt zwei Arten von Metriken loss_function und eval_metric. Sie brauchen wahrscheinlich die erste, schauen Sie hier https://catboost.ai/en/docs/concepts/python-usages-examples#user-defined-loss-function

Aber vielleicht liege ich ja falsch. Es gibt hier bessere Python-Experten und Python-Lobpreiser als mich. Vielleicht können sie dir weiterhelfen.

 
Evgeni Gavrilovi #:

Um auch Verkaufsaufträge zu berücksichtigen, nehmen wir an, es gibt 2 genaue Prognosen -0,002 (20 Pips) und +0,003 (minus - short, plus - long).

Gewinn +0,005, der Durchschnitt ist 0,0025, und ohne das Zeichen zu ändern, wird es 0,0005 sein.

Nun, das wäre kein Sharpe. Vielleicht ist es auch notwendig, nicht nur das Modul zu nehmen, sondern es mit dem Vorzeichen der Prognose zu multiplizieren (mit minus eins beim Verkauf und mit eins beim Kauf).

 
Evgeni Gavrilovi catboost erstellen kann, brauche Sharp.

Das Ergebnis der Ausbildung eines Modells mit meiner Version ist fast das gleiche wie mit RMSE, so gibt es einen Fehler irgendwo im Code.

preds und target sind return (a[i]-a[i+1])

Geben Sie die erhaltenen Werte aus und vergleichen Sie sie mit der anderen Metrik. Geben Sie beide Werte gleichzeitig aus, und zwar für jede Iteration. Vergessen Sie nicht, in catbust early stop das Maximum des benutzerdefinierten Kriteriums und "use best model=True" anzugeben. Sie können einfach Verbose einschalten, dann werden die Werte der Metrik bei jeder Iteration von selbst ausgegeben.
 
Maxim Dmitrievsky #:
Drucken Sie die erhaltenen Werte aus und vergleichen Sie sie mit der anderen Metrik. Drucken Sie beides auf einmal, für jede Iteration. Vergessen Sie nicht, in catbusta early stop "max user criteria" und "use best model=True" zu aktivieren. Sie können einfach Verbose aktivieren, dann werden die metrischen Werte bei jeder Iteration gedruckt.

Für Forschungszwecke wäre es interessant (auch wenn es ziemlich kompliziert ist), eine eigene Verlustfunktion zu verwenden. Dazu gibt es eine Möglichkeit (wenn Sie an den Anfang der Seite gehen, müssen Sie den Abschnitt "Benutzerdefinierte Verlustfunktion" ganz unten finden).

Usage examples
Usage examples
  • catboost.ai
Regression CatBoostRegressor class with array-like data.
 
Aleksey Nikolayev #:

Für Forschungszwecke wäre es interessant (obwohl es ziemlich kompliziert ist), eine benutzerdefinierte Verlustfunktion zu erstellen. Dazu gibt es eine Möglichkeit (wenn Sie an den Anfang der Seite gehen, sollten Sie den Abschnitt Benutzerdefinierte Verlustfunktion ganz unten finden).

Versuchen wir es später
 
Aleksey Nikolayev #:

Für Forschungszwecke wäre es interessant (obwohl es ziemlich kompliziert ist), eine benutzerdefinierte Verlustfunktion zu erstellen. Es gibt eine Möglichkeit dazu (wenn Sie an den Anfang der Seite gehen, müssen Sie den Abschnitt Benutzerdefinierte Verlustfunktion ganz unten finden).

Bei mir hat es mit xgboost.... nicht funktioniert.
Oder besser gesagt, es hat funktioniert, aber das Training hat nicht funktioniert, man muss sich dort mit Gradienten anfreunden, man muss die Fitnessfunktion gradient machen, mit Genetik ist das viel einfacher