Discussione sull’articolo "La matematica nel trading: rapporti di Sharpe e Sortino" - pagina 3

 

Leggere il logaritmo del prezzo

Troverete altri riferimenti

 
Rashid Umarov #:

Leggere il logaritmo del prezzo

Troverete altri riferimenti

Un'altra sfumatura estremamente importante è che in questo script, nel calcolo dello Sharpe vengono prese in considerazione solo le barre in cui si è verificata una variazione dell'equity:

     
      //--- add only if equity has changed
      if(m_equities[i] != prev_equity)
        {  
         log_return = MathLog(m_equities[i] / prev_equity); // incremento del logaritmo
         aver += log_return;            // logaritmo medio degli incrementi
         AddReturn(log_return);         // riempire l'array di logaritmi incrementali
         counter++;                     // contatore dei ritorni
        }
      prev_equity = m_equities[i];

La variazione media viene quindi trovata dividendo per il numero di tali barre:

//--- valore medio del logaritmo di incremento
   aver /= counter;

Tuttavia, il passaggio agli Sharpe annuali si basa sul rapporto temporale, come se tutte le barre del tf corrente fossero conteggiate nel calcolo:

//--- ricalcolare lo Sharpe ratio al valore annuale in tutti gli altri casi
//--- quanti periodi dell'orizzonte temporale corrente si inseriscono in D1
   double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
   sharpe = sharpe * MathSqrt(factor);     // ricalcolare il valore giornaliero
   sharpe = sharpe * MathSqrt(252);        // ottenere l'annuale dal giornaliero

Cioè, ancora una volta: lo script trova gli sharps medi per 1 barra con cambio di equity e poi, per trovare quello annuale, lo moltiplica non per il numero di tali barre in un anno, ma per il numero totale di barre di questo tf in un anno (la sua radice, ovviamente). Il che è errato e sovrastima il dato finale.

A quanto pare, lo Sharpe viene calcolato nello stesso modo nel tester?

 
Kristian Kafarov #:
lo script trova lo Sharpe medio per 1 barra con cambio di equity e poi, per trovare quello annuale, lo moltiplica non per il numero di tali barre in un anno, ma per il numero totale di barre di questo tf in un anno (la sua radice, ovviamente). Il che è errato e sovrastima il dato finale.

L'ho notato anch'io. Ecco perché nella mia versione ho aggiunto un'opzione per tenere conto delle barre zero.