跳至主要內容

Slippage(滑價)

定義

滑價(Slippage)是下單時預期的價格與實際成交價之間的差距:買單往往成交在更高的價格、賣單成交在更低的價格。成交量越小、單量越大、行情越急,滑價越大;它是回測績效與實盤績效產生落差的主要原因之一。

公式與計算

滑價率 = (實際成交價 − 預期價格) ÷ 預期價格

手算範例:掛 100 元買進,實際成交在 100.3 元,滑價率 0.3%。買賣兩邊都滑 0.3% 時,一次來回被吃掉約 0.6%;若整個組合每月全數換一輪,一年 12 次來回,光滑價就可能侵蝕約 7 個百分點的報酬(示意估算,實際大小取決於周轉率與標的流動性)。

台股真實實例

  • 量化交易的缺點與風險用一套月頻三因子策略實測:手續費率(含滑價代理)從 0% 拉到 0.5%,2020 至 2026 的年化報酬從 23.9% 掉到 16.0%。月頻策略對成本還有緩衝,換股頻率拉到週頻、日頻時衰減更快。
  • 四因子選股fee_ratio 跑成本情境:預設 0.1425% 時年化 29.45%;拉到 0.3%(手續費加一般滑價的概估)剩 26.41%;0.5%(含較高滑價的保守估)剩 22.64%。
  • 實戰教訓:FinLab 作者回顧自己的策略上線初期,滑價比研發時想像的嚴重,一度吃光利潤甚至倒賠,之後才把滑價當成策略設計必須正面處理的變數。

用 finlab 計算

finlab 的 sim() 預設內扣手續費 0.1425% 與賣出證交稅 0.3%,未內建滑價假設;常見做法是把 fee_ratio 逐步調高,當作滑價的壓力測試:

顯示程式碼
from finlab import data
from finlab.backtest import sim
 
close = data.get("price:收盤價")
 
# 範例策略:60 日動能前 10 名,月頻再平衡
momentum = close / close.shift(60) - 1
position = momentum.is_largest(10)
 
# 把單邊費率逐步調高,模擬不同程度的滑價
for fee in [0.001425, 0.003, 0.005]:
    report = sim(position, resample="M", fee_ratio=fee)
    cagr = report.get_stats()["cagr"]
    print(f"單邊費率 {fee:.4%}:年化 {cagr:.2%}")

策略對費率越敏感(通常代表周轉率越高),實單上線後被滑價侵蝕的風險就越大。

常見陷阱

小型股的滑價被系統性低估。 回測只是對歷史價格記帳,低流動性股票「回測買得到、實單買不到那個價」;許多漂亮回測的超額報酬集中在小型股,資金放大後,光是進出場的滑價就可能把超額報酬吃光。上線前先做流動性過濾,方法見回測的流動性風險分析

滑價跟資金規模綁定。 固定百分比的 fee_ratio 只是近似,真實衝擊成本會隨下單金額上升;散戶用 50 萬跑得動的小型股策略,放大到 5 億可能完全跑不動。上線前先用小額實單比對回測價與實際成交價的差距,再決定要不要放大部位。

相關詞條與延伸閱讀

本頁僅供教學與研究參考,不構成投資建議。