EDINET APIをPythonで使ってみた話

EDINET API使ってみた。

EDINETは政府が行っている有価証券報告書等の電子開示システムです。検索すれば上場企業が提出している決算報告書等を取得することができます。

普段は、企業のIRを直接見たり、既に整形されたYahoo Financeを見たり、Twitterを見たりで情報は十分得られますので、必要なケースは少ないと思います。

先日「日銀のJ-REITの保有が10%に近付く」という記事を見ました。

これを見て、少し日銀マニアな僕は

「日銀のJ-REITの大量保有報告の銘柄とトレンドが見たい」

「日銀BOTに大量保有報告の監視機能でも追加しようかな?」

と思いEDINETのAPIを触ってみることにしました。

 

結果、EDINETのAPIを使い、Google Colabで過去分の大量保有報告のデータを取得しリストとグラフにしました。

 

 

EDINET APIを使った感想

この記事が記載するのは「技術的な使い方の解説!」でなく「感想」です。

「参考になるプログラム」という意味ですと下記の記事を参考になりました。下記はスゴイです。「プロのコード」って感じで、僕のつたないPython知識ではサッパリな部分が多かったです。

Python&Colab:EDINET 企業データの自動取得・スクリーニングを5分ではじめる

 

説明の通りに、確かに5分で動いたのですが、僕の「日銀の大量保有報告を取得したい!」というニッチ過ぎる要求にはリッチ過ぎました。なので、自分で理解できる範囲で新規でコード書きました。

 

感想1.個人に優しくないAPI

2019年にAPIが公開されていて、仕様はこちらのページからダウンロードできます。

「API仕様書類をZIPでダウンロードさせて、解凍させて仕様書をPDFで読ませる」というお役所仕様です。どれだけ効率悪ければ気が済むのか。、という印象を持ちました。

端折って書くとAPIは下記2つしかありません。

1.書類一覧 API ・・・日付を入れると、「書類管理番号」を含む「提出書類一覧」が帰ってくる」

2.書類取得 API ・・・「書類管理番号」を指定して実際の提出を、xbrl一式をZIPでダウンロードする。(PDFも可能)

 

なので、「フィルター機能」がないのです。だから「この銘柄指定」とか「決算報告書だけ」等ができないのです。

APIを使うと1日で何百件~数千件の情報が降ってきます。

例えば「三井物産の過去5年分配当推移を知りたい」場合「過去5年分回APIをコールして、”提出書類のID”を全部取得して、自分で探して、実決算書をダウンロードする!」となります。

証券会社・金融情報産業がデータベースを造ったりするのに必要にして十分だと思いますが、この融通の利かなさは、個人で触るにはお世辞にも使い安いとは思いませんでした。

大量保有報告のチェックを定期起動の為にクラウドに置きたいな、と思いましたが、従量課金なので不要な解析ばかりになり、無料枠でしか遊ばない僕の様な個人には優しくありません。

 

感想2.XBRLというより運用仕様の理解がメンドイ

実際に取得したXBRLを解析したところ「大量保有報告」の「発行者」の情報は取れましたが、僕が欲しかった「保有者割合」情報は”XBRL”に情報が入っていませんでした。

大量保有報告は、下記の様にEDINETのツールで作成されていて、ブラックブックスで仕様が理解できず、XBRLに含まれないので不明でした。(なんのcontents_refで動くかは、コード見ればわかるのですが。)

XBRL解析を学ぶつもりだったのですが、結局xmlのマニフェストから、不随するhtmの形式を取得し、該当情報を引っ張ってくるということになりました。

この辺は通常のWebスクレイピングと同じで、「取得したいデータが明確であれば難しくない」とは思いましたが、汎用性という意味だと課題は結構ありそうな印象です。

 

感想3. 金融データの民主化の道半ば

EDINETは金融庁 総務企画局 企業開示課で実際行われています。

APIを見ると、ダウンロードしてデータベースを作る事が前提となっていて、企業のシステム構築に向けた印象です。

僕の様な「個人投資家で趣味でプログラムを始めた」という様な人はターゲット外ですね。

個人的な希望は、APIに「フィルター機能」さえあれば、中小企業や、個人プログラマーでも簡単に活用は出来ると思います。システムの品質や負荷の問題になりますが、金融サービスの発展の為に、金融庁にはシステム投資して欲しいですね。

 

Google Colaboファイル

とっかかりには良い練習になりました。一応、Colabファイル貼っておきます。前述のプロフェッショナルなコードと比べて、汎用性も拡張性も低く「ビギナーが書くとこんな感じ!」ってなコードだと我ながら思います。

EDINETから日銀の大量保有報告を抜く