皆さんこんにちは!SEふじたけです。
以前から記事にしようとずっと思っていた、APIによる株価取得の制限について調べてみました。
![[AI]BOTさん](https://awsgcp.go-cloudpro.com/wp-content/uploads/2020/12/6e9811b92a277141a27037d6ef857498.png)
遂に調べたのね!
今回は、yfinanceとyahoo_finance_api2によって株価取得数の上限があるのか?
東証上場銘柄を一括で取得する事はできるのか?
制限かかって今後使用できなくなったらどうしよう。。。
でもそんなの関係ねぇ!という事で早速検証していきます。
株価を一括取得する為に
今回はAPIで取得した銘柄をpostgresに追加していく事にします。
APIで1銘柄をpostgresに追加する内容については前回の記事をご参照ください。
東証上場企業の一覧を保存しておく
東証上場企業を確認するには、JPXのページからcsvファイルをダウンロードする事ができます。

ただ月1回の更新となる為、月の合間で上場廃止となった銘柄はcsvファイル内に反映されていないので気を付けましょう。
また、Pro Marketは一般市場には公開されていない為、API取得では注意する必要があります。
Pro Marketとは何か?と思う方もおられると思います。(僕もその一人です。)
Pro Marketとは特定の投資家だけが取引可能な銘柄のようです。

LINE証券とかで調べても「銘柄一覧の銘柄見れないもの沢山あるじゃないか!」と思いましたが、
どうやらPro Marketのようです。
![[AI]BOTさん](https://awsgcp.go-cloudpro.com/wp-content/uploads/2020/12/6e9811b92a277141a27037d6ef857498.png)
色んな市場を知れて良かったね!(プラス思考)
yahoo_finance_api2で一括取得してみる
yahoo_finance_api2は使用している方も多いかと思います。僕もこのAPIが非常に使いやすいと思っておりましたが、一括取得では色々と工夫が必要になってきます。
上場廃止等で株価が取得できない場合はNaNが返さたり制約が多い
上場銘柄一覧から取得した際に、銘柄が上場廃止の場合は廃止日以降の値は全てNaNで返されます。
つまり、Python上で除去する必要があります。
またyahoo_finance_api2では株価の最大取得期間が2か月ですが、それ以前に上場廃止になったものはNoneが返されます。
Pro Marketの場合は上場銘柄一覧には存在していますが、yahoo_finance_api2ではNoneで返される為、エラーにならないよう考慮が必要です。
後述しますがyfinanceでは上場廃止銘柄はそもそも取得されません。
好みが分かれる所ではありますが、個人的にはyfinanceの方が使いやすいと思いました。
![[AI]BOTさん](https://awsgcp.go-cloudpro.com/wp-content/uploads/2020/12/6e9811b92a277141a27037d6ef857498.png)
使い勝手は人それぞれだね。
東証全銘柄に対してyahoo_finance_api2を実行してみる
結論から申しますと、全件取得できました!
巷では「1時間あたり2000件程の制限がある」との記事も見ましたが。。。
自分で試した所、銘柄一覧を全件取得する事ができました。
途中で失敗した事を含めると特に制限は無さそうです。
yfinanceで一括取得してみる
最近個人的にオススメしたいyfinanceでも取得してみます。
一括で取得する点についてはyfinanceの方が非常に便利だと思います。
上場廃止銘柄はそもそも取得されない
yfinanceで取得する際に上場廃止銘柄はエラーが返され取得されません。
yahoo_finance_api2のようにNaN値を除去する等の処理を追加する必要はないです。
上場廃止やPro Market銘柄に怯えず取得した銘柄一覧をそのまま流せば良いです!
![[AI]BOTさん](https://awsgcp.go-cloudpro.com/wp-content/uploads/2020/12/6e9811b92a277141a27037d6ef857498.png)
とても簡単でいいね!
東証全銘柄に対してyfinanceを実行してみる
yfinanceについても東証全銘柄を取得する事ができました!
こちらも複数回実行しても取得できたので、特に件数によって制限は無さそうです。
yahoo_finance_api2とyfinanceの違いをまとめた
今回の検証から違いが結構分かったと思います。
- yahoo_finance_api2
- 過去2か月まで遡って銘柄を取得できる
- 2か月以前の上場廃止銘柄を指定するとNoneが返される
- 直近で上場廃止になった銘柄は廃止日以降の株価はNaNで返される
- yfinance
- 当分過去まで遡れる(おおよそ西暦2000年まで)
- 上場廃止となった銘柄を取り込んでもエラー終了しない
- Pro Marketの銘柄も株価取得期間内に一般市場に存在していれば取得できる
上の事から取得期間が長い事と、使いやすさからyfinanceを個人的にはオススメしたいです。
最後に
今回はyahoo_finance_api2とyfinanceで東証上場銘柄を一括取得してみました。
結果的にはどちらでも一括で取得する事ができました。
個人的には取得期間が長い等、yfinanceの方が使い勝手が良いと思います。
今後はyfinanceをメインに使用していきます。
※個人的に検証した結果ですので、APIの連続実行はあくまで自己責任でお願いします。
最後まで読んで頂きありがとうございました。
コメント