Pythonで株価データを取得する方法

Python

本記事では、Pythonでの株価データの取得方法について紹介します。
株価データを使うことで、株価指標の計算や時系列モデルを使って株価の予測などのデータを使った分析を色々とすることができます。

なお、今回はスクレイピング等での取得方法ではなく、Pythonライブラリを使った取得方法になります。

yahooファイナンスは随分前にスクレイピング禁止になっているはずなので、ご注意ください。

さて、株価データ取得に関するライブラリは主に以下の2つについて紹介します。

  • pandas-datareader
  • quandl

初めにまだインストールしてない方はインストールしておきましょう。

$ pip install pandas-datareader
$ pip install quandl

Quandl

Quandlでは、金融や経済に関する世界中のデータ・セットを無料で利用することができます。
もちろん、日本のデータ、例えばGDPや日経平均株価も取得可能です。
※一部有料のものもあります。
quandl公式ページ

また、API_KEYを取得することで、リクエスト制限がなくなるので、Quandleアカウントを作成して、API_KEYは取得しておくといいと思います
API_KEYはアカウントを作成したら、ACCOUNT_SETTINGページで簡単に発行することができます。
さて、試しに、日経JASDAQ平均データを取得してみたいと思います。

import quandl as qd
qd.ApiConfig.api_key = '取得したAPI_key'

df = qd.get(dataset='NIKKEI/JASDAQ', start_date='2018-9-01', end_date='2018-11-01')

df.head()

すると以下のようなデータが取得できます。

quandlのget関数を使うことで、各データベースにアクセスしてデータを取得することができます。
各引数ですが、datasetにはquandlコードを指定します。
今回の例では、’NIKKEI/JASDAQ’というのがQuandlコードになってますが、”NIKKEI”がデータベース、”JASDAQ”がテーブル名を表しています。
また、start_date、end_dateで取得期間の指定が可能です。

ここのデータセットで指定するQuandlコードの取得方法が初め分からなかったのですが、各データセットのページに行けば載ってました笑
また、RやPythonによるサンプルコードも載せられているので、それらも参考にすることができます。

例えば、以下のNikkeiのデータベースページに行くと、さらにデータごとにテーブルが分かれているので、自分が取得したいページに飛びましょう。

試しにJASDAQを選択すると以下のようなページに遷移します。
グラフが表示されていますが、期間の選択や、表示するデータの選択をしてグラフを変更することが可能です。

このページの右上の部分に先程使ったQuandlコードが記載されているので、これをdatasetの引数の値として指定することで、データ取得が可能です。
また、その下にはRやPythonのサンプルコードも載せられています。

pandas_datareader

pandas-datareaderもquandl同様に様々なデータソースからデータの取得が可能なライブラリになっています。
データ取得ができるデータソースを下記一覧にまとめておきます。

  • Tiingo
  • IEX
  • Robinhood
  • Alpha Vantage
  • Enigma
  • Quandl
  • FRED
  • Fama/French
  • World Bank
  • OECD
  • Eurostat
  • TSP Fund Data
  • Nasdaq Trader Symbol Definitions
  • Stooq Index Data
  • MOEX Data

データソースの種類は、ライブラリのversion変更に伴い変更される可能性があるためご注意ください。また、データソースによってAPI_keyやaccess_keyの取得が必要になるものもあります。
pandas-datareaderドキュメント

それでは、さっそくpythonでデータを取得してみたいと思います。
以下のコードで簡単にデータを取得することが可能です。

import pandas_datareader as pdr
from datetime import datetime
start_date = datetime(2018,9,10)
end_date = datetime(2018,10,10)

df = pdr.data.DataReader(name='AAPL', data_source="iex", start=start_date, end=end_date)
df.head()

上記コードを実行すると、以下のように、始値、高値、安値、終値、出来高のデータが取得できていることが確認できます。

DataReaderの引数ですが、nameでシンボル名、今回の例では”AAPL”でアップルですね、そしてdata_sourceは先程一覧にあげたデータソースを指定、startとendでデータ期間の指定をすることができます。ちなみに今回はdatetimeライブラリを使って、datetime型の日付を使っていますが、普通に文字列で”2018-9-10″といったように指定しても大丈夫です。

まとめ

今回は、Pythonでquandlとpandas_datareaderを使った株価データの取得方法について紹介しました。
両ライブラリとも簡単にデータ取得が可能ですので、必要なデータソースに合わせて使い分けるといいと思います。
さて、株価データの取得はできたので、今後はこれを元にPythonを使った様々なテクニカル分析手法を紹介していきたいと思いますので、乞うご期待ください。

コメント