はじめに
今回は株価データの取得方法についてまとめておく。
身近なサイトでは、Yahoo!ファイナンスの時系列データがお手軽そうではあるがYahoo!ファイナンスはスクレイピング、すなわちWebページから株価データを抽出することは禁止されているようなので、Pandas DataReaderを利用するとよい。
以下の記事を参考にした。
https://ntk-lab.com/import_stock_data/
Pythonで株価データを取得する方法
Pandas DataReader
ここにPandas DataReaderで利用する株価データの入手元と、アクセス方法が載っている。
IEX
NY市場上場銘柄ならば、IEXから取ってくるサンプルコードを容易に見つけることができるが、IEXから株価データを取得するには、アカウントを作ってAPIキーを取得する必要がある。
無料のAPIキーを取得可能だが、1日に取得できるデータ量には制限がある。
有料のAPIキーもそんなに高価ではないが、解約方法のページを探しきれなかったのでやめておく。
iex
import os
import pandas_datareader as pdr
from datetime import datetime
os.environ['IEX_API_KEY'] = '取得したAPIキーの価'
start_date = datetime(2020,1,1)
end_date = datetime(2020,7,10)
df = pdr.data.DataReader(name='AAPL', data_source="iex", start=start_date, end=end_date)
df.to_csv("AAPL.csv")
Stooq
使い勝手は良かったのは、Stooq。API キー取得は不要。
取得例は以下。
import pandas_datareader.stooq as web
from datetime import datetime
start_date = datetime(2020,1,1)
end_date = datetime(2020,7,10)
dr = web.StooqDailyReader('^DJI', start=start_date, end=end_date)
df = dr.read()
df.to_csv('DOW30.csv')
各国インデックスや日本国内銘柄も取得可能。
海外銘柄はティッカーコードで、日本国内銘柄は4桁の証券コードに「.JP」の拡張子を付けたものを指定する。
取得銘柄 | 指定コード |
---|---|
Apple | AAPL |
DOW30 | ^DJI |
NIKKEI225 | ^NKX |
極洋 | 1301.JP |
NF日経ダブルインバース | 1357.JP |
上場日経2倍 | 1358.JP |
まとめ
Pandas DataReaderのstooqは、APIキー取得不要で使い勝手が良い。
日本の上場銘柄が取ってこれるんで、禁断のスクレイピングに手を染める必要がない。