回測中的交易成本建模完整指南
交易成本是量化回測中最容易被忽視也最具破壞性的因素之一。一個在忽略交易成本的回測中表現出色的策略,在考慮真實成本後可能完全虧損。
理解並正確建模交易成本,是每一個量化策略開發者必須掌握的基礎技能。
交易成本的四大組成部分
1. 佣金(Commission)
佣金是支付给券商的交易費用:
- 固定佣金:每筆交易固定費用(如 $1/筆)
- 比例佣金:按交易金額百分比計算(如 0.03%)
- 階梯式佣金:根據交易金額分段計費
實際參考:
| 券商類型 | 美股佣金 | 港股佣金 |
|---|---|---|
| 線上經紀商 | $0-1/筆 | 0.003% + $1.5 最低 |
| 傳統經紀商 | $1-10/筆 | 0.03% |
| 機構通道 | $0.001/股 | 0.002% |
2. 滑點(Slippage)
滑點是訂單執行價格與預期價格之間的差異:
- 正向滑點:實際成交價格優於預期(少見)
- 負向滑點:實際成交價格差於預期(常見)
滑點的決定因素:
| 因素 | 影響方向 | 說明 |
|---|---|---|
| 訂單大小 | 越大滑點越大 | 大單難以在不推動價格的情況下成交 |
| 流動性 | 越低滑點越大 | 成交量低的股票滑點更顯著 |
| 市場波動 | 越高滑點越大 | 波動期間價格變化更快 |
| 執行時間 | 越短滑點越大 | 急單通常需要接受更差的價格 |
估算方法:
預估滑點 = 當日平均價差 × (訂單大小 / 日均成交量) × 放大係數
放大係數:通常取 1.5-3.0,考慮市場波動和執行壓力
3. 買賣價差(Bid-Ask Spread)
買賣價差是買入價(ask)與賣出價(bid)之間的差額:
- 隱含成本:即使沒有滑點,您也在開倉時立即損失一個價差
- 動態變化:價差隨市場條件變化(波動增大時價差擴大)
實際影響:
開倉成本:買入價(ask)
平倉收入:賣出價(bid)
每次完整交易的隱含成本:ask - bid = 買賣價差
4. 稅項(Taxes)
稅項因市場和交易類型而異:
- 資本利得稅:美股短線利得稅最高 37%,長線利得稅最高 20%
- 印花稅:部分市場收取(如香港 0.13%)
- 交易費:交易所和監管機構收取的費用
完整的交易成本模型
模型公式
單筆交易總成本 = 佣金 + 滑點 + 買賣價差 + 稅項
其中:
- 佣金 = 交易金額 × 佣金率
- 滑點 = 訂單大小 × 預估滑點價格
- 買賣價差 = 買賣價差(以金額計)
- 稅項 = 利得金額 × 稅率(僅在盈利時)
實例計算
假設您以 $100 買入 1,000 股 A 公司:
| 成本項目 | 計算 | 金額 |
|---|---|---|
| 佣金 | 1,000 × $0.005 | $5 |
| 滑點 | 1,000 × $0.02(0.02% 滑點) | $20 |
| 買賣價差 | 1,000 × $0.01($0.01 價差) | $10 |
| 買入總成本 | $100,035 |
假設以 $110 賣出 1,000 股:
| 成本項目 | 計算 | 金額 |
|---|---|---|
| 佣金 | 1,000 × $0.005 | $5 |
| 滑點 | 1,000 × $0.02 | $20 |
| 買賣價差 | 1,000 × $0.01 | $10 |
| 稅項 | ($110,000 - $100,000) × 15%(長線利得稅) | $1,500 |
| 賣出淨收入 | $110,000 - $5 - $20 - $10 - $1,500 | $108,465 |
實際利潤:$108,465 - $100,035 = $8,430 忽略成本的利潤:$110,000 - $100,000 = $10,000 成本侵蝕:$10,000 - $8,430 = $1,570(15.7%)
不同策略類型的成本敏感性
高頻策略(日內交易)
- 交易頻率:每日多筆
- 成本敏感度:極高
- 關鍵成本:佣金 + 滑點
- 影響:交易成本可能佔總利潤 50-80%
中頻策略(週線級)
- 交易頻率:每週 1-3 筆
- 成本敏感度:中等
- 關鍵成本:滑點 + 價差
- 影響:交易成本可能佔總利潤 15-30%
低頻策略(月線級)
- 交易頻率:每月 1-2 筆
- 成本敏感度:較低
- 關鍵成本:稅項(長期累積)
- 影響:交易成本可能佔總利潤 5-15%
交易成本建模的常見錯誤
錯誤一:使用固定成本
假設每筆交易成本固定為 $5,忽略了訂單大小和流動性的影響。
正確做法:根據交易金額百分比和訂單大小動態計算成本。
錯誤二:忽略稅項
許多回測完全忽略稅項,或假設統一稅率。
正確做法:根據交易持有期和地區稅法區分短線和長線利得稅。
錯誤三:使用狹義的滑點估計
僅使用歷史平均價差估算滑點,忽略了流動性變化。
正確做法:使用動態滑點模型,考慮訂單大小、流動性、市場波動。
交易成本建模在 Algo Lab 的實踐
Algo Lab 的每一個策略都使用完整的交易成本模型:
- 佣金:採用 $0.005/股,最低 $1
- 滑點:根據股票流動性分級(大盤股 0.01%,中盤股 0.03%,小盤股 0.05%)
- 買賣價差:使用歷史平均價差的 1.5 倍
- 稅項:短線利得稅 37%,長線利得稅 15%
- 流動性過濾:僅交易日均成交量 > 10 萬股的股票
結論:成本是策略的隱形敵人
交易成本就像白蟻——單獨看似乎微不足道,但長期累積會嚴重破壞策略的結構。只有在嚴謹的交易成本建模下,回測結果才能反映策略的真實潛力。
Algo Lab 的所有策略都經過完整的交易成本建模驗證,確保您在實盤中面對的是扣除所有成本後仍然有效的策略邏輯。
深入了解 Algo Lab 策略驗證 | 深入了解 AI 量化選股 | [加入 VIP 獲取每日量化信號]
常見問題
交易成本對回測結果的影響有多大?
對於高頻交易策略,交易成本可能侵蝕 50% 以上的利潤。對於中低頻策略(如週線或月線級別),影響通常在 10-30% 之間。但即使是中低頻策略,如果忽略交易成本,也可能將原本盈利的策略變成虧損策略。
回測中的交易成本應該如何估算?
完整的交易成本模型應該包括:(1) 佣金:根據實際券商費率;(2) 滑點:根據股票的流動性和訂單大小估算;(3) 買賣價差:使用歷史價差數據;(4) 稅項:根據交易類型和地區稅法。總交易成本 = 佣金 + 滑點 + 價差 + 稅項。
如果我的策略交易頻率很低,需要詳細的交易成本建模嗎?
即使是低頻策略,也需要基本的交易成本建模。關鍵在於使用合理的假設:對於每月交易 1-2 次的策略,每筆交易的成本通常在 0.1-0.3% 之間。雖然相對於高頻策略較小,但長期累積仍會顯著影響總收益。