Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】I Built a Tool to Parse SEC Dividend Data (And Actually Shipped It)

2025年10月04日に「Dev.to」が公開したITニュース「I Built a Tool to Parse SEC Dividend Data (And Actually Shipped It)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

学習中のエンジニアが、SECの株配当データを解析する無料ツールを開発した。HTML解析で失敗し、構造化されたXBRLデータを活用。企業ごとの不統一なデータに直面したが、完璧より実用性を重視し、確信度スコアリングで85-90%の精度を実現。完成させる大切さを学んだ。

ITニュース解説

ある開発者が、有料サービスに頼らず、米国証券取引委員会(SEC)が公開している企業データから配当情報を無料で抽出できるツールを自作した話は、システムエンジニアを目指す初心者にとって非常に示唆に富んでいる。長年電気工事士として働きながら、独学でソフトウェア開発を学んできた彼が、なぜこの困難なプロジェクトに挑戦し、何を学んだのかを見ていこう。

このプロジェクトのきっかけは、米国の株式配当履歴データを取得するために月額50ドルから500ドルもする高額な有料サービスが存在することだった。他に、Yahoo Financeから情報を集める方法(ただし商用利用には法的な懸念がある)や、各企業のIR(投資家向け広報)ページを手動で確認する方法もあったが、彼はSECが公開している「filings(書類)」を自分で解析することを選んだ。一見、簡単そうに見えたこの挑戦は、実際に取り組んでみると想像以上に難しかったという。

最初の試みとして、彼は企業が提出する8-K、10-K、10-Qといった各種書類のHTMLデータをダウンロードし、そこから配当金額を抽出するためにLLM(大規模言語モデル、人間のような自然な言葉を理解し生成できるAIの一種)を使ってみた。しかし、この方法はうまくいかなかった。LLMは間違った表の列を読んでしまい、例えばコカ・コーラの配当額を3,910ドルと誤って抽出してしまうなど、データは使い物にならなかったのだ。さらに、1社あたりの処理に50〜60秒もかかり、実用にはほど遠い結果だった。この失敗から、彼はHTMLの曖昧な構造から正確な情報を抽出することの難しさを痛感した。

そこで次に試したのは、XBRLデータを利用する方法だった。XBRL(eXtensible Business Reporting Language)とは、企業が財務情報を標準化された形式で報告するための言語で、コンピューターが扱いやすいように構造化されている。SECは、このXBRLデータをJSON形式のAPI(アプリケーション・プログラミング・インターフェース、異なるソフトウェア同士が情報をやり取りするための仕組み)を通じて提供しており、これを活用すればHTMLスクレイピングやLLMによる推測は不要になる。このアプローチは劇的に改善をもたらし、1社あたりの処理時間は約3秒に短縮され、データの正確性も大幅に向上した。

しかし、XBRLデータを活用しても、まだ大きな課題が残っていた。それは「データ品質」の問題だ。企業によっては、四半期ごとの配当額と、その年の合計配当額を同じXBRLタグを使って報告している場合があった。例えば、ある企業が四半期配当1.10ドルと年間合計4.38ドル(4四半期の合計)を同じ書類内で、しかも同じタグで報告すると、どちらが単一の支払いなのか、合計額なのかを区別するのが非常に困難だった。さらに、企業ごとにXBRLタグの使い方が異なっていたり、会計四半期の報告方法がバラバラだったりと、データの標準化が徹底されていないという現実があった。これらの問題に直面し、開発者は完璧なデータ精度(100%)を達成するのは不可能だと悟った。何週間もかけて努力した結果でも、精度は85%から90%が限界で、残りの10%から15%は手動での確認が必要だったのだ。

この「完璧は不可能」という現実を受け入れた上で、彼は画期的な解決策を考案した。それが「信頼度スコアリングシステム」だ。このシステムでは、抽出された各配当データに対して、0.0から1.0までの信頼度スコアを付与する。スコアの計算にはいくつかの基準が用いられる。例えば、配当額が不自然に高すぎる場合は年間合計である可能性が高いと判断され、スコアが下がる。配当期間が365日であれば年間配当、そうでなければ四半期配当と判断される。また、過去の配当履歴と比較して、今回の配当額が中央値の4倍など突出している場合は疑わしいとされ、スコアが低くなる。さらに、適切なメタデータ(会計四半期の情報など)が欠落している場合もスコアが下がる要因となる。そして、スコアが0.8を下回る配当データは、手動での確認が必要な「要注意データ」としてフラグが立てられる仕組みだ。このシステムを導入した結果、例えばジョンソン・エンド・ジョンソンの52件の配当データは100%の信頼度で手動レビューは不要となり、アップルも46件中2件のみフラグが立つなど、実用的な精度でデータを処理できるようになった。

このプロジェクトを通して、彼はいくつかの重要な教訓を得た。まず、「完璧は完成の敵(Perfect is the enemy of done)」ということだ。何週間もかけて100%の精度を追い求め、聞いたこともないような企業の特殊なケースをデバッグすることに時間を費やしたが、最終的には自動で85〜90%の精度を達成し、残りをフラグ付けして手動で確認するという方針で十分だと判断し、リリースに踏み切った。次に、データ品質は決して100%ではないという現実だ。ブルームバーグやファクトセットといった大手金融情報サービスですらデータに誤りがあり、彼らはそれを検証する専門チームを抱えている。予算ゼロで一人で開発するプロジェクトにおいて、信頼度スコアリングとレビューのワークフローは最も現実的な解決策だった。そして何より、計画するだけでなく、実際に何かを完成させて世に出すことの重要性を実感したという。これまで何十ものプロジェクトを始めては途中で諦めてきた彼にとって、今回のツールがドキュメント、テスト、適切なライセンスとともにGitHubで公開できた初めてのプロジェクトとなった。

このツールはPython 3.8以降の言語で開発され、データを管理するためのデータベースとしてPostgreSQL、データソースとしてSEC EDGARのXBRL JSON APIを利用している。ライセンスはApache 2.0で、誰でも自由に利用、修正、商用利用が可能だ。彼はこのプロジェクトの次に何を開発するかはまだ決めていないが、まずは「何かを完成させた」という事実に満足しているという。

この経験は、フルタイムで働きながらプログラミングを学ぶ人々にとって、大きな励みとなるだろう。完璧なプロジェクトである必要はない。たとえ85%の精度しかなくても、たとえ5人しか見てくれなくても、商用サービスほど優れていなくても、完成させたプロジェクトにこそ価値があるのだ。完璧を夢見て永遠に計画するよりも、不完全でも実際にリリースすることの方がはるかに重要だと、彼は強く訴えている。

関連コンテンツ

関連IT用語

関連ITニュース