プロフィール

海外株の自動売買プログラミングを独学中の個人投資家です。今回は実装で大きな壁にぶつかった「オーダーブック不均衡戦略」のデータ基盤について、実際に試して分かったことをまとめました。初心者の方の参考になれば嬉しいです✨

はじめに|バックテストと模擬取引の結果が大きく乖離した悩み

クロスボーダー米株のマーケットメイク型自動売買戦略を自作しています。 ローカル PC で過去データを使ったバックテストは収益が安定していたのに、クラウドサーバーに載せて模擬取引を回すと、提示価格がおかしくなりリスク指標が異常値を連発する事態に…

計算式や価格調整のロジックを何度見直してもバグが見つからず、長時間デバッグした結果、原因は相場データストリームの不備・時系列のズレだと判明しました。 今回は初心者が陥りやすいデータ関連のトラブルと、安定した戦略を動かすために揃えるべき 5 種類のデータを実体験をもとに紹介します。

マーケットメイク戦略が求める相場データの 4 つのルール

オーダーブック不均衡戦略は買い・売りの注文量の差から提示価格をリアルタイムで変更する仕組みです。米株は寄付き・昼間・引けで流動性が全然違うため、データには絶対に外せない条件があります。

  1. Level2 の全価格帯データを取得すること 1 段階だけの簡易板では不均衡の数値が大きく歪むため、各価格の注文総量が必須です。
  2. ティック約定データを併用すること 板に並んでいる注文は「売買したい意思」だけで、実際に約定した履歴から真の資金の動きを読み取る必要があります。
  3. すべてのデータのタイムスタンプを統一すること 板・約定・出来高で時刻がズレると指標の計算ロジックが崩れてしまいます。
  4. 過去相場データを保存して多シナリオ検証を行うこと 高ボラ・低流動性・寄付きといった様々な相場で動作確認しないと、特定相場にだけ適合した過学習モデルになります。

どれか一つ欠けるだけでバックテストと実行結果に大きな差が生まれ、初心者が一番見落としがちなポイントです。

実装時に多発するデータ関連の失敗例

同じようにプログラミングを勉強している方と情報交換したところ、ほとんどの人が下記の 4 点でつまずいていました。 ・1 段階の簡易板 API だけ使い、深度データが足りず不均衡指標が不正確 ・板の配信だけ購読し、ティック約定データを取得しない。架空の一時注文と本物の資金流入を区別できない ・複数の相場データを別々に取得し、タイムスタンプの校正を行わないため時系列が前後する ・過去相場を保管しておらず、単一の相場だけで戦略を検証してしまう

多くの方が計算式の改良に時間を割くのに対し、土台となるデータ基盤を軽視し、「バックテストは好調だけど模擬取引で損失が出る」という結果になっています。

戦略稼働に不可欠な 5 種類のデータストリームを解説

安定したマーケットメイクシステムには 5 種類のデータが連携して動作します。一般的なクラウドサーバーと時系列 DB に導入可能です。

① Level2 完全オーダーブックストリーム

不均衡指標を計算する土台となるデータで、各価格の買い・売り注文総量を記録しています。 常時更新されることで一瞬だけ出現する架空注文を除外でき、短期的な市場の流動性の傾向を把握できます。 買い注文の総量が売りを大きく上回れば買い圧が強い、逆の場合は売り圧が強いと判断し、提示価格を調整してリスクを抑えます。

② ティック約定ストリーム

板だけでは市場の本当の動きは分かりません。 例えば売り注文が大量に並んでいても、連続して成行買いが発生していれば下値の支えが強いと読み取れます。逆に成行売りが連発すると売り圧が積まれている状態です。 今回の自作プログラムでは AllTick API を利用し、WebSocket から米株のティックデータを取得。クラウドのメモリキャッシュで生データを整理することで、API のアクセス制限に引っ掛からないように調整しました。

③ 過去相場アーカイブストリーム

オフラインバックテスト専用のデータで、過去のティック履歴・分足ローソク足を保管しています。 暴騰・暴落、取引が少ない時間帯、寄付き特有の動きなど様々な市場環境を再現し、戦略が過学習していないか確認するために必須です。

④ 分足集計出来高ストリーム

板の不均衡だけで判断するのは危険で、出来高と組み合わせて状況を見極めます。 買いと売りの差が大きくても出来高が少ない場合は一時的な注文調整に過ぎないため、提示価格を大きく変える必要はありません。不均衡と同時に出来高が増えている時だけ本格的な資金の攻防と判断します。

⑤ タイムスタンプ校正用データ

米株は時差の影響で相場提供元ごとに時刻に微妙なズレが発生します。 取引所発行の原本タイムスタンプとサーバー受信時刻を全データに付記し、DB に保存する段階で時系列を統一することで、複数データを結合した際の前後ズレを完全に防ぎます。

クラウドで 24 時間稼働させる標準データ処理フロー

クラウドサーバーで模擬取引を長時間回すための汎用的な処理手順を紹介します。

  1. WebSocket で相場の長期接続を確立、生の相場データを一時メモリキャッシュに保管
  2. 価格の飛び値・重複配信など異常データを自動的にフィルタリング
  3. 統一したタイムスタンプをもとに板・ティック・出来高の時系列を整合
  4. データのフォーマットを統一し、「リアルタイム計算用」「過去保存用」に 2 系統に分岐
  5. リアルタイムデータは戦略モジュールに渡して不均衡指標を計算、過去データは時系列 DB に保管しバッチバックテストに活用

追加機能として切断時のキャッシュ復元ロジックを実装しています。ネットワークが一瞬切れても板のスナップショットを保持し、再接続後に欠損したデータを自動補完。誤った板情報のまま価格を提示し続ける事故を防止します。

 

まとめ|計算式よりもデータ基盤が重要

米株のオーダーブック不均衡マーケットメイク戦略を開発して分かったことは、数式や価格調整ロジックはあくまで表面的な部分で、安定した時系列の整ったデータストリームこそ信頼できる結果を生む核心という点です。

Level2 板・ティック約定・過去アーカイブ・集計出来高・タイムスタンプ校正の 5 層のデータとクラウド環境を組み合わせることで、初心者がよく遭遇するデータ欠損・時刻ズレ・切断後の板歪みといったトラブルを一気に解消できます。 複雑な計算式を改良する前に、規格通りのデータ取得・整理・同期ラインを整備する方が、バックテストと模擬取引の乖離を抑え、戦略の検証がしやすくなります。