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

 
Konstantin Nikitin:

Nach meinen Beobachtungen hat das Schärfen von mehr als 1 noch nicht funktioniert. Ja, und andere Leute die Konten / Charts mit einem großen Index nicht gesehen hat. Ich weiß nicht, ob ich mich täusche.

Aleksey Vyazmikin:

Aus der Beschreibung der Formel geht nicht klar hervor, wie sie zu überprüfen ist, z. B. wieder "arithmetische Durchschnittsgewinn über die Zeit des Haltens einer Position" zu berechnen ist.

Vielleicht handelt es sich um eine kleine mathematische Erwartung?

Jedenfalls habe ich festgestellt, dass je höher dieser Index ist, desto besser, und das ist nicht wenig, und der Hauptbericht wird in die Datei mit diesen Indizes, die ich verstehe, geschrieben.

Nun, was soll ich Ihnen sagen, geschätzte Herren...

Dies sind die Nebenwirkungen der Nutzung von Black Boxes, Bibliotheken anderer Leute usw.

Ich kann Ihnen nur anbieten, Eigenkapital in CSV Ihrer Forschung zu veröffentlichen und ich werde Ihnen sagen, was ist die richtige Sharp Ratio Ihrer Modelle, können Sie den Code selbst berechnen beigefügt (Python)

import random

import csv

import matplotlib

import matplotlib.pyplot as plt


def rndWalk(length, start, var):

    rndwalk = []

    curent = start

    for _ in range(length):

        curent*= 1 + random.gauss(0,3) * var

        rndwalk.append(curent)

    return rndwalk


def ParseCsv(path, columnName):

    tab = csv.DictReader(open(path))

    price = []

    for row in tab: price.append(float(row[columnName]))

    return price


def diff(ts):

    return [ts[n] - ts[n - 1] for n in range(1, len(ts))]


def SharpRatio(PnL):

    ret = sum(PnL) / len(PnL)

    var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL))) ** 0.5

    return len(PnL) ** 0.5 * ret / var


rw = rndWalk(10000,100,0.001)

sr = SharpRatio(diff(rw))

print(sr)


plt.plot(rw)

plt.show()


Der SharpRatio-Code selbst besteht aus nur 3 Zeilen

def SharpRatio(PnL):

ret = Summe(PnL) / len(PnL)

var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


Wenn Sie mir Equity oder PnL schicken, werde ich versuchen herauszufinden, wo das Problem liegt. Ich kann mir vorstellen, dass PnL "unbelastet" verwendet wird, d.h. mit Lücken zwischen den Trades (was natürlich nicht korrekt ist), daher die Skalierung. Ich würde $100 darauf wetten, dass dies das Problem ist.

 
pantural:

Was soll ich Ihnen sagen, meine Herren...

Dies sind die Nebenwirkungen der Verwendung von Black Boxes, Alien-Bibliotheken usw.

Ich kann Ihnen nur anbieten, das Eigenkapital in CSV Ihrer Forschung zu veröffentlichen, und ich werde Ihnen sagen, was ist die richtige Sharp Ratio Ihrer Modelle, können Sie den Code selbst berechnen beigefügt (Python)

Wie kann ich Ihnen die Sharp Ratio stündlich und minütlich mitteilen?

 
Aleksey Vyazmikin:

Wie geben Sie Ihr Kapital an, stundenweise oder minutenweise?

Es spielt keine Rolle, lass es beides sein

Übrigens ist eines der Anzeichen für eine falsche Sharp-Berechnung, wenn Aktien auf verschiedenen Skalen deutlich unterschiedliche Werte für das Sharp-Verhältnis ergeben, während sie normalerweise sehr nahe beieinander liegen sollten.
 
pantural:

Macht nichts, machen wir es auf beide Arten.

Ein Anzeichen für eine falsche Shuffle-Berechnung ist übrigens, wenn das Eigenkapital in verschiedenen Maßstäben deutlich unterschiedliche Zahlen für die Shuffle-Ratios ergibt, während sie normalerweise sehr nahe beieinander liegen sollten

OK, aber ein bisschen später - im Moment hecheln alle Maschinen nach einer passenden Geschichte :)

 
pantural:

Macht nichts, machen wir es auf beide Arten.

Eines der Anzeichen für eine falsche Sharp-Schätzung ist übrigens, dass Aktien auf verschiedenen Skalen wesentlich unterschiedliche Werte für das Sharp-Verhältnis liefern, während sie normalerweise sehr nahe beieinander liegen sollten.

Ich gebe hier die minutengenaue Version wieder und füge den Handelsbericht des Testers bei.

Es stimmt, dass ich die Indikatoren ein wenig verbessert habe.

Die Sharpe Ratio beträgt jetzt 0,29.

Dateien:
KS.zip  102 kb
 
Aleksey Vyazmikin:

Ich gebe eine minutengenaue Variante an und füge den Handelsbericht des Testers bei.

Aber ich habe die Indikatoren ein wenig verbessert.

Das Verhältnis von Sharp liegt jetzt bei 0,29.

Reales Schärfeverhältnis = ~3,79

Der Fehler derjenigen, die versucht haben, Ihre Zahlen zu berechnen, liegt auf der Hand: Sie haben einfach vergessen, das Verhältnis von Rückkehrer zu Variation mit der Quadratwurzel der Serienlänge zu skalieren

def SharpRatio(PnL):

PnL = [x for x in PnL if abs(x) > 0]

ret = Summe(PnL) / len(PnL)

var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


PS: SR=3,79 ist sehr optimistisch, natürlich nur, wenn es sich nicht um einen Sweatshop handelt und korrekt getestet wurde.

 
pantural:

reales Schärfeverhältnis = ~3,79

Der Fehler derjenigen, die den Algorithmus zur Berechnung Ihrer Zahlen erstellt haben, liegt auf der Hand: Sie haben dummerweise vergessen, das Verhältnis von Rückkehrer zu Variation mit der Quadratwurzel der Serienlänge zu skalieren

def SharpRatio(PnL):

PnL = [x for x in PnL if abs(x) > 0]

ret = Summe(PnL) / len(PnL)

var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


PS: SR=3,79 ist sehr optimistisch, natürlich nur, wenn es sich nicht um eine Ausrede handelt (bis zu einem gewissen Grad) und korrekt getestet wurde

Danke für die Neuberechnung!

Wenn es wirklich ein Fehler ist, lohnt es sich vielleicht, ihn in einem speziellen Thread zu melden, da es sich um einen globalen Fehler im Terminal handelt?

Was die Anpassung anbelangt, so habe ich meinen eigenen Ansatz für MO, ich sammle Blätter von Bäumen und betrachte dann ihre Leistung in Bezug auf die Geschichte in Form von ausgebildeten und unbekannten Probe, wo es eine positive Wirkung auf beide Proben gehen, um die nächste Gruppe für eine detaillierte Auswahl und Analyse. Dies ist teilweise eine Anpassung, aber mit Anpassungen für die Tatsache, dass ein solches "Blatt" funktionierte vor und funktioniert jetzt, und was als nächstes passieren wird - niemand weiß.

 
Aleksey Vyazmikin:

Danke für die Neuberechnung!

Wenn es wirklich ein Fehler ist, sollten Sie ihn vielleicht in einem speziellen Thread melden, da es sich um einen globalen Fehler im Terminal handelt?

Ja, das ist definitiv ein Fehler, der gemeldet werden sollte. Darf ich Ihren Bericht als Beispiel verwenden?

Aleksey Vyazmikin:

Was die Anpassung anbelangt, so habe ich meinen eigenen Ansatz für MO, ich sammle Blätter von Bäumen und betrachte dann ihre Leistung in Bezug auf die Geschichte in Form von ausgebildeten und unbekannten Probe, wo es eine positive Wirkung auf beide Proben gehen, um die nächste Gruppe für eine detaillierte Auswahl und Analyse. Das ist zum Teil richtig, aber mit der Einschränkung, dass ein solches "Blatt" schon einmal funktioniert hat und auch jetzt noch funktioniert, und dass niemand weiß, was als nächstes passieren wird.

Anpassung ist überall, egal wie man es betrachtet, die Frage ist, wie man sie auf ein akzeptables Maß reduzieren kann.

 
pantural:

Fit ist überall, egal wie man es betrachtet, die Frage ist, wie man es auf ein akzeptables Maß reduzieren kann.

Das können Sie nicht. Jede Optimierung, jedes Tuning, jedes Training ist eine Anpassung. Man muss sie einfach als unvermeidlich akzeptieren und mit ihr arbeiten.

Die Frage muss hier anders gestellt werden. Leider gibt es wahrscheinlich keine allgemeingültigen Rezepte, und die Formulierung selbst kann für verschiedene Systeme unterschiedlich sein.

 
Yuriy Asaulenko:

Das können Sie nicht. Jede Optimierung, jedes Tuning, jedes Training ist eine Anpassung.

Hier muss die Frage anders gestellt werden. Leider gibt es wahrscheinlich keine allgemeingültigen Rezepte, und die Formulierung selbst kann für verschiedene Systeme unterschiedlich sein.

Siehe

Verwenden Sie keine Zahlen, die angepasst werden müssen.