Analyse : Ratio de Sortino

Définition :
Le ratio de Sortino est une modification du ratio de Sharpe développée par Frank Sortino. Contrairement au ratio de Sharpe, il ignore la volatilité positive et se concentre uniquement sur les pertes (drawdowns) qui sont dangereuses pour l’investisseur.

Interprétation :
Il montre dans quelle mesure le rendement compense le risque. La valeur finale indique directement combien de pourcents de rendement correspondent à 1% d’écart-type négatif.

La valeur cible généralement acceptée pour cet indicateur est ≥ 2, mais le ratio par rapport au benchmark et la situation du marché doivent toujours être pris en compte.

Exemple :
Portefeuille :

Taux sans risque (RFR) = 2%

  • 01/01/2025 : dépôt de 1000
  • 03/03/2025 : achat de NASDAQ:AAPL (quantité : 1, prix : 190, commission : 0)
  • 11/04/2025 : date de calcul du ratio de Sortino. Dernier prix de AAPL = 198,15

Ratio de Sortino du portefeuille : 0,047%

  • Le risque à la baisse est mal compensé par le rendement
  • Chaque pourcent de déviation négative acceptée n’a généré que 0,047% de rendement excédentaire

Ratio de Sortino du benchmark : −0,817%

  • Pour chaque pourcent de déviation négative, le portefeuille a perdu 0,817% de rendement par rapport au taux sans risque

Remarque : La nature à court terme de la période observée, choisie pour simplifier le calcul, doit être prise en compte.

Calcul :
Ratio de Sortino = (Rp − RFR) / DD

  • Rp (rendement du portefeuille) : performance du portefeuille en pourcentage, calculée mensuellement pour la période en utilisant la méthode TWR
  • RFR (taux sans risque) : pris à partir des paramètres du portefeuille. Comme le taux annuel est défini dans les paramètres, il doit être converti au taux correspondant à la période avant calcul
  • DD (déviation négative) : écart-type parmi les valeurs négatives de performance pour la période

Exemple de calcul du ratio de Sortino à partir de l’interprétation :

1- Calcul du RFR mensuel :

    2 / 12 = 0,167%

2- Calcul de Rp :
Performance par période :

  • Janvier : 0
  • Février : 0
  • Mars : 3,2% (obtenu : valeur de portefeuille au 31 mars → ((1032,13 − 1000) / 1000) * 100)
  • Avril : −2,3% (obtenu : ((1008,15 − 1032,13) / 1032,13) * 100)

Rp = (0 + 0 + 3,2 − 2,3) / 4 = 0,225

3- Calcul de DD :

  1. Janvier : min(0, 0 − 0,167)² = 0,0279
  2. Février : min(0, 0 − 0,167)² = 0,0279
  3. Mars : min(0, 3,2 − 0,167)² = 0
  4. Avril : min(0, −2,3 − 0,167)² = 6,1009

DD = ((0,0279 + 0,0279 + 0 + 6,1009) / 4)^(1/2) = 1,24%

Calcul du Ratio de Sortino :
SR = (Rp − RFR) / DD = (0,225% − 0,167%) / 1,24% ≈ 0,047%

Référence dans Pine :

//@version=6
indicator("Sortino ratio example")
method downsideDeviation(array<float> returns, series float targetReturn) =>
    float sum = 0.0
    for r in returns
        if r >= targetReturn
            continue
        sum += math.pow(r - targetReturn, 2)
    sum /= returns.size()
    float result = math.sqrt(sum)

method sortinoRatio(array<float> returnsArray, series float annualBenchmark) =>
    var int numberOfperiods = 12
    if barstate.islast
        float fixedPeriodReturn = annualBenchmark / numberOfperiods
        float downsideDev       = returnsArray.downsideDeviation(fixedPeriodReturn)
        float avgReturn         = returnsArray.avg()
        float result            = (avgReturn - fixedPeriodReturn) / downsideDev

array<float> arr = array.from(0, 0, 3.2, -2.3)
float sortino = sortinoRatio(arr, 2)
plot(sortino, precision = 3)
Generic

Remarque : 

Si toutes les transactions ont été effectuées au cours du mois en cours par rapport à la date de calcul de l'indicateur, l'indicateur ne sera pas calculé, car il n'y a pas un seul mois calendaire complet.

Liens: