Sortino 與下行標準差 — 只懲罰下跌波動的比率
本文採用本站四段式教學結構:概念 / 本站怎麼算 / 怎麼看數字 / 注意事項。
1. 概念
Sharpe Ratio 是最常用的風險調整報酬指標。但它有個不合理的假設:
Sharpe 把「上漲波動」也當成風險。
一支「猛漲的股票」標準差會很高,Sharpe 的分母被上漲波動拉大,分數反而偏低。但猛漲對投資人是好事,不該被懲罰。
這就是 Sortino 誕生的原因:
Sortino = 超額報酬 / 下行標準差
下行標準差 = √(mean(min(Rt − target, 0)²))
只計算「小於 target 的那些日子」的偏差。通常:
- target = 0 → 只算虧損日的標準差
- target = Rf → 只算低於無風險的日子
這樣「上漲波動」完全不影響分母,更符合投資人對「風險」的直覺定義。
2. 本站怎麼算
公式
Sortino = (年化報酬 − 年化 Rf) / 年化下行標準差
其中:
年化報酬 = mean(日報酬) × 252
年化 Rf = Rf_daily × 252
年化下行σ = sqrt(mean(min(Rt − 0, 0)²)) × √252
Target 選擇
本站採用 target = 0(區分「虧損日」vs「不虧損日」)。原因:
- 更容易跨股票比較(每檔 Rf 都一樣)
- 散戶理解度最高(「這檔平常跌起來多兇」)
若你想做 MAR(Minimum Acceptable Return)版本,可以在前端把 rf_daily 當 target 替換(後端已支援)。
Rf 從哪來
延用 v2.43 全站動態 Rf 規則:
- 優先
^IRX美國 13W T-Bill 當日殖利率 - 退回 CBC 10 年公債殖利率
- 最終 fallback 1.5%
年化 Rf 顯示於卡片 hover,讓你清楚知道當下用的是多少。
個股 vs 投組
- 個股:用過去 252 個交易日的 simple daily returns
- 投組:用投組日 NAV 推導的日報酬
- 兩者公式、target、Rf 都完全一致,可直接比較
樣本不足
樣本 < 60 日 或 下行 σ = 0(歷史無虧損日)時,回傳 available: false,不顯示數字。
3. 怎麼看數字
水準表
| Sortino | 判讀 |
|---|---|
| > 2.0 | 🟢 優秀 |
| 1.0 – 2.0 | 🟢 良好 |
| 0.5 – 1.0 | 🟡 合格 |
| 0 – 0.5 | 🟠 邊緣 |
| < 0 | 🔴 報酬不及無風險 |
Sharpe vs Sortino 對照
最有用的實戰技巧:比較同一檔的 Sharpe 與 Sortino。
| Sharpe | Sortino | 解讀 |
|---|---|---|
| 1.0 | 1.0 | 上下波動對稱(常態股) |
| 1.0 | 2.0 | 上行波動大、下行風險低 → 好股票被 Sharpe 低估 |
| 1.0 | 0.5 | 下跌日子多 → Sharpe 沒抓到這個風險 |
| 負 | 負 | 基本面差,不用再看 |
經驗法則:Sortino / Sharpe 比值 > 1.3 的股票通常「跌得少」,值得優先留意。
投組 Sortino 應用
投組 Sortino 是「這套策略下行風險調整後的績效」。
- 投組 Sortino > 1.0 → 可持續
- 投組 Sortino < 0.5 → 考慮調整配置(加入負相關資產、降低高波動部位)
配合 P0.2 相關性矩陣一起看效果最好:低 Sortino + 高相關 → 必須重配置。
4. 注意事項
⚠️ 與 Sharpe 不是「誰對誰錯」而是角度不同
- Sharpe 適合評估策略的整體風險特性(含總波動)
- Sortino 適合評估從投資人痛苦角度的風險(只看下跌)
兩個都該看。若只看一個,投組管理界慢慢偏好 Sortino,但 Sharpe 仍是學術基準。
⚠️ 上漲猛的股票 Sortino 會虛高
如果一檔股票在樣本期間只漲不跌(例如 AI 股 2023-2024),Sortino 會非常高甚至無窮大(下行 σ = 0 → 本站顯示 unavailable)。
不要把這種 Sortino 當作持續可得。市場一旦反轉,下行 σ 會迅速累積、Sortino 會崩。
⚠️ 樣本偏誤最嚴重
Sortino 比 Sharpe 更依賴尾部事件。如果 252 日內剛好無大跌:
- 下行 σ 很小
- Sortino 虛高
- 實際發生下跌時分數會暴跌
救法:搭配 P1C.1 的 VaR / CVaR 看。VaR/CVaR 不會因為樣本沒出現大跌就回答「無風險」—它會回答「我無法計算」(樣本不足)。
⚠️ 不適用於短期
- 太短期(< 3 個月)樣本過少,Sortino 飄動
- 本站設下限 60 日;建議 252 日才有參考價值
⚠️ Target 的哲學選擇
本站用 target = 0 的理由前面已說明。但有些機構用 target = 無風險利率或最低可接受報酬率(MAR),意思是「低於 X% 年化才叫虧損」。兩種做法都合理,只是視角不同:
- target = 0 → 「絕對虧損」敏感度
- target = Rf → 「相對於無風險基準」敏感度
若你想改用 target = Rf,告訴我們(目前 API 已支援,只是 UI 未提供切換)。
延伸閱讀
- 〈Sharpe Ratio:衡量你的投資效率〉
- 〈VaR vs CVaR:真的踩到最差 5% 會虧多少〉
- 〈Beta 值與波動度:一張圖看懂個股風險〉
- 〈Ulcer Index + Calmar:回撤深度與年化報酬的比值〉(Phase 1C.3 即將推出)