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 線資料仍可用來篩選構想。讓部位規模相對於觀察到的成交量保持在較低水準,說明你採用的市場衝擊曲線,並測試合理幅度的變動是否會抹去回測結果。這是對粗略成交模型站得住腳的用法;稱它為精確的平均成交價就不恰當了。
實務上的目標不是猜出唯一正確的滑價數字,而是找出策略從何時開始失去合理性,再確認資料和委託規模是否讓你離那條界線還有足夠距離。如果沒有,下一個有用的研究工作是取得更好的執行資料,而不是在回測報告裡多加一位小數。
← 所有文章


