財務分析に欠かせない、XBRLを理解する Part1

piqcy
programming-soda
Published in
7 min readOct 21, 2019

XBRLは、企業の決算報告などに使用されている文書フォーマットです。XMLに近いフォーマットのため、プログラムでアクセスし文書情報や財務数値などを取得することができます。上場企業であれば、EDINETで検索して実際のXBRLファイルを見てみることが可能です。

EDINETの検索画面(使いやすくはない)

本記事では、XBRLがどんなフォーマットなのかを解説します。(今まで雰囲気で理解していたのですが、そうもいかなくなってきたことが背景にあります)。本記事の構成は以下のようになっています。

  1. XBRLとは
  2. XBRLの仕組み

Part1で仕組みを把握し、Part2でPythonを用い実際にXBRLを読んでいきます。

XBRLとは

XBRLは”eXtensible Business Reporting Language”の略称です。名前の通り事業報告に特化した文書フォーマットで、XMLをベースにしています。XBRLは国際規格であり、日本だけでなく各国の事業報告に使用されています。2019年時点では、45カ国以上で採用されています。

「国際標準としてのXBRL」より引用

実際の報告文書は、日本ではEDINETやTDNetで公開されています。ちなみに米国の証券取引委員会(SEC)はBiqQueryでもXBRLのデータを公開しています。

このデータを使うと、以下のように企業収益の分析などができます。下図はGoogleを傘下に置くALPHABETとAmazonの利益を並べてプロットしたものです。Kaggle経由でBigQueryにアクセス可能になったため、こうした分析は割合簡単に行うことができます(興味がある方はこちらをご参考ください)。

ALPHABETとAmazonの利益比較

ただ、報告に使っているXMLタグは企業ごとに揺らぎがあります。以下は各社の「利益」に関連するタグを抽出したデータですが、”Revenues”や”SalesRevenueNet”など使っているタグがまちまちなことがわかると思います。

SECから抽出したXBRLのデータ

XBRLは事業報告を目的とした共通フォーマットです。ただ”eXtensible”の名の通りカスタマイズが可能になっており、意図通りのデータを抽出するには多少仕様を理解しなければなりません。

XBRLの仕組み

XBRLは「定義」と「文書」という2つの要素から構成されます。これは、ちょうどプログラムの「クラス定義」と「インスタンス」の関係に似ています。「定義」を行うのが「タクソノミ文書」、定義に基づく文書が「インスタンス文書」となります。

「インスタンス文書」は、定義に基づく記載と値の定義を含みます。「売上」として単に数値だけ書いてあっても、それがいつの売上なのか、また単位は円なのかドルなのか判別できません。これらがきちんとわかるよう「値の定義」を行います。以下は実際のXBRL記述です。

<jpcrp_cor:RevenuesFromExternalCustomers contextRef="Prior1YearDuration_jpcrp030000-asr_E05739-000ITInfrastructureServicesReportableSegmentsMember" unitRef="JPY" decimals="-6">123636000000</jpcrp_cor:RevenuesFromExternalCustomers>

contextRefからいつの、またunitRefから通貨単位、decimalsから表示する際の単位などが読み取れます。

「タクソノミ文書」(XML Schema)は、記載すべき項目の定義や項目の構造などを定義します。上記のXBRL記述の例で jpcrp_cor:RevenuesFromExternalCustomers というタグを使用していましたが、このタグを規定しているのがタクソノミ文書です。本体以外に、 XLinkという外部リンクの機能を使用し様々な付加情報を加えることができます。

インスタンス文書とタクソノミ文書の関係を表したものが下図になります。

「XBRLのテクノロジー/図1: XBRL 2.1 Spec.の構造」より引用

XML Schema(タクソノミ文書)から、様々なLBにリンクが張られています。LB(P=Presentation Linkbase) は項目の表示順を定義したもの、LB(C=Calculation Linkbase)は項目間の加算式を定義したものなどです。タグ定義を「語彙層」、タグ間の表示順序や計算方法の定義を「関係層」といい、2つがセットでタクソノミとなります。

タクソノミ文書は、報告する各企業ごとに拡張が可能です。記載したいけれどデフォルトのタクソノミに該当項目がない、という場合は拡張して定義を行います。

「提出者別タクソノミ作成ガイドライン/図表 1–1–1」より引用

拡張の仕方には2種類あります。「再利用」と「再構成」です。再利用はあくまで元のタクソノミを参照しますが、「再構成」の場合元のタクソノミとのリンクはなくなります(コピーするが別物として扱う)。

「提出者別タクソノミ作成ガイドライン/図表 1–2–1」より引用

「再利用」と「再構成」の使いどころは以下のように定めらられています。タグ要素(語彙層)は基本的に再利用、表示順/計算方法(関係層)は再構成、が基本になっています。これは、勘定科目はそれほどバリエーションがないですが、それを表示する方法+集計方法は様々にあるためです。

「提出者別タクソノミ作成ガイドライン/図表 3–2–1」より引用

最終的に各企業が作成するタクソノミ(提出者別タクソノミ)は以下のような構成になります。これにインスタンス文書(.xbrl)を加えたものがフルセットの報告文書となります。

実際EDINETからXBRLファイル(zip)をダウンロードすると、上記の構成と一致するファイルが含まれていることがわかります。

XBRLの中身

以上がXBRLの基本的な仕組みになります。ここまででお腹いっぱいだと思いますが、驚くべきことにタクソノミの定義は毎年変わります。企業のタクソノミは会計基準の変更といったイベント(IFRSへの移行など)でも変わります。これに毎度対応するというのは正直やってられないので、なるべく仕様変更に自動追尾して読む方法を編み出す必要があります。

Part2では、XBRLを読む基本的な方法と仕様変更に自動で対応する方法を検討します。

--

--

piqcy
programming-soda

All change is not growth, as all movement is not forward. Ellen Glasgow