まるっとわかるXBRL入門:(6)監査報告書からKAMを自動で取得する

まるっとわかるXBRL入門:(6)監査報告書からKAMを自動抽出しよう

はじめに

世の中の上場企業は、決算短信や有価証券報告書などを提出することで、自社の財政状態や経営状態を説明する義務があります。投資家たちは有報などを見て企業のことを理解したうえで、投資を決心をします。

しかし、有報は1社につき約100ページ程度、提出数は年間4000件程度あります。そのすべてチェックするというのはいささか現実的ではありません。

そこで財務報告書のファイル形式であるXBRLを用いて、知りたい情報だけを拾える体制をつくることが望ましいですよね。

なるべく楽によりたくさんの情報を集め、分析できるようになることが本シリーズの共通の目的となります。

本連載では、

  • 有報など見るけど、必要な情報を自分の目で見に行っている人
  • XBRLについて今は全く知らないけれど理解を深めたいと思っている人
  • 有報の分析を楽にしたい人

こういった人に向けて執筆しています。

前稿までは、XBRLについて概要や特徴、取得する対象である有報について知識をつけてもらいました。さらに分析に必要な有報を大量にダウンロードする方法についても扱ってきました。

まだ前稿を読まれてない方はこちら

まるっとわかるXBRL入門シリーズ

(1)初心者のためのXBRL基礎

(2)タクソノミと有報

(3)大量の有報を自動でダウンロードしよう

(4)財務諸表から売上高を自動で取得しよう

(5)有報からテキストデータを自動で取得しよう

本稿では今までと少し異なり、有価証券報告書の提出書本書ではなく、監査報告書という書類からデータを取得します。

具体的に取得するデータはKAMという指標です。しかし、KAMは会計士などでない限りあまり知られていないものです。
そのため、監査報告書とKAMがそれぞれどんなものなのかを知り、データを取得できるようなることを目指します。

動作環境

OS: Windows 11

Python 3.12.4 edinet_xbrl 0.2.0 beautifulsoup4 4.12.3

Github

https://github.com/ryou-naruki/XBRL_Foundnation_from_Ontology

監査報告書とKAMについて

会計士などを除く多くの人は、監査報告書というものにほぼ関わりがないと思います。

さらには「監査報告書は漢字見てなんとなく想像できるけどKAMって何?なんて読むの?」と全く分からないという人は多いでしょう。

まずはそれぞれについてどういうものなのか簡単に説明していきます。

監査報告書とは

監査報告書とは日本会計士協会によると「経営者の作成した財務諸表が、一般に公正妥当と認められる企業会計の基準に準拠して、企業の財政状態、経営成績及びキャッシュ・フローの状況をすべての重要な点において適正に表示しているかどうかについて監査人の監査意見を述べた報告書である。」*¹ といった内容の書類です。

簡単にいえば、この財務諸表はお金のプロである公認会計士から認められた正しく作られている信用できるものですよと提示するためのものです。 そのため、書類の中身には担当した会計士の名前や監査意見、その根拠などが書いてあります。

また、連結と個別で書類が分かれているのも特徴だと思います。

KAMとは

KAM(カム)は「監査上の主要な検討事項」(Key Audit Matters)の略であり、金融庁によると「監査人が実施した監査の透明性を向上させ監査報告書の情報価値を高めることにその意義がある」*² ものとされています。 投資家などからすれば有価証券報告書の本文と比べると参照されるケースは非常に少ないですが、財務諸表の監査において特に重要なことがKAMに書かれているため、監査報告書の中では重要視されることが多いです。

企業ごとに監査の着目点やリスクが大きく変わることから、企業ごとの重要なリスクと対応事項を説明することで、投資家に対して重要な論点を報告することが可能です。また、毎年検討すべきリスクが異なることから、同じ企業でも年次ごとに監査項目やリスクが異なることが多いです。そうした観点から、KAMを用いた企業分析を行う人も一定数存在します。

例)トヨタ自動車2023年度のKAM


*1 引用:日本公認会計士協会 監査報告書
https://jicpa.or.jp/cpainfo/introduction/keyword/post-77.html

*2 引用:金融庁 「監査上の主要な検討事項(KAM)の特徴的な事例と記載のポイント」の公表
https://www.fsa.go.jp/news/r3/sonota/20220304-2/20220304-2.html

監査報告書からKAMを自動で取得する

監査報告書とKAMについてどのようなものなのか分かったところで実際にデータを取得していきましょう。

ソースコード

from edinet_xbrl.edinet_xbrl_parser import EdinetXbrlParser
from bs4 import BeautifulSoup
import glob

parser = EdinetXbrlParser()

# 対象のXBRLファイルを指定
 xbrl_file_paths = glob.glob(r"xbrl_file\\*2024*\\*\\XBRL\\AuditDoc\\*aai*.xbrl")

# 対象企業のタグを取得
key = "jpcrp_cor:KeyAuditMattersConsolidatedTextBlock"
context_ref = "FilingDateInstant"

# KAMを抽出
for i, file_path in enumerate(xbrl_file_paths):
    try:
        # XBRLファイルをパース
        edinet_xbrl_object = parser.parse_file(file_path)
        
        # 大きくKAMを取得
        kam = edinet_xbrl_object.get_data_by_context_ref(key, context_ref).get_value()
    
        # BeautifulSoupを使ってHTMLタグを除去
        soup = BeautifulSoup(kam, "html.parser")
        kam_cleaned = soup.get_text()
    
        print(f"企業{i+1} のKAM(タグ除去後): {kam_cleaned}")
    except Exception as e:
        print(f"企業{i+1}データの抽出に失敗しました。:{e}")

コードの解説

基本的にXBRL連載の4, 5作目で取り扱ったデータの取得方法と変わりません。

しかし、ファイルの指定については大きく変わるためこちらをメインに紹介していきます。

もしデータ自体の取得方法でわからないことがある場合、4, 5作目を参考にしてください。

(4)財務諸表から売上高を自動で取得しよう

(5)有報からテキストデータを自動で取得しよう

なお、初めから正規表現を使用し、複数社からデータを取得できるようなコードを書いています。

正規表現でやっていることがよくわからないという方は、4作目を参照してください。

ファイルの指定

# 対象のXBRLファイルを指定
 xbrl_file_paths = glob.glob(r"xbrl_file\\*2024*\\*\\XBRL\\AuditDoc\\*aai*.xbrl")

一見、今までの正規表現と変わらないと思いますが、参照するファイル指定が異なります。

EDINETからXBRLファイルをダウンロードするところまでは今まで通りなのですが、監査報告書ファイルの指定方法が異なります。

大きく分けて以下の二つの点で今までとは異なるので注意して下さい。

(1)AuditDocでの指定

今までは有報の中の提出本文書類という名前の書類を参照して、データを取得していました。これを示すものが「PublicDoc」です。しかし今回は監査報告書の中からデータを取得したいため、パスを通すときにPublicDocではなくAuditDocを指定します。

EDINETから見たときの名称フォルダを開いたときの名称
提出本文書類PublicDoc
監査報告書AuditDoc

(2)連結と個別

次にXBRLファイルを選ぶ時なのですが、監査報告書には連結のものと個別のものがタクソノミ単位で分かれているわけではなく、ファイル単位で分かれています。

つまり、今までの正規表現のコードを使用し、PublicDocをAuditDocに変えただけでは正しくファイル指定できないということです。

そこで正規表現を使用しても正しくファイルを指定できるようにしていきます。

EDINETからダウンロードした監査報告書のファイル名には略号*³ というものがあり、これを活用していきます。

独立監査人の報告書略号基本的な会計のドメイン知識
監査報告書及び内部統制監査報告書aai連結の情報が載っている
監査報告書aar個別の情報が載っている

一般的にこういったものは連結の情報を知りたいことが多いため、連結のデータが存在するaaiのファイルを指定していきます。

そしてaaiがある場所は AuditDoc と .xbrl の間です。

正規表現を用いてここにaaiが載っているファイルを指定し過不足なくデータを取得できます。

上記の内容を踏まえてコードを見てみると、正規表現の中身をより理解できるかと思います。

# 対象のXBRLファイルを指定
 xbrl_file_paths = glob.glob(r"xbrl_file\\*2024*\\*\\XBRL\\AuditDoc\\*aai*.xbrl")

*3 参照:金融庁 総務企画局 企業開示課 フレームワーク設計書添付 EDINET タクソノミの設定規約書 p.4 1-4-4 監査報告書略号 作成日:2018/03 閲覧日:2024/09/10 https://www.fsa.go.jp/search/20180316/3b_Kiyaku.pdf

表は著者が以上の参照をもとに独自で作成したものになります。

タクソノミの参照方法

# 対象企業のタグを取得
key = "jpcrp_cor:KeyAuditMattersConsolidatedTextBlock"
context_ref = "FilingDateInstant"

今回は2作目で紹介したタクソノミの参照方法の3つ目を使用してタクソノミを参照します。

KAMは政府から指定されている項目のため金融庁から提出されているタクソノミ要素リストを確認することができます。

他の方法を使用したい方やまだ以前の記事を読んでいない方は以下から読むことをオススメします。
(2)タクソノミと有報

タクソノミ要素リストが手元にない人は以下のファイルをダウンロードして参照してください。

▼金融庁 タクソノミ要素リスト

1e_ElementList.xlsx

  1. 目次から「9 企業内容等の開示に関する内閣府令 第三号様式 有価証券報告書(jpcrp03000-asr)」のシートを選択
  2. 「Ctrl」+「F」で検索窓から「監査上の主要な検討事項」と検索
  3. 「詳細ツリー‐標準ラベル(日本語)」(B列)でヒットするものを探す
  4. 「冗長ラベル(日本語)」(C列)で連結のものと個別のものが分かれていることが確認できるため連結のものの「名前空間プレフィックス」(H列)と「要素名」(I列)を確認

▼ 1、タクソノミ要素リストの目次

▼ 3、検索をかける

▼ 4、連結のものを探し、H列とI列を確認

これをkeyとして使用します。

連結と個別それぞれあるため注意してください。 今回は連結のKAMを抽出したいため、タグは **”jpcrp_cor:KeyAuditMattersConsolidatedTextBlock”**となります。

context_refに関しては財務情報と異なり、当期のものしかないため**”FilingDateInstant”**で大丈夫です。

以上でKAMのデータが自動で取得できると思います。

まとめ

本稿では、有価証券報告書のうち提出本文書ではなく監査報告書で情報を抽出しました。 多くの人は監査報告書まで目を通すことはないでしょうが、これで有価証券報告書本文の中からだけでなくどの書類からでも情報を取得することができるようになってのではないでしょうか。

今回をもってこの「まるっとわかるXBRL入門」シリーズが終了となります。6つのテーマに分け基礎の基礎から出来たらうれしい応用まで網羅的に連載をしてきました。

ここまでやっていただければ基本的にタグを指定しなおしてあげるだけでほとんどの情報が自動で取得することができます。実際にご自身の気になるデータを取得してみてください。

この連載はプログラミングをはじめとする機械初心者やXBRLの存在は知ってるけど中身は全く分からないといった初学者に向けてなるべく低いハードルで紹介したいという思いから執筆いたしました。どれだけの方がここまで読み続けてくれたのかはわかりませんが、大変にうれしく思います。 ご愛読ありがとうございました。

参考

日本公認会計士協会 監査報告書 閲覧日:2024/9/9 https://jicpa.or.jp/cpainfo/introduction/keyword/post-77.html

金融庁 「監査上の主要な検討事項(KAM)の特徴的な事例と記載のポイント」の公表 閲覧日:2024/09/09 https://www.fsa.go.jp/news/r3/sonota/20220304-2/20220304-2.html

金融庁 タクソノミ要素リスト

1e_ElementList.xlsx

金融庁 総務企画局 企業開示課 フレームワーク設計書添付 EDINET タクソノミの設定規約書 p.4  1-4-4 監査報告書略号 作成日:2018/03 閲覧日:2024/09/10

https://www.fsa.go.jp/search/20180316/3b_Kiyaku.pdf

まるっとわかるXBRL入門:(1) 初心者のためのXBRL基礎

表紙『まるっとわかるXBRL ~初心者のためのXBRL基礎~

はじめに 世の中の上場企業は自身の会社の状況を決算短信や有価証券報告書(以下、有報)などの財務報告書を用いて説明する義務があります。 株主や投資家はこの財務報告書を見て、企業を分析し、投資を決心をします。 この世のすべて […]

続きを読む

まるっとわかるXBRL入門:(2) タクソノミと有報

アイキャッチ:まるっとわかるXBRL入門:タクソノミと有報

はじめに 世の中の上場企業は自身の会社の状況を決算短信や有価証券報告書(以下、有報)などを用いて説明する義務があります。株主や投資家は有報などを見て、企業を分析し、投資を決心をします。しかし、有報は1社につき約100ペー […]

続きを読む

まるっとわかるXBRL入門:(3)大量の有報を自動でダウンロードしよう

はじめに 世の中の上場企業は自身の会社の状況を決算短信や有価証券報告書(以下、有報)などを用いて説明する義務があります。株主や投資家は有報などを見て、企業を分析し、投資を決心をします。しかし、有報は1社につき約100ペー […]

続きを読む

まるっとわかるXBRL入門:(4) 財務諸表から売上高を自動で取得しよう

はじめに 世の中の上場企業は自身の会社の状況を決算短信や有価証券報告書(以下、有報)などを用いて説明する義務があります。 株主や投資家は有報などを見て、企業を分析し、投資を決心をします。 しかし、有報は1社につき約100 […]

続きを読む

まるっとわかるXBRL入門:(5)有報からテキストデータを自動で取得しよう

まるっとわかるXBRL入門 ~有報からテキストデータを自動取得しよう~

はじめに 世の中の上場企業は自身の会社の状況を決算短信や有価証券報告書などを用いて説明する義務があります。株主や投資家は有報などを見て、企業を分析し、投資を決心をします。 しかし、有報は1社につき約100ページ程度、提出 […]

続きを読む

おすすめ記事