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

【ITニュース解説】How to track insider buying with Python (SEC Form 4, free EDGAR data)

2026年10月29日に「Dev.to」が公開したITニュース「How to track insider buying with Python (SEC Form 4, free EDGAR data)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

企業内部者による自社株売買は、SECの公開データForm 4で追跡できる。Pythonを使い、このデータを無料で取得・解析する方法と、全市場の情報を効率的に監視できる有料APIの活用法を解説。市場の動向をプログラミングで分析する基礎を紹介する。

ITニュース解説

企業の内部者、例えば最高経営責任者(CEO)や役員、取締役などが自社の株式を公開市場で売買する際、その取引は一般に公開される義務がある。これは投資家にとって非常に価値のある情報であり、株価の将来的な動向を探る上で重要な手がかりとなることがある。米国では、このような取引はSEC(米国証券取引委員会)に「Form 4」という書類で提出され、その情報はEDGARというSECの公式データベースで誰でも無料で閲覧できる。システムエンジニアを目指す者にとって、この公開情報をプログラムで取得し、分析する技術は、データ活用の一例として大変興味深い課題である。

しかし、EDGARから直接データを取得し、利用可能にするのは予想以上に手間がかかる作業となる。EDGARは膨大な情報を提供しているが、各Form 4のデータは個別のXMLファイルとして保存され、それらのファイルへ直接アクセスするためのインデックスは人間が読みやすいHTML形式で提供されている。また、SECは自動化されたスクリプトからの過剰なアクセスを防ぐため、アクセス元を明示しないツールからの接続をブロックする対策も講じている。そのため、単純にURLにアクセスするだけではデータを取得できない場合があるのだ。既存の有料APIサービスを利用すれば簡単にデータが得られるが、毎月費用が発生するため、無料でデータを取得する方法を学ぶことは、コストを抑えつつ技術力を高める良い機会となる。

Pythonを使って無料でForm 4データを取得するには、いくつかのステップを踏む必要がある。まず、SECのルールに従い、プログラムが自動ツールであることを識別するための「User-Agent」を設定しなければならない。これには自分の名前とメールアドレスを含めることが推奨され、これがないとアクセスが拒否される。また、SECは1秒間に10回以下のリクエストに制限しており、これを超えるとアクセスがブロックされる可能性があるため、プログラム内で適度な待機時間を設けることが重要だ。Pythonのrequestsライブラリを使ってWebからデータを取得し、xml.etree.ElementTreeライブラリを使って取得したXMLファイルを解析することで、必要な情報を抽出できる。

具体的な手順としては、まず、証券コード(ティッカーシンボル)から企業固有の識別子であるCIK(Central Index Key)を取得する。次に、そのCIKを使って最新の提出書類のリストを取得し、その中からForm 4の書類を絞り込む。Form 4のURLは一見複雑だが、CIKとアクセッション番号、そしてドキュメント名から構築できる。取得したForm 4のXMLファイルからは、取引に関わった内部者の名前、取引日、取引コード、取引された株式数、1株あたりの価格などの情報を抽出する。特に重要なのは「取引コード」で、「P」は公開市場での購入、「S」は公開市場での売却を示し、内部者の意図を読み解く上で注目される。一方、「A」は株式の付与や報酬、「M」はオプションの行使など、内部者の自発的な意思が反映されにくい取引を示すため、分析の際にはこれらのコードでフィルタリングすることが一般的だ。

しかし、無料でのデータ取得には限界もある。全市場のForm 4データを毎日取得したり、株式オプションなどの派生商品に関する複雑な情報や、取引の詳細が記載されている脚注のテキストを解析したり、元の filings を修正する Form 4/A のような修正書類に対応したり、既に処理済みの書類を記憶して重複を避ける「状態管理」を行ったりすることは、コードの記述量と複雑さを大幅に増やす。これらはそれぞれが小さなプロジェクトとなり得る課題であり、実用的なシステムを構築するためには、データ構造の設計、エラーハンドリング、継続的なメンテナンスが必要となる。

これらの課題を解決し、より大規模かつ効率的にインサイダー取引データを扱いたい場合、有料の外部サービスを利用するという選択肢がある。例えば、Apify Actorというサービスは、前述の複雑なデータ取得と解析処理をバックエンドで実行し、整理された形でデータを提供する。このサービスを利用すれば、Pythonのコードは非常にシンプルになり、数行のコードで全市場の最新データや、特定の銘柄、特定の内部者の過去数年間の取引履歴などを取得できる。Apify Actorは、Form 4の主要な情報に加えて、10b5-1計画(事前に取引計画を立てて行う売買)の有無や、取引前後の保有株式数、複数の内部者が同時に同じ株を売買する「クラスタ買い」のような、より高度な分析に役立つ情報も提供する。これにより、システムエンジニアはデータ取得の複雑さから解放され、データの分析や活用という本質的な作業に集中できる。

Apify Actorのようなサービスは、APIトークンを使って認証を行い、簡単なJSON形式のリクエストを送信するだけでデータを取得できる。例えば、過去1日間の10万ドル以上の裁量的な公開市場買い取引を市場全体で検索したり、特定の銘柄(AAPL、NVDA、JPMなど)について過去1年間のオープンマーケット取引を取得したりすることも可能だ。さらに、Apifyのコンソールで設定すれば、毎日特定の条件を満たす取引があった場合にSlackなどのメッセージングツールに自動的に通知を送る「アラートシステム」を構築することもできる。これにより、データ活用の自動化とリアルタイムでの情報把握が実現する。

この種のデータ取得と分析システムを構築する上で、コストも考慮すべき要素だ。Apifyのようなサービスは、処理した取引の量に応じて課金される仕組みが一般的で、例えば1,000件の取引あたり数ドルという料金設定が多い。日々の全市場スキャンでも1ドル未満で済むこともあり、フィルタリングされたアラートであればさらに安価に利用できる。しかし、データ利用には常に注意点がある。Form 4の提出には最大2営業日の遅延があり、また、修正書類(Form 4/A)が提出された場合、元のデータと比較して自分で変更点を把握する必要がある。さらに、このデータはあくまで公開情報であり、これ自体が投資を推奨するものではない。内部者が株式を売買する理由は税金対策、ポートフォリオの多様化、事前に計画された取引など多岐にわたるため、システムエンジニアとしてデータが持つ限界を理解し、その情報をどのように利用するかは慎重に判断する必要がある。

これらの知識は、システムエンジニアを目指す初心者にとって、Webスクレイピング、API連携、データ解析、自動化システムの構築といった実用的なスキルを学ぶ上で貴重な経験となるだろう。無料で提供されている公開情報をプログラムで操り、そこから価値あるインサイトを引き出す能力は、将来のキャリアにおいて強力な武器となるはずだ。

関連コンテンツ

関連IT用語

関連ITニュース