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

 

Lesen Sie den Logarithmus des Preises

Weitere Referenzen finden Sie selbst

 
Rashid Umarov #:

Lesen Sie den Logarithmus des Preises

Weitere Referenzen finden Sie selbst

Eine weitere sehr wichtige Nuance ist, dass in diesem Skript nur die Balken, bei denen eine Veränderung des Eigenkapitals stattgefunden hat, bei der Berechnung des Sharpe-Wertes berücksichtigt werden:

     
      //--- add only if equity has changed
      if(m_equities[i] != prev_equity)
        {  
         log_return = MathLog(m_equities[i] / prev_equity); // Erhöhung des Logarithmus
         aver += log_return;            // durchschnittlicher Logarithmus der Inkremente
         AddReturn(log_return);         // Füllen des Feldes der inkrementellen Logarithmen
         counter++;                     // Zähler der Rückgaben
        }
      prev_equity = m_equities[i];

Die durchschnittliche Veränderung wird dann durch Division durch die Anzahl dieser Balken ermittelt:

//--- Durchschnittswert des Inkrementlogarithmus
   aver /= counter;

Der Übergang zu den jährlichen Sharps erfolgt jedoch auf der Grundlage des Zeitrahmenverhältnisses, als ob alle Balken des aktuellen tf in die Berechnung einbezogen würden:

//--- Neuberechnung der Sharpe Ratio auf den Jahreswert in allen anderen Fällen
//--- wie viele Perioden des aktuellen Zeitrahmens in D1 passen
   double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
   sharpe = sharpe * MathSqrt(factor);     // Neuberechnung zum Tageswert
   sharpe = sharpe * MathSqrt(252);        // Holen Sie sich jährlich von daily

D.h., noch einmal: Das Skript findet die gemittelten Sharps pro 1 Balken mit Aktienveränderung, und multipliziert sie dann, um den jährlichen zu finden, nicht mit der Anzahl solcher Balken in einem Jahr, sondern mit der Gesamtzahl der Balken dieses tf in einem Jahr (dessen Wurzel, natürlich). Das ist fehlerhaft und überschätzt die endgültige Zahl.

Offenbar wird der Sharpe-Wert im Tester auf die gleiche Weise berechnet?

 
Kristian Kafarov #:
Das Skript ermittelt den durchschnittlichen Sharpe pro 1 Bar mit Aktienveränderung und multipliziert ihn dann, um den jährlichen Sharpe zu ermitteln, nicht mit der Anzahl solcher Barren in einem Jahr, sondern mit der Gesamtzahl der Barren dieses tf in einem Jahr (dessen Wurzel natürlich). Das ist fehlerhaft und überschätzt die endgültige Zahl

Das ist mir auch aufgefallen. Deshalb habe ich in meiner Version eine Option zur Berücksichtigung von Null-Balken hinzugefügt.