Maschinelles Lernen im Handel: Theorie, Modelle, Praxis und Algo-Trading - Seite 1138
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
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.
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.
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?
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.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 solltenOK, aber ein bisschen später - im Moment hecheln alle Maschinen nach einer passenden Geschichte :)
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.
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.
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ß.
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.
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.
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.