Discussão do artigo "Matemática na negociação: indices de Sharpe e de Sortino" - página 3

 

Ler o logaritmo do preço

Você mesmo encontrará outras referências

 
Rashid Umarov #:

Leia o logaritmo do preço

Você mesmo encontrará outras referências

Outra nuance extremamente importante é que, nesse script, somente as barras em que houve uma mudança no patrimônio líquido são levadas em consideração no cálculo do Sharpe:

     
      //--- add only if equity has changed
      if(m_equities[i] != prev_equity)
        {  
         log_return = MathLog(m_equities[i] / prev_equity); // incrementar o logaritmo
         aver += log_return;            // logaritmo médio dos incrementos
         AddReturn(log_return);         // preencher a matriz de logaritmos incrementais
         counter++;                     // contador de retornos
        }
      prev_equity = m_equities[i];

A alteração média é então encontrada dividindo-se pelo número de tais barras:

//--- valor médio do logaritmo de incremento
   aver /= counter;

No entanto, a transição para os sharps anuais baseia-se na proporção do período de tempo, como se todas as barras do tf atual fossem contadas no cálculo:

//--- recalcular o índice Sharpe para o valor anual em todos os outros casos
//--- quantos períodos do período de tempo atual cabem em D1
   double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
   sharpe = sharpe * MathSqrt(factor);     // recalcular para o valor diário
   sharpe = sharpe * MathSqrt(252);        // obter anual do diário

Ou seja, mais uma vez: o script encontra a média de sharps por 1 barra com mudança de patrimônio e, em seguida, para encontrar a anual, multiplica-a não pelo número dessas barras em um ano, mas pelo número total de barras desse tf em um ano (sua raiz, é claro). Isso é errôneo e superestima o valor final.

Aparentemente, o Sharpe é calculado da mesma forma no testador?

 
Kristian Kafarov #:
o script encontra o Sharpe médio por 1 barra com mudança de patrimônio e, em seguida, para encontrar o anual, multiplica-o não pelo número dessas barras em um ano, mas pelo número total de barras desse tf em um ano (sua raiz, é claro). O que é errôneo e superestima o valor final

Eu também notei isso. Por isso, em minha versão, adicionei uma opção para levar em conta as barras zero.