こんにちは。システムトレーダーの卵ことKenKenです。本日は、「Python3ではじめるシステムトレード ──環境構築と売買戦略」で株価データ取得について”panas-datareader”が紹介されていました。こちらのモジュールを使うことで、だけで日経平株価とかマクロデータなどデータが取得できるみたいです。トレーディングシステムを開発にあたり、株価だけでなくいろいろなデータがあったほうが心強いと思うので、今回は”panas-datareader”で取得できるデータを簡単にまとめておきます。金融機関では、データは買っていて簡単に手に入ておりますが、個人ではデータにお金をかけられる人はごく僅かですし、無料で手に入るならそれに頼ったほうが絶対にいいですよね。
panas-datareaderについての公式ドキュメントはこちら。
取得可能なデータベース
まず、”panas-datareader”からデータベースは取得データベースは、以下の通り(2020/11/21)。
- AlphaVantage
- Federal Reserve Economic Data (FRED)
- Fama-French Data (Ken French’s Data Library)
- Bank of Canada
- Econdb
- Enigma
- Eurostat
- The Investors Exchange (IEX)
- Moscow Exchange (MOEX)
- NASDAQ
- Naver Finance
- Organisation for Economic Co-operation and Development (OECD)
- Quandl
- Stooq.com
- Tiingo
- Thrift Savings Plan (TSP)
- World Bank
かなりのデータベースに対応しているみたいです。Fama Frenchデータベースも扱えるあたりが個人的には面白いなと思いました。ただ、米国のものになりますが。
データ取得方法
各データベースの紹介ページに取得に必要な関数が紹介されている。すべて紹介できないので、Federal Reserve Economic Data (FRED)からデータを取得する方法についてだけ以下に記載する。他のデータベースからの取得関数も基本的には、使い方は同じ。ただ、引数となる”symbol”は各公式サイトへ訪問して、特定する必要がありそう。
(例)FREDから日経平均株価(日次)を取得し、グラフにする。

尚、Google Finance, St. Louis FED (FRED), Kenneth French’s datalibraryはpandas_datareader.data.DataReader()からも取得できる。
各データベースの調査(何個か調査してみた)
Federal Reserve Economic Data (FRED)
セントルイス連銀の経済統計データを格納(公式ページ)。カテゴリもいろいろある。(一部抜粋)
- Money, Banking, & Finance :金融関連(金利、為替、マネタリーベース等)
- Population, Employment, & Labor Markets :人口、雇用、労働市場
- Prices :コモディティ、輸出入関係指標、
- International Data:各国のデータ
いろいろありすぎて扱いきれない。「Japan」で検索しただけでも2900ほどのデータあり。シストレに使えそうなデータはそろっていそう?ただ、基本的には、日次データ。ここでは、引数のsymbolとの対応を何個か紹介することに留めておく。
日経日経225(NIKKEI225)、日米為替レート(DEXJPUS), 消費者物価指数(JPNCPIALLMINMEI), VIX(DDSM01JPA066NWDB)など。※()内に記載のものがsymbol
基本的には、欲しいインデックスを検索して、インデックスのページに移動。インデックス名の横に()で書かれている箇所がsymbolになる。

Yahoo Finance
USのYahoo Financeからデータを取得することもできます。ただ、日本市場のデータは厳しそうです。日経225はありました。個別企業銘柄のデータやインデックス、為替、BitCoinのデータなど多くあるので、やはりYahoo Financeを利用するのが得策かもしれません。以下、日経平均株価を取得したコードを載せておきます。

左から、高値、安値、始値、終値、出来高、調整済み終値となっております。こちらの記事に詳しく書いてあったので気になる方はそちらをご参照ください。
余談ですが、「Python3ではじめるシステムトレード ──環境構築と売買戦略」のレビューで以下のようなものがありました。(一文抜粋)

出版当初には使えたのかもしれませんが、
今では様々な仕様の変更などで全く使えない本になっています。
特にこの本で多様されるYahooファイナンスとのAPI連携が
2018年8月現在時点では行われておらず、
そこに関係するコードは自分で他のソースから取ってきて
加工し直すなりしないと使えません。
購入当初、このコメントを見て気になっていましたが、今のところ、問題なくデータ取得できています。本を読み進めると苦労するのかもしれませんが。もう少し、様子見てみます。ただ、pdr.DataReader()の公式には、以下のように記載されているのであながち間違っていないのかも。
”Currently supports Google Finance, St. Louis FED (FRED), and Kenneth French’s data library, among others.” つまり、yahoo financeはサポートしていない。
Google Finance
よく見たら、Google Finaceはデータベース一覧には含まれていないんですね。Apple社のデータを少しだけなら取得以下にまとめておきます。Google Financeのデータを取得するには、上でも紹介しましたが、pandas_datareader.data.DataReader()を使用します。BIDS/ASKS情報や最終時点の株価情報など取得できているみたいです。取得日が土日なのBIDS/ASKS情報は空になっているのかもしれませんが、もしかしたら営業日でも取得できないのかも。Google Finace情報取得には向かなそうです。

World Bank
World Bank、名前からしてデータも多そうなので軽く調べてみました。主なデータのカテゴリは、以下の通り。詳細は、こちらに書かれています。
- 貧困:世界の貧困率や貧困人口、格差、公正に関するデータ
- 経済:GDP成長率など経済関連指標の地域別マップやチャート
- 気候変動:地域別の二酸化炭素排出量など気候変動に関するデータや関連サイト
- 保健:国別平均寿命や、5歳未満の乳幼児、妊産婦の死亡率などに関するデータ
- 教育:国別識字率や、初等・中等教育の就学率、修了率などに関するデータ
- ジェンダー:国会全議席のうち女性が占める割合や女性の失業率などジェンダー格差に関するデータや関連サイト
これらのデータを利用することがあるかわかりませんが。データの取得方法は、これまでと大して変わりませんが、引数が微妙に変わるので記録として残しておきます。まず、欲しいデータのページに行き、引数sysmbolsに対応するコードを特定します。例えば、GDPのが欲しい場合は、こちらのページのの[Details]を開き、IDがsysbolsと対応します。この例だと、「NY.GDP.MKTP.CD」です。

IDを特定できたら、引数を指定します。WordBankのデータ取得では、取得したデータの国を指定することも可能です。今回は、日本のGDPを取得したコードを以下に掲載しておきます。

Fama-French Data (Ken French’s Data Library)
これは、興味本位でデータを取得してみた。公式ページにアクセスして、欲しいデータのcsvファイルのダウンロードリンクを”symbols”に指定すれば取得可能。
例えば、Fama/French 3 Factors(Daily)を取得する場合は、ダウンロードリンクを取得(右クリックでリンクのアドレスをコピーでできます)。取得したURL「http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_CSV.zip」のうち、”/ftp/””と”_CSV.zip”の間の文字列が対象のsymbolsになる。この例だと、「F-F_Research_Data_Factors」がsymbolsに該当する。

補足
他のデータベースについて(上で紹介したものを含む)は、こちらのページに詳細に書かれているのでこちらもご参照いただけらばと思います。
まとめ
今回は、”panas_datareader”の使い方について、軽く調べてまとめてみました。世界のマーケットデータや経済データは基本的にはこれ一つで事足りそうです。各データベースから取得できるデータについてはもう少し調査したいと思います。また、データのタイムゾーンに関しては、日次については割と提供されている感じでした。リアルタイムでトレードしていくとなると、秒・分単位で取得する必要がありそうですよね。他のデータベースには、そういったデータもあることを願ってます。なければ、APIを使うなど対策を考えていかなければならないですね。。。ただ、日本のマーケットを対象にするとなると、”panas-datareader”では難しいかもしれない。
以上