システムトレードにとってデータの鮮度は命とも言えます。誤った値を用いてエッジ(優位性)を見出し、そのアルゴリズムに従ってトレードを行ったとしても利益を得ることは難しいでしょう。
無料データを使う場合に注意しなければいけない点をまとめてみました。
株式分割・併合(コーポレートアクション)のリスク
株価は時に企業の判断で分割や併合がされ、価格が大きく変化する時があります。
例えば株価が高くなりすぎて、一株を購入するのに大きな金額が必要となる場合、よりたくさんの個人投資家に株式を購入してもらうために企業が株式を分割して株価を下げることがあります。現在1万円の株式を2分割すれば、1株5000円になり、発行株数は2倍(出来高も2倍)になります。
つまり株式分割が行われると、ある日突然株価が何倍にもなったり、何分の1にもなったりして暴騰暴落したように見えることがあります。
例えば、ファッションセンターでおなじみ「しまむら(8227)」は、2026年の2月19日に株式分割を1対3で行っています。下のYahoo Financeの図を見ると、株価が2月18日から2月19日にかけて突然3分の1になっているのがわかります。


このデータをそのまま使ってシステムトレードを組むと悲惨な結果になるのは言うまでもありません。
ですので、連続性のある株価を見る場合には「調整後株価」を見る必要があります。
Yahoo Financeの例でいうと、先ほどの図の一番右側に「調整後終値」という列があります。これが株式分割を考慮した連続性のある株価になります。
ただし、この値は終値だけを調整しているものであり、始値や高値・安値は自分自身で計算する必要があります。また、データの丸め処理も行われていて、このアルゴリズムはそれぞれのデータ提供元によって異なるため、若干の差異が生じることがあります。
さらに注意するべきなのは、出来高の表示です。
出来高は先ほどの図を見てわかる通り株式分割が行われたにも関わらず、出来高の調整が行われていません。株式分割によって株価が1/3になったのであれば、出来高は3倍にならなければなりません。
このため、Yahoo Financeに掲載されているデータをそのまま使って、出来高を含むアルゴリズムを構築すると、痛い目を見ることになります。
分割・併合漏れ
全ての分割情報が正確に反映されているという保証は、無料データにはありません。
これは海外の事例ですが、2024年後半から2025年にかけて報告された、特定の銘柄(例:アリスタネットワークス(ANET)など)における分割データの反映漏れがあります。
チャート上では価格が1/4になっているのに、データ上の「Stock Splits」フラグが立っておらず、また調整も行われていないため、Stock Splits を用いて組んだシステムトレードが機能しない事件が発生しました。
生存者バイアス
無料データソースの多くは、「現在上場している銘柄」の過去データしか提供していません。しかしその裏では、いくつもの企業が倒産や上場の取りやめなどで消えていっている事実があります。
仮に自身のシステムトレードアルゴリズムを過去10年間のデータでテストしようとした際、当時存在したが現在は倒産・上場廃止になった銘柄のデータが欠落することで本来とは異なる勝率や優位性が見出されてしまうことがあります。
基本的には成績の悪い(市場から消えた)銘柄を無視してテストすることになるため、バックテストの結果は必然的に「市場平均より高く」算出される傾向があるでしょう。実際に運用してみてその会社が倒産したなどということになったら大変ですよね。
OHLCの不整合
OHLCとは、Open(始値)、High(高値)、Low(安値)、Close(終値) の4つの頭文字を取っていった言葉ですが、これが正しく掲載されていないということが過去にありました。
例えば、金融ツール「AmiBroker」のユーザーコミュニティやGitHub等で当時話題となったのですが、Yahoo Finance側が「配当調整」を終値だけに適用し、始値(Open)・高値(High)・安値(Low)には適用しなかったことがありました。
これにより、「調整後終値が、その日の安値よりも大幅に低くなる」という物理的にあり得ないデータが発生し、これらの値を基に計算するボラティリティ(ATR)やRSIなどの計算において、当日レンジ外に価格が存在することになり、インジケーターがマイナス値や無限大を返すなどのバグを引き起こしました。
サイレント・リビジョン
無料データは「ある日突然、過去の数値が書き換わる」ことが日常茶飯事です。
例としてはPythonライブラリ yfinance のIssue (#1610, #2302) などで頻繁に報告される「ウェブサイト上の表示とAPI取得値の乖離」があります。
また、株式分割の反映がウェブサイト上では即日行われるのに対し、API経由のデータでは数日のタイムラグが発生したり、逆に過去10年分のデータがある日を境に数円単位で微妙に修正されることがあります。
結論
無料データを使う以上、これらの異常値は「発生するもの」として扱う必要があります。
僕が推奨する実装スタンスは、「外部データをそのまま信用せず、内部でバリデーション(検疫)を通す」ことです。
・高値 < 低値 になっていないか?
・前日終値と当日始値が、分割情報がないのに50%以上乖離していないか?
そして複数の情報源からデータを取得することも大切でしょう。ただし、取得するサイトが異なっても情報の提供元が同じであることがありますので、その点は注意しないといけません。
一番確実なのは、信頼できる情報源からデータを購入すること。しかもなるべく一次情報に近い情報源から取得するのが良いでしょう。
最後に有望なデータ取得サービスを紹介しておきますね。
| 情報サイト・金融情報ベンダー | |
| Yahoo!ファイナンス (VIP倶楽部) | 決算速報や銘柄分析に特化。過去10年以上の決算データなどを閲覧可能。 |
| 株探 (Kabutan) プレミアム | こちらも個人投資家の間では非常に有名なサイトです。決算速報や銘柄分析に特化。過去10年以上の決算データなどを閲覧可能。 |
| KABU+ | 株価データ・投資指標データ等の株式投資関連データを配信する東証公認の情報サービス。価格の割に取得できる情報量が多く、コストパフォーマンスが良い。 |
| Data-Get2 | 安価にリアルタイムな株価データやのヒストリカルデータなどを取得できるシステムトレーダー嬉しい提供元。ティックデータや分足データを取得できるため、高速なデイトレード系システムの開発に適している。 |
| J-Quants (日本取引所グループ / JPX) | 東証公式の正確・高精度なデータ(四本値、歩み値、PER/PBR)を個人投資家がPython等でAPI取得できるサービスです。過去データやファンダメンタルズ指標を網羅し、高頻度取引(HFT)やクオンツ戦略のバックテストに最適です。 ただし、月額コストが高額。 |

コメント