こんにちは!今回は、米国の証券取引委員会(SEC)の財務資料をPython を使って自動的にスクレイピング する方法をご紹介します。スクレイピング についてはほかの記事 も書いていますのでそちらも参考にしてみてください。
目次
SECとは何か
SECに提出を義務付けられている書類
10-Q と 10-Kの違い
10-Kに含まれる内容
SECからスクレイピングする際の注意事項
実際のコードの紹介
SECとは何か
SEC(証券取引委員会)は、米国内での証券および金融市場の整合性を保つために設立された連邦政府 機関です。投資家を保護し、公正かつ効率的な市場を促進することを使命としています。
SECに提出を義務付けられている書類
SECには、企業が公開するさまざまな財務文書や報告書の提出が義務付けられています。これには年次報告書(10-K)、四半期報告書(10-Q)、特定の取引に関連する書類(8-K)などが含まれます。
10-Q と 10-Kの違い
一般的に決算資料として重要なのは、年次報告書(10-K)と四半期報告書(10-Q)です。10-Qは四半期ごとに提出される財務報告書で、最近の業績や財務状態についての概観を提供します。一方、10-Kは年次報告書であり、より詳細な情報を含み、企業の財務状況、運営結果、リスク要因などについての全体像を提供します。さらに大きな違いとして10-Qは自社で作成するのに対して、10-Kは第三者 が作成する必要があるという点です。
10-Kに含まれる内容
10-K報告書には、企業の財務状態、運営結果、キャッシュフロー 、財務諸表、会社の経営に関する議論と分析(MD&A)、リスク要因などが含まれます。これらの情報は、投資家がその企業を評価する上で重要な役割を果たします。
SECのウェブサイトからデータをスクレイピング する際は、いくつかの重要なルールを守る必要があります。
Agentの設定: 自分のスクレイパー が何であるかを識別するために、適切なユーザーエージェントを設定してください。
リクエス トの制限: 一秒間に10回以上のリクエス トを送信してはならないというルールがあります。これは、サーバーに過度の負荷をかけないための措置です。
実際のコードの紹介
さて、具体的なコードの話に移りましょう。私はすでにPython を使ったSECのウェブサイトからのスクレイピング のコードをいくつか準備しています。ここでは、その一部を紹介します。
ここで紹介するコードでは、requestsとBeautifulSoupを使って、特定の企業の10-Kファイルをダウンロードし、解析する方法を説明しています。スクレイピング する前に、上記の注意事項を十分に理解し、遵守するようにしてください。
import requests
import time
import os
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def download_company_facts ( cik_list , output_dir = "company_facts" ):
"""
指定されたCIKのリストに基づいてSECのAPI から企業のファクトデータをダウンロードする。
:param cik_list: ダウンロードする企業のCIKのリスト
:param output_dir: ダウンロードしたファイルを保存するディレクト リ
"""
if not os.path.exists(output_dir):
os.makedirs(output_dir)
########################################################################################################
# User-Agentヘッダーを設定(SECの要求に従い適切なUser Agentを設定してください)
headers = {
'User-Agent' : '############'
}
########################################################################################################
for cik in cik_list:
try :
response = requests.get(url, headers=headers)
response.raise_for_status() # ステータスコード が200以外の場合はエラーを発生させる
output_path = os.path.join(output_dir, f "CIK {cik} _facts.json " )
with open (output_path, 'w' ) as file :
file .write(response.text)
print ( f "Downloaded facts for CIK: {cik} " )
except requests.HTTPError as e:
print ( f "Failed to download data for CIK {cik} : {e} " )
time.sleep( 0.1 )
print ( "All downloads completed." )
cik_list = [ "0001840856" , "0001067983" , "0000320193" ] # 企業のCIKの例
download_company_facts(cik_list)
Json ファイルのスクレイピング 結果
Json ファイルの中身
このように対象の企業のJson ファイルをダウンロードすることができましたね!
今回はここまでです。この記事が、SECから財務資料をスクレイピング する際の一助となれば幸いです。次回も、金融技術に関する興味深い話題を取り上げていきますので、お楽しみに!
またコードへのリンクは以下の通りです。好きな企業の財務資料をみなさんもダウンロードしてみてくださいね!
colab.research.google.com
参考サイト:
www.sec.gov
www.sec.gov