米国株ヒストリカルデータAPIまとめ

株式会社オークンのNobuです!

これまでトレードシステム開発で様々な米国株ヒストリカルデータAPIを触ってきたので、各APIをご紹介をできればと思います。

米国株のAPIは契約して使ってみないと分からないものが多いです。

特に日本語記事はほとんどなく、どんなAPIがあるのか、どんなデータが取れるか等、全く分からず調査に大変苦労しました。

是非、この知見を活用頂ければと思います、、!

取得要件

以下、我々の取得の要件です。

  • 日次のOHLCVのヒストリカルデータ取得
    • 普通株、ETFが対象
    • 上場廃止銘柄も取得したい
  • 銘柄一覧
    • 上場中、上場廃止の両方

では早速、APIを紹介していければと思います!

pandas_datareader

ヒストリカルデータ取得でよく使われるAPIといえばこちらかと思います!

無料で、そこそこデータも取れるので、個人用検証用の最初には十分かと思います。

取得可能期間全期間※1
上場廃止銘柄取得不可※1
料金無料
API ドキュメントURLhttps://pandas-datareader.readthedocs.io/en/latest/

※1 Yahoo Finance!から取得した場合

日時のヒストリカルデータは以下のように簡単に取得できます。

import pandas_datareader.data as web
import pandas as pd
df = web.DataReader('GE', 'yahoo', start='2019-09-10', end='2019-10-09')


df.head() 
            High   Low  Open  Close      Volume  Adj Close
Date                                                      
2019-09-10  9.27  8.90  8.91   9.14  62617200.0   9.062220
2019-09-11  9.36  9.06  9.15   9.36  57094900.0   9.280347
2019-09-12  9.52  9.22  9.40   9.26  68115100.0   9.181198
2019-09-13  9.45  9.14  9.31   9.34  45589400.0   9.270529
2019-09-16  9.42  9.17  9.30   9.38  45748400.0   9.310231

また、上場銘柄一覧は、以下のように取得できます。

from pandas_datareader.nasdaq_trader import get_nasdaq_symbols
df = get_nasdaq_symbols()
pd.set_option('display.max_columns', None)
print(df.head())

      Listing Exchange Market Category    ETF  Round Lot Size  Test Issue  
Symbol
A                    N                  False           100.0       False
AA                  N                  False           100.0       False
AAA                P                   True           100.0       False
AAAU               Z                   True           100.0       False
AAC                 N                  False           100.0       False

       Financial Status CQS Symbol NASDAQ Symbol  NextShares
Symbol
A                   NaN            A                 A       False
AA                 NaN           AA              AA       False
AAA               NaN        AAA            AAA       False
AAAU             NaN       AAAU          AAAU       False
AAC                NaN        AAC             AAC       False

以上のように、簡単にデータ取得できるので、初めにはお勧めです!

また良く使われるAPIであるため、日本語記事が豊富なのも良いポイントです。

EODHD APIs

取得可能期間全期間
上場廃止銘柄取得可能
料金$0 ~ $79.99 (https://eodhistoricaldata.com/pricing)
API ドキュメントhttps://eodhistoricaldata.com/financial-apis/
備考価格データは必ずしも正確ではないと注釈あり。(後述)

こちらも良く使われているAPIです。

EOD以外にもリアルタイムデータ、ファンダメンタルデータ、為替、暗号通貨等、豊富なデータにアクセスできます。

無料プランがありますが、APIリクエスト数制限が20回/日なので、私はEOD Historical Data – All World ($19.99)を契約しました。

株価のヒストリカルデータは以下のリクエストで取得できます。

https://eodhistoricaldata.com/api/eod/MCD.US?api_token=demo

※デモ用で、MCD(=McDonald’s)は上記URLで取得できます

リクエストを送ると、以下のようなCSVが返ってきます。

クエリパラメータでfmt=jsonとすると、JSONでも取得可能です

また、銘柄一覧は、以下のリクエストで取得できます。EXCHANGE_CODE=USを指定すると、殆どの米国株銘柄を取得可能です。

https://eodhistoricaldata.com/api/exchange-symbol-list/{EXCHANGE_CODE}?api_token={YOUR_API_KEY}

クエリパラメータで、delisted=1を追加すると、上場廃止銘柄も取得できます。

安価でとても使いやすいAPIですが、トップページ下部に「データは必ずしも正確ではない」と注釈がありました。

EOD Historical Data would like to remind you that the data contained in this website and via API is not necessarily real-time nor accurate

私はシミュレーション用途なので問題ないですが、実取引で使われる際は注意が必要です!

Polygon.io

取得可能期間最大直近15年 (Advanced プランの場合)
上場廃止銘柄取得可能
料金$0 ~ $200 (Stockのみの場合。 https://polygon.io/pricing)
API ドキュメントhttps://polygon.io/docs/stocks/getting-started

米国で人気のあるAPIです。

料金プランは対象データ毎で契約が可能で、私はStocksのStarterプラン($29/月)のみを契約しました。

ヒストリカルデータは、Aggregates APIで取得できます。

Polygon はとにかくドキュメントがわかりやすいです

レスポンスは以下の通りです。なんとOHLCVに加え、VWAP(vw)も取得できました!

取引日(t)は、UNIXマイクロ秒で返されています。

銘柄一覧は、Tickers APIで取得できます。

とにかく指定可能パラメータが多いです

そして、レスポンスは以下の通り。

active=falseを指定することで、上場廃止銘柄も取得可能です。

また、今回は type=CS(普通株)、exchange=XNYSとしましたが、

他にもtype=ETFや、主要な取引所としてexchangeにXNAS, ARCX, XASEを指定して取得できました!

コーポレートアクションの調整について

少しマニアックな注意点です。

各APIとも、調整後終値が取得出来ますが、4本値の仕様がAPI毎で異なるので、調整後終値 / 終値で調整係数を算出する場合は少々注意が必要です。

pandas_datareader(Yahoo Finance)の場合

Yahoo FinanceではAdj Close(調整後終値)には全てのコーポレートアクションが反映されていますが、

OHLCについても、分割・併合に関してだけ調整がされているようです。

CloseとAdj Closeとが一致しており、分割の調整がOHLCに反映されていることが確認できる。
※ 実際の取得元であるYahoo Financeを参照

しかしながら、配当に関しては未調整なので、ご注意を。

CloseとAdj Closeは一致せず、配当の調整はOHLCには反映されていないことが確認できる。

EODHD APIsの場合

EODHD APIsでは、先程とは異なり、OHLCは全く調整されない状態で返ってきます。(※ Adjusted_closeはちゃんと調整されています)

ASTC (Astrotech Corporation) のヒストリカルデータ。(2022/12/05に、1:30の分割実施)
Yahoo Financeとは異なり、CloseとAdjusted_closeとが一致せず、分割が反映されていないことが分かる。

Polygon.ioの場合

Polygon.ioについては、調整後終値の取得項目はなく、パラメータ”adjusted”で4本値全てに対して調整後の値を取得するか選択できるので、特に注意不要です。

最後に

他にも商用限定のXigniteも扱かった経験もあります。

米国株APIの調査は、とにかく英語のドキュメントが基本で、普通に知らないこともあったりするので、かなり苦労しました。
(コーポレートアクションの件では、調整係数の計算を間違え、データの取り直しが発生しました)

今回の記事が皆様のお役に立てば幸いです!最後まで読んでいただき、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

山口県出身のシステムエンジニア。予想の3倍早く成果をあげるハイパフォーマンスな仕事振りで、入社3ヶ月でチームリーダーに抜擢。ジム通いを欠かさず健康には自信がある。