株式銘柄紹介ブログ

主に日本の株式を紹介しています

pythonで決算短信のXBRLを分析する その3「決算短信XBRLからのデータ取得概要 主にEDINETとの差異を説明」

はじめに

前回まではXBRLをダウンロードする方法について説明してきました。

www.quwechan.com

 
今回からはXBRLからデータを取得する方法についてお話していきます。
 

XBRLの分析については過去にEDINETのXBRL(有価証券報告書)でやっています。基本的には決算短信のXBRLもデータ取得の方法は同じです。なのでまずは以下の記事を読んでください。以降ではこれらの記事を読んでいる前提で話を進めます。
 

EDINET XBRLからデータを取得する方法概要

 
詳細

 

ここではEDINET(ここでは有価証券報告書のXBRL)との違いに着目して決算短信のXBRLについて説明します。

有価証券報告書のXBRLとの違い

概要

有価証券報告書の場合、XBRL文書は一つだけでした(基本的には)。しかし、決算短信ではXBRL文書が2つ存在しています。

以下は決算短信(四半期)のXBRLのファイル構成です。

XBRLData
    ├─Attachment
    │      1200000-qnbs02-tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-ixbrl.htm
    │      1300000-qnpl12-tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-ixbrl.htm
    │      1500000-qncf02-tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-ixbrl.htm
    │      index.txt
    │      manifest.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-cal.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-def.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-lab-en.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-lab.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22-pre.xml
    │      tse-qnedjpfr-23910-2024-01-31-01-2024-02-22.xsd
    │
    └─Summary
            tse-qnedjpsm-23910-20240214536030-def.xml
            tse-qnedjpsm-23910-20240214536030-ixbrl.htm
            tse-qnedjpsm-23910-20240214536030.xsd

 
上記を見ての通り決算短信のXBRLはSummaryとAttachmentという2つのXBRLから構成されています。Summaryがサマリー情報(経営成績、財政状態、配当の状況、業績予想など)、Attachmentが添付資料(経営成績や財政状態についての説明やBS・PLなど)です。


Attachmentは有価証券報告書とファイル構成がほぼ同じであり、中身を見ても要素名やディメンション構造も変わらないため(EDINETを流用しただけ?)、Attachmentについては有価証券報告書のデータ取得と同じやり方で問題なさそうです。

ただし、SummaryもAttachmentもXBRLインスタンスファイルが存在していないため、インラインXBRLから値を取ってくる必要があります。中身を見てみるとXBRLインスタンスファイルとは表現が異なるだけなので特に問題はないです。


Summaryは表示リンクベースファイルが存在していないため、定義リンクベースファイルから文書構造を取得する必要があります。優先ラベルが存在しないなど違う点はありますが、構造自体はちゃんと取れます。少し厄介なのはディメンション構造に決算短信独自の軸が追加されており、次元数も増えているのでデータ取得の実装は少し工夫が必要となっています。


総じてAttachmentは有報と同じやり方でデータ取得が可能(XBRLインスタンスファイルは存在しないが)、Summaryは少しやり方を変える必要があるといった感じです。
 

ディメンションに独自の軸が追加された

有価証券報告書では軸は主に以下の2種類しかありませんでした。

  • 連結なのか非連結なのかを示す軸
  • 表の横軸

 
しかも、連結なのか非連結なのかは表示構造を読んだ時点で一意に決定可能であるため、データ取得の際の次元数に影響を及ぼすのは1軸のみでした。そのため、データの次元数はデータの縦の並びと横の並び(横があれば)を考慮しても最大で2次元であり、プログラムでデータを取得・表示するのは容易でした。


しかし、決算短信では加えて以下の3軸が追加されています。

  • 年間配当スケジュール軸
  • 前回・今回軸
  • 実績・予想軸

 

以下は決算短信に存在する軸の一覧です(ただし、この表には横方向のデータの並びを表現するための軸の記載がありません)

決算短信サマリー報告書インスタンス作成要領 p12より表を引用
 

これだけ軸が存在するとプログラムで一意に軸のメンバーを決定するのは難しいため、事前にどんなデータを取得するのかを整理しておく必要があります。

具体的には

  • 前回の値が欲しいのか、それとも今回の値が欲しいのか
  • 実績なのか予想なのか
  • 連結なのか非連結なのか
  • 配当金額であればどの期間の値が欲しいのか

などをあらかじめ決めたうえで、データを取得できるように実装を変更する必要があります。


こういったやり方を用いなければ4次元、あるいは5次元データを扱うことになってしまいます。出来る方もいるとは思いますが、すくなくとも自分には無理でした。
 

サマリーと添付資料の2種類のXBRL文書への対応が必要

サマリーと添付文書はファイル構成が異なるため、双方に対応可能な実装としなければなりません。

わたしはサマリーについては定義リンクベースファイル、添付文書については表示リンクベースファイルから文書の構造を取得するように実装しています。これについてはもっといい方法があればそれでも良いです。

EDINETの有価証券報告書では表示リンクベースファイルの優先ラベル属性によって取得しなければならない値が変わったりしたので、添付文書の構造取得には表示リンクベースファイルを使うことにしています。この仕様が決算短信に存在しないのであれば、サマリーも添付文書も定義リンクベースファイルから文書構造を取得するように統一してもよさそうですが、今のところ未確認です。
 

XBRLインスタンスファイルが存在しない

有価証券報告書のXBRL文書にはXBRLインスタンスファイルが存在しており、ここから数値を取得していました。しかし、決算短信のXBRL文書にはXBRLインスタンスファイルが存在していないため、インラインXBRLから値を取得する必要があります。


インラインXBRLとはファイル名が「ixbrl.html」で終わるファイルであり、ブラウザで開くと人間でも内容を理解できるようになっています。以下はインラインXBRLをブラウザで読み込んだ際の表示です。


htmlファイルの中にはデータを格納する要素が存在しているのでhtmlパーサーなどを使ってコンテキスト毎の値やコンテキスト定義そのものを取得する処理を新たに実装します。
 

その他細かな変更

数値の種類が増えたり、ファイル名の規則が一部違ったりなど細かな変更がいくつかあります。これについても対応する必要があります。
 

おわりに

今回は決算短信のXBRLについて有価証券報告書(EDINETのXBRL)との違いに着目して説明しました。次回はインラインXBRLから値やコンテキスト定義を取得する方法について説明しようと思っています。


続きは以下です。

www.quwechan.com


今回はここまでです。