Pythonライブラリ「yfinance」と「matplotlib」をを使用してオルカン(All Country World Index)とS&P 500の過去5年間の価格を取得し、データを正規化してグラフで比較する方法を解説します。
サンプルコード① S&P500とオルカンのデータをグラフ化
Pythonとyfinanceライブラリを使用してオルカン(All Country World Index)とS&P 500の過去5年間のデータを取得し、matplotlibライブラリでグラフ化して比較します。 yfinanceライブラリのインストール方法については「【Python】「yfinance」をpipでインストールする方法」で解説しています。
解説動画
本ページの内容は以下動画でも解説しています。
サンプルコード①
実行結果
横軸が価格(ドル)、横軸が時間です。 オルカンとS&P500は価格差があるので、単純に価格を同じグラフにプロットしただけだと、比較しにくいです。
コード解説
コードの各部分について解説します。
- ライブラリのインポート:
import yfinance as yf import matplotlib.pyplot as pltyfinanceはYahoo Financeから株価データを取得するためのライブラリです。matplotlib.pyplotはデータを可視化するためのライブラリです。
- ティッカーシンボルの設定:
acwi_ticker = "ACWI" sp500_ticker = "^GSPC"ACWIはオルカンのティッカーシンボルです。^GSPCはS&P 500のティッカーシンボルです。
【補足】
ティッカーシンボルは、株式市場で取引される銘柄を識別するための一意のコードです。
通常、アルファベットの組み合わせで構成されており、各銘柄に固有のシンボルが割り当てられています。例えば、Apple Inc.のティッカーシンボルは「AAPL」、Microsoft Corporationのティッカーシンボルは「MSFT」です。
これらのシンボルを使って、株価情報を検索したり、取引を行ったりすることができます。ティッカーシンボルは、株式市場だけでなく、債券やETF(上場投資信託)などの他の金融商品にも使用されます
- 株価データの取得:
acwi_data = yf.download(acwi_ticker, start="2019-11-01", end="2024-11-01") sp500_data = yf.download(sp500_ticker, start="2019-11-01", end="2024-11-01")yf.downloadを使って、指定したディッカーシンボルと期間(2019年11月1日から2024年11月1日まで)の株価データを取得します。
- 終値の取得:
acwi_close = acwi_data["Close"] sp500_close = sp500_data["Close"]- 取得したデータから、終値(Close)を抽出します。
- グラフの作成:
plt.figure(figsize=(14, 7)) plt.plot(acwi_close, label="ACWI") plt.plot(sp500_close, label="S&P 500") plt.title("ACWI vs S&P 500 - Past 5 Years") plt.xlabel("Date") plt.ylabel("Closing Price") plt.legend() plt.grid(True) plt.show()plt.figure(figsize=(14, 7))でグラフのサイズを設定します。plt.plotでそれぞれの終値データをプロットします。plt.titleでグラフのタイトルを設定します。plt.xlabelとplt.ylabelでそれぞれの軸のラベルを設定します。plt.legendで凡例を表示します。plt.grid(True)でグリッドを表示します。plt.show()でグラフを表示します。
yf.downloadの使い方
import yfinance as yf
# ティッカーシンボルを指定してデータを取得
data = yf.download(tickers, start='2020-01-01', end='2021-01-01')
print(data)
tickers: 取得したい銘柄のティッカーシンボル。「”ACWI,^GSPC”」というように複数のティッカーをカンマで区切って指定することもできます。start: データ取得の開始日(YYYY-MM-DD形式)。end: データ取得の終了日(YYYY-MM-DD形式)。interval: データの間隔。デフォルトは1日。以下の値が使用できます。1m: 1分2m: 2分5m: 5分15m: 15分30m: 30分60m: 1時間1d: 1日5d: 5日1wk: 1週間1mo: 1ヶ月3mo: 3ヶ月
group_by: データをどのようにグループ化するか。デフォルトはticker。auto_adjust: 調整後の終値を自動的に計算するかどうか。デフォルトはFalse。prepost: 市場前後のデータを含むかどうか。デフォルトはFalse。threads: 複数のスレッドを使用してデータを取得するかどうか。デフォルトはTrue。


コメント