Pythonでデータを取得して米国株チャートをプロット【fix_yahoo_finance】

4月 5, 2021

プログラミングでデータ分析を行う際には,色々な場面で株価などのデータを取得することがほぼ必須となるので,今回は準備のために米国株価のデータを取得してプロットする方法を紹介します.

使用言語はPyhonです.データの取得にはYahoo!ファイナンスからデータを取得できるPythonライブラリ『fix_yahoo_finance』を用います.

Pythonを動かしたことがある人なら,コピペして実行するだけでできます

Pythonでチャートを取得してプロット

ライブラリのインストール

fix_yahoo_financeは,以下でインストールできます.

pip install fix_yahoo_finance

エラーが出た場合は,pipをアップデートするなどしましょう.

pip install --upgrade pip

コード

以下のコードをコピペして実行すればデータが取得され,チャートが表示されます.

import datetime
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt

start = datetime.date(2019,1,1)
end = datetime.date.today()
codelist = ["KO","PG","MSFT"]

data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
print(data2.head().append(data2.tail()))

df_all=(1+data2.pct_change()).cumprod()
print(df_all.head().append(df_all.tail()))

df_all.plot(figsize=(8,6),fontsize=18)
#data2.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()

コードの解説

・各種ライブラリをインポート

import datetime
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt

ここでエラーが出たら,ライブラリのインストールをやり直しましょう.

・取得データの期間を設定

start = datetime.date(2019,1,1)
end = datetime.date.today()

startは,取得データの開始日です.endは,取得データの終了日です.

このコードでは取得データ終了日は実行時点の日付(today)になっていますが,過去の日付までにしたい場合は startと同様にdatetime.date(年,月,日)で指定すればOKです.

・銘柄を設定

codelist = ["KO","PG","MSFT"]

チェッカーで銘柄を設定します.

今回は,私のお気に入り銘柄のコカ・コーラ(KO),P&G(PG),マイクロソフト(MSFT)を選択しました.

・データの取得

data2 = yf.download(codelist, start=start, end=end)["Adj Close"]
print(data2.head().append(data2.tail()))

Yahoo!ファイナンスからデータを取得(data2)します.また,printしてデータを文字で確認しています.

この時点では,データは株価(ドル)です.

・データをパーセント表記に変換

df_all=(1+data2.pct_change()).cumprod()
print(df_all.head().append(df_all.tail()))

先ほど取得した株価データdata2を前日に対する変化率の時系列データに変換し1を加え,さらにその累積積にすることで開始日を1とした倍率にしています.

・プロット

df_all.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()

df_all(倍率表記のチャート)をグラフにプロットして表示します.

倍率表記ではなく株価で表示したい場合は,

df_all.plot(figsize=(8,6),fontsize=18)

data2.plot(figsize=(8,6),fontsize=18)

に置き換えればOKです.

実行

python chart_us.py

chart_us.pyの部分はファイル名です.自分で保存したファイル名を入れてください.

実行結果

上のコードを実行すれば,以下のようなグラフが表示されます.横軸が日付,縦軸が開始日を1としたときの株価倍率(倍)です.

KO MSFT PG
Date
2018-12-31 44.38 98.81 86.73
2019-01-02 43.98 98.38 86.12
2019-01-03 43.71 94.76 85.52
2019-01-04 44.58 99.16 87.27
2019-01-07 44.00 99.29 86.92
2021-02-23 50.54 233.27 127.52
2021-02-24 50.71 234.55 127.66
2021-02-25 50.17 228.99 126.58
2021-02-26 48.99 232.38 123.53
2021-03-01 49.90 236.94 124.29
KO MSFT PG
Date
2018-12-31 NaN NaN NaN
2019-01-02 0.990987 0.995648 0.992967
2019-01-03 0.984903 0.959012 0.986049
2019-01-04 1.004507 1.003542 1.006226
2019-01-07 0.991438 1.004858 1.002191
2021-02-23 1.138801 2.360793 1.470310
2021-02-24 1.142632 2.373748 1.471924
2021-02-25 1.130464 2.317478 1.459472
2021-02-26 1.103876 2.351786 1.424305
2021-03-01 1.124380 2.397935 1.433068

・参考記事

20行で資産運用モデル作成 [Python 米国株の株価を取得し、グラフ・チャートを表示]

を参考にさせて頂きました.

参考記事ではGoogle Colaboratoryを用いてブラウザ上でプログラミング,実行していますが,今回は普通にWindowsマシンで行いました.