概要
japandasのリモートデータアクセス機能を使うとYahoo! ファイナンスから国内株式の情報を取得できますが、いろいろ改善したいと思う点があったので、前から作っていたやつをfin-pyもくもく会#2のあいだで完成させました。
課題
- 株式分割の際に余計なレコードが取得されてしまう
- 会社情報もほしい
- 決算情報もほしい
japandasの実装では、pd.read_html()
でHTMLをスクレイピングしていますが、単純に画面上の表をそのまま拾ってきているだけなので取得期間によっては分割イベントを拾ってしまいます。
japandasで取得してみた例
import japandas as jpd
jpd.DataReader('8411', 'yahoojp', '2008-12-15', '2009-01-15')
実行結果
始値 | 高値 | 安値 | 終値 | 出来高 | 調整後終値* | |
---|---|---|---|---|---|---|
日付 | ||||||
2008/12/19 | 259400 | 270600 | 253200 | 259900 | 281076 | 259.9 |
2008/12/22 | 266400 | 276000 | 265800 | 270200 | 164024 | 270.2 |
2008/12/24 | 262200 | 268100 | 254400 | 257700 | 96027 | 257.7 |
2009/1/5 | 分割: 1株 -> 1000株 | NaN | NaN | NaN | NaN | NaN |
2009/1/5 | 283 | 294 | 279 | 292 | 91382100 | 292 |
2009/1/6 | 297 | 299 | 287 | 289 | 112779100 | 289 |
2009/1/7 | 293 | 298 | 289 | 296 | 79444700 | 296 |
いまいちですね…
四本値をチャートに表示させたい場合、終値以外も修正しないといけません。
できたもの
というわけで作ったのがこちら。japandas同様にpandas_datareaderを継承していますので、ほぼ同様に使えます。
sawadyrr5/YahooJapanDataReader
Jupyterの%timeitで計測してみても20%程度高速化したようです。内部処理をXPathでパースするようにしたからでしょうか?