2026年10月8日 · リサーチ

バックテストで、市場価格が届いていないのに指値注文が約定するのはなぜ?

バックテストで、市場価格が届いていないのに指値注文が約定するのはなぜ?

取引機会がなかったのに、バックテストで指値注文が約定することがあります。バーの安値が買い指値を下回ると、多くのエンジンは約定したと判定します。しかし安値から分かるのは、少なくとも1件の取引がその価格以下で記録されたことだけです。取引量や、あなたより前に並んでいた注文の量、注文が間に合うタイミングで有効になっていたかは分かりません。

この違いが特に重要なのは、戦略の優位性が頻繁な受動的約定に依存している場合です。価格に触れるたびに全量約定したとみなすモデルでは、じっくり待つエントリーが、実際には存在しないアルファの源になりかねません。

バーが指値価格に触れたら、注文は約定したことになりますか?

いいえ。バーに記録された価格範囲に指値が含まれていた、という意味です。注文が約定し得たかどうかは、市場の注文板、取引の流れ、キュー内の順番、注文が到着したタイミングによって決まります。

買い指値を$100.00に置いたとします。バーは$100.20で始まり、安値が$99.98、終値が$100.10でした。価格が指値を2セント下回って約定した可能性はありますが、$100.00に大きな先行注文が並び、そこでの取引量が少なければ、あなたの注文には届かなかったかもしれません。OHLCVだけでは、そのキューは見えません。

もう1つ注意点があります。バーは一定期間のイベントを集約したものです。シグナルをそのバーの終値から計算するなら、安値が付いた時点ですでに注文が板にあったとは仮定できません。答えを出すのに必要な順序が、バーの中にまとめられて見えなくなっています。

OHLCVデータから、指値注文の約定について実際に何が分かりますか?

OHLCVから、約定しなかったと判断できるケースもあれば、約定の可能性を示せるケースもあります。ただし、キューの優先順位は分からず、注文に回ってくる数量も保証できません。

観測内容そこから分かること証明できないこと
バーの安値が買い指値を上回ったそのバーの間に、記録された取引価格が指値に届かなかった注文が約定していたこと
バーの安値が買い指値に触れた指値で価格が記録された注文到着後に何らかの取引量があったこと
バーの安値が買い指値を下回った指値以下で取引があったキュー内のあなたの順番まで十分な量が回ってきたこと
バー全体の取引量が注文サイズを上回ったそのバーのどこかで、市場全体としてその量以上が取引された注文到着後に指値でその量が取引されたこと

つまり、バー単位のエンジンでは約定の前提を置く必要があります。その前提は、ローソク足から得られた事実ではなく、見落としがあるモデルとして扱いましょう。

バックテストで指値注文の約定をどうモデル化すればよいですか?

まず注文のタイミングを決めます。シグナルがいつ利用可能になるか、注文がいつ取引所に届くか、その後どの市場イベントが注文に影響するかを定めましょう。バーの終値で判明するシグナルなら、保守的なバー単位のルールとして、次のバー以降に注文を有効にします。

次に、価格面での約定可能性と約定数量を分けて考えます。指値が取引可能になっても、注文全量が約定するとは限りません。約定履歴はあっても注文板の履歴がない場合は、指値以上に有利な価格での取引量が、注文サイズの何倍かに達したときに約定とする方法があります。この倍率はキューに対する大まかなバッファで、普遍的な定数ではありません。複数の値を試し、結果がどう変わるかを報告しましょう。

たとえば、戦略が2 BTCの買い指値を出し、注文が有効になった後に選んだ価格で3 BTCが取引されたとします。条件となる取引量を5 BTCとするモデルでは約定せず、取引量の倍率を1.0とするモデルでは約定します。どちらもキューを再現しているわけではありません。この比較から、観測できない前提に戦略がどれほど依存しているかが分かります。

未約定の注文もシミュレーションに残しましょう。戦略が実際に取り消すタイミングでキャンセルし、逃した取引は逃したままにします。指値に触れれば必ず約定したことにする一方、価格に触れずに期限切れとなった注文を無視すると、執行の成績と取引機会の数の両方に偏りが生じます。

注文板データが必要なのはどんなときですか?

キュー内の順番や部分約定が戦略の中核となる場合は、注文板の更新情報と取引データを使いましょう。マーケットメイキング、短時間だけ掲示する受動的な気配、混み合った価格水準で前のほうに並ぶことが重要なエントリーなどが該当します。それでも、過去の公開データからキュー内の正確な位置が分かるとは限りません。注文の到着、前に並ぶ注文のキャンセル、マッチングルール、自分のマーケットインパクトをモデル化する必要があります。

より時間軸の長い戦略では、詳細な注文板データを使っても、主な不確実性は解消されず複雑さだけが増すことがあります。バー単位の分析でも、価格に触れたら約定とする上限ケースと、より厳しい取引量条件を設けたケースを比較できます。妥当な約定を求めた途端に見かけ上の優位性が消えるなら、それも有益なリサーチ結果です。

結果が楽観的な約定前提に依存しているか、どう確認できますか?

明示した少数の約定ルールで同じ戦略を実行し、最終リターン以外の指標も比べましょう。約定した注文数、部分約定率、注文が板にあった時間、キャンセル数量、未約定後に逃した値動き、売買回転率を記録します。表面的なリターンが維持されていても、実際には大幅に少ない、都合のよい取引だけに依存していることがあります。

次に有効なのはペーパートレードです。実際の注文ロジックを送信し、受付確認、約定、キャンセルを記録します。ペーパートレードの約定も取引所やシミュレーター固有のルールに左右されますが、ローソク足からは分からないタイミングや注文処理を検証できます。

指値に触れたことが示すのは価格です。約定は執行についての主張です。バックテストでは、この2つの隔たりが見えるようにしましょう。

指値注文バックテスト市場マイクロストラクチャ約定モデル執行
← 記事一覧