【Python】S&P500とオルカンの価格を正規化してグラフで比較

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は価格差があるので、単純に価格を同じグラフにプロットしただけだと、比較しにくいです。

コード解説

コードの各部分について解説します。

  1. ライブラリのインポート:
    import yfinance as yf
    import matplotlib.pyplot as plt
    
    • yfinanceはYahoo Financeから株価データを取得するためのライブラリです。
    • matplotlib.pyplotはデータを可視化するためのライブラリです。
  2. ティッカーシンボルの設定:
    acwi_ticker = "ACWI"
    sp500_ticker = "^GSPC"
    
    • ACWIはオルカンのティッカーシンボルです。
    • ^GSPCはS&P 500のティッカーシンボルです。
【補足】 ティッカーシンボルは、株式市場で取引される銘柄を識別するための一意のコードです。 通常、アルファベットの組み合わせで構成されており、各銘柄に固有のシンボルが割り当てられています。例えば、Apple Inc.のティッカーシンボルは「AAPL」、Microsoft Corporationのティッカーシンボルは「MSFT」です。 これらのシンボルを使って、株価情報を検索したり、取引を行ったりすることができます。ティッカーシンボルは、株式市場だけでなく、債券やETF(上場投資信託)などの他の金融商品にも使用されます
  1. 株価データの取得:
    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日まで)の株価データを取得します。
  2. 終値の取得:
    acwi_close = acwi_data["Close"]
    sp500_close = sp500_data["Close"]
    
    • 取得したデータから、終値(Close)を抽出します。
  3. グラフの作成:
    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.xlabelplt.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
記事の監修者
西住技研

プログラミング言語「Python」を研究、仕事、趣味でデータ分析や作業自動化などに活用してきたノウハウを情報発信しています。
筆者の詳しいプロフィールやお問合せはこちらのページまで。
YoutubeX(旧Twitter)でも情報発信中です!

西住技研をフォローする
投資

コメント