AIとファイナンス

AIとファイナンスの架け橋、それがこのブログの目指すところです。兼業投資家向けに、Pythonを駆使して株やFXの分析を「自分で」行えるようになるための情報を提供します。ニューラルネットワークを活用した市場予測から、実証済みの金融理論まで、全てのコードを公開し、誰もが活用できるように!是非色々なコードで遊んでみてください!

【投資】結局S&P500とオルカンってどっちがいいの?シャープ比率を使ったアプローチ!【Python】

こんにちは、投資家の皆さん!新NISAで話題のS&P500とオルカン、皆さんはどちらがお好きですか?どんな比率でこの二本を買っていますか?

今回は、米国株式の代表格であるS&P500と、世界中の株式市場を網羅する全世界株式(オールカントリー)の指数を例に取り上げ、これらの指数の「シャープ比率」を計算してみましょう。この比率は、投資の世界において非常に重要な指標の一つです。

リターンをリスクで割ることで、投資のパフォーマンスを測るための指標として広く利用されています。数値が高いほど、投資家はリスクを取ることに対して高いリターンを得ていることを示し、投資の質が高いと考えられます。一方で、シャープ比率が低い場合は、リスクに見合ったリターンが得られていないと解釈され、他の投資機会を探したほうが良いかもしれません。

では、実際にはどのように計算するのか、またその数値から何を読み取ることができるのかを見ていきましょう!

ライブラリのインポートとデータのダウンロード
yfinanceライブラリを使ってデータをダウンロードし、Pythonを用いて計算を行います。今回はS&P500とACWI指数の2020~24までのデータを使ってみます。

import yfinance as yf
import numpy as np

# 全世界株式(オールカントリー)の指数とS&P500のティッカーシンボルを定義します。
ticker_symbols = {
    'All_Country': 'ACWI',  # ACWIはオールカントリーの指数の一例です。
    'S&P500': 'SPY'
}

# yfinanceを使用して、指定したティッカーシンボルの株価データをダウンロードします。
# ここでは2020年から2024年までのデータを取得しています。
historical_data = {
    ticker: yf.download(ticker, start='2020-01-01', end='2024-01-01')
    for ticker in ticker_symbols.values()

無リスク利率を定義します

これはノーリスクで得られる利率、多くの場合は国債や定期預金の利率などを定義している部分です。

# 無リスク利率を定義します。ここではアメリカの10年債の利率を例として0.0175(1.75%)を使用しています。
risk_free_rate = 0.0175  # 2023年の米国10年債の利率を参照しています。

シャープ比率の計算と出力

ここで日々のリターンの標準偏差(リスク)から年間のボランティリティを計算し、年間の平均リターンを割ります。

# 各指数の日次リターンとシャープ比率を計算します。
sharp_ratios = {}
for name, data in historical_data.items():
    # 日次リターンを計算します。
    daily_returns = data['Adj Close'].pct_change().dropna()
   
    # 年間リターンの平均を計算します。株式市場が平均して年間252日開いていることを考慮しています。
    avg_annual_return = np.mean(daily_returns) * 252
   
    # 日次リターンの標準偏差を計算し、それを年間リスク(ボラティリティ)に変換します。
    annual_volatility = np.std(daily_returns) * np.sqrt(252)
   
    # シャープ比率を計算します。この値はリスクを考慮したリターンを表しており、
    # 数値が高いほどリスクに対して高いリターンを得ていることを意味します。
    sharp_ratio = (avg_annual_return - risk_free_rate) / annual_volatility
    sharp_ratios[name] = sharp_ratio

# シャープ比率の結果を出力します。
print("result")
for name, sharp_ratio in sharp_ratios.items():
    print(f"{name}のシャープ比率: {sharp_ratio:.2f}")

 

結果

というわけで、今回の計算結果を見ると、S&P500 (SPY) のシャープ比率は0.53、全世界株式(オールカントリー)の指数 (ACWI) のシャープ比率は0.39となりました。これはS&P500の方が全世界株式の指数よりもリスクに対するリターンが高いことを示しています。ただし、これは過去のデータに基づいた結果であり、将来のパフォーマンスを保証するものではないことに注意してください。

興味深いことに、多くの投資家が全世界株式を分散投資の手段として利用することを好みますが、シャープ比率の観点からは、特定の期間においては、特定の国や地域の指数の方が優れたパフォーマンスを示すこともあるということがわかります。

さて、皆さんもこのコードを使って、個々の興味のある銘柄でシャープ比率を計算してみてはいかがでしょうか? yfinanceライブラリを使えば、世界中のさまざまな銘柄のデータを簡単に取得できます。ご自身のポートフォリオにどのような洞察が得られるか、ぜひ試してみてくださいね。

またシャープ比率を使ったポートフォリオの組み方の記事も以下にありますので参考にしてください。

 

ai-and-finance.net

ai-and-finance.net