Python

【Python】シャープレシオの計算方法|ファイナンス理論入門

Python

はじめに

今回の記事では、シャープレシオの計算方法について解説したいと思います。米国の経済学者のウィリアム・シャープ氏が考案した投資銘柄を選ぶときの指標の一つです。

シャープレシオが計算できるようになると、どの銘柄に投資するのが良いのか?という判断材料を計算できるようになります。

なので、ぜひ投資をやられる方は、学んでみましょう。とても強い武器になるはずです。

シャープレシオとは?

シャープレシオとは、標準偏差(リスク)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をもっと勉強したいという方は、以下を参考にしてみてください。私が、勉強に使っている本や勉強方法などを解説しています。

ファイナンス理論に関しては、以下の記事を参照ください。

今回の記事は、以上です。

最後までお読みいただきありがとうございました。

コメント

  1. […] シャープレシオの計算方法 […]

タイトルとURLをコピーしました