2026年八月25日 · 研究

回測有 100 筆交易,為什麼平均成交價還是只能猜?

回測有 100 筆交易,為什麼平均成交價還是只能猜?

100 筆交易、0.04% taker 手續費、0.02% 滑價假設。這些數字能讓回測看起來有憑有據,但最令人意外的是最後一個:單一滑價率幾乎無法說明你的委託是否真的能以那些價格成交。

滑價取決於你交易什麼、何時交易,以及委託規模相較於當下可用流動性有多大。以 K 線為基礎的回測,通常只能粗略掌握前兩項,第三項則完全無從得知。若把平均成交價當成事實,策略的執行績效可能會被高估,彷彿它取得了實際上從未實現的結果。

為什麼 OHLCV 無法告訴我平均成交價?

一根 K 線記錄的是一段時間內的價格區間與總成交量,卻沒有說明成交量如何分布在各個價格、最佳買價與賣價上有多少掛單,也無法告訴你委託是在觸及這根 K 線最低價的成交發生前還是之後送達。最低價若只由一筆小額交易打出,或是在穩定成交量下形成,兩者的 OHLC 數值都一樣。

想像一根 1-minute K 線的成交量為 $200,000,而你要以市價買進 $50,000。這筆委託占該 K 線成交量的 25%。這不代表它會讓市場價格變動 25%,也不代表它能以該 K 線的開盤價成交。但這表示相對於該 K 線的成交量,委託規模已大到足以讓人懷疑零市場衝擊的假設。若同一筆委託只占成交量的 0.2%,疑慮會小一些;但光看成交量,仍無法得知委託簿深度或流動性補充速度。

因此,「滑價是 2 個基點」是模型設定,不是某個交易標的的固有特性。它可以作為實用的基準值,卻不能當成放諸四海皆準的答案。

如何用 K 線資料估算市場衝擊?

先從資料足以支持的尺度著手。對每筆委託計算參與率:委託名目金額除以該 K 線的成交名目金額。接著觀察策略在不同參與率區間的結果如何變化。以下是刻意簡化的示例;假設的衝擊值是壓力測試用的輸入值,並非對特定交易場所執行狀況的估算。

委託名目金額/K 線成交名目金額單邊衝擊示例該思考什麼
0.2%1 bp價差和 taker 手續費是否已經比這個數值高?
2%5 bp把價差拉大、成交放慢後,策略的優勢還在嗎?
20%25 bp參與率本身會不會改變價格走勢?

1 個基點是 0.01%。若策略在買進和賣出方向各周轉 $100,000,雙邊各承受 5 bp 的衝擊,來回成本約為 $100,尚未計入手續費。這筆算術很簡單,但要判斷 5 bp 是否合理,需要更多證據。若你的訊號恰好在成交量暴增時交易,以整根 K 線的成交量作為分母,甚至可能讓參與率看起來比委託實際送達那幾分鐘的狀況安全。

滑價壓力測試應該包含什麼?

不要把執行的不確定性藏在整個投資組合的單一平均值裡。要清楚呈現會影響結果的各個面向:

至少執行基準情境和較嚴苛的情境。例如,把假設的價差和市場衝擊都加倍,再檢視哪些交易和時段造成結果變化。如果策略只有在最平靜的成交條件下才有效,這就是一項研究發現。最好在進入模擬交易前就先知道。

將手續費、價差和市場衝擊分開列示。手續費依帳戶費率表計算;價差和市場衝擊則取決於執行方式。把它們合在一起,會看不出是哪個假設左右了結果。

什麼時候需要委託簿資料?

如果策略優勢與價差相當、交易頻繁,或仰賴短暫存在的流動性,就要使用逐筆成交與報價資料。如果隊列位置、部分成交或委託簿流動性耗盡,會決定訊號能否執行,就要使用深度快照或事件層級的委託簿資料。即使有這些資料,歷史重播仍無法完美重現你自己的市場衝擊;當時觀察到的流動性並未包含你的假設委託。

對較慢的策略來說,K 線資料仍可用來篩選構想。讓部位規模相對於觀察到的成交量保持在較低水準,說明你採用的市場衝擊曲線,並測試合理幅度的變動是否會抹去回測結果。這是對粗略成交模型站得住腳的用法;稱它為精確的平均成交價就不恰當了。

實務上的目標不是猜出唯一正確的滑價數字,而是找出策略從何時開始失去合理性,再確認資料和委託規模是否讓你離那條界線還有足夠距離。如果沒有,下一個有用的研究工作是取得更好的執行資料,而不是在回測報告裡多加一位小數。

市場衝擊滑價執行回測流動性
← 所有文章