分析:索提諾比率
定義:
索提諾比率是由Frank Sortino所提出、基於夏普比率的改良版本。不同於夏普比率會將所有波動視為風險,索提諾比率只關注對投資者不利的負向波動(下行風險),忽略正報酬帶來的波動。
解釋:
它顯示的是:投資報酬率對於下行風險的補償程度。最終的索提諾值代表:每承受1%的下行風險,所獲得的超額報酬為幾%。
一般認為索提諾比率的理想值為 ≥ 2,但在實務應用中,也要與基準與市場狀況一起考慮。
範例:
投資組合:
- 無風險利率 (RFR) = 2%
- 2025-01-01 存入 1000
- 2025-03-03 購買 NASDAQ:AAPL (數量:1,價格:190,手續費:0)
- 2025-04-11 計算索提諾比率,當時AAPL的最後價格為198.15
索提諾比率(投資組合):0.047%
- 下行風險帶來的報酬補償程度很低
- 每承受1%的下行風險,僅獲得0.047%的超額報酬
索提諾比率(基準):−0.817%
- 每承受1%的下行風險,反而損失了0.817%的報酬(相對於無風險利率)
註:由於為了簡化計算而採用的觀察期間屬於短期,因此在解讀結果時應加以考慮。
計算:
索提諾比率 = (Rp − RFR) / DD
- Rp(投資組合報酬) — 以TWR(時間加權報酬)方法按月計算的投資組合百分比報酬
- RFR(無風險利率) — 取自投資組合設定。由於年利率是在設定中設定的,因此必須先將其轉換為期間利率,然後才能計算。
- DD(下行風險標準差) — 僅針對報酬為負的期間,計算其標準差
索提諾比率計算範例(依照先前解釋):
- 每月無風險利率計算:
2 / 12 = 0.167% - Rp計算:
各月績效- 一月: 0
- 二月: 0
- 三月: 3.2% (取得:截自3月31日 → ((1032.13 − 1000) / 1000) * 100 )
- 四月: −2.3% (取得:((1008.15 − 1032.13) / 1032.13) * 100 )
Rp = (0 + 0 + 3.2 − 2.3) / 4 = 0.225
- DD計算:
- 一月: min(0, 0 − 0.167)² = 0.0279
- 二月: min(0, 0 − 0.167)² = 0.0279
- 三月: min(0, 3.2 − 0.167)² = 0
- 四月: 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)
注意:
如果所有交易都是在相對於指標計算日期的當前月份進行的,則不會計算該指標,因為沒有完整的日曆月。
另請閱讀