Análisis: Ratio Sortino

Definición:

El Ratio de Sortino es una modificación del Ratio de Sharpe desarrollado por Frank Sortino. A diferencia del Ratio de Sharpe, ignora la volatilidad positiva, centrándose únicamente en las caídas peligrosas para el inversor

Interpretación:

Muestra hasta qué punto la rentabilidad compensa el riesgo. El valor final indica directamente a cuántos puntos porcentuales de rentabilidad corresponde un 1 % de desviación a la baja.

El valor objetivo generalmente aceptado del indicador es ≥ 2, pero siempre debe tenerse en cuenta la relación con el valor de referencia y la situación del mercado.

Ejemplo:

Cartera:

  • Tipo sin riesgo (RFR) = 2 %
  • 2025-01-01 depósito de 1000
  • 2025-03-03 compra de NASDAQ:AAPL (cant.:1, precio: 190, comisión: 0)
  • 2025-04-11 Fecha de cálculo del Ratio Sortino. Último precio de AAPL = 198,15

Cartera con ratio Sortino 0,047 %:

  • El riesgo a la baja está mal compensado por la rentabilidad
  • Cada porcentaje de desviación a la baja aceptado aportó solo un 0,047 % de exceso de rentabilidad

Ratio Sortino de referencia -0,817 %:

  • Por cada porcentaje unitario de desviación a la baja, la cartera perdió un 0,817 % de rentabilidad en relación con el tipo sin riesgo

Nota: Debe tenerse en cuenta el carácter coyuntural del periodo observado, adoptado para simplificar el cálculo.

Cálculo:

Ratio Sortino = (Rp − RFR) / DD

  • Rp (Rendimiento de la cartera): rendimiento de la cartera en porcentaje, calculado mensualmente para el periodo utilizando el método TWR

  • RFR (Tasa libre de riesgo): tomada de los ajustes de la cartera. Dado que la tasa anual se establece en los ajustes, debe convertirse a la tasa para el período antes del cálculon

  • DD (Desviación a la baja): desviación típica entre los valores negativos de los resultados del periodo

Ejemplo de cálculo del Ratio Sortino a partir de la interpretación:

  1. Cálculo mensual del RFR:
     2 / 12 = 0,167 %
  2. Cálculo rp:
     Rendimiento por periodos:
    1. Enero: 0
    2. Febrero: 0
    3. Marzo: 3,2 % (obtenido: pv a 31 de marzo → ((1032,13 − 1000) / 1000) * 100 )
    4. Abril: −2,3 % (obtenido: ((1008,15 − 1032,13) / 1032,13) * 100 )

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

  1. Cálculo DD:
    1. Enero: min(0, 0 − 0,167)² = 0,0279
    2. Febrero: min(0, 0 − 0,167)² = 0,0279
    3. Marzo: min(0, 3,2 − 0,167)² = 0
    4. Abril: min(0, −2,3 − 0,167)² = 6,1009

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

  1. Cálculo de Ratio Sortino:
    SR = (Rp − RFR) / DD = (0,225 % − 0,167 %) / 1,24 % ≈ 0,047 %

Referencia en 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:

Si todas las transacciones se realizaron en el mes en curso en relación con la fecha de cálculo del indicador, este no se calculará, ya que no existe un único mes natural completo.

Enlaces: