やればできる!XBRLで決算分析システムを作るにあたって難しかったところ妥協したところ

 

決算分析システム完成に至る道のりの紹介です。XBRL解析で作りました。いっちゃん難しいのは、数字をキレーに表にすることですね。そのあたりの歩みです。システムを作りたいという怨念が、システムを作り上げるのです。

 

何をするかって、エックス・ビー・アール・エルをダウンロードして、数字を読み込んで、シー・エス・ブイにして、エクセルで読み込みます。そうそう、使ったソフトは「パイソン3」と「エクセル2007」です。開発は「ビジュアルスタジオ2013」と「ビジュアルスタジオコード」ですね。パイソンで読み込んだものをエクセルで見る感じです。

 

で、XBRLってたくさん種類あるんですよね。エディネットXBRLとか、東証XBRLとか、エドガーXBRLとか。エドガーは米国のシステムです。この3種類に対応したものを作りました。あまり簡単じゃなかったです。そのどったんばったんを挙げていきます。

 

最初に取り掛かったのがエディネットXBRLでした。2015年でしたか、そのあたりですね。ゆうほう(有報)って有価証券報告書の略なんですけども、それに直近5年分の売上とか資産とか載ってるんですよ。まずはこれを読み込んでみようと。それで上場企業全て表にしました。

スポンサーリンク

読めたの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まとめ

XBRLの取得方法【EDINET】

XBRLの取得方法【有報キャッチャー】

XBRLの取得方法【EDGAR】 (エドガー)

 

グラフは 業績チャート と 業績チャート 米国 で公開しています。

 

ライブラリは以下で公開しています。

有報のXBRLを読み込むPythonライブラリ【EDINET】

EDGAR XBRLを読み込むPythonライブラリ

XBRL分析の参考になれば幸いです。

タイトルとURLをコピーしました