株データを取得してみよう!

所要時間

60分

学ぶコト

・株データの取得

このレッスンでは、株情報を収集するために

yFinance

というライブラリを使っていきます。

yFinanceとは?

まずはyFinanceというライブラリについて簡単に説明します。

yFinanceはYahooが公開しているAPIから作られたオープンソースのツールで、Yahooファイナンスから株価データを取得することが出来ます。

Yahoo!ファイナンスAPIは、個人的な使用のみを目的としているので、あくまで学習のために利用しましょう。

株データを取得しよう!

では実際に”yFinance”を使って株データを取得してみましょう。

まずは自身の環境にライブラリをインストールします。

pip install yfinance

実際にライブラリを使って”Amazon.com”の株データを取得します。

株データの取得する際に使う”download関数“では主に「ターゲット」「期間」「頻度」を指定します。

import yfinance as yf

#ターゲットを指定
ticker = "AMZN"

#データを収集
# data = yf.download(ターゲット, 期間, 頻度)
data = yf.download(ticker, period = '6mo', interval = "1d")
print(data)

yFinanceAPIのdownload関数では取得データをpandasのDateFrameの形で結果を返してくれます。

出力された各項目は以下になります

  • Date:取得日時
  • Open:始値
  • High:高値
  • Low:安値
  • Close:終値
  • Adj Close:調整後終値
  • Volume:出来高

ターゲットを指定してみよう!

ターゲットの指定には取得したい株の銘柄コード(今回は”Amazon.com”なので、”AMZN”)を指定します。

#ターゲットを指定
ticker = "AMZN"

このターゲットを変更することで別企業の株情報を取得できます。

ただし、日本株を指定するときは銘柄コードに東京証券を表す「.T」を追加する必要があります。

#ターゲットを指定(楽天グループ(銘柄コード:4755))
ticker = "4755.T"

また変数tickerに指定する銘柄コードは複数選択することも可能です。

#ターゲットをlist型で複数指定
tickers = ["AMZN", "AAPL"]

#データを収集
data = yf.download(tickers , period = '6mo' , interval = "1d")

“Amazon.com”に加えて”Apple”をターゲットに指定した例になります。

このように一度に複数の企業の情報を収集することも出来ます。

取得する期間を変更してみよう

download関数“では”period”というパラメータで取得する株データの期間を指定します。

“period”というパラメータではそれぞれ、”d”⇒日、”mo”⇒月、”y”⇒年、”ytd”⇒当会計年度、”max”⇒取得できる全期間、を選択できます。

何も指定しない場合、デフォルトの”max”になります。

また、期間に”period”ではなく”start/end”というパラメータを使用することで特定の期間を指定することが出来ます。

#ターゲットを指定
ticker = "AMZN"

#期間に2022/6/1~2022/06/15を指定
data = yf.download(ticker, start = "2022-06-01", end = "2022-06-15", interval = "1d")
data

このように任意の期間を設定して情報を取得することも出来ます。

ただし、”period”と”start/end”のパラメータは一緒に使えないので注意しましょう。

取得する頻度を変更してみよう!

download関数“では”interval”というパラメータで取得する株データの頻度を指定します。

“interval”というパラメータでは「1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo」を選択できます。

それぞれ、”m”⇒分、”h”⇒時間、”d”⇒日、”wk”⇒週、”mo”⇒月、となり何も指定しない場合、デフォルトの”1d”になります。

#ターゲットを指定
ticker = "AMZN"

#頻度に5分毎を指定
data = yf.download(ticker, period  = "1mo", interval = "5m")
data

また、取得する頻度に応じて指定できる期間に制約があります。

  • intervalに”1m”を指定した場合、直近30日以内の最大7日間
  • intervalに”90m”以内(”60m”、”1h”除く)を指定した場合、直近60日以内
  • intervalに”60m”、”1h”を指定した場合、最大730日以内

取得する頻度に対して誤った期間を指定してしまうとエラーとなるので頻度を選択する際は期間を確認しましょう。

課題

・ソニーグループとトヨタ自動車の2022/1/1~2022/12/31の株価情報を1日単位で同時に取得してみよう!