Diskussion zum Artikel "Mathematik im Handel: Sharpe- und Sortino-Ratio" - Seite 2

 
Ivan Titov #:
Habe ich richtig verstanden, dass Sharpe.mqh nur die jährliche Sharpe Ratio berechnet? Der monatliche Sortino wird nicht funktionieren?

Der Artikel enthält die Antwort auf Ihre Frage.

 
Andrey Khatimlianskii #:

Noch einmal: Was ist eine "niedrige Zahl"? Mir scheint, dass 70-80 niedrig ist, aber es gibt keine Strafe für solche Pässe.

Werden die Zahlen mit anderen Pässen verglichen?

Sind sie durch die Länge des Prüfintervalls normalisiert?

Höchstwahrscheinlich ist ein fester Wert eingestellt, sonst müssten Sie die gesamte Ergebnistabelle mehrmals neu berechnen.

Ich stimme mit Ihren Argumenten überein.

 
Andrey Khatimlianskii #:
Sie stimmen überein, aber nicht immer

Wenn Sie im Prüfprogramm den wöchentlichen Zeitrahmen einstellen, stimmen sie fast immer nicht überein:

Im monatlichen Zeitrahmen ist die Differenz sogar noch größer:


 
Rashid Umarov #:

Der Artikel enthält die Antwort auf Ihre Frage.

Ich habe die Antwort auf meine Frage in dem Artikel nicht gefunden, aber nach dem Code Sharpe.mqh zu urteilen, ist Sortino nicht darin enthalten. Deshalb habe ich den geänderten Code mit der Option der Sortino-Berechnung unten angehängt. Gleichzeitig habe ich den Code im Hinblick auf unnötige Funktionsaufrufe optimiert.

Der Nachteil des Sortino-Koeffizienten besteht meiner Meinung nach darin, dass nur Renditen unter dem risikofreien Satz (in diesem Fall Null) für seine Berechnung herangezogen werden. Aber auch eine positive Rendite in einer der Perioden, die unter dem berechneten Durchschnitt für die getestete Strategie liegt, ist ein Risiko. Deshalb habe ich eine Koeffizientenberechnung hinzugefügt, bei der nur Renditen unterhalb des Durchschnitts berücksichtigt werden. Ich habe noch keine Entsprechung gefunden, deshalb habe ich ihn bescheiden Titov-Koeffizient genannt)). Wenn ich ihn finde, werde ich ihn umbenennen.

Im Original ist es ungünstig, dass der Berechnungszeitraum vom aktuellen Zeitrahmen abhängt. Deshalb habe ich den Berechnungszeitraum festgelegt (wenn er nicht explizit festgelegt wird, wird der aktuelle Zeitrahmen verwendet):

Returns.SetTF(PERIOD_MN1);

Ich habe in keiner Quelle die Notwendigkeit gefunden, bei der Berechnung der Sharpe Ratio den Logarithmus der Rendite zu verwenden und sie auf den Jahreswert zu bringen. Daher habe ich die Möglichkeit hinzugefügt, diese Optionen zu deaktivieren.

Aus irgendeinem Grund werden in den Beispielen des Artikels Zeiträume mit Nullrenditen ignoriert. Dies verzerrt das Ergebnis. Daher habe ich eine Option hinzugefügt, um solche Zeiträume in die Berechnung einzubeziehen.

Beispiel für die Berechnung der Sharpe Ratio wie im Originalartikel:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SHARPE));
}

Beispiel für die Berechnung des Sortino-Koeffizienten, wenn alle anderen Faktoren gleich sind:

#include <Sortino.mqh>
CReturns Returns;

..

void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_SORTINO));
}

Ich habe für mich beschlossen, das Risiko unterdurchschnittlicher Renditen in monatlichen Abständen zu bewerten:

#include <Sortino.mqh>
CReturns Returns;

..

int OnInit()
{
        Returns.SetTF(PERIOD_MN1);
        ..
}


void OnTick()
{
        Returns.OnTick();
        ..
}


double OnTester(void)
{
        return(Returns.OnTester(DEF_TITOV, false, false, false));
}
Dateien:
Sortino.mqh  10 kb
 
Ivan Titov #:
Ich habe in keiner Quelle die Notwendigkeit gefunden, den Logarithmus der Renditen bei der Berechnung der Sharpe Ratio zu verwenden

Um mit einem Zitat zu antworten

Die Verwendung des Logarithmus der Renditen bei der Berechnung der Sharpe Ratio ist nicht unbedingt erforderlich, kann aber nützlich sein, um die Berechnungen zu vereinfachen und die statistischen Eigenschaften der Daten zu verbessern, insbesondere wenn es um lange Zeiträume oder sehr volatile Vermögenswerte geht. Logarithmische Renditen werden häufig verwendet, weil sie eine bessere Annäherung an die Normalverteilung der Renditen bieten und die Berechnungen bei der Zusammenstellung von Portfolios vereinfachen.

Ich füge hinzu: Versuchen Sie es ohne Logarithmen und berichten Sie mir über den ungewöhnlichen Nebeneffekt. Sie sollten darauf stoßen.

 
Ivan Titov #:
Ich habe in keiner Quelle die Notwendigkeit gefunden, die Sharpe Ratio zu berechnen und sie auf einen annualisierten Wert zu bringen.

Ein weiteres Zitat

Die Sharpe-Ratio wird auf einen annualisierten Wert gebracht, um die Kennzahl zu standardisieren und einen Vergleich zwischen verschiedenen Anlagestrategien und -portfolios zu ermöglichen, unabhängig vom ursprünglichen Zeithorizont der Anlage. Dies ist eine gängige Praxis, die den Anlegern hilft, die Anlageperformance anhand eines gemeinsamen Standards zu messen, insbesondere wenn Vergleiche zwischen verschiedenen Anlagetypen oder Strategien mit unterschiedlichen Handelsfrequenzen angestellt werden.

 
Rashid Umarov #:
Ich antworte mit einem Zitat

Mit Quellen meinte ich Informationen über Sharpe- und Sortino-Ratios außerhalb dieses Artikels.

Rashid Umarov #:
Die Sharpe-Ratio wird auf einen annualisierten Wert gebracht, um die Kennzahl zu standardisieren, so dass sie zwischen verschiedenen Anlagestrategien und Portfolios verglichen werden kann, unabhängig vom ursprünglichen Zeitrahmen der Anlage.
Die Sharpe-Ratio ist das Verhältnis zwischen der durchschnittlichen Rendite der Segmente eines bestimmten Zeitraums und der Standardabweichung derselben Segmente. Das heißt, die Länge der Segmente spielt keine große Rolle für die Möglichkeit, Strategien miteinander zu vergleichen. Meiner Meinung nach ist es nur ratsam, sie um ein Mehrfaches länger zu wählen als die durchschnittliche Dauer eines Handels, um unnötiges Rauschen zu entfernen.
Rashid Umarov #:
Versuchen Sie es ohne Logarithmen und berichten Sie mir über den ungewöhnlichen Nebeneffekt. Sie sollten darauf stoßen

Ich habe es ausprobiert: nichts Ungewöhnliches. Aber ich habe einen Fehler gefunden, ich füge die korrigierte Version bei.

Dateien:
Sortino.mqh  10 kb
 
Rashid Umarov #:

Ich antworte mit einem Zitat

Ich füge für mich selbst hinzu - versuchen Sie es ohne Logarithmen und berichten Sie mir später über den ungewöhnlichen Nebeneffekt. Sie sollten es erleben.

Seltsamerweise ergibt dieses Skript für eine solche Aktie einen Sharpe-Wert von 2,08:

Und für dieses (dasselbe mit Reinvestition) 3,66:

Obwohl es offensichtlich ist, dass die Qualität der zweiten Aktie schlechter ist (Reinvestition verschlechtert immer die Qualität der Aktie).

Und wenn wir statt der Logarithmen der Aktieninkremente die Inkremente selbst verwenden:

         log_return = (m_equities[i] - prev_equity); // Inkrement 
         //log_return = MathLog(m_equities[i] / prev_equity); // Erhöhung des Logarithmus

Wir erhalten 3,85 für die erste und 2,1 für die zweite Aktie. Das ist viel angemessener.

 
Darüber hinaus hängt der Sharpe-Wert bei Logarithmen erheblich von der Höhe der Ersteinlage ab. Im obigen Beispiel (Equity 1) mit einer anfänglichen Einlage von 4000 beträgt er 2,08. Mit einer Einlage von 400000 beträgt er 3,83. Obwohl sich die Form des Eigenkapitals in keiner Weise verändert hat (Handel mit einem festen Lot).
 

Der Sharpe von Logarithmen hängt nur im Falle des Handels mit Wiederanlage nicht von der Höhe der Einlage ab.

Aber in diesem Fall hängt der Sharpe-Wert bei einfachen Inkrementen nicht von der Höhe der Einlage ab.

Daher verstehe ich nicht, warum ich Sharpe auf Logarithmen verwenden sollte.