第 18 課:取引コストモデリングと取引可能性
Alphaの存在 = (Gross Alpha - Cost) >
0
よくあるシナリオ(例示)
注:以下は一般的な現象を説明するための合成例です。数値は説明のためのものであり、特定のチームやアカウントには対応していません。
2019年、あるクオンツチームが機械学習戦略を見せてくれました:
バックテスト結果 (2015-2019):
- 年間リターン: 45%
- シャープレシオ: 2.3
- 最大ドローダウン: 8%
- 月間勝率: 78%
「これは今まで見た中で最高の戦略です!」と彼らは興奮して言いました。
私は一つの質問をしました:「日次回転率はどのくらいですか?」
答え:300%。
つまり、毎日元本の3倍に相当する株式を売買しているということです。
私は彼らに、以下の現実的なコストを追加して再計算するよう依頼しました:
- 取引手数料: 0.03%(往復)
- マーケットインパクト: 0.1%(保守的な見積もり)
- スリッページ: 0.05%
コスト計算:
- 日次コスト = 300% x (0.03% + 0.1% + 0.05%) = 0.54%
- 年間コスト = 0.54% x 252 = 136%
調整後バックテスト:
- グロスリターン: 45%
- コスト: -136%
- ネットリターン: -91%
彼らの「印刷機」は「シュレッダー」に変わりました。
これがトレーディングコストモデリングが非常に重要な理由です - あなたのAlphaが本物か幻想かを決定します。
18.1 コストの真の構成
18.1.1 明示的コスト vs. 暗黙的コスト
18.1.2 明示的コストの詳細
| コストタイプ | 米国株 | A株 | 暗号通貨 |
|---|---|---|---|
| 手数料 | 0-0.005% | 0.03% | 0.02-0.1% |
| 印紙税 | なし | 0.1%(売却側) | なし |
| 取引所手数料 | 0.001% | 手数料に含まれる | 手数料に含まれる |
| SEC手数料 | 0.00008% | なし | なし |
| 振替手数料 | なし | 0.001% | なし |
米国株の明示的コスト例:
AAPL $100,000を購入:
- 手数料: $0-5(ブローカーによる)
- 取引所手数料: ~$1
- 合計: ~$5 = 0.005%
売却も同様、往復で約 0.01%
18.1.3 暗黙的コスト:見えないキラー
スリッページ
定義:予想執行価格と実際の執行価格の差
AAPL $100.00で買う予定
実際の執行価格 $100.05
スリッページ = $0.05 = 0.05%
スリッページの原因:
| 原因 | 説明 | 影響要因 |
|---|---|---|
| ビッドアスクスプレッド | ビッドとアスクの差 | 流動性、ボラティリティ |
| 価格変動 | 注文から執行までの時間遅延 | 市場のボラティリティ、ネットワークレイテンシ |
| 部分約定 | 注文が複数の約定に分割される | 注文サイズ、オーダーブックの深さ |
マーケットインパクト
定義:あなたの取引自体が価格を不利な方向に押し上げる
シナリオ: AAPL 10,000株を買いたい
オーダーブック:
Ask 1: $100.00 x 2,000株
Ask 2: $100.02 x 3,000株
Ask 3: $100.05 x 5,000株
成行注文で一度に全て買う場合:
最初の2,000株: $100.00
次の3,000株: $100.02
最後の5,000株: $100.05
加重平均価格: $100.029
理想価格: $100.00
マーケットインパクト: 0.029%
さらに: Ask 2とAsk 3を消費した
次の買い手はより高い価格でしか買えない
これが「永続的インパクト」
機会費用
定義:執行できない、または執行が遅れることによって失われる潜在的リターン
シナリオ:
シグナル発火時の価格: $100
あなたの指値注文: $99.50
価格はすぐに$105に上昇
注文は約定せず
機会費用 = $105 - $100 = 5%
18.2 スリッページモデリング
18.2.1 線形モデル
最もシンプルなモデルは、スリッページが注文サイズに比例すると仮定します:
スリッページ = k x OrderSize / ADV
ここで:
- k = 経験的係数(通常 0.1-0.5)
- OrderSize = 注文量
- ADV = 平均日次出来高
ペーパーエクササイズ:
株式を$500,000買いたい、k = 0.3と仮定
| 株式 | ADV | 注文比率 | 予想スリッページ |
|---|---|---|---|
| AAPL | $10B | 0.005% | 0.3 x 0.005% = 0.0015% |
| TSLA | $3B | 0.017% | 0.3 x 0.017% = 0.005% |
| 小型株 X | $10M | 5% | 0.3 x 5% = 1.5% |
発見:小型株では、$500Kの注文で$7,500のスリッページが発生する可能性があります!
18.2.2 平方根モデル
より正確なモデルは非線形関係を考慮します:
スリッページ = k x sigma x sqrt(OrderSize / ADV)
ここで:
- sigma = 日次ボラティリティ
- k = 経験的係数(通常 0.5-1.5)
ペーパーエクササイズ:
| 株式 | ボラティリティ sigma | ADV | 注文 | スリッページ (k=1) |
|---|---|---|---|---|
| AAPL | 1.5% | $10B | $1M | 1.5% x sqrt(1M/10B) = 0.015% |
| AAPL | 1.5% | $10B | $100M | 1.5% x sqrt(100M/10B) = 0.15% |
| 小型株 | 3% | $10M | $1M | 3% x sqrt(1M/10M) = 0.95% |
主な発見:
- スリッページは注文サイズに対して亜線形に増加(平方根関係)
- 高ボラティリティ株はより大きなスリッページを持つ
- 小型株のスリッページは大型株の60倍になり得る
18.2.3 ティックデータによるスリッページの推定
Level-2データがあれば、より正確に推定できます:
方法: オーダーブックを通過する注文をシミュレート
1. 過去のオーダーブックスナップショットを取得
2. 成行注文が各レベルを消費するシミュレート
3. 加重平均価格と中値価格を計算
4. 異なる注文サイズのスリッページ分布を収集
コードフレームワーク(エンジニア向け参考)
def estimate_slippage(order_size: float,
order_book: dict,
side: str = 'buy') -> float:
"""
オーダーブックデータに基づいてスリッページを推定
order_book = {
'bids': [(price1, size1), (price2, size2), ...],
'asks': [(price1, size1), (price2, size2), ...]
}
"""
if side == 'buy':
levels = order_book['asks'] # 買いはアスクを消費
else:
levels = order_book['bids'] # 売りはビッドを消費
mid_price = (order_book['bids'][0][0] + order_book['asks'][0][0]) / 2
filled = 0
cost = 0
for price, size in levels:
if filled >= order_size:
break
fill_amount = min(size, order_size - filled)
cost += fill_amount * price
filled += fill_amount
if filled < order_size:
# オーダーブックの深さが完全執行に不十分
return float('inf')
avg_price = cost / order_size
slippage = (avg_price - mid_price) / mid_price
return slippage if side == 'buy' else -slippage18.3 マーケットインパクトモデリング
18.3.1 一時的インパクト vs. 永続的インパクト
18.3.2 Almgren-Chrissモデル
これは最も有名なマーケットインパクトモデルです:
総コスト = 一時的インパクト + 永続的インパクト + ボラティリティリスク
ここで:
一時的インパクトは取引速度に比例(単位時間あたりの出来高)
永続的インパクトは総取引量に比例
ボラティリティリスクは執行時間 x ボラティリティに比例
トレードオフ:
速く取引 -> 高い一時的インパクト、しかし低いボラティリティリスク
遅く取引 -> 低い一時的インパクト、しかし高いボラティリティリスク
直感的な説明:
バケツの水を池に注ぐことを想像してください。 速く注ぐ(一度に全て) -> 大きな水しぶき(一時的インパクト)、しかし水はすぐに落ち着く ゆっくり注ぐ(一滴ずつ) -> 小さな水しぶき、しかし風や雨が発生する可能性がある(ボラティリティリスク)
18.3.3 ペーパーエクササイズ:執行戦略の選択
AAPL $10Mを買いたい(ADV = $10B)、ボラティリティ = 1.5%/日
| 執行戦略 | 執行時間 | 一時的インパクト | ボラティリティリスク | 総コスト |
|---|---|---|---|---|
| 単一成行注文 | 即座 | 高い | なし | 高い |
| 10回の注文(1日) | 1日 | 低い | 1.5% | 中程度 |
| 50回の注文(5日) | 5日 | 非常に低い | 3.4% | 潜在的に高い |
最適解:緊急性とリスク選好に基づいてバランスを取る
18.4 取引可能性評価
18.4.1 約定確率モデリング
指値注文の問題:注文が約定しない可能性がある
約定確率 P(fill) は以下に依存:
1. 指値価格と現在価格の距離
2. 価格レベルでのキューの深さ
3. 価格ボラティリティの範囲
4. 待機時間
推定式(簡略版):
P(fill) ~ 1 - exp(-lambda x time)
ここでlambdaは価格距離とボラティリティに関連
ペーパーエクササイズ:
$100の株に$99の指値買い注文を出す(市場より1%下)
| シナリオ | 日次ボラティリティ | 予想約定確率 |
|---|---|---|
| 低ボラティリティ | 0.5% | ~20%(-1%に達しにくい) |
| 中ボラティリティ | 1.5% | ~60%(しばしば達する) |
| 高ボラティリティ | 3% | ~85%(ほぼ確実に達する) |
問題:高い約定確率は価格がよく下がることを意味する - 良いシグナルではないかもしれない
18.4.2 流動性コストメトリクス
| メトリクス | 計算式 | 意味 |
|---|---|---|
| 注文比率 | Order / ADV | 低いほど良い |
| 流動性消費 | Order / Order Book Depth | 低いほど良い |
| 待機コスト | Signal Decay x Wait Time | 低いほど良い |
| 総コスト | Slippage + Impact + Opportunity Cost | 総コスト |
18.4.3 Alphaの精製:GrossからNetへ
Gross Alpha: 予測リターン(バックテストから)
引く:
- 明示的コスト(手数料、税金)
- スリッページ(ビッドアスク + レイテンシ)
- マーケットインパクト
- 機会費用
等しい:
Net Alpha: 実際に達成可能なリターン
重要な公式:
戦略が実行可能 <=> Net Alpha >`0`
戦略が実行可能 <=> Gross Alpha > Total Cost
ペーパーエクササイズ:
| 戦略 | Gross Alpha | 回転率 | トレードあたりコスト | 年間コスト | Net Alpha |
|---|---|---|---|---|---|
| A | 15% | 50% | 0.2% | 2% | 13% |
| B | 20% | 200% | 0.2% | 8% | 12% |
| C | 30% | 500% | 0.2% | 20% | 10% |
| D | 40% | 1000% | 0.2% | 40% | 0% |
| E | 50% | 2000% | 0.2% | 80% | -30% |
発見:
- 戦略Eは最高のGross Alphaを持つが、最低のネットリターン
- 戦略Aは最低のGross Alphaを持つが、最高のネットリターン
- 高い回転率はAlphaキラー
18.5 戦略の混雑:全員が同じシグナルで取引する時
コストモデリングは自分自身の注文に焦点を当てています。しかし、個々のモデルでは推定できないシステミックコストがあります:数百のファンドが同じポジションを持ち、同時に出口を試みる場合に何が起こるか。
ケーススタディ:2024年中国小型株クオンツ危機
2024年初頭、中国のトップクオンツファンドの多くが数週間以内に8-13%の同時ドローダウンに見舞われました。Ubiquant、Lingjun、High-Flyer -- 数百億を管理する企業 -- 全てがCSI 500強化商品で2桁の損失を計上しました。原因は単一の悪いトレードではなく、戦略の同質化でした:ほとんどのファンドが類似のモメンタムとサイズファクターを使用して小型株とマイクロキャップ株をオーバーウェイトしていました。規制強化がマイクロキャップ取引を制限すると、強制清算がポジティブフィードバックループを引き起こしました -- 売却が流動性を圧縮し、さらなる売却を強制しました。通常の条件で較正されたバックテストスリッページモデルは、インパクトを大幅に過小評価していました。
教訓:コストモデルは混雑リスクを考慮しなければなりません。戦略が広く公開されたファクターをキャパシティ制約のある株で使用している場合、真のコストには相関アンワインディングのテールリスクが含まれます。
戦略同質化のダイナミクス、キャパシティ推定手法、対策のより深い分析については、背景知識:戦略の同質化とキャパシティのボトルネックを参照してください。
18.6 多くのML Alphaが取引不可能な理由
18.6.1 シグナル減衰率 vs. 執行遅延
18.6.2 高頻度Alphaのキャパシティ制約
| Alphaタイプ | 典型的な減衰 | キャパシティ | 実行可能性 |
|---|---|---|---|
| マーケットメイキング | ミリ秒 | $1-10M | HFTインフラが必要 |
| 統計的アービトラージ | 秒〜分 | $10-100M | 低レイテンシが必要 |
| テクニカルモメンタム | 分〜時間 | $100M-1B | リテールでも可能性あり |
| ファンダメンタルファクター | 日〜週 | $1B+ | 十分なキャパシティ |
重要な洞察:
MLモデルは短期Alphaを簡単に発見します(S/N比が高いため) しかし、これらのAlphaは多くの場合、リテールトレーダーが執行するには減衰が速すぎます
18.6.3 ケーススタディ:高勝率戦略のライブトレーディング崩壊
バックテスト結果:
- 日次勝率 65%
- 日次平均リターン 0.3%
- シャープ 3.0
戦略特性:
- シグナル減衰半減期: 2分
- 平均執行遅延: 5分
問題:
シグナル発火時: 予想リターン +0.5%
2分後: 予想リターン +0.25%(50%減衰)
5分後(実際の執行): 予想リターン +0.06%
0.1%コストを引く: ネットリターン -0.04%
65%勝率 x (-0.04%) = 継続的な損失
18.7 マルチエージェントの視点
18.7.1 Cost Estimator Agent
18.7.2 コスト意識的な戦略設計
| 設計原則 | 実装 |
|---|---|
| 回転率を下げる | 保有期間を延長、シグナル閾値を上げる |
| 高流動性資産を選択 | ADV < 閾値の株式をフィルター |
| 高ボラティリティ期間を避ける | 始値/終値/イベント時に取引しない |
| スマートオーダーを使用 | TWAP、VWAP、アルゴリズミックトレーディング |
| キャパシティ管理 | 戦略キャパシティ = f(流動性、インパクト) |
合格基準
このレッスンを完了したら、以下の基準で学習を確認してください:
| 基準 | 標準 | 自己テスト方法 |
|---|---|---|
| コスト構成の理解 | 明示的・暗黙的コストをリストアップできる | コストピラミッドを描く |
| スリッページの推定 | 平方根モデルでスリッページを計算できる | ペーパーエクササイズを完了 |
| マーケットインパクトの理解 | 一時的・永続的インパクトを説明できる | 例を挙げる |
| 取引可能性の評価 | Net Alphaを計算できる | 戦略を評価 |
| ML Alphaの罠の理解 | シグナル減衰問題を説明できる | 高頻度戦略を分析 |
レッスンの成果物
このレッスンを完了すると、以下が手に入ります:
- コスト分類フレームワーク - 明示的、暗黙的、機会費用
- スリッページ推定モデル - 線形モデルと平方根モデル
- 取引可能性評価方法 - Gross AlphaからNet Alphaへ
- Cost Estimator Agent設計 - コスト推定と意思決定の協調
重要なポイント
- トレーディングコスト = 明示的コスト + スリッページ + マーケットインパクト + 機会費用
- スリッページは注文サイズ/ADVと平方根関係を持つ
- 戦略の実行可能性 = Net Alpha >
0= Gross Alpha > Total Cost - 高い回転率はAlphaキラー
- ML Alphaは短期シグナルを簡単に発見するが、執行遅延により捕捉不可能になる可能性がある
さらなる読書
- Lesson 19: 執行システム - シグナルから実際の約定まで - 執行の詳細
- 背景知識: HFTとマーケットマイクロストラクチャー - マーケットマイクロストラクチャーの基礎、Kyle's Lambda
- 背景知識: 執行シミュレーターの実装 - 4レベル執行シミュレーターのコード実装
- 付録A: ライブトレーディングのロギング標準 - 記録すべきデータ
次のレッスンプレビュー
Lesson 19: 執行システム - シグナルから実際の約定まで
コストモデリングは「取引がどれほど高価か」を教えてくれます。次のレッスンでは、執行に深く踏み込みます:どのように注文を設計するか?スリッページをどう扱うか?実際の市場でシグナルを実際の約定に変えるには?