분석: 소르티노 비율
정의
소르티노 비율은 Frank Sortino가 개발한 샤프 비율을 수정한 것입니다. 샤프 비율과 달리, 소르티노 비율은 긍정적 변동성을 무시하고 투자자에게 위험한 하락폭에만 초점을 맞춥니다.
해석
소르티노 비율은 수익이 위험을 얼마나 잘 보상하는지를 나타냅니다. 최종 값은 1%의 하락 편차에 해당하는 수익의 비율을 직접 나타냅니다.
이 인디케이터의 일반적으로 인정되는 목표값은 2 이상이지만, 벤치마크 및 시장 상황을 항상 고려해야 합니다.
예:
포트폴리오:
- 무위험 이자율(RFR) = 2%
- 2025-01-01 1000 예금
- 2025-03-03 NASDAQ:AAPL 구매 (수량: 1, 가격: 190, 수수료: 0)
- 2025-04-11 Sortino Ratio 계산일. AAPL의 마지막 가격 = 198.15
Sortino ratio 포트폴리오 0.047%:
- 하방 위험이 수익으로 충분히 보상되지 않습니다
- 수용된 하방 편차의 각 1%는 초과 수익의 0.047%만을 가져왔습니다
Sortino 비율 기준치 -0.817%:
- 하방 편차의 각 1%당 포트폴리오는 위험 무료 금리 대비 수익의 0.817%를 잃었습니다
참고: 계산 단순화를 위해 선택된 관측 기간의 단기적 특성을 고려해야 합니다.
계산:
소르티노 비율 = (Rp − RFR) / DD
- Rp (포트폴리오 수익률) — TWR 방법을 사용하여 해당 기간 동안 매월 계산된 포트폴리오의 수익률(백분율)
- RFR (무위험 이자율) — 포트폴리오 설정에서 가져온 값입니다. 설정에서 연간 이자율이 설정되어 있으므로, 계산 전에 해당 기간의 이자율로 변환해야 합니다.
- DD (하방 편차) — 기간 동안의 성과 중 음의 값의 표준 편차
해석에서 Sortino Ratio 계산 예시:
- 월별 RFR 계산:
2 / 12 = 0.167% - Rp 계산:
기간별 성과:- 1월: 0
- 3월: 3.2% (계산 방법: 3월 31일 현재 PV → ((1032.13 − 1000) / 1000) * 100)
- 4월: −2.3% (계산 방법: ((1008.15 − 1032.13) / 1032.13) * 100)
Rp = (0 + 0 + 3.2 − 2.3) / 4 = 0.225
- DD 계산:
- 1월: min(0, 0 − 0.167)² = 0.0279
- 2월: min(0, 0 − 0.167)² = 0.0279
- 3월: min(0, 3.2 − 0.167)² = 0
- 4월: min(0, −2.3 − 0.167)² = 6.1009
DD = ((0.0279 + 0.0279 + 0 + 6.1009) / 4)^(1/2) = 1.24%
- 소르티노 비율 계산:
SR = (Rp − RFR) / DD = (0.225% − 0.167%) / 1.24% ≈ 0.047%
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참고:
인디케이터의 계산 날짜를 기준으로 모든 트랜잭션이 당월에 이루어진 경우, 완료된 달이 하나도 없기 때문에 인디케이터는 계산되지 않습니다.
다음을 읽어 보시기 바랍니다