第 19 課:執行システム - シグナルから実際の約定まで
「市場価格」を「執行価格」として扱うなら、訓練したのはトレーディングシステムではなく、幻想です。
よくある致命的な誤解
多くの戦略バックテストが美しく見えるのは、不可能な前提を仮定しているからです:
シグナルが現れたら、常に理想的な価格(ローソク足のCloseなど)で執行できる。
ライブ取引を始めると、すぐに3つの現実に遭遇します:スリッページ、レイテンシ、部分約定/不成立。これらは「最適化項目」ではなく、戦略がデプロイ可能かどうかを決定する生死の境界線です。
この章では、Real Execution Dataとは何か、そしてなぜそれがExecution Agentの基盤であるかを深く理解します。
19.1 中核的定義
いわゆる「実際の執行データ」は、ローソク足チャートに表示される価格ではなく、むしろ:
コアロジック:その瞬間に実際に注文を出した場合、最終的にどの価格で執行されたか、どれだけの数量が約定したか、どれだけの遅延が発生したか。
これが、理論的なバックテストとライブ取引の間の最も重要な分岐線です。
19.2 実際の執行の4つの主要要素
実際の取引を正確にシミュレートするには、これら4つの主要な次元を考慮する必要があります:
19.2.1 執行価格
実際の執行価格は通常、ローソク足価格(OHLC)と大きく異なります。
- 差別化:5分ローソク足の終値は最後の取引記録に過ぎません - あなたの大口注文がこの価格で完全に約定できるという意味ではありません。
- 分割:大口取引では、注文は複数の約定に分割され、わずかに異なる価格で約定し、最終的に出来高加重平均価格として表示されます。
19.2.2 スリッページ
スリッページは理論的執行価格と実際の執行価格の偏差です。クオンツトレーディングにおける主要な隠れたコストであり、主に以下から発生します:
- 流動性の深さ:ビッド/アスクの深さが注文量を支えるのに不十分。
- マーケットインパクト:自分の注文が短期的な需給を変化させ、価格を不利な方向に動かす。
- 価格ボラティリティ:急速に動く市場では、価格が瞬時に変化する。
19.2.3 約定確率とレイテンシ
実際の市場では、注文を出しても約定が保証されるわけではありません:
- 成行注文:「即座の執行」を追求しますが、多くの場合より大きなスリッページを負担します。
- 指値注文:「価格の確実性」を追求しますが、以下のリスクに直面します:
- 不成立:価格があなたのレベルに到達しない。
- 部分約定:あなたより前に多くの注文があり、あなたに到達する前に流動性が尽きる。
19.2.4 摩擦コストと取引ルール
価格自体を超えて、強制的な「入場料」を支払う必要があります:
- 明示的コスト:手数料、印紙税、振替手数料。
- ルール制約:最小ティックサイズ、価格制限、特定のマッチングルール(価格優先、時間優先)。
19.3 戦略の視点:高頻度トレンド戦略が極めて敏感な理由
5分トレンド + 高頻度取引ロジックを使用する戦略では、実際の執行データの重要性が数倍に拡大されます。
19.3.1 エラーの長期蓄積
日次取引頻度が数十から数百の取引である場合、取引ごとに**0.01%**の執行価格偏差があっても、複利と高頻度により長期バックテスト曲線が根本的に歪められます。
19.3.2 「ローソク足Close執行」の幻想
AI Agentの訓練やバックテストで単純に「ローソク足Close価格」を執行価格として使用すると、モデルは極めて危険なロジックを学習します:
- 誤判断:「ローソク足が終了したら、常に終値で即座に執行できる。」
- 幻想:「ブレイクアウト後、常に最適なブレイクアウト価格で買える。」
現実:実際には、現在のローソク足の終了時にシグナルを観察した後、最も早くて次のローソク足の開始時に注文を出せるに過ぎません。変動の激しい市場では、観察したClose価格で執行することはほぼ不可能です。
19.4 典型的な罠:実データ不足によるライブ取引の乖離
シグナル品質を体系的に過大評価すると、戦略(特にRLモデル)は一連の致命的なバイアスを発展させます:
19.4.1 「実現不可能な」エントリータイミングの選好
Agentは「ちょうど閉じたブレイクアウト」シグナルへの病的な選好を発展させます。シミュレートされた世界では、ブレイクアウトポイントが完璧なエントリー価格ですが、現実では、次のローソク足にはしばしばギャップや激しいスリッページがあるため、Agentは現実世界では決して買えない理想的なタイミングを学習します。
19.4.2 「手数料収穫機」になる
スリッページなしと低摩擦の仮定の下で、AIは「もう一回の取引 = もう一回の利益」と考え、取引頻度を狂ったように増やします。しかし、ライブ取引では、高頻度取引はしばしばコスト増幅器であり、最終的にライブパフォーマンスがシミュレーション結果から完全に乖離します。
19.4.3 間違った因果推論
最も危険な状況は、RLが間違った因果関係を学習することです。例えば:
- 間違った推論:「指標が閾値に達してちょうど閉じた時、買えば必ず利益が出る。」
- 真の因果関係:これは単に理想化された執行仮定によって増幅された統計的アーティファクトであり、真の市場利益ロジックではありません。
19.5 2つのデータ次元:市場レベル環境 vs. 戦略執行パフォーマンス
実際の執行データを取得するには、まずどのタイプのデータが必要かを明確にします。2つの次元に分けることができます:
- 次元A:市場実執行環境データ(公開環境):このデータは「その市場環境で注文を出した場合、一般的に何が起こるか?」に答えます。
- 次元B:戦略の実市場執行データ(私的パフォーマンス):このデータは「私の Agentが実際の市場で注文を出した時、具体的に何が起こったか?」に答えます。
コア戦略:「執行型」または「オンラインRL Agent」を訓練したい場合、最終目標は確実に次元Bデータを取得することです。次元Aは、初期のアルゴリズム開発とコールドスタートフェーズの近似としてのみ機能します。
19.6 取得パス:高忠実度取引データを取得する方法は?
19.6.1 第1タイプ:購入可能またはAPIアクセス可能な「市場レベルデータ」
このデータは「市場の事実」を表し、その時点での全体的な市場流動性を反映します。
-
Level-2 / オーダーブックデータ(最も重要):
- 内容:各ビッド/アスクレベルでの価格と数量、ミリ秒レベルのティック/取引記録。
- 用途:成行注文の平均スリッページの推定、指値注文の約定確率、執行シミュレーターの構築。
- ソース:公式取引所(最も権威的だが高価)、専門データベンダー(Refinitivなど)、または一部の高度なブローカーAPI。
-
ティックデータ:
- オーダーブックのキューイングは見えませんが、各実際の取引の価格と出来高を見ることができ、ローソク足よりはるかに正確です。
-
ペーパートレーディング環境:
- 警告:ほとんどのペーパートレーディング環境は過度に理想的なスリッページを持ち、注文のマーケットインパクトを考慮していません。移行期間としてのみ機能します - 過度に依存しないでください。
データソース:学習 vs. 本番
Yahoo Financeは日足学習演習と日次頻度でのバックテストには十分です。しかし、本番には適していません:データは可変遅延で到着し、過去の調整が遡及的に変更される可能性があり、リアルタイムストリーミングは信頼できません。リアルタイムL1/L2データを必要とする本番システムには、Databento(正規化されたマルチ取引所ティックデータ)、Polygon.io(現在はMassiveにリブランド)(米国株式)、または直接取引所フィード(最低レイテンシ、最高コスト)などの機関グレードプロバイダーが必要です。データ品質のジャンプはコストのジャンプと一致します -- これを後付けではなく、実際の予算項目として計画してください。
19.6.2 第2タイプ:「あなた自身が生成する」必要がある実際の執行データ
これは、「あなたのAgent + 市場」の相互作用を真に反映する唯一のデータであり、完全な注文ライフサイクルを含みます:
- 完全なログ:注文時刻、注文タイプ、予想価格、実際の執行価格(複数の約定の可能性)、執行レイテンシ、部分約定/不成立記録、手数料など。
19.7 残酷な真実:コアデータが購入できない理由
多くの開発者が尋ねます:「実際に取引せずに、このスリッページを含む実データを購入できませんか?」
コアロジック:答えはいいえです。
理由は:スリッページは純粋に市場属性ではなく、「あなたの行動 + 市場フィードバック」の共同生産物だからです。
注文方法(成行/指値)、注文サイズ、注文タイミングはすべて、オーダーブックで異なる化学反応を生み出します。「普遍的な、あなたのために執行された」実データセットは存在しません。
19.8 進化パス:シミュレーターからライブフィードバックへの3ステージ
実世界の有効性を追求する開発者には、推奨されるエンジニアリングパスは:
-
ステージ1:執行シミュレーターを構築
- Level-2/ティックデータを使用して「保守的な」シミュレーターを構築。
- 目標:理想的な仮定の下では利益を出すが、保守的な仮定の下では損失を出す戦略の80%を排除。
-
ステージ2:小資本ライブ取引(コールドスタート)
- 最小のポジションサイズでライブ取引に入る、利益を出すためではなく、完全なログを収集するため。
- 目標:実際の執行失敗、極端なスリッページ、レイテンシサンプルを取得。
-
ステージ3:データクローズドループ較正
- ライブ生成されたタイプBデータを使用してステージ1のシミュレーターを逆検証し、シミュレート環境をあなたの実際の執行パフォーマンスにますます近づける。
19.9 正規データモデルとシンボル正規化
19.9.1 正規データモデルが必要な理由
異なるブローカーとデータプロバイダーは異なるシンボル体系を使用します:Interactive BrokersはconIdを使用、Bloombergは FIGIを使用、Yahoo Financeは独自のティッカー形式を使用、取引所はネイティブコードを使用します。ブローカー固有の形式をコアロジックに漏らすと、会場の変更や第2のブローカーの追加が書き直しになります。
解決策は、会場ごとの薄いアダプターを持つ正規化された内部形式です:
内部シンボル形式: SYMBOL.EXCHANGE
例: AAPL.NASDAQ, 0700.HKEX, TSLA.NASDAQ, 9988.HKEX
正規化インターフェース(会場ごと):
to_internal(broker_symbol) -> canonical_symbol
to_broker(canonical_symbol) -> broker_symbol
この正規モデルがマルチ会場取引を可能にします。あなたのSignal Agent、Risk Agent、ポートフォリオロジックはすべて正規化されたシンボルで動作します。Execution Agentの会場アダプターのみが境界でブローカーネイティブ形式に変換します。
19.9.2 シンボル解決の落とし穴
シンボルマッピングは、エッジケースがPnLを破壊するまでは単純に聞こえます:
| 落とし穴 | 何が起こるか | 防御 |
|---|---|---|
| 上場廃止ティッカー | ルックアップが古いまたはnullデータを静かに返す | 毎日アクティブシンボルリストに対して検証 |
| 企業行動分割 | GOOGがGOOGLになる、ティッカーが履歴の途中で変更 | シンボル変更イベントを追跡、エイリアステーブルを維持 |
| 複数部分ティッカー | BRK.BがSYMBOL.EXCHANGE形式と衝突 | 衝突しない区切り文字を使用(例:BRK-B.NYSE) |
| 古い引用 | データプロバイダーが昨日の終値を「現在」として返す | すべての引用にタイムスタンプ;年齢 > 閾値なら拒否 |
| デュアル上場証券 | 同じ会社、取引所をまたがって異なるシンボル | ティッカー文字列だけでなく、正規エンティティIDにマップ |
経験則:ティッカー文字列を安定した識別子として決して信頼しないでください。ティッカーは変更され、再利用され、会場間で異なります。ティッカーを表示層の便宜として、正規IDを中心にシステムを構築してください。
19.10 会場選択:実用的なデフォルト
中小規模のクオンツファンドにとって、Interactive Brokers (IB) が実用的なデフォルト会場です。単一のAPIを通じて米国と香港市場をカバーし、ネイティブアルゴリズミック注文タイプ(TWAP、VWAP、Adaptive)を提供し、TCA用の実際の執行データを公開します。手数料構造は競争力があり、TWS APIはエレガントではないにしても十分に文書化されています。
Alpacaと類似のプラットフォームは、ペーパートレーディングと学習のための有用な踏み台です。しかし、これらは本番エンドポイントではありません -- 限られた市場カバレッジ、簡素化された注文タイプ、より粗い執行レポートにより、真剣なライブ取引には不十分です。
| 機能 | Interactive Brokers | Alpaca | ペーパートレーディング |
|---|---|---|---|
| 市場 | 米国、香港、EU、アジア | 米国のみ | シミュレート |
| アルゴ注文 | TWAP、VWAP、Adaptive | 基本的な成行/指値 | N/A |
| TCAデータ | 完全な約定レポート | 限定的 | なし |
| 空売り | はい(借入あり) | 限定的 | シミュレート |
| ユースケース | 本番 | 学習 / プロトタイピング | 戦略検証 |
19.11 実用的な推奨事項:5分高頻度戦略の現実的なソリューション
5分トレンド戦略の特性を組み合わせると、私の最も現実的な推奨事項は:
- リスクを過大評価する方を優先:モデルを構築する際、スリッページを過大評価し、約定確率を過小評価する方を優先。
- RL訓練を分離:最初はRL Agentに「執行ロジック」(例:どれだけ注文するか、追いかけるか、いつ諦めるか)を学習させ、「方向予測」を学習することを急がない。
- 早期にライブに入る:「保守的シミュレーター」で戦略が安定したパフォーマンスを示したら、できるだけ早く小資本ライブ取引を開始。
19.12 まとめ
表示価格 + スリッページ + 確率レイテンシ + 取引摩擦 = 実際の執行データ
これらすべての詳細を組み込み、「理想化された執行」の罠を避けることによってのみ、クオンツ戦略(特にAI駆動戦略)のバックテスト結果は真の実用的参照価値を持ちます。「市場データ」から「執行データ」への飛躍は、プロフェッショナルなクオンツトレーダーにとって必要な道です。
19.13 マルチエージェントの視点
- Execution Agent:「シグナル」を実行可能な注文(分割/指値/追跡/キャンセル)に変換し、執行品質(スリッページ、約定率、レイテンシ)を継続的に測定。
- Risk Agent:「執行可能」を「執行する価値がある」に変換し、高スリッページ/低流動性/異常レイテンシに対してポジション削減または注文拒否をトリガー。
- Data/Telemetry Agent:執行データのクローズドループ(注文 -> 約定 -> コスト -> PnL)を沈殿させ、後続のリプレイ、アトリビューション、オンライン学習のための材料を提供。
レッスンの成果物
このレッスンを完了すると、以下が手に入ります:
- 執行システムの主要概念フレームワーク:執行価格、スリッページ、レイテンシ、約定率、摩擦コスト
- データクローズドループ収集チェックリスト:ライブ取引で執行とRLにフィードバックするために記録すべきことを知る
- 実行可能な進化パス:保守的シミュレーター -> 小資本ライブサンプリング -> シミュレーターを逆較正
重要なポイント
- 実際の執行データ = 執行価格 + スリッページ + 確率/レイテンシ + 取引ルール/摩擦コスト
- ローソク足Closeを執行価格として使用すると、戦略の実現可能性を体系的に過大評価
- タイプAデータ(市場環境)は近似のみ可能;タイプBデータ(あなたのライブログ)が較正と進化に使用できるもの
さらなる読書
- 背景知識: 取引所とオーダーブックメカニクス - 指値/成行注文の実際のマッチングセマンティクスの理解
- 背景知識: 執行シミュレーターの実装 - 4レベル執行シミュレーターのコード実装
- 背景知識: ティックレベルバックテストフレームワーク - イベント駆動バックテストとキュー位置シミュレーション
- FIXプロトコル入門 - FIX 4.4メッセージ構造とQuickFIX実装
- 付録A: ライブトレーディングのロギング標準 - クローズドループを形成するために記録すべきフィールド
次のレッスンプレビュー
Lesson 20: 本番運用
システムが実際の市場で実行されると、問題は「戦略は正しいか」ではなく「システムは正しく実行されているか」になります:データパイプラインは健全か?PnLは異常か?ドローダウンがサーキットブレーカーをトリガーしたか?次のレッスンでは、このシステムを真に「運用」します。