2026年九月15日 · 研究

你的回測滑價模型,最好刻意算錯

你的回測滑價模型,最好刻意算錯

最誠實的滑價模型,往往是刻意算錯的。若回測根據粗略的歷史資料,報出單一且精確的執行成本,那就是在做出資料無法支持的主張。

聽起來像是在主張採用粗略的假設,其實恰恰相反:使用一個簡單、能清楚說明的模型,再讓它和自己唱反調。如果策略只在某個剛好有利的成交估計下才有效,那麼不確定性本身就是結果的一部分。

為什麼精確的滑價估計可能誤導人?

假設你有 1 分鐘 OHLCV K 線,並送出 2,000 股的市價單。K 線會告訴你這 1 分鐘內的價格區間與總成交量,卻不會告訴你訂單送達時的買賣價、排在你前面的委託量、成交量在這 1 分鐘內如何分布,或你的訂單會吃掉多少成交量。

你還是可以替滑價填上一個數字。你可以假設以次根 K 線的開盤價加上固定的基點成本成交,也可以按訂單量占 K 線成交量的比例調整成本。這些都是有用的近似值,但不是觀測結果。若報告寫著「滑價:3.2 個基點」,就會讓模型選擇看起來像是實際測量。

舉個完整例子:某策略每筆訂單交易 $20,000,標的是次根 K 線成交量為 $400,000 的股票,參與率為 5%。若模型收取 2 個基點,每筆訂單成本為 $4;若收取 10 個基點,成本則為 $20。來回交易 500 次,兩者成本差距會達 $16,000,尚未計入手續費。若策略回測的毛利為 $18,000,執行假設對結果的影響幾乎和訊號一樣大。

5%訂單量占次根 K 線成交量的比例
$16,000以 2 與 10 個基點計算,來回交易 500 次的成本差距

建立符合資料可觀測範圍的成本區間

先設定符合策略訂單類型與資料解析度的基準。市價單需要考慮價差與衝擊;限價單則需要訂定是否成交的規則。假設價格只要觸及就一定成交,也是另一種執行模型錯誤。

接著,用幾組明確情境執行同一份回測。固定訊號、部位大小與時間戳記,才能把結果變化歸因於執行方式:

情境執行假設檢驗重點
有利基準價差與低衝擊策略有多依賴良好的交易條件?
基準典型價差,並依參與率調整衝擊採用的工作假設會帶來什麼結果?
不利較寬的價差、較高的衝擊,以及延遲成交在合理的困難市況下,策略還有優勢嗎?

除非你用統計方法校準過,否則這些不是信賴區間,而是情境測試。請在報告中說明各情境的意義;若沒有證據支持各情境發生的機率,就不要把它們平均成憑空捏造的「預期滑價」。

讓模型依訂單調整

固定的基點費用可作為小額訂單的合理初步估算,但參與率增加後,這種說法就不太站得住腳。至少要記錄訂單名目金額、可用的 K 線成交量,以及參與率。若策略交易期貨,請記錄合約價值與相關成交量單位;若交易現貨加密貨幣,則要明確說明計價幣別與交易場所。

簡單的衝擊曲線能揭示容量壓力,卻不必假裝自己重現了委託簿。例如,可將成本定義為基準價差費用,再加上隨參與率平方根增加的衝擊項。只有在你有合適的執行資料時,才校準曲線參數;否則就調整參數,看看結果會多快惡化。

也要避免成交模型悄悄替策略解圍。若做多訊號在價格急漲後才出現,就不該只因為 K 線涵蓋了最低價,便假設在最低價成交。採用符合因果順序的成交規則,再對成交價格做壓力測試並加入延遲。若延遲的訂單錯過行情,那就是執行結果,不是該設法抹平的雜訊。

可以問問:價差、衝擊、延遲或參與率達到多少時,淨績效會降到零?這個損益兩平點,往往比單一回測 Sharpe 更能指引行動。

用模擬交易縮小估算區間

模擬交易無法揭示你在實際撮合引擎中會取得的成交結果,但仍能告訴你回測中的訂單流是否符合系統實際做出的決策:訂單何時產生、規模多大,以及在多長時間內仍可執行。

將模擬訂單價格與同一時間的報價比較,或使用模擬系統記錄的其他市場資料。依商品、時段、訂單量與訂單類型追蹤價差。這些觀測結果能縮小特定設定的假設範圍,但不會自動適用於其他交易場所、市場環境或更大規模的訂單。

批評者指出悲觀情境可能流於任意,這點沒錯。刻意嚴苛的模型可能錯殺可行的策略,就像有利情境可能美化脆弱的策略。因此,不要把最嚴苛的情境當成真相。公開假設、呈現敏感度,並蒐集足夠資料,以經校準的估計取代猜測。

回測無法從一根 K 線得知當時的歷史排隊位置,但能顯示當執行條件朝著資料無法排除的不利方向變化時,策略想法是否仍然合理。這比多一位小數更有用。

滑價市場衝擊回測執行模擬交易
← 所有文章