EDINETで公開されている有価証券報告書のXBRLファイルを、Pythonで効率的にパース・活用する方法を紹介する。edinet-xbrl ライブラリを使えば、複雑なXBRL仕様を意識せずにデータを抽出できる。

EDINETとXBRLとは

EDINET(Electronic Disclosure for Investors’ NETwork)は、金融商品取引法に基づく有価証券報告書等の開示書類を電子的に提出・閲覧するためのシステムだ。金融庁が運営しており、上場企業の決算書データをXBRL形式でダウンロードできる。

XBRL(eXtensible Business Reporting Language)は、財務・経営・投資情報を標準化されたXMLベースで記述するための言語だ。構造化されたデータとしてマシンリーダブルだが、仕様が複雑で、そのまま扱うのは難易度が高い。

edinet-xbrl ライブラリ

BuffettCode/edinet_xbrl は、EDINETのXBRLファイルをPythonオブジェクトとして扱えるようにするライブラリだ。

インストール

1
pip install edinet-xbrl

基本的な使い方

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from edinet_xbrl.edinet_xbrl_parser import EdinetXbrlParser

# パーサーの初期化
parser = EdinetXbrlParser()

# XBRLファイルをパースしてデータコンテナを取得
xbrl_file_path = "path/to/your/xbrl/file.xbrl"
edinet_xbrl_object = parser.parse_file(xbrl_file_path)

# 例: 該当年度の総資産を取得
key = "jppfs_cor:Assets"
context_ref = "CurrentYearInstant"
current_year_assets = edinet_xbrl_object.get_data_by_context_ref(key, context_ref).get_value()

key と context_ref の特定

XBRLでは、取得したいデータ項目を key(タクソノミ要素 = データ項目の識別子)と context_ref(コンテキスト参照 = 期間や連結/単体などの条件)の組み合わせで指定する。jppfs_cor は日本GAAP財務諸表のタクソノミ名前空間だ。これらを特定するには:

  • 有価証券報告書のPDFとXBRLファイルを並べて対照する
  • EDINETタクソノミの「タクソノミ要素リスト」(Excelファイル)を参照する

主要な key の例:

key内容
jppfs_cor:Assets総資産
jppfs_cor:NetSales売上高
jppfs_cor:OperatingIncome営業利益
jppfs_cor:OrdinaryIncome経常利益

XBRLファイルのダウンロード

EDINETからXBRLファイルを取得するには、EDINET API を利用する。書類一覧の取得と書類のダウンロードが可能だ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import requests

# 書類一覧の取得(例: 2024年3月31日提出分)
url = "https://api.edinet-fsa.go.jp/api/v2/documents.json"
params = {
    "date": "2024-03-31",
    "type": 2,  # 書類メタデータ
    "Subscription-Key": "YOUR_API_KEY"
}
response = requests.get(url, params=params)
documents = response.json()
# documents["results"] から docID を取得し、書類取得APIでXBRLをダウンロード

2024年4月以降、EDINET API v2 の利用には Subscription Key(APIキー)の取得が必要となった。EDINET のサイトからアカウントを作成して申請できる。

活用事例

edinet-xbrl ライブラリは、バフェット・コードという企業分析サービスの開発で実際に活用されている。大量のXBRLデータを自動処理し、企業の財務データを整理・可視化する基盤として機能している。

まとめ

  • EDINETのXBRLは構造化されたデータだが、仕様が複雑で直接扱うのは大変
  • edinet-xbrl ライブラリを使えば、Pythonオブジェクトとして簡単にデータを抽出できる
  • 財務データの自動収集・分析を行うデータパイプラインの構築に活用できる

参考リンク