Analiza: Wskaźnik Sortino

Definicja :

Wskaźnik Sortino to modyfikacja wskaźnika Sharpe’a, opracowana przez Franka Sortino. W przeciwieństwie do wskaźnika Sharpe’a, ignoruje dodatnią zmienność i koncentruje się wyłącznie na spadkach (drawdownach), które są ryzykowne dla inwestora. 

Interpretacja :

Wskaźnik pokazuje, jak dobrze zwrot rekompensuje ryzyko. Wynik wskazuje, ile procent nadwyżki zwrotu przypada na 1% ryzyka spadkowego. 

Ogólnie przyjmuje się, że wartość wskaźnika powinna wynosić ≥ 2, ale należy także brać pod uwagę benchmark i sytuację rynkową. 

Przykład :

Portfel :

  • Stopa wolna od ryzyka (RFR) = 2% 
  • 2025-01-01 wpłata 1000 
  • 2025-03-03 zakup NASDAQ:AAPL (ilość: 1, cena: 190, prowizja: 0) 
  • 2025-04-11 data obliczenia wskaźnika Sortino. Ostatnia cena AAPL = 198,15 

Wskaźnik Sortino portfela = 0,047%: 

  • Ryzyko spadkowe jest słabo kompensowane przez zwrot 
  • Każdy procent zaakceptowanego ryzyka przyniósł tylko 0,047% nadwyżki zwrotu 

Wskaźnik Sortino benchmarku = −0,817%: 

  • Na każdy procent ryzyka spadkowego przypadała strata 0,817% względem stopy wolnej od ryzyka 

Uwaga: Uwzględnij krótki, uproszczony okres użyty do obliczenia. 

Obliczenia :

Sortino Ratio = (Rp − RFR) / DD

  • Rp (Return of portfolio) — stopa zwrotu portfela (w %), liczona miesięcznie metodą TWR

  • RFR (Risk Free Rate) — stopa wolna od ryzyka (z ustawień portfela); wartość roczna musi być przeliczona na okresową
  • DD (Downside Deviation) — odchylenie standardowe tylko dla ujemnych wartości stóp zwrotu

Przykład obliczenia wskaźnika Sortino: 

  1. Miesięczna RFR:
     2 / 12 = 0.167%
  2. Obliczenie Rp :
    średnia stopa zwrotu portfela 
    1. Styczeń  : 0
    2. Luty  : 0
    3. Marzec  : 3.2% (obtained: pv on March 31 → ((1032.13 − 1000) / 1000) * 100 )
    4. Kwiecień : −2.3% (obtained: ((1008.15 − 1032.13) / 1032.13) * 100 )

Rp = (0 + 0 + 3.2 − 2.3) / 4 = 0.225

  1. Obliczenie DD 
    1. Styczeń : min(0, 0 − 0.167)² = 0.0279
    2. Luty : min(0, 0 − 0.167)² = 0.0279
    3. Marzec : min(0, 3.2 − 0.167)² = 0
    4. Kwiecień : min(0, −2.3 − 0.167)² = 6.1009

DD = ((0.0279 + 0.0279 + 0 + 6.1009) / 4)^(1/2) = 1.24%

  1. Obliczenie wskaźnika Sortino:
    SR = (Rp − RFR) / DD = (0.225% − 0.167%) / 1.24% ≈ 0.047%

Pine Script (referencja): 

//@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)

Note:

Jeśli wszystkie transakcje zostały dokonane w bieżącym miesiącu względem daty obliczenia wskaźnika, wartość nie zostanie wyświetlona – ponieważ nie ma zakończonego miesiąca kalendarzowego. 

Linki: