シャープレシオの計算方法とTradingViewにインジケーターを追加

シャープレシオの計算方法とTradingViewにインジケーターを追加

この記事では、投資信託やETFの選択基準として利用されているシャープレシオの計算方法を説明します。シャープレシオの理解を深めるために、計算式だけではなく、具体的な計算例も示しています。また、TradingViewにシャープレシオを表示するインジケーターを作成するためのPineScriptも紹介しています。

シャープレシオは、投資対象のリターンだけではなくリスクも考慮することができる指標です。シャープレシオを知ることで、リスクに見合った収益を得ることができる投資先なのかどうかを知ることが可能になります。

シャープレシオ(Sharpe Ratio)とは

シャープレシオはアメリカの経済学者であるWilliam Forsyth Sharpeさんが提案した指標です。投資対象(投資信託、ETF、株など)のリスクに対する収益率を示します。基本的にシャープレシオが大きいほど運用効率が良いと判断され、投資信託やETFを購入するときの選択基準のひとつとして利用されています。

上記の説明だけではわからないと思うので、計算式と具体的な計算例を使って説明していきます。

数式からシャープレシオを理解する

シャープレシオの計算式は下記です。

$$SharpeRatio=\frac{R_p – R_f}{\sigma_p},$$ $$R_p:投資対象の収益率の期待値、R_f:無リスク資産の金利、\sigma_p:投資対象の収益率の標準偏差$$

各項目について詳しく説明したのが下表です。

説明
\(R_p\)収益率(リターン)の期待値です。つまり、日足の場合一定期間内の一日の収益率の平均値で、週足・月足ならば週・月の収益率の平均値となります。
\(R_f\)国債利回りが採用されることが多いです。国債は無リスク資産として考えることが可能だからです。ただ、ここの値は色々設定の余地があります。
\(\sigma_p\)ボラティリティ(volatility)やリスクとも呼ばれる値です。対象資産の収益率の標準偏差です。

さらに計算式を詳しく見ていきます。

分子の\(R_p – R_f\)が意味するのは、無リスクで得られる収益を上回った収益(超過収益)です。これは、国債利回りは投資で期待するリターンの最小値として考えることができるという前提に立っています。投資するからには、安全資産である国債に投資するよりも高いリターンを得たいですよね。

そして、分母の\(\sigma_p\)は単純に収益率の標準偏差です。つまり、計算式全体では標準偏差で超過収益を割っていることになります。これは、1標準偏差における超過収益率を計算していることになります。

以上を踏まえて、シャープレシオの値の特徴をまとめてみます。

  • シャープレシオが大きくなる:投資対象の収益率が高く、収益率のブレが小さい
  • シャープレシオが小さくなる:投資対象の収益率が低く、収益率のブレが大きい

具体例からシャープレシオを理解する

式からだけだとわかりにくいので、具体的に計算してみます。今回は計算を簡単にするために無リスク資産の金利\(R_f\)は0とし、日足で計算してみます。

下表のように価格が変動したETF-1とETF-2のシャープレシオを計算してみます。

両方とも1日目の価格は100円で5日目に120円ですが、途中の価格が異なります。投資を開始して5日目に売却したとすると、最終的な収益率は両方とも+20%ですが、シャープレシオはどうなるのでしょうか。

ETF-1の価格ETF-2の価格ETF-1の
前月からの収益率
ETF-2の
前月からの収益率
1日目100100
2日目12095+20.0%-5.0%
3日目90100-25.0%+5.3%
4日目140110+55.5%+10.0%
5日目120120-14.3%+9.1%

まず、ETF-1のシャープレシオを計算してみます。収益率の期待値\(R_p\)と収益率の標準偏差\(\sigma_p\)を計算し、最後にシャープレシオを計算します。無リスク資産の金利\(\sigma_p\)は0.0とします。

$$R_p=(20.0-25.0+55.5-14.3)/4.0=9.1$$ $$\sigma_p = STDEV(20.0, -25.0, 55.5, -14.3) = 31.2$$ $$SharpeRatio = (9.1-\sigma_p) / 31.2 = 0.3 $$

次に、同様にETF-2のシャープレシオを計算します。

$$R_p=(-5.0+5.3+10.0+9.1)/4.0=4.8$$ $$\sigma_p = STDEV(-5.0, 5.3, 10.0, 9.1) = 6.0$$ $$SharpeRatio = (4.8-\sigma_p) / 6.0 = 0.8 $$

以上から、ETF-2のシャープレシオがETF-1よりも大きいため、ETF-2の方が運用効率が良かったことがわかります。

二つのETFの最終的な収益率は同じですが、ETF-1は価格が大きく変動してしまっていますよね。変動率が大きすぎる場合、売るタイミングによって価格が大きく異なってしまうので、出口戦略がとても難しくなってしまいます。安定的に値動きする商品の方がシャープレシオを大きくなるということです。

シャープレシオは年率で計算されることが多いです。日足の計算から年率に戻す場合は、日足で求めたシャープレシオに\(\sqrt{252}\)を掛けます。252は1年間の市場の営業日です。各市場に合わせて数値は変更する必要があります。また、平方根を取るのは、本来は分散に掛けるべき数値を標準偏差に掛けているためです。

TradingViewにシャープレシオのインジケータを追加する

自分は、チャートの確認にTradingViewを利用しています。TradingView内にシャープレシオを計算するインジケーターがなかったの自分で作ってみました。

ここでは、作成したPineScriptの紹介のみで、インジケーターの追加方法などは紹介しません。もし、気になる方がいたらご自身で調べてみてください。

この記事ではf_factorの説明などは行っていませんが、将来的に別の記事でまとめる予定です。

//@version=4
study(title="sharpe ratio", shorttitle="SR", overlay=false, resolution="",precision=2)
// 考慮する営業日
length = input(title="periods", defval=63, minval=2, maxval=260)
// volatilityの重み
f_factor = input(title="f-factor", defval=0.5, minval=1e-20, maxval=1.0)
// 無リスク資産の金利
free_rate = input(title="free-risk rate", defval=0.0, minval=0.0, maxval=10.0)
// 価格の収益率を計算
rets = ((close[0] - close[1]) / close[1] * 100.0) - free_rate
// 収益率の期待値を計算
avg = sma(rets, length)
// volatilityの計算
sd = stdev(rets, length)
// SharpeRatioの計算
sr = avg / (sd * f_factor) * sqrt(252)
// plot
plot(sr, "sr", color=color.purple)

まとめ

シャープレシオの計算式と具体的な計算例からシャープレシオの説明を行いました。シャープレシオは、投資対象の運用効率を示す重要な指標なので、どのように計算される数値なのかはきちんと押さえておきたいですよね。

また、シャープレシオはローテーション戦略を立てるうえでも役に立つ指標であるとも言われています。ローテーション戦略については別の記事でまとめますが、長期投資においてより高いリターンを得るための戦略です。