取引100回。taker手数料0.04%。スリッページの想定0.02%。こうした数字があると、バックテストは実測に基づいているように見えます。しかし、意外と見落とされるのが最後の数字です。スリッページ率を1つ決めただけでは、その価格で注文が約定できたかどうかはほとんど分かりません。
スリッページは、何を、いつ、そしてその時点で利用できる流動性に対してどれだけ大きな注文を出すかによって変わります。ローソク足を使ったバックテストでは、最初の2つも大まかにしか分からず、3つ目はまったく分かりません。平均約定価格を確定した事実として扱うと、実際には得ていない執行実績を戦略に与えてしまうことがあります。
OHLCVから平均約定価格が分からないのはなぜ?
ローソク足には、一定期間の価格レンジと出来高の合計が記録されています。しかし、価格ごとの出来高の分布、最良買気配と最良売気配にどれだけの注文があったか、あるいはローソク足の安値を付けた取引の前後どちらに注文が到着したかは分かりません。小口の取引で一度だけ付けた安値も、継続的な出来高を吸収して付けた安値も、OHLCの値は同じです。
出来高が$200,000の1分足で、$50,000の成行買いを出す場面を考えてみましょう。この注文は足の出来高の25%に相当します。だからといって、市場価格を25%動かすことや、足の始値で約定できることが証明されるわけではありません。ただ、その足の出来高に対して注文が十分大きいため、インパクトがゼロという想定には疑いを持つべきです。同じ注文が出来高のわずか0.2%なら懸念は小さくなりますが、出来高だけでは板の厚みや注文の補充状況までは分かりません。
だからこそ、「スリッページは2ベーシスポイント」というのは、銘柄の特性ではなくモデル上の選択です。基準値として役立つことはありますが、あらゆる場面に通用する答えではありません。
バーのデータからマーケットインパクトをどう見積もればいい?
まずは、手元のデータで裏付けられる尺度から始めましょう。注文ごとに参加率、つまり注文の想定元本をその足の売買代金で割った値を計算します。次に、参加率の区分ごとに戦略の成績がどう変わるかを確認します。以下はあえて単純化した例です。想定インパクトはストレステスト用の入力値であり、特定の取引所での執行を見積もったものではありません。
| 注文/足の売買代金 | 片道のインパクト例 | 確認すること |
|---|---|---|
| 0.2% | 1 bp | スプレッドとtaker手数料だけで、すでにこれを上回っていないか? |
| 2% | 5 bp | スプレッドが広がり、約定が遅くなってもエッジは残るか? |
| 20% | 25 bp | 参加率の高さ自体が価格の動きを変えないか? |
1ベーシスポイントは0.01%です。両方向にそれぞれ$100,000を売買する戦略で、往復の両側に5 bpのインパクトがかかると、手数料を除いて約$100のコストになります。計算は簡単ですが、5 bpが妥当かどうかを判断するには、さらに根拠が必要です。出来高が急増するタイミングでシグナルが出るなら、注文が実際に到着する数分間の参加率は、足全体の出来高を分母にすることで、実態より低く見えることさえあります。
スリッページのストレステストには何を含めるべき?
執行の不確実性をポートフォリオ全体の平均値1つに押し込めないようにしましょう。結果を左右する要素を個別に確認できるようにします。
- 売買方向:買い注文は売り気配、売り注文は買い気配を取りにいきます。スプレッドコストは新規建てと決済の両方で発生します。
- 注文サイズ:バックテスト全体の平均だけでなく、取引ごと、流動性の状況ごとに参加率を示します。
- 注文タイプ:成行注文は即時性の対価を払います。指値注文は値動きを取り逃したり、他の注文の後ろで約定を待つことになったりします。
- タイミング:足の終値で出るシグナルは、その終値を見た後に同じ終値で約定したとは扱えません。
- 市場の状態:急変時、流動性の薄い時間帯、そして戦略のトリガーとなる状況では、想定を厳しくします。
少なくとも基本ケースと、より厳しいケースを実行しましょう。たとえば、想定スプレッドとインパクトを2倍にして、どの取引や期間が変化に寄与したかを調べます。最も穏やかな約定条件でしか機能しないなら、それも研究上の発見です。ペーパートレードに進む前に分かるほうがよいでしょう。
手数料、スプレッド、インパクトは、それぞれ別の項目として扱います。手数料は口座の料金体系で決まりますが、スプレッドとインパクトは執行に左右されます。まとめてしまうと、どの想定が結果を支えているのか分からなくなります。
板データが必要なのはどんなとき?
戦略のエッジがスプレッドと同程度、取引頻度が高い、または短時間しか存在しない流動性に依存する場合は、約定データや気配値データを使いましょう。注文順位、一部約定、板の枯渇によってシグナルを実行できるかどうかが決まる場合は、板のスナップショットやイベント単位の板データを使います。それでも、過去データのリプレイで自分のマーケットインパクトを完全に再現することはできません。記録された流動性には、仮想の注文が含まれていないからです。
取引頻度の低い戦略なら、バーのデータでアイデアを絞り込むことはできます。ポジションサイズを観測された出来高に対して小さく保ち、想定したインパクト曲線を明示したうえで、妥当な範囲で条件を変えても成績が維持されるか確認しましょう。大まかな約定モデルの使い方としては、これなら筋が通ります。平均約定価格が正確に分かるとするのは、そうではありません。
実務上の目標は、唯一の正しいスリッページの数値を当てることではありません。戦略が成り立たなくなる範囲を見つけ、データと注文サイズがその境界から十分離れているか確かめることです。そうでなければ、次に取り組むべき研究は、バックテスト報告書に小数点以下の桁を足すことではなく、よりよい執行データを集めることです。
← 記事一覧


