
株価のデータ分析!シャープレシオの計算とリスクフリーレートの設定
今回は、投資の世界でよく耳にする「シャープレシオ」について、わかりやすく解説していきます。
シャープレシオって何?
シャープレシオは、投資のパフォーマンスを評価するための指標です。簡単に言うと、「リスクに見合ったリターンが得られているかどうか」を数値化したものです。
例えば、友達のAさんとBさんがいて、それぞれ違う投資をしているとします。
Aさん:年間リターン10%、ボラティリティ(価格変動の大きさ)20%
Bさん:年間リターン8%、ボラティリティ10%
一見するとAさんの方が儲かっているように見えますが、実はBさんの方が効率的な投資をしているかもしれません。なぜなら、Bさんはより少ないリスクで高いリターンを得ているからです。このような比較を可能にするのがシャープレシオなんです。
専門家A: シャープレシオは、リスク1単位あたりのリターンを示すので、異なる投資戦略や資産クラスの比較に役立ちます。
わかりやすい図解
とてもわかりやすい図解がありましたので、引用させていただきます。
以下の記事から引用しております。



シャープレシオの計算方法
さて、具体的にどうやって計算するの?という疑問が湧いてきますよね。基本的な計算式はこんな感じです:
シャープレシオ = (投資のリターン - リスクフリーレート) / 投資のボラティリティ
ここで出てきた「リスクフリーレート」って何?って思いますよね。これは「リスクゼロで得られるはずの利回り」のことです。通常、国債の利回りなどが使われます。
Pythonを使ってシャープレシオを計算する場合、以下のようなコードになります:
def calculate_sharpe_ratio(returns, risk_free_rate):
excess_returns = returns - risk_free_rate
return (excess_returns.mean() / excess_returns.std()) * np.sqrt(252)
ここで、`np.sqrt(252)`は年間の営業日数の平方根で、日次リターンを年率に変換するために使用しています。
リスクフリーレートの設定
さて、ここで重要になってくるのが「リスクフリーレート」の設定です。どの金利を使うべきか、実はこれが結構難しい問題なんです。
一般的には以下のような選択肢があります:
1. 米国債10年物の利回り
2. 3ヶ月物のT-Bill(財務省短期証券)の利回り
3. FF金利(Federal Funds Rate)
個人投資家の立場からすると、どれを選べばいいか迷いますよね。実際のところ、投資の期間や目的によって適切なものが変わってきます。長期投資なら10年債、短期の運用なら3ヶ月物T-Billが適しているかもしれません。でも、大事なのは一貫性です。同じ分析の中では、同じリスクフリーレートを使い続けることが重要です。
Pythonでシャープレシオを計算してみよう!
それでは、実際にPythonを使ってシャープレシオを計算してみましょう。以下のコードは、株価データを取得し、10年債と3ヶ月物T-Billの両方を使ってシャープレシオを計算します。
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
# 株価データの取得
def get_stock_data(ticker, start_date, end_date):
stock = yf.Ticker(ticker)
df = stock.history(start=start_date, end=end_date)
return df['Close']
# リターンの計算
def calculate_returns(prices):
return prices.pct_change().dropna()
# 対数リターンの計算
def calculate_log_returns(prices):
return np.log(prices / prices.shift(1)).dropna()
# 算術平均リターンの計算
def arithmetic_mean_return(returns):
return returns.mean() * 100 # パーセント表示
# リスク(ボラティリティ)の計算
def calculate_volatility(returns):
return returns.std() * 100 # パーセント表示
# 幾何平均リターンの計算
def geometric_mean_return(returns):
return ((1 + returns).prod() ** (1 / len(returns)) - 1) * 100 # パーセント表示
# 年率リターンの計算
def annualized_return(prices):
last_price = prices[-1]
one_year_ago_price = prices[-252] # 252営業日を考慮
return ((last_price / one_year_ago_price) - 1) * 100 # パーセント表示
# メイン処理
def main():
# パラメータ設定
ticker = "AAPL" # Apple Inc.の株価を例として使用
start_date = "2022-11-01"
end_date = "2023-11-30"
# データ取得
prices = get_stock_data(ticker, start_date, end_date)
# 通常のリターン計算
returns = calculate_returns(prices)
# 対数リターン計算
log_returns = calculate_log_returns(prices)
# 結果の計算と表示
print(f"分析期間: {start_date} から {end_date}")
print(f"対象銘柄: {ticker}")
print("\n通常リターンベースの計算:")
print(f"算術平均リターン(日次): {arithmetic_mean_return(returns):.4f}%")
print(f"リスク(ボラティリティ、日次): {calculate_volatility(returns):.4f}%")
print(f"幾何平均リターン(日次): {geometric_mean_return(returns):.4f}%")
print("\n対数リターンベースの計算:")
print(f"算術平均リターン(日次): {arithmetic_mean_return(log_returns):.4f}%")
print(f"リスク(ボラティリティ、日次): {calculate_volatility(log_returns):.4f}%")
# 年率換算(営業日数を252日と仮定)
print("\n年率換算:")
print(f"算術平均リターン(年率): {arithmetic_mean_return(returns) * 252:.4f}%")
print(f"リスク(ボラティリティ、年率): {calculate_volatility(returns) * np.sqrt(252):.4f}%")
print(f"幾何平均リターン(年率): {((1 + geometric_mean_return(returns)/100) ** 252 - 1) * 100:.4f}%")
# 年率リターンの計算と表示
print(f"\n年率リターン: {annualized_return(prices):.2f}%")
# グラフの描画
plt.figure(figsize=(12, 6))
plt.plot(prices.index, prices.values)
plt.title(f"{ticker} Stock Price")
plt.xlabel("Date")
plt.ylabel("Price")
plt.show()
plt.figure(figsize=(12, 6))
plt.plot(returns.index, returns.values * 100) # パーセント表示
plt.title(f"{ticker} Daily Returns")
plt.xlabel("Date")
plt.ylabel("Return (%)")
plt.show()
if __name__ == "__main__":
main()
このコードを実行すると、選択した銘柄のシャープレシオが計算されます。10年債と3ヶ月物T-Billの両方を使用することで、異なるリスクフリーレートがシャープレシオにどのような影響を与えるかを比較できます。
まとめ
シャープレシオは、投資のパフォーマンスを評価する上で非常に有用な指標です。ただし、その計算には注意が必要で、特にリスクフリーレートの選択は重要です。
シャープレシオは、リスク調整後のリターンを示す指標
計算には投資のリターン、ボラティリティ、リスクフリーレートが必要
リスクフリーレートの選択には一貫性が重要
投資の世界は奥が深いですが、こういった指標を理解し活用することで、より賢明な投資判断ができるようになります。ぜひ、自分の投資ポートフォリオのシャープレシオを計算してみてください!
最後に一言付け加えると、シャープレシオは過去のデータに基づいているため、将来のパフォーマンスを保証するものではありません。他の指標と組み合わせて総合的に判断することが大切です。投資は常に慎重に、そして継続的に学び続けることが大切です。みなさんも、楽しみながら賢く投資していきましょう!
情報源
以下のサイトを参考にさせていただきました。
シャープレシオの計算方法は以下にあります。共分散からも計算できます。