取引機会がなかったのに、バックテストで指値注文が約定することがあります。バーの安値が買い指値を下回ると、多くのエンジンは約定したと判定します。しかし安値から分かるのは、少なくとも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つの隔たりが見えるようにしましょう。
← 記事一覧


