Analisi: Indice di Sortino
Definizione:
L'indice di Sortino è una modifica dell'indice di Sharpe sviluppata da Frank Sortino. A differenza dell'indice di Sharpe, ignora la volatilità positiva, concentrandosi solo sui ribassi che sono pericolosi per l'investitore.
Interpretazione:
Mostra quanto il rendimento compensa il rischio. Il valore finale indica direttamente quale percentuale di rendimento corrisponde all'1% di deviazione al ribasso.
Il valore target generalmente accettato dell'indicatore è ≥ 2, ma occorre sempre tenere conto del rapporto con il benchmark e della situazione di mercato.
Esempio:
Portafoglio:
- Tasso privo di rischio (RFR) = 2%
- 1° gennaio 2025: deposito di 1000
- 03/03/2025 acquisto di NASDAQ:AAPL (quantità: 1, prezzo: 190, commissione: 0)
- 11/04/2025 data di calcolo dell'indice di Sortino. Ultimo prezzo di AAPL = 198,15
Indice di Sortino del portafoglio 0,047%:
- Il rischio di ribasso è scarsamente compensato dal rendimento
- Ogni punto percentuale di deviazione al ribasso accettata ha portato solo lo 0,047% di rendimento in eccesso
Indice di Sortino di riferimento -0,817%:
- Per ogni punto percentuale di deviazione al ribasso, il portafoglio ha perso lo 0,817% di rendimento rispetto al tasso privo di rischio.
Nota: occorre tenere conto della natura a breve termine del periodo osservato, preso per semplificare il calcolo.
Calcolo:
Indice di Sortino = (Rp − RFR) / DD
- Rp (Rendimento del portafoglio) — rendimento del portafoglio in percentuale, calcolato mensilmente per il periodo utilizzando il metodo TWR
- RFR (Tasso privo di rischio) — ricavato dalle impostazioni del portafoglio. Poiché il tasso annuale è impostato nelle impostazioni, deve essere convertito nel tasso per il periodo prima del calcolo
- DD (deviazione al ribasso) — deviazione standard tra i valori negativi della performance per il periodo
Esempio di calcolo dell'indice di Sortino:
- Calcolo mensile dell'RFR:
2 / 12 = 0,167%
- Calcolo dell'Rp:
Performance per periodi:
- Gennaio: 0
- Febbraio: 0
- Marzo: 3,2% (ottenuto: pv al 31 marzo → ((1032,13 − 1000) / 1000) * 100 )
- Aprile: −2,3% (ottenuto: ((1008,15 − 1032,13) / 1032,13) * 100 )
Rp = (0 + 0 + 3,2 − 2,3) / 4 = 0,225
- Calcolo DD:
- Gennaio: min(0, 0 − 0,167)² = 0,0279
- Febbraio: min(0, 0 − 0,167)² = 0,0279
- Marzo: min(0, 3,2 − 0,167)² = 0
- Aprile: min(0, −2,3 − 0,167)² = 6,1009
DD = ((0,0279 + 0,0279 + 0 + 6,1009) / 4)^(1/2) = 1,24%
- Calcolo del rapporto di Sortino:
SR = (Rp − RFR) / DD = (0,225% − 0,167%) / 1,24% ≈ 0,047%
Riferimenti in 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)
Nota:
Se tutte le transazioni sono state effettuate nel mese corrente rispetto alla data di calcolo dell'indicatore, l'indicatore non verrà calcolato, poiché non è stato completato un intero mese solare.