分析: シャープレシオ

定義:

シャープレシオは、ノーベル賞を受賞したウィリアム・シャープによって1996年に考案された、リスクに対する投資の効率性を測る指標です。1ユニットあたりのリスク(ボラティリティ)に対して、ポートフォリオはどのくらいの(リスクフリーレートを上回る)リターンが得られるかを示しています。

解釈:

ベンチマークとポートフォリオの値を比較して、それらのリスク水準を評価します。値が0に近いほど、リスクに見合ったリターンが得られていないことを示しています。

例:

ポートフォリオ:

  • リスクフリーレート (RFR) = 2%
  • 2025-01-01 入金 1000
  • 2025-03-03 NASDAQ:AAPLを購入(数量:1、約定価格: 190、手数料: 0)
  • 2025-04-11 シャープレシオの計算日。AAPLの最終価格 = 198.15

ポートフォリオのシャープレシオ 0.029%:

  • リスクフリーレート(年間2%)をわずかに上回っている状態
  • リターンがリスクにほぼ見合っていない状態

ベンチマークのシャープレシオ -1.396%:

  • リターンはマイナスで、リスクの許容範囲を超えている状態

注: 上記の例では、計算を簡略化するために短期間のデータを使用しています。

一般的に、シャープレシオが1を上回ると適切な水準とされており、リスクに見合ったリターンが得られると判断されます。
ポートフォリオのシャープレシオを評価する時は、こうした一般的な基準値やベンチマークと比較することができます。

計算式:

シャープレシオ = (Rp − RFR) / SD

  • Rp (ポートフォリオのリターン) — ポートフォリオのパフォーマンス%です。時間加重収益率 (TWR) 方式に基づいて、対象期間の月次パフォーマンスを算出します。

  • RFR (リスクフリーレート) — ポートフォリオの設定で指定したリスクフリーレートを使用します。設定では年間のレートに設定されている為、ここでは対象期間に応じて変換したレートを使用します。

  • SD (ポートフォリオリターンの標準偏差) — 対象期間におけるすべてのパフォーマンスの標準偏差です。

上記ポートフォリオに基づくシャープレシオの計算例:

  1. 月次 RFR 計算式: 2 / 12 = 0.167%
  2. Rp 計算式: 各期間のパフォーマンス:
    1. 1月: 0
    2. 2月: 0
    3. 3月: 3.2% (3/31時点での値に基づく計算式: ((1032.13 − 1000) / 1000) * 100 )
    4. 4月: -2.3% (計算式: ((1008.15 − 1032.13) / 1032.13) * 100 )

Rp = (0 + 0 + 3.2 − 2.3) / 4 = 0.225

  1. SD 計算式:

平均からの偏差の2乗:

  1. 1月: (0 − 0.225)² = 0.05
  2. 2月: (0 − 0.225)² = 0.05
  3. 3月: (3.2 − 0.225)² = 8.85
  4. 4月: (−2.3 − 0.225)² = 6.37

分散: (0.05 + 0.05 + 8.85 + 6.37) / 4 = 3.83

SD: √3.83 = 1.957%

シャープレシオの計算式: SR = (Rp − RFR) / SD = (0.225 − 0.167) / 1.957 = 0.029%

Pineスクリプトの見本:

//@version=6
indicator("Sharpe Ratio example")
sharpeRatio( array<float> returnsArray, series float annualBenchmark) =>
    numberOfperiods = 12
    if barstate.islast
        float fixedPeriodReturn = annualBenchmark / numberOfperiods
        float standardDev       = returnsArray.stdev()
        float avgReturn         = returnsArray.avg()
        float result            = (avgReturn - fixedPeriodReturn) / standardDev
    
array<float> arr = array.from(0,0,3.2, -2.3)
float sharpe = sharpeRatio(arr,2)
plot(sharpe, precision = 3)

注:

もしすべての取引がシャープレシオの計算対象となる月に行われた場合、まだ1ヶ月分のデータが揃っていないため、シャープレシオは計算されません。

こちらもご覧ください: