決算分析システム完成に至る道のりの紹介です。XBRL 解析で作りました。いっちゃん難しいのは、数字をキレーに表にすることですね。そのあたりの歩みです。システムを作りたいという怨念が、システムを作り上げるのです。
何をするかって、エックス・ビー・アール・エルをダウンロードして、数字を読み込んで、シー・エス・ブイにして、エクセルで読み込みます。そうそう、使ったソフトは「パイソン 3」と「エクセル 2007」です。開発は「ビジュアルスタジオ 2013」と「ビジュアルスタジオコード」ですね。パイソンで読み込んだものをエクセルで見る感じです。
で、XBRL ってたくさん種類あるんですよね。エディネット XBRL とか、東証 XBRL とか、エドガー XBRL とか。エドガーは米国のシステムです。この3種類に対応したものを作りました。あまり簡単じゃなかったです。そのどったんばったんを挙げていきます。
最初に取り掛かったのがエディネット XBRL でした。2015年でしたか、そのあたりですね。ゆうほう(有報)って有価証券報告書の略なんですけども、それに直近5年分の売上とか資産とか載ってるんですよ。まずはこれを読み込んでみようと。それで、上場企業を全て表にしました。(2015年の当時は、Arelle の使い方が分からなくて、結局、自分で XBRL を読み込むことにしました。)
読めたの4割です。他は数字を拾えませんでした。長く苦しい戦いの始まりです。会計基準ってありますよね?日本基準とか米国基準とか国際基準とか。それで、売り上げの呼び方とか、意味するところが微妙に違うんですよ。
意味の違いはとりあえず置いといて、売り上げに当たるもの、PDFで表の上の方に来る科目を売り上げとみなすっていう感じで、どんどん集約していきました。建設業の完成工事高とか金融業の収益とか、とにかく売上高に集約して比較可能な状態に持ってきました。これがもう大変な作業でした。
中には、ひとつの有報の中に3種類の会計基準が混在してる決算もありまして、どれを採用すればいいのかと。とりあえず、国際が読めなかったら米国。米国が読めなかったら日本、って感じにしました。ここまでくると、やり方に正解ってものはないですね。どんな風にして見たいかっていう主観で作っていきました。
それで8割くらいまで読み込めました。あとはもう個別対応です。XBRL って、HTML みたいにタグ付けされたデータなんですが、そのタグって、企業が独自に定義しても良いことになってるんですね。それを一つ一つパイソンのリストに追加して、完成度を上げていきました。
ここは企業の財務担当の苦労が見えた気がしました。金融庁から、勘定科目のタグはこれを使ってくださいっていうのが出てるんですが、現場では使いたいのが見つけられなかったのかもしれません。独自タグで何とか XBRL データを提出した感じが伝わってきました。この辺は全くの想像ですが、苦労して決算している方々の仕事には頭が下がります。
そんなこんなで、欲しい科目については、95%くらいまで表にできました。やりました!残りは誤りを含んだデータですね。タグが間違ってるとか、タグ付けされてないとか。これらはもうどうしようもないです。
で、最新の決算が揃ったら、今度は過去の決算を集計したいですよね?作ったプログラムを過去に向かって動かしました。2013年で止まりました。2008年から13年が空欄です。調べたら、フォーマットが全く変わってたんですね。
初期の XBRL ということで、サマリも文書情報もない、財務諸表だけの簡素なものでした。しかし、タグが全部変わってるんです。またさっきの完成度を上げていく作業をしました。出来ました。
全上場企業の9年分の推移、しかも四半期ごとのグラフが揃ったときは感動しましたね。次は東証 XBRL です。業績予想が載ってるので、これもぜひグラフにしたいなって思って作りました。また同じ苦労をしました。
会計基準は3種類あるし、企業によってタグが違うし、2013年からフォーマット変わってるし、タグづけが間違ってたり、タグ付けされてなかったり、そもそもXBRLファイルの中身が空っぽだったり、様々な困難を再び乗り越えました。
苦労はしましたが、データが公開されているというのは、とてもありがたいです。東証版のグラフも揃いました。再び感動です。やはりですね、グラフにすると一目で把握できます。数字でももちろん良いんですけれど、量的なものが感覚的につかめる感じが好きです。
そしてですね、ここまで来たらさらに完成度を高めるべく、エディネット版と合体させることにしました。融合です。どういうことかといいますと、エディネット版で空欄になったところを、東証版で補う処理を追加しました。これが当たりでした。これ以上はどうしようもなかった95%から、98%くらいまで完成度上がりました。
その勢いで、エドガー版も作りました。また同じ苦労をするだけかな?と思ったんですが、今度はタグ以外のところにも違いがあったんですね。
コンテキストレフ (contextref)って私は読んでるんですけども。日付を表している部分です。これがですね、エディネットや東証の XBRL と全然違うんです。日付を表す役割は同じなんですが、”CurrentYearInstant” とかじゃないんですね。
“D2013Q2_0515_DividendPaidQuarterOneMember” とか、
“eol_PE807673–1010-Q0002_STD_0_20100430_0” とか、なにやら具体的な感じです。
一応、色々な科目をグラフに出来るようにはしたのですが、企業が多くて表の完成度を上げるのが大変だということで、お蔵入りになりました(その後、再チャレンジして完成させました)。
いろいろありましたが、タグの違いやフォーマットの違いに対応するのが難しかったですね。どれを売上高にするかっていう集約作業ではかなり妥協しましたが、それでも実用的な感じにはなりました。やればできる!
なお、エディネット XBRL と東証 XBRL の解析には「ビューティフルスープ (BeautifulSoup)」を、エドガー XBRL の解析には「エル・エックス・エム・エル イー・ツリー (lxml.etree)」を使いました。グラフは「マットプロットリブ (matplotlib)」で描きました。
決算分析システムの作り方はこちらで書いています。
XBRLの取得方法【EDGAR】 (エドガー)
作ったライブラリは以下で公開しました。ですが、これから XBRL データを読み込むなら、まずは Arelle(アレル)という Python ライブラリを使ってみるのが良いと思います。
有報のXBRLを読み込むPythonライブラリ【EDINET】
【Python】Arelle のインストール方法【XBRL 読み込みライブラリ】
XBRL 分析の参考になれば幸いです。