Otro matiz extremadamente importante es que en este script, sólo se tienen en cuenta para el cálculo del Sharpe las barras en las que se ha producido un cambio en la equidad:
//--- add only if equity has changedif(m_equities[i] != prev_equity)
{
log_return = MathLog(m_equities[i] / prev_equity); // incrementar logaritmo
aver += log_return; // logaritmo medio de los incrementos
AddReturn(log_return); // rellenar el array de logaritmos incrementalescounter++;// contador de devoluciones
}
prev_equity = m_equities[i];
La variación media se obtiene dividiendo por el número de barras de este tipo:
//--- valor medio del logaritmo de incremento
aver /= counter;
Sin embargo, la transición a los sharps anuales se basa en la relación temporal, como si todas las barras del tf actual se tuvieran en cuenta en el cálculo:
//--- recalcular el ratio de Sharpe al valor anual en todos los demás casos//--- cuántos periodos del marco temporal actual caben en D1double factor = double(PeriodSeconds(PERIOD_D1)) / PeriodSeconds(timeframe);
sharpe = sharpe * MathSqrt(factor); // recalcular al valor diario
sharpe = sharpe * MathSqrt(252); // obtener anual de diario
Es decir, una vez más: el script encuentra los sharps promediados por 1 barra con cambio de equidad, y luego, para encontrar el anual, lo multiplica no por el número de tales barras en un año, sino por el número total de barras de este tf en un año (su raíz, por supuesto). Lo cual es erróneo y sobreestima la cifra final.
Aparentemente, ¿el Sharpe se calcula de la misma manera en el probador?
Kristian Kafarov #: el script halla el Sharpe medio por 1 barra con cambio de renta variable, y luego, para hallar el anual, lo multiplica no por el número de barras de este tipo en un año, sino por el número total de barras de este tf en un año (su raíz, claro). Lo cual es erróneo y sobreestima la cifra final
Yo también me di cuenta de eso. Por eso en mi versión he añadido una opción para tener en cuenta las barras cero.
Leer el logaritmo del precio
Usted mismo encontrará otras referencias
Leer el logaritmo del precio
Usted mismo encontrará otras referencias
Otro matiz extremadamente importante es que en este script, sólo se tienen en cuenta para el cálculo del Sharpe las barras en las que se ha producido un cambio en la equidad:
//--- add only if equity has changed if(m_equities[i] != prev_equity) { log_return = MathLog(m_equities[i] / prev_equity); // incrementar logaritmo aver += log_return; // logaritmo medio de los incrementos AddReturn(log_return); // rellenar el array de logaritmos incrementales counter++; // contador de devoluciones } prev_equity = m_equities[i];La variación media se obtiene dividiendo por el número de barras de este tipo:
Sin embargo, la transición a los sharps anuales se basa en la relación temporal, como si todas las barras del tf actual se tuvieran en cuenta en el cálculo:
Es decir, una vez más: el script encuentra los sharps promediados por 1 barra con cambio de equidad, y luego, para encontrar el anual, lo multiplica no por el número de tales barras en un año, sino por el número total de barras de este tf en un año (su raíz, por supuesto). Lo cual es erróneo y sobreestima la cifra final.
Aparentemente, ¿el Sharpe se calcula de la misma manera en el probador?
el script halla el Sharpe medio por 1 barra con cambio de renta variable, y luego, para hallar el anual, lo multiplica no por el número de barras de este tipo en un año, sino por el número total de barras de este tf en un año (su raíz, claro). Lo cual es erróneo y sobreestima la cifra final
Yo también me di cuenta de eso. Por eso en mi versión he añadido una opción para tener en cuenta las barras cero.