Discussion de l'article "Mathématiques en trading : ratios de Sharpe et de Sortino" - page 2

 
Ivan Titov #:
Ai-je bien compris que Sharpe.mqh ne calcule que le ratio de Sharpe annuel ? Le Sortino mensuel ne fonctionne pas ?

L'article contient la réponse à votre question.

 
Andrey Khatimlianskii #:

Encore une fois, qu'est-ce qu'un "chiffre bas" ? Il me semble que 70-80 est bas, mais il n'y a pas de pénalité sur ces passes.

Les chiffres sont-ils comparés à d'autres passes ?

Sont-ils normalisés en fonction de la durée de l'intervalle de test ?

Il est très probable qu'une valeur fixe soit fixée, sinon il faudrait recalculer plusieurs fois l'ensemble du tableau des résultats.

Je suis d'accord avec vos arguments ci-dessus.

 
Andrey Khatimlianskii #:
Ils coïncident, mais pas toujours

Si vous choisissez l'horizon hebdomadaire dans le testeur, ils ne coïncident presque jamais :

Sur l'échelle mensuelle, l'écart est encore plus important :


 
Rashid Umarov #:

L'article contient la réponse à votre question.

Je n'ai pas trouvé de réponse à ma question dans l'article, mais à en juger par le code Sharpe.mqh, le Sortino n'y figure pas. C'est pourquoi j'ai joint le code modifié avec l'option de calcul du Sortino ci-dessous. En même temps, j'ai optimisé le code en termes d'appels de fonctions inutiles.

À mon avis, l'inconvénient du coefficient de Sortino est que seuls les rendements inférieurs au taux sans risque (zéro dans ce cas) sont pris en compte pour son calcul. Or, un rendement positif sur l'une des périodes en dessous de la moyenne calculée pour la stratégie testée est également un risque. C'est pourquoi j'ai ajouté un calcul de coefficient qui ne prend en compte que les rendements inférieurs à la moyenne. Je n'ai pas trouvé d'analogue, c'est pourquoi je l'ai modestement appelé coefficient de Titov)). Lorsque je l'aurai trouvé, je le renommerai.

Dans l'original, il est gênant que la période de calcul dépende de l'horizon temporel courant. C'est pourquoi j'ai ajouté la définition de la période de calcul (si elle n'est pas explicitement définie, c'est la période actuelle qui est prise en compte) :

Returns.SetTF(PERIOD_MN1);

Je n'ai trouvé dans aucune source la nécessité d'utiliser le logarithme du rendement lors du calcul du ratio de Sharpe et de le ramener à la valeur annuelle. J'ai donc ajouté la possibilité de désactiver ces options.

Pour une raison quelconque, les exemples de l'article ignorent les périodes avec des rendements nuls. Cela fausse le résultat. J'ai donc ajouté une option permettant d'inclure ces périodes dans le calcul.

Exemple de calcul du ratio de Sharpe comme dans l'article original :

#include <Sortino.mqh>
CReturns Returns;

..

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


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

Exemple de calcul du coefficient de Sortino toutes choses égales par ailleurs :

#include <Sortino.mqh>
CReturns Returns;

..

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


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

Pour ma part, j'ai décidé d'évaluer le risque de rendements inférieurs à la moyenne sur des intervalles mensuels :

#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));
}
Dossiers :
Sortino.mqh  10 kb
 
Ivan Titov #:
Je n'ai trouvé dans aucune source la nécessité d'utiliser le logarithme des rendements pour calculer le ratio de Sharpe.

Pour répondre par une citation

L'utilisation du logarithme des rendements dans le calcul du ratio de Sharpe n'est pas strictement nécessaire, mais peut être utile pour simplifier les calculs et améliorer les propriétés statistiques des données, en particulier lorsqu'il s'agit de longues périodes de temps ou d'actifs très volatils. Les rendements logarithmiques sont souvent utilisés parce qu'ils fournissent une meilleure approximation de la distribution normale des rendements et simplifient les calculs lors de la constitution des portefeuilles.

J'ajouterais - essayez sans logarithmes et dites-moi quel est l'effet secondaire inhabituel. Vous devriez le rencontrer.

 
Ivan Titov #:
Je n'ai trouvé dans aucune source la nécessité de calculer le ratio de Sharpe et de le ramener à une valeur annualisée.

Autre citation

Le fait de ramener le ratio de Sharpe à une valeur annualisée a pour but de normaliser le ratio afin de permettre la comparaison entre différentes stratégies d'investissement et différents portefeuilles, quelle que soit l'échelle de temps initiale de l'investissement. Il s'agit d'une pratique courante qui aide les investisseurs à mesurer la performance des investissements par rapport à une norme commune, en particulier lorsque des comparaisons sont effectuées entre différents types d'actifs ou de stratégies avec des fréquences de négociation différentes.

 
Rashid Umarov #:
Je répondrai par une citation

Par sources, j'entends des informations sur les ratios de Sharpe et de Sortino en dehors de cet article.

Rashid Umarov #:
Pour ce qui est de ramener le ratio de Sharpe à une valeur annualisée, cela sert à normaliser le ratio, ce qui permet de le comparer entre différentes stratégies d'investissement et différents portefeuilles, quelle que soit l'échelle de temps initiale de l'investissement.
Le ratio de Sharpe est le rapport entre le rendement moyen des segments d'une période donnée et l'écart-type de ces mêmes segments. En d'autres termes, la longueur des segments n'a pas beaucoup d'importance pour la possibilité de comparer les stratégies entre elles. À mon avis, il est simplement conseillé de la choisir plusieurs fois plus longue que la durée moyenne d'une transaction afin d'éliminer les bruits inutiles.
Rashid Umarov #:
Essayez-le sans logarithmes et dites-moi quel est l'effet secondaire inhabituel. Vous devriez le rencontrer

J'ai essayé : rien d'anormal. Mais j'ai trouvé une erreur, je joins la version corrigée.

Dossiers :
Sortino.mqh  10 kb
 
Rashid Umarov #:

Je répondrai par une citation

J'ajouterai pour ma part - essayez-le sans logarithmes et dites-moi plus tard quel est l'effet secondaire inhabituel. Vous devriez le rencontrer.

Curieusement, pour ces actions, ce script donne un Sharpe de 2,08 :

et pour celui-ci (le même avec réinvestissement) de 3,66 :

Bien qu'il soit évident que la qualité de la deuxième action est moins bonne (le réinvestissement détériore toujours la qualité de l'action).

Et si, au lieu des logarithmes des incréments d'actions, nous utilisons les incréments eux-mêmes, nous obtenons 3,85 pour le premier incrément :

         log_return = (m_equities[i] - prev_equity); // incrémenter 
         //log_return = MathLog(m_equities[i] / prev_equity) ; // incrémentation du logarithme

Nous obtenons 3,85 pour le premier et 2,1 pour le second. C'est beaucoup plus adéquat.

 
En outre, le Sharpe sur les logarithmes dépend de manière significative de la taille du dépôt initial. Dans l'exemple ci-dessus (équité 1), avec un dépôt initial de 4000, on obtient 2,08. Avec un dépôt de 400000, on obtient 3,83. Bien que la forme des fonds propres n'ait pas changé (négociation avec un lot fixe).
 

Le Sharpe sur les logarithmes ne dépend pas de la taille du dépôt uniquement dans le cas de transactions avec réinvestissement.

Mais dans ce cas, le Sharpe sur les incréments simples ne dépend pas de la taille du dépôt.

Par conséquent, je ne comprends pas pourquoi je devrais utiliser le Sharpe sur les logarithmes.