日本の有価証券報告書(Annual Securities Report、ASR)は、企業の財務状況や業績を報告する重要なドキュメントです。特に、企業が決算期後に提出するため、提出される時期を把握することが重要です。ここでは、Pythonを使用して、特定の企業の有価証券報告書がいつ提出されたのかをEDINETから取得する方法について解説します。
日付設定の重要性
日本の企業は通常、以下のスケジュールに従って有価証券報告書を提出します:
- 3月末決算:6月末から7月初旬
- 6月末決算:9月末から10月初旬
- 9月末決算:12月末から1月初旬
- 12月末決算:3月末から4月初旬
これに基づいて、対象の企業が有価証券報告書を提出する期間に合わせた日付を設定することが重要です。
Pythonコード例
以下のコードでは、指定した企業のEDINETコードと日付範囲をもとに、有価証券報告書の提出日時を取得します。docTypeCode
はEDINET API仕様書の86ページを参照しました。
import requests
from datetime import datetime, timedelta
from pprint import pprint
from dotenv import load_dotenv
load_dotenv()
# APIキーを環境変数から取得
api_key = os.getenv("API_KEY")
def get_reports_for_date_range(edinet_code, start_date, end_date):
# EDINET APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v2/documents.json" # v2を使用
reports = []
# 日付の範囲を設定して1日ずつループ
current_date = start_date
while current_date <= end_date:
# リクエストパラメータ
params = {
'date': current_date.strftime('%Y-%m-%d'), # YYYY-MM-DD形式
'type': 2, # 有価証券報告書
'Subscription-Key': api_key
}
# APIリクエスト
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
# 特定の企業(EDINETコード)の報告書をフィルタリング
for doc in data.get('results', []):
if doc['edinetCode'] == edinet_code and doc['docTypeCode'] == '120': # 120は有価証券報告書
reports.append({
'docID': doc['docID'],
'submitDateTime': doc['submitDateTime'],
'docDescription': doc.get('docDescription', '不明なドキュメント')
})
else:
print(f"APIリクエストに失敗しました。ステータスコード: {response.status_code}")
# 日付を1日進める
current_date += timedelta(days=1)
if reports:
pprint(reports)
else:
print(f"{start_date.strftime('%Y-%m-%d')} から {end_date.strftime('%Y-%m-%d')} の期間には {edinet_code} の有価証券報告書が見つかりませんでした。")
# 三菱商事のEDINETコード
edinet_code = "E02529"
# 日付範囲を指定(2024年4月1日から2024年6月30日)
start_date = datetime(2024, 4, 1)
end_date = datetime(2024, 6, 30)
# 指定された日付範囲で報告書を取得
get_reports_for_date_range(edinet_code, start_date, end_date)
以下のように出力されます。
[{'docDescription': '有価証券報告書',
'docID': 'S100TL6G',
'submitDateTime': '2024-06-21 14:59'}]
whileループの仕組み
上記のコードでは、while
ループを使用して、start_date
からend_date
までの日付を1日ずつ進めています。具体的な流れは以下の通りです:
- 日付の進め方:
current_date += timedelta(days=1)
の部分で、current_date
を1日ずつ進めます。これにより、日付を順に設定しながらAPIリクエストを行うことができます。 - APIリクエスト:各日付に対してEDINET APIにリクエストを送信し、指定したEDINETコード(この例では三菱商事の「E02529」)と有価証券報告書(
docTypeCode
が120)をフィルタリングして表示します。APIのリクエストでは、date
パラメータに1日分のデータしか格納できないため、ループで書類提出日を検索します。この例では、3月決算の場合に提出が見込まれる4月1日から6月30日までの日付を対象としています。 - 結果の表示:取得した報告書はリストに追加され、最終的に表示されます。指定した期間に報告書が見つからなかった場合には、その旨を通知します。
結論
このコードを使用することで、EDINETから特定の企業の有価証券報告書がいつ提出されたのかを効率的に確認できます。企業の決算期に合わせた日付設定を行うことで、必要な情報を適切に収集できるでしょう。APIキーの設定や日付範囲の調整を行って、実際に試してみてください。