はじめに
今回の記事では、シャープレシオの計算方法について解説したいと思います。米国の経済学者のウィリアム・シャープ氏が考案した投資銘柄を選ぶときの指標の一つです。
シャープレシオが計算できるようになると、どの銘柄に投資するのが良いのか?という判断材料を計算できるようになります。
なので、ぜひ投資をやられる方は、学んでみましょう。とても強い武器になるはずです。
シャープレシオとは?
シャープレシオとは、標準偏差(リスク)1あたりのリターンの値と言えます。つまり、シャープレシオが高ければ高いほど、投資すべき銘柄と言える指標となります。
- rpg:ポートフォリオのリターン
- rf:リスクフリーアセットのリターン
- σpg:標準偏差

シャープレシオの注意点
比較対象の選定
シャープレシオは、どの資産に投資するかによって、変わります。リートなのか海外の株式なのかなどです。気をつけましょう。
比較期間・時期
期間・時期に算出したシャープレシオかによって、値は大きく変わるので、注意が必要です。例えば、5年間のデータから算出したのか、3年間のデータで算出したのかでシャープレシオは変わります。
比較対象は、かならず同条件で算出したシャープレシオにて比較する必要があります。
マイナスの成績 の場合
運用成績がマイナスの場合は、リスクが大きいほど値が大きくなるので、注意が必要です。例えば、-1より-0.5の方が、値が大きいです。
- Aファンド:超過収益が-10%でリスクが10%のとき→シャープレシオ-1
- Bファンド:超過収益が-10%でリスクが20%のとき→シャープレシオ-0.5
リターンの低さ(-10%)が同水準のとき、リスクが大きいBファンドの方が効率が悪いはずですが、シャープレシオの値はAよりもBの方が大きくなっています。
pythonによるシャープレシオの計算の実装
それでは、Pythonで実装していきます。
CAPMモデルで期待リターンを算出し、そのときのシャープレシオを算出していきましょう。
コード
ライブラリのインポート
pandas_datareaderだけは、Anacondaには含まれていないので、こちらは、別途インストールしてください。
インストール方法は、以下のコマンドを入力することで可能です。
- Mac:ターミナル
- Windows:コマンドプロンプト
pip install pandas_datareader
以下のライブラリをインポートします。
- numpy
- pandas
- pandas_datareader
- matplotlib
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
%matplotlib inline
株価の読み込み
今回は、以下2つの2015年から2020年までの株価を取得します。
- KDDI
- トピックス
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
tickers = ['9433.jp', '^TPX']
data = pd.DataFrame()
for t in tickers:
data[t] = wb.DataReader(t, data_source='stooq', start='2015-1-1', end='2020-12-31')['Close']
対数利益率の計算
対数利益率が不明な方は、以下の記事を参考にしてみてください。
sec_returns = np.log( data / data.shift(1) )
共分散の計算
共分散が不明な方は、以下の記事を参考にしてみてください。
cov_with_market = sec_returns.cov()
cov_with_market
実行結果は以下です。

そして、^TPXと^TPXのセル0.36788はトピックスの分散を表します。
ベータの算出
よってベータは以下となります。
KDDI_beta = cov_with_market.iloc[0,1] / cov_with_market.iloc[1,1]
KDDI_beta
実行結果は、以下です。
- 0.7608743056436845
期待リターンの計算
期待リターンを計算していきます。
リスクフリーアセットの期待収益は、0.6%とマーケットポートフォリオの期待リターンを5%と仮定し、計算しました。
KDDI_er = 0.06 + KDDI_beta * 0.05
実行結果は、以下です。
- 0.09804371528218436
シャープレシオ
Sharpe = (KDDI_er - 0.025) / (sec_returns['9433.jp'].std() * 250 ** 0.5)
Sharpe
実行結果は、以下です。
- 0.2735760166658958
まとめ
今回の記事では、シャープレシオの計算方法について解説しました。
シャープレシオとは、標準偏差(リスク)1あたりのリターンの値と言えます。つまり、シャープレシオが高ければ高いほど、投資すべき銘柄と言える指標となります。
- rpg:ポートフォリオのリターン
- rf:リスクフリーアセットのリターン
- σpg:標準偏差

Pythonをもっと勉強したいという方は、以下を参考にしてみてください。私が、勉強に使っている本や勉強方法などを解説しています。
ファイナンス理論に関しては、以下の記事を参照ください。
今回の記事は、以上です。
最後までお読みいただきありがとうございました。
コメント
[…] シャープレシオの計算方法 […]