複数のコントラクトを取引する小規模な暗号資産先物戦略を、バックテストからペーパートレードに移したところだとします。最初のリバランスで0.037 BTCの注文を出します。シミュレーターは受け付けますが、取引所は拒否します。数量刻みが0.001で、注文を丸めると最小注文額を下回るためです。バックテストには約定が記録される一方、実際のポジションはゼロのままです。
この差は、単なる書式上の不具合として片付けがちです。しかし、保有する資産やリバランスのタイミング、注文失敗後に残るリスクまで変わる可能性があります。各取引所の取引フィルターを戦略の執行ルールの一部として扱い、バックテストとペーパー取引アダプターの両方で、同じルールを同じ順序で適用しましょう。
どのような取引所フィルターが注文を無効にするのか?
まず、注文に必要な銘柄情報を確認します。数量刻み、最小数量、最小注文額、価格刻みに加え、注文サイズや価格帯の上限があれば把握しましょう。名称や適用範囲は取引所によって異なります。現物ペアと無期限先物では最小注文額が異なることがあり、戦略の実行中にフィルターが変更されることもあります。
最小注文額が$10のコントラクトで、目標ポジションが$12だとします。数量刻みに合わせて注文を切り下げた結果、$9.80になると、丸める前の目標額は最小額を上回っていても、注文は無効です。$10.20に切り上げれば有効になるかもしれませんが、目標を$0.20超過します。口座資金が少ない場合や多くの銘柄を取引する戦略では、この差が無視できないことがあります。
| ルール | 制約する項目 | バックテストへの影響 |
|---|---|---|
| 数量刻み | 注文サイズとして許容される増減幅 | 丸め後のサイズが目標と異なる |
| 最小数量または最小注文額 | 受け付け可能な最小注文 | 一部の取引が実行されないか、切り上げが必要になる |
| 価格ティック | 許容される指値価格とトリガー価格 | 価格の丸めによって注文の約定確率が変わる |
| 価格帯制限またはサイズ上限 | 取引所が定める注文項目の上限 | 相場の急変時や大規模なリバランス時に注文が拒否されることがある |
注文処理のどこで丸めるべきか?
希望するポジション変更を計算した後、注文を送信するか判断する前に、注文項目を丸めます。分析には丸め前の目標値を保持し、現在のポジション、コントラクトの乗数、取引所の刻みに基づいて執行可能な注文を作ります。売り数量の刻みが0.001の場合、0.0017の減少要求を0.001にするか0.002にするかは、明示したルールによって決まります。どちらを選ぶかで残るポジションが変わるため、「精度に合わせて丸める」だけでは方針として不十分です。
数量をゼロ方向に切り下げれば、要求以上にエクスポージャーを増やす事態を避けられますが、取引されない小さな残高が残ることがあります。最も近い値に丸めれば平均誤差は小さくなりますが、目標を超える可能性があります。最小注文額への対応は別途決めましょう。取引を見送る、基準額に達するまで積み上げる、あるいはサイズを増やして超過を受け入れる、といった選択肢があります。これらの動作を暗黙に切り替えてはいけません。
注文が成立しなかった理由も記録しましょう。「注文なし:最小注文額未満」と「数量0で約定」では意味が異なります。ポートフォリオのリバランスでは、注文を見送ると現金が使われずに残ったり、以前の資産へのエクスポージャーが維持されたりします。その結果を口座状態に反映してください。
バックテストとペーパー取引の執行をどう整合させるか?
システム構成が許す範囲で、両方の処理経路から同じ注文検証関数を使います。同一時点の銘柄ルール、希望する注文、口座状態を渡し、正規化された注文か、具体的な拒否理由を返すようにします。そうすればシミュレーターは正規化後の注文に約定条件を適用でき、ペーパー取引アダプターはそれに相当する項目を取引所に送れます。
各実行時点のフィルターメタデータを、日付付きで保存しましょう。数量刻みや最小注文額が変更された場合、バックテストでどのルールが使われたのかを確認できる必要があります。1年前の戦略を再現する際に今日のメタデータを取得すると、当時の注文が無効に見えたり、当時は不可能だった注文が可能に見えたりすることがあります。
ペーパー取引所から拒否の通知が届いたら、シグナルを変更する前に、送信した注文項目とフィルターのスナップショットを比較します。バックテストの注文正規化処理が0.037 BTCを生成し、取引所が0.001 BTC刻みを許可していたなら、問題はアダプターかメタデータにあります。注文自体は有効なのに約定しなかった場合は、価格、流動性、注文有効期間など、執行動作を調べます。
比較を信頼する前に何を確認すべきか?
各リバランスについて、目標ポジション、現在のポジション、生の注文、正規化後の注文、適用されたフィルターのバージョン、最終ステータスを簡潔な監査記録として残します。そのうえで、同じ判断時刻におけるペーパー取引とシミュレーションの記録を比較します。
- 両方の処理経路で同じコントラクト乗数と数量単位を使っていたか?
- 丸めの方向と最小注文額の方針は同じだったか?
- 注文作成時点でフィルターの値は有効だったか?
- 拒否または見送りになった注文の後、両口座でポジションと現金は同じ状態になったか?
最初のペーパー取引でリバランスに失敗しても、戦略自体は妥当かもしれません。ただし、その注文が受け付けられたのか、丸められたのか、見送られたのか、拒否されたのかをシミュレーターが説明できるようになるまでは、そのエクイティカーブが示しているのは、実際に動かそうとしているものとは異なる執行システムです。
← 記事一覧

