Discusión sobre el artículo "Matemáticas en el trading: Ratios de Sharpe y Sortino" - página 2

 
Ivan Titov #:
¿He entendido bien que Sharpe.mqh sólo calcula el ratio de Sharpe anual? ¿El Sortino mensual no funcionará?

El artículo contiene la respuesta a su pregunta.

 
Andrey Khatimlianskii #:

De nuevo, ¿qué es un "número bajo"? A mí me parece que 70-80 es bajo, pero no se penaliza ese tipo de pases.

¿Se comparan las cifras con las de otros pases?

¿Se normalizan en función de la duración del intervalo de prueba?

Lo más probable es que se establezca algún valor fijo, de lo contrario habría que recalcular muchas veces toda la tabla de resultados.

Estoy de acuerdo con tus argumentos anteriores.

 
Andrey Khatimlianskii #:
Coinciden, pero no siempre

Si se fija el marco temporal semanal en el probador, casi siempre no coinciden:

En el plazo mensual, la diferencia es aún mayor:


 
Rashid Umarov #:

El artículo contiene la respuesta a su pregunta.

No encontré la respuesta a mi pregunta en el artículo, pero a juzgar por el código Sharpe.mqh Sortino no está en él. Es por eso que he adjuntado el código modificado con la opción de cálculo Sortino a continuación. Al mismo tiempo he optimizado el código en cuanto a llamadas a funciones innecesarias.

En mi opinión, la desventaja del coeficiente Sortino es que para su cálculo sólo se toman los rendimientos inferiores al tipo libre de riesgo (cero en este caso). Pero un rendimiento positivo en uno de los periodos por debajo de la media calculada para la estrategia probada también es un riesgo. Por eso he añadido un cálculo del coeficiente que sólo tiene en cuenta los rendimientos inferiores a la media. No he encontrado un análogo, así que modestamente lo he llamado coeficiente de Titov)). Cuando lo encuentre, le cambiaré el nombre.

En el original, es inconveniente que el periodo de cálculo dependa del marco temporal actual. Por eso añadí fijar el periodo de cálculo (si no se fija explícitamente, se toma el marco temporal actual):

Returns.SetTF(PERIOD_MN1);

No he encontrado en ninguna fuente la necesidad de utilizar el logaritmo del rendimiento al calcular el ratio de Sharpe y llevarlo al valor anual. Por eso he añadido la posibilidad de desactivar estas opciones.

Por alguna razón, los ejemplos del artículo ignoran los periodos con rendimientos nulos. Esto distorsiona el resultado. Por ello, he añadido una opción para incluir dichos periodos en el cálculo.

Ejemplo de cálculo del coeficiente de Sharpe como en el artículo original:

#include <Sortino.mqh>
CReturns Returns;

..

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


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

Ejemplo de cálculo del coeficiente Sortino en igualdad de condiciones:

#include <Sortino.mqh>
CReturns Returns;

..

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


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

En mi caso, decidí evaluar el riesgo de rendimientos inferiores a la media en intervalos mensuales:

#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));
}
Archivos adjuntos:
Sortino.mqh  10 kb
 
Ivan Titov #:
No he encontrado en ninguna fuente la necesidad de utilizar el logaritmo de los rendimientos al calcular el ratio de Sharpe

Para responder con una cita

Utilizar el logaritmo de los rendimientos en el cálculo de la ratio de Sharpe no es estrictamente necesario, pero puede ser útil para simplificar los cálculos y mejorar las propiedades estadísticas de los datos, especialmente cuando se trata de largos periodos de tiempo o de activos muy volátiles. Los rendimientos logarítmicos se utilizan a menudo porque proporcionan una mejor aproximación a la distribución normal de los rendimientos y simplifican los cálculos al compilar carteras.

Yo añadiría: pruébalo sin logaritmos y cuéntame el efecto secundario inusual. Deberías encontrarlo.

 
Ivan Titov #:
No he encontrado en ninguna fuente la necesidad de calcular el ratio de Sharpe y llevarlo a un valor anualizado.

Otra cita

En cuanto a la anualización del ratio de Sharpe, se hace para estandarizar el ratio y permitir la comparación entre diferentes estrategias y carteras de inversión, independientemente de la escala temporal original de la inversión. Se trata de una práctica común que ayuda a los inversores a medir el rendimiento de la inversión con respecto a una norma común, especialmente cuando las comparaciones se realizan entre diferentes tipos de activos o estrategias con diferentes frecuencias de negociación.

 
Rashid Umarov #:
Responderé con una cita

Con fuentes me refería a información sobre los ratios Sharpe y Sortino fuera de este artículo.

Rashid Umarov #:
En cuanto a llevar el ratio de Sharpe a un valor anualizado, esto se hace para estandarizar el ratio, lo que permite compararlo entre diferentes estrategias de inversión y carteras, independientemente de la escala temporal original de la inversión.
La ratio de Sharpe es la relación entre la rentabilidad media de los segmentos de un periodo determinado y la desviación típica de los mismos segmentos. Es decir, la duración de los segmentos no importa mucho para la posibilidad de comparar estrategias entre sí. En mi opinión, sólo es aconsejable que sea varias veces mayor que la duración media de una operación para eliminar el ruido innecesario.
Rashid Umarov #:
probarlo sin logaritmos y me dicen sobre el efecto secundario inusual. Usted debe encontrar

Lo he probado: nada inusual. Pero encontré un error, adjunto la versión corregida.

Archivos adjuntos:
Sortino.mqh  10 kb
 
Rashid Umarov #:

Responderé con una cita

Voy a añadir para mí - probarlo sin logaritmos y me dicen más tarde sobre el efecto secundario inusual. Deberías encontrarlo.

Curiosamente, para esa renta variable este script da un Sharpe de 2,08:

Y para ésta (la misma con reinversión) 3,66:

Aunque es obvio que la calidad de la 2ª renta variable es peor (la reinversión siempre empeora la calidad de la renta variable).

Y si en lugar de logaritmos de incrementos de patrimonio utilizamos los propios incrementos:

         log_return = (m_equities[i] - prev_equity); // incremento 
         //log_retorno = MathLog(m_capital[i] / prev_capital); // incremento del logaritmo

Obtenemos 3,85 para el primero y 2,1 para el segundo. Mucho más adecuado.

 
Además, el Sharpe en logaritmos depende significativamente del tamaño del depósito inicial. En el ejemplo anterior (equidad 1) con un depósito inicial de 4000 da 2,08. Con un depósito de 400000 da 3,83. Aunque la forma de la equidad no ha cambiado de ninguna manera (el comercio con un lote fijo).
 

La Sharpe en logaritmos no depende del tamaño del depósito sólo en caso de negociación con reinversión.

Pero en este caso el Sharpe en incrementos simples no depende del tamaño del depósito.

Por lo tanto, no entiendo por qué debería utilizar Sharpe en logaritmos.