← 記事一覧に戻る
July 15, 2026
読了時間: 5分

TWAP vs VWAP vs POV:執行ベンチマークの選び方(そしてそれぞれが嘘をつくタイミングを知る)

TWAP vs VWAP vs POV:執行ベンチマークの選び方(そしてそれぞれが嘘をつくタイミングを知る)
#execution
#twap
#vwap
#pov
#implementation-shortfall
#volume-curve
#algotrading
#backtest

すべての執行スケジューラーは、ボリューム予測に対する賭けである。TWAPは、流動性が時間軸上でフラットであることに賭ける。VWAPは、今日のボリュームカーブが昨日と同じ形になることに賭ける。POVは、いま板に印字されているボリュームが「いま取引すべき理由」になる——あなた自身の取引によって生じた分も含めて——ということに賭ける。これらの賭けはどれもベンダーのドキュメントには「賭け」だと明記されていない。だからこそ、この3つを比較する記事の大半は機能比較表のような書かれ方になる。TWAPは「シンプル」、VWAPは「賢い」、POVは「適応的」。そういう枠組みは、どれがいつ、どれくらいの金額を失わせるのかについては何も教えてくれない。

これはアルゴリズム取引におけるオーダータイプで始めたスレッドの第2部であり、その記事ではおもちゃのTWAPとVWAPの執行エンジンをそれぞれPythonで約40行で組み立てた。あの執行エンジンは配管としては十分に機能する。本稿が扱うのは、その配管が覆い隠しているすべて——暗黙の前提、ベンチマークをめぐる政治力学、そしてリプレイしたオーダーブックデータ上での再現可能な直接対決実験——であり、この3つのアルゴリズムが単なる「味付けの違い」ではなく、異なる失敗モードを持つ異なるリスクプロファイルであることを示す。

3つのスケジューラー、3つの隠れた賭け

記法を固定する。サイズXXの親注文は、区間[0,T][0, T]にわたってNN個の時間帯に分割して執行しなければならない。xix_iを区間iiにおける子注文の数量、viv_iを区間iiにおける市場ボリューム、pip_iを区間iiにおける平均価格とする。当該区間全体の市場VWAPは

VWAP=ipiviivi.\mathrm{VWAP} = \frac{\sum_i p_i v_i}{\sum_i v_i}.

TWAPxi=X/Nx_i = X/Nを取引する:等しい時間間隔で等しい数量を、である。暗黙の前提は、流動性——板の厚み、スプレッド、ボリューム——が時間軸上で一様であり、したがって等分割は等しいインパクトしか生まないというものだ。これはこれまで存在したどの市場においても偽であるが、その失敗の仕方は穏やかだ。スケジュールは決定的であり、完了は構成上保証されており、最悪のケースでも固定サイズのクリップを薄い時間帯に投げ込んで広いスプレッドを払う程度で済む。もう一つ、あまり議論されない前提は、誰も見ていないということだ。60秒ごとに:00きっかりで子注文を発射するTWAPはメトロノームであり、メトロノームはフロントランされる。まともなTWAPは子注文のタイミングとサイズをランダム化する。スケジュールは、その期待値がフラットであるようなポアソン的過程であるべきで、時計であってはならない。

VWAPxi=Xuix_i = X \cdot u_iを取引する。ここでuiu_iは区間iiにおける一日のボリュームに占める割合の予測値であり、iui=1\sum_i u_i = 1である。ここでの賭けは明示的になる:あなたは過去から推定したカーブ{ui}\{u_i\}を保持しており、今日もそれに従うと仮定している。前提は、ボリュームがフラットだということではなく、それが予測可能で外生的だということである——カーブは、あなたが取引しているかどうかを気にしない。予測が良ければ、VWAPは市場が吸収できる場所に取引を集中させ、市場VWAPに対するスリッページはほぼトートロジー的に小さくなる。予測が悪ければ——予定外のニュースイベントが、カーブがわずか6%しか割り当てていなかった時間帯に一日のボリュームの40%を流し込むようなケースでは——VWAPは平然と古びたスケジュールを取引し続け、その差をあなたが負担することになる。VWAPは執行リスクをボリューム予測リスクに変換する。それがトレードオフのすべてであり、だからこそVWAPエンジンにおいて興味深いエンジニアリングは、スライサーではなく予測器にある。

POV(percentage of volume、「参加率」とも呼ばれる)は予測を放棄する:xt=γVtx_t = \gamma \cdot V_t、すなわち各区間で観測されたボリュームの固定割合γ\gammaを取引する。これはVWAPを凌駕しているように見える——ボリュームを予測できるなら、なぜわざわざ予測などせず、それに追随しないのか? 落とし穴は、そのシグナルが内生的になっていることだ。あなた自身の約定が板に印字される。市場の他の参加者がある区間でMMを取引し、あなたが全体の板ボリュームに占める割合γ\gammaを目標にするなら、あなたの数量はx=γ(M+x)x = \gamma(M + x)を満たす。つまり

x=γ1γM.x = \frac{\gamma}{1-\gamma}\,M.

γ=0.10\gamma = 0.10であれば、この補正は穏やかだ(他者のボリュームの11.1%)。γ=0.25\gamma = 0.25では、他の全参加者のフローの33%を取引していることになる。γ=0.5\gamma = 0.5では、残りの市場全体と一対一で一致することになり、不動点は発散する。POVはまた、TWAPとVWAPがともに提供する唯一の保証も手放している——完了時刻の保証がないのだ。ボリュームが枯渇すれば、あなたのスケジュールも同様に枯渇する。POVの病理については後段で改めて扱う。それだけの価値がある話だからだ。

もう一つ、後で重要になる枠組みがある。これら3つのうちどれも、いかなる形式的な意味でも「最適」ではない。コスト・リスク目的関数を実際に最小化するスケジューラーは、Almgren–Chrissファミリー(Almgren and Chriss, 2000, "Optimal Execution of Portfolio Transactions," Journal of Risk 3, 5–39)であり、これについてはAlmgren–Chrissと最適執行スケジュールの理論できちんと扱っている。TWAPは、線形インパクトの下でリスク回避度がゼロのAlmgren–Chrissの特殊ケースである。VWAPは、ボリューム加重ベンチマークに対するトラッキングエラー最小化戦略である(Konishi, 2002, "Optimal slice of a VWAP trade," Journal of Financial Markets 5(2))。POVはヒューリスティックであり、いかなる目的関数にも対応していない——だからこそその失敗モードはあれほど奇妙なのである。

市場が決して閉じない中でボリュームカーブを推定する

株式の文献には楽な話だった。株式のイントラデイ・ボリュームはU字型であり、寄付きは厚く、昼は薄く、引けにかけてまた厚くなる。これはJain and Joh(1988, "The Dependence between Hourly Prices and Trading Volume," JFQA 23(3))によって文書化され、Admati and Pfleiderer(1988, "A Theory of Intraday Patterns: Volume and Price Variability," Review of Financial Studies 1(1))によって理論的な裏付けが与えられた。彼らは、裁量的な流動性トレーダーと情報を持つトレーダーが時間軸上で内生的にクラスター化することを示した。このU字型は、寄付きと引けのオークションという2つの硬いイベントによって固定されているため、カーブは安定しており、区間ボリュームシェアの20日移動平均を取れば9割方は十分である。

暗号資産には寄付きも引けもないので、素朴に考えればボリュームはフラットであり、TWAP ≈ VWAPになるはずだと思うかもしれない。その素朴な見立ては間違っている。暗号資産のイントラデイ・ボリュームには構造があるが、それは異なる時計に固定されているだけだ。

セッション効果。 ボリュームは、それを取引する人々やデスクの起床時間に追随する。BTCやETHのようなメジャー通貨ペアでは、最も厚い帯域は米国午後と欧州夕方が重なる時間帯(おおむね13:00〜21:00 UTC)であり、副次的にアジアの棚が00:00〜08:00 UTC付近にあり、メジャー通貨ペアでは04:00〜06:00 UTC付近に顕著なトラフ(谷)がある。地域的な保有が集中しているアルトコインのペアは、より強く自国のセッションに偏る。

ファンディングのタイムスタンプ。 無期限先物は固定されたUTC時刻でファンディングを決済する。歴史的には8時間ごと、00:00、08:00、16:00 UTCだったが、Binanceなどは2025〜2026年にかけて多くの契約を4時間、さらには1時間の決済サイクルへと移行させている。決済前後の数分は確実にボリュームが跳ね上がる。ベーシス・トレーダーがキャリーポジションを開閉し、ファンディングのスナップショットを狙う者はその境界ぴったりで取引する。これらは*シェルフ(棚)ではなくスパイク(急騰)*である——30分バケットのカーブならそれを捉えられるが、2時間バケットのカーブはそれを平均化して消してしまい、あなたのVWAPは流動性が最も良いまさにその瞬間に過小参加することになる。

週次の季節性。 メジャー通貨ペアの週末ボリュームは、構造的に平日ボリュームを下回り、日曜夜UTC(月曜朝のアジア、加えてBTC先物のCME再開時間)には独自のシグネチャーがある。全曜日をプールした単一の時間帯別カーブは仕様として誤っている。曜日×時間帯のグリッドが必要だ。

スケジュールされたイベント。 Deribitのオプションは08:00 UTC(金曜、四半期クラスターを伴う)に満期を迎え、米国のマクロ指標は12:30/14:00 UTCに発表され、CMEの決済はベーシスフローにとって重要だ。これらはカレンダー特徴量であって季節性ではない——ベースラインのカーブを汚染するのではなく、ダミー変数として扱うべきである。

予測器を凝る前にまず正直であることを保つという精神に基づく、実用的な推定器は以下の通りだ。

import pandas as pd

def volume_curve(trades: pd.DataFrame, bucket="30min") -> pd.Series:
    """day-of-week x time-of-day volume shares from a trades tape."""
    v = trades["qty"].resample(bucket).sum()
    day_total = v.groupby(v.index.date).transform("sum")
    share = v / day_total                      # fraction of that day's volume
    key = [v.index.dayofweek, v.index.time]
    curve = share.groupby(key).median()
    return curve / curve.groupby(level=0).transform("sum")  # renormalize per day

平均ではなく中央値を使うのは、単なる文体上の選択ではない。暗号資産のボリュームは極めて裾の重い分布をしており、一度の連鎖的清算(リクイデーション・カスケード)が10分間で一日のボリュームの15%を占めることもあり、平均ベースのカーブはそれ以降ずっとそのバケットにスパイクを期待し続けてしまう。株式の文献はさらに静的なカーブより先へ進んでいる。Białkowski, Darolles and Le Fol(2008, "Improving VWAP strategies: A dynamic volume approach," Journal of Banking & Finance 32(9), 1709–1722)は、区間ボリュームを市場全体に共通する要素と、ARMA/SETARダイナミクスでモデル化された銘柄固有の要素に分解し、その分解が静的な古典的カーブに対してVWAPのトラッキングリスクを実質的に低減することを示した。暗号資産への翻訳は直接的だ。上位N銘柄のペアから市場全体のカーブを推定し(共通要因は強い——ファンディングの時計とセッションは共有されている)、あなたのペアの乖離をリアルタイムで更新する平均回帰的なイントラデイ過程としてモデル化すればよい。より最近では、Genet(2025, "Deep Learning for VWAP Execution in Crypto Markets: Beyond the Volume Curve," arXiv:2502.13722)が、Binanceのデータ上で学習されたエンドツーエンドのスケジュールが静的カーブVWAPを上回ることを示している——これは、暗号資産においてはボリュームカーブこそがパイプラインの中で最も弱い部分であり、スライシングではないという証拠である。

運用上のまとめはこうだ。全曜日一律の静的カーブは*藁人形(strawman)*VWAPにすぎない。もし比較結果が「暗号資産ではVWAPはTWAPをかろうじて上回る程度」だと出たなら、何かを結論づける前に、そのVWAPに与えられたカーブがファンディングのスパイクや平日/週末の分割を実際に含んでいたかどうかを確認すべきだ。

ファンディングスパイクとセッション構造を伴う暗号資産イントラデイ・ボリュームのヒートマップ

POVの病理:自分の尻尾を追いかけるアルゴリズム

POVの売り文句は適応性である。市場が取引しているときに取引する、という発想だ。3つの異なる病理がそれを蝕んでいる。

1. フィードバックループ。 上述の内生性は、単なる帳簿上の補正にとどまらない。あなたの子注文がボリュームを生み、そのボリュームがあなたの目標を引き上げ、その目標がさらにボリュームを生む。中程度のγ\gammaでは不動点x=γ1γMx = \frac{\gamma}{1-\gamma}Mは安定しているが、あなたの取引後レポートが示す測定された参加率(板全体に占めるγ\gamma)は、あなたがいなかった場合の市場と比較したあなたの実際の足跡(他の全参加者に対してγ1γ\frac{\gamma}{1-\gamma})を過小評価している。さらに悪いことに、二次のフィードバックも存在する。あなたの約定が価格を動かし、その価格変動がモメンタムフローを引き寄せてストップを発動させ、そのフローが板のボリュームを押し上げ、あなたのPOVエンジンは自らが引き起こしたボリュームを「加速すべきサイン」だと読み取ってしまう。これは最適な振る舞いとは正反対だ——インパクトを意識したスケジューラー(妥当なパラメータでのAlmgren–Chriss、およびAlmgren, Thum, Hauptmann and Li(2005, "Direct Estimation of Equity Market Impact," Risk 18(7))のような実証的インパクト推定)は、価格を押した後は減速することを求める。連鎖的清算はこの病理の極限例だ。莫大な板ボリューム、片側に偏ったオーダーブック、そして素朴なPOVはスクイーズの頂点に向かって——まさに約定が印字される場所だからという理由で——最も激しく買い向かう。

2. 出し抜かれる。 POVアルゴリズムはボリュームで発火するオーダーフローマシンであり、発火するものは何であれ餌にできる。大口の参加率買い手の存在を疑う捕食者は、ボリュームを印字して——ルールが許す範囲での自己クロスや、単に小口を積極的に取引するだけでも——POVエンジンを前倒しさせ、その後、割高な価格で流動性を供給することができる。これはBrunnermeier and Pedersen(2005, "Predatory Trading," Journal of Finance 60(4))が論じた一般的メカニズムの小規模な事例である。あなたの将来の需要が過去の振る舞いから予測可能であれば、他者はそれを先回りして取引し、あなたが直面する価格経路は予測していたものより悪くなる。TWAPは時間軸上のスケジュールを漏らすが、POVは反応関数を漏らす。これはより危険だ。敵対者がそれをオンデマンドで呼び出せるからだ。

3. 決して終わらないテール。 POVには時計がない。もしあなたが16:00 UTCまでに500 BTCを買わねばならず、14:00にボリュームが蒸発したら、純粋なPOVはただ座って待つ——設計上、自力で完了することができないのだ。したがって、本番運用されるPOVはすべて最低執行レートのフロアとキャッチアップモードを備えており、そのキャッチアップモードにこそ損失が隠れている。日中は10%の参加率でおとなしく取引し、その後、目標参加率の3倍の実効参加率で薄い引けの窓に残り30%の親注文を叩き込む。取引後の平均値は問題なく見えるが、最後のトランシェの限界コストは容赦がない。もしあなたのPOVレポートがテール部分を別立てで示していないなら、その実際のコストをまだ見ていないということだ。

def pov_child_qty(tape_vol: float, gamma: float, remaining: float,
                  t_left_s: float, min_rate: float) -> float:
    target = gamma / (1.0 - gamma) * tape_vol   # exclude our own prints
    floor = remaining / max(t_left_s, 1.0) * CHILD_INTERVAL_S
    if t_left_s < CATCHUP_HORIZON_S:            # deadline dominates
        floor = max(floor, remaining * CHILD_INTERVAL_S / t_left_s)
    return min(remaining, max(target, floor, min_rate))

このスニペットの2つの細部が実際の仕事をしている。目標値は自分を除いた板ボリュームのγ1γ\frac{\gamma}{1-\gamma}を用いている(自分自身の約定を、反応対象の板から差し引かなければならない——意外なほど多くの実装がこれをやっていない)。そしてデッドラインのフロアは、時間が尽きるにつれてPOVを残量に対するTWAPへと変化させ、少なくともテールのコストを予測可能にする。

POVのフィードバックループ:約定がボリュームを生み、ボリュームが目標を引き上げる

ベンチマーク:VWAPに勝ってもなお損をしうる理由

スケジューラーとベンチマークは別個の選択であり、この二つを混同することが、取引後分析における最もありふれた罪である。2つのベンチマークが主流である。

VWAPベンチマーク——自分の平均約定価格を区間VWAPと比較する——は、Berkowitz, Logue and Noser(1988, "The Total Cost of Transactions on the NYSE," Journal of Finance 43(1))によって導入された。彼らは、機関投資家の執行品質を測る中立的な物差しとして、その日のボリューム加重価格を提案した。これが業界標準になったのは、技術的な理由と同じくらい社会学的な理由による。計算が容易で、説明が容易で、一日を通して単に取引を分散させるだけで見劣りしにくいのだ。

**インプリメンテーション・ショートフォール(アライバル価格)**は、Perold(1988, "The Implementation Shortfall: Paper Versus Reality," Journal of Portfolio Management 14(3), 4–9)に由来する。意思決定がなされた瞬間の価格p0p_0を基準にすべてを測定するというものだ。XXの買い注文で、約定数量XfX_f、平均価格pˉ\bar{p}、期末価格pTp_Tとすると、

IS=(pˉp0)Xfexecution cost  +  (pTp0)(XXf)opportunity cost  +  fees.\mathrm{IS} = \underbrace{(\bar{p} - p_0)\,X_f}_{\text{execution cost}} \;+\; \underbrace{(p_T - p_0)\,(X - X_f)}_{\text{opportunity cost}} \;+\; \text{fees}.

Peroldの論点は、紙の上のポートフォリオと現実のポートフォリオとの乖離こそがまさにこの量であるということだった——そして注意すべきは、これがあなたが執行できなかった分についても課金するという点だ。これはVWAPベンチマークが黙って無視している部分である。この機会コストの項こそが、シグネチャーとなる失敗モードが未約定数量であるPOVにとって、ISを唯一誠実なベンチマークたらしめている。

さて、ここに罠がある。ベンチマークとしてのVWAPには2つの構造的な死角がある。

自己言及的である。 あなた自身の約定がベンチマークの内側にある。もしあなたが区間ボリュームの30%を占めているなら、VWAPのおよそ30%はあなた自身の平均価格であり、VWAPに対して測定されるあなたのスリッページは、あなた自身の参加によって機械的に縮小される——注文が大きくインパクトが強いほど、スコアは良くなる。あなたが唯一のトレーダーである極限では、価格をどれほどひどく動かそうとも、VWAPに対してちょうどゼロの差で「勝つ」ことになる。VWAPスリッページはコストではなく、スケジュールへの追随度を測っているにすぎない。

意思決定時点からの乖離を無視する。 具体的な数字で見てみよう。あなたは決定価格60,000ドルで100 BTCを買うと決める。市場は午後を通して上昇トレンドを描き、区間VWAPは60,320ドルを記録し、あなたは平均60,290ドルで約定する。VWAPレポート:–5 bps、ベンチマークに勝利、デスクには緑のセルが点る。アライバルレポート:あなたは100 BTCに対して決定価格より290ドル多く支払った——+48 bps、29,000ドルのインプリメンテーション・ショートフォール。どちらの数字も正しい。しかし、どちらか一方だけが実際の金額である。そしてインセンティブの歪みはさらに深い。VWAPで評価されるトレーダーは、トレンドが出ている日には減速すべきだということになる(取引を分散させる方がベンチマークへの追随は良くなるからだ)。しかしこれは、価格が自分から逃げていくときにショートフォールを最小化する方法とはまさに正反対である。このベンチマークは単にコストを誤って測定するだけでなく、間違った振る舞いを処方してしまう。Kissell(2013, The Science of Algorithmic Trading and Portfolio Management, Academic Press)はこのベンチマーク選択の問題を詳細に扱っており、その枠組みは内面化する価値がある。ベンチマークは誰のリスクを管理しているかを符号化している。VWAPは執行デスクの「体裁リスク」を管理する。アライバル価格はポートフォリオの損益を管理する。

実務的な解決策はこうだ。戦略はインプリメンテーション・ショートフォールで評価する。VWAPスリッページは診断ツールとして使う(これはドリフトが自分とベンチマークの両方に等しく影響するため、スケジューリングの巧拙とタイミングの運を切り分けるのに役立つ)。そして、区間ボリュームの10%を超える注文を出した者には、参加率を併記せずにVWAPスリッページだけを語らせてはならない。

実験:3つのアルゴリズム、1本のテープ

定義が定まったところで、比較記事が決してやらないことをやってみよう。同一の親注文を、同じリプレイデータ上で3つのスケジューラーに走らせ、形容詞ではなくコストの分布を見るのだ。この検証基盤は、約定シミュレーション:部分約定、キュー位置、そしてあなたのバックテストの約定が嘘である理由で説明したイベント駆動型の約定シミュレーターの上で動く。リプレイされたL2の板情報、子指値注文はキュー位置を獲得し、アグレッシブな子注文は板を食い進み、自分たちの約定がスケジューラーが観測するテープを揺さぶる(これはPOVにとって、フィードバックの節で述べた通り極めて重要である)。

セットアップは以下の通りで、自分のデータで再現できる。

  • 銘柄/データ: BTCUSDT無期限先物、90日分のL2リプレイ(上位20レベル、100ms)+約定テープ。
  • 親注文: アルゴリズムごとに500件、全アルゴリズム共通で同一:ランダムな開始時刻、ホライズンT=4T = 4時間、サイズは直近30日ADVの0.75%(インパクトが実質的に生じるほど大きく、かつ3つとも十分に完了しうる程度に小さい)、買いサイド、決定価格=開始時のミッド価格。
  • TWAP: 48個の子スライス、タイミング/サイズに±30%のジッター。
  • VWAP: 曜日×時間帯の30分バケット中央値カーブ(上述の推定器)、週次で再フィット、イントラデイの更新なし——意図的にシンプルなバージョンとする。
  • POV: 自分を除いた板ボリュームのγ=12%\gamma = 12\%、最低執行レートのフロア、最後の30分はTWAP方式のキャッチアップ。
  • 指標: 決定価格に対するISのbps表示(手数料込み)、VWAPスリッページのbps表示、完了率、そして——誰も報告しない指標——各親注文の最終四分位区間のIS。

われわれの実行結果の代表例(あなた自身の数字は異なるだろうが、その形状は変わらないはずだ)。

Metric (bps vs arrival) TWAP VWAP POV 12%
Mean IS 11.8 9.6 8.9
Median IS 9.1 7.7 6.4
Std of IS 21.5 19.8 26.3
95th percentile IS 46 41 58
Mean VWAP slippage +1.9 +0.4 –0.8
Completion at T 100% 100% 96.4%
Mean IS, final quartile of parent 12.5 10.2 19.7

重要度が増す順に、3つの読み取りポイントを示す。

平均値はPOVを実際より良く見せ、テールがそれを告発する。 POVは平均ISと中央値ISで勝っている——実現した流動性に適応することは、静的カーブに対して数bpsの価値を確かに生む。しかし、そのISの標準偏差と95パーセンタイルは3つの中で最悪であり、完了率も100%ではなく、最終四分位のコストはヘッドライン数値の2倍を超える。決して終わらないテールとキャッチアップモードが、平均値が隠している場所にまさにコストを集中させているのだ。もしあなたの親注文がアルファ主導でハードなホライズンを持つなら、重要なのはそのテールの数字であり、POVの平均優位はそれに見合わない。

VWAPのTWAPに対する優位は、まさにその予測精度そのものである。 VWAP–TWAPのIS差を、実現したボリュームカーブの誤差(予測uiu_iと実現シェアの間のL1L_1距離)で条件付けると、その関係は単調である。予測が最良の三分位の日では、VWAPはTWAPを約4 bps上回る。予測が最悪の三分位では、その差はノイズの範囲内であり、時に逆転する。暗号資産では、最悪の三分位はランダムではない——連鎖的清算の日やニュースの日であり、それらは総じて最もコストの高い日でもある。VWAPが平均を改善しているのは、もともと簡単だった日にアウトパフォームしているからにすぎない。

VWAPスリッページとISはアルゴリズムを異なる順位に並べる。 POVはマイナスの平均VWAPスリッページを記録する——当然だ。まさにそのベンチマークを定義するボリュームに比例して取引しており、その約定はベンチマークの内側に座っているのだから。VWAPのスコアボードでは、POVはここで最良のアルゴリズムだ。アライバルのスコアボードと完了リスクの観点では、それは最も危険なアルゴリズムだ。同じテープ、同じ約定、正反対の結論——これはまさに前節の議論を表として描き直したものにほかならない。

TWAP、VWAP、POVのインプリメンテーション・ショートフォール分布

この検証基盤そのものは、約定シミュレーターの周りに約50行で組まれており、一分一秒の価値がある。なぜなら、それがスケジューラー選択を好みの議論から測定へと変換するからだ。

for parent in sample_parents(n=500, horizon="4h", adv_frac=0.0075):
    for algo in (twap, vwap, pov):
        sim = ReplaySim(l2_stream(parent.window), fees=TAKER_MAKER)
        fills = sim.run(algo.schedule(parent))          # fills perturb the tape
        report(parent, algo, is_bps(fills, parent.p0),
               vwap_slip_bps(fills, sim.tape), fills.completion)

実務における選び方

ここまでの議論から導かれる、正直な選択ルールは以下の通りだ。

  • ハードなデッドラインがあり、アルファ主導の親注文: TWAP、あるいはフロントロードされたAlmgren–Chrissスケジュール。フラットな流動性への課税を払い、完了保証と有界なテールを買う。子注文はランダム化する。
  • ベンチマーク主導のフロー(文字通りVWAPで報酬が決まる場合)、あるいは通常の日の大口サイズ: VWAP——そしてエンジニアリング予算はボリューム予測器に投じる。曜日別グリッド、ファンディングスパイクの解像、Białkowski–Darolles–Le Fol流のイントラデイ動的更新だ。カーブを怠けているVWAPエンジンは、単に手間の増えたTWAPにすぎない。
  • 日和見的で、ハードなデッドラインがなく、流動性に敏感: 控えめなγ\gamma(15%以下)でのPOV。自分を除いたボリュームで計算し、カスケードフィルター(板ボリュームのzスコアが急騰した際は参加率を上限で抑える)と、コストを別途測定するデッドラインのフォールバックを備える。
  • 何を走らせるにせよ: Peroldに従い、アライバルに対するインプリメンテーション・ショートフォールで評価する。VWAPスリッページはスケジューリング技量の診断ツールとして保持し、スコアボードには決して使わない——スコアボードは金額建てでなければならず、それができるのはアライバル価格だけである。

そしてこの実験が繰り返し突きつけてくるメタ・ルールは、自分自身のリプレイデータ上で平均ではなく分布を比較せよ、ということだ。スケジューラーはボリューム予測に対する賭けであり、テールを無視して平均的な払い戻しだけで賭けを評価してはならない——それこそが、市場があなたにPOVを売りつける手口なのだから。

blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

市場の先を行く

ニュースレターを購読して、独占的なAI取引の洞察、市場分析、プラットフォームの更新情報を受け取りましょう。

プライバシーを尊重します。いつでも配信停止可能です。