Help us understand the problem. What is going on with this article?

EDINETのXBRL用のPythonライブラリを作った - Parser編

More than 1 year has passed since last update.

1. はじめに

まず、EDINETとXBRLについて軽く。

1.1 EDINETとは

EDINETは、「金融商品取引法に基づく有価証券報告書等の開示書類に関する電子開示システム」のことで、有価証券報告書、有価証券届出書、大量保有報告書等の開示書類について、その提出から公衆縦覧等に至るまでの一連の手続きを電子化するために開発された1ようで、株式投資の重要な判断材料になる決算書が、後述するXBRLという特殊なXMLファイルでダウンロードできる(検索もできる)。まとめてドカっとダウンロードしたいひとはこれを参考にしてほしい。

1.2 XBRLとは

XBRL JAPANによると、XBRL(eXtensible Business Reporting Language)は、各種事業報告用の情報(財務・経営・投資などの様々な情報)を作成・流通・利用できるように標準化されたXMLベースのコンピュータ言語2らしいが、とてもそのまま利用できるシロモノではない。例えば、2017年の仕様は2017年版EDINETタクソノミの公表についてにまとまっているが、まぁ意味不明である3

EDINETのXBRLをPythonでパースする

ひとまず、せっかくXBRLという構造化されたファイル(しかも、仕様が複雑とは言え所詮はXML)なので、parserさえ作ればなんとかなるだろうということで作ったのがedinet-xbrl である。

$ pip install edinet-xbrl

でインストール後、こんな感じでxbrlファイルへのpathを渡せばクソみたいなXBRLを、Pythonのオブジェクトとして扱える。

from edinet_xbrl.edinet_xbrl_parser import EdinetXbrlParser

## init parser
parser = EdinetXbrlParser()

## parse xbrl file and get data container
xbrl_file_path = "set your xbrl file path"
edinet_xbrl_object = parser.parse_file(xbrl_file_path)

## 例えば、該当年度の総資産を取ってみる
key = "jppfs_cor:Assets"
context_ref = "CurrentYearInstant"
current_year_assets = edinet_xbrl_object.get_data_by_context_ref(key, context_ref).get_value()

keyとcontext_refを特定するのは相応に大変だけど、有報のPDFとXBRLを並べてにらめっこすればなんとかなるはずだ。コードはGitHubに置いておくので、後は良しなに4

最後に

これを使って大量のXBRLと格闘してバフェット・コードというウェブサービスを作ってるので、興味があればのぞいてみてください。繰り返しになりますが、EDINETからXBRLから入手する方法もこのエントリにまとめたので、是非ご利用ください。
Parserの使い方がわからない、XBRLについて相談したいことがある等についてはTwitterからお気軽にご連絡いただければと思います(DMでも大丈夫です)。

注釈等


  1. 金融庁のページ より引用 

  2. XBRL JAPAN: XBRLとはより引用 

  3. そもそも、どの要素に何が入っているかを確認するのにはこのページの"タクソノミ要素リスト"というexcelファイルを参照する必要があるのだが、これを開いて心が折れない人は皆無であろう。 

  4. 内部では、python-xbrlを利用させてもらっている 

mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした