3. 滑点构成要素:固定成本、显性滑点、隐性滑点
做量化交易,最怕的不是亏钱,而是亏了钱还不知道亏在哪。
我个人习惯把滑点拆成三块来看:固定成本、显性滑点、隐性滑点。这三块加在一起,才是你实际成交价和理论价之间的真实差距。
3.1 固定成本:佣金与税费
这部分最简单,也最容易被忽略。说白了,就是交易所和券商收的「过路费」。
- 佣金:按成交金额的万分之几收取。我见过不少新手,策略回测年化20%,一算佣金占比3%,直接变成17%。
- 印花税:A股卖出时收千分之一,这个没法省。
- 过户费、经手费:小钱,但积少成多。
关键点:固定成本是「确定」的,下单前就能算清楚。我建议在回测框架里直接把这部分写死,别等实盘了才后悔。
避坑指南:我曾经遇到一个团队,回测时佣金设的是万分之二,实盘券商给的是万分之二点五。就这0.5‱的差距,高频策略一年下来少赚了6位数。
3.2 显性滑点:买卖价差
买卖价差,就是盘口上买一和卖一之间的差价。
你想想看,如果你要市价买入,成交价就是卖一价;如果你要卖出,成交价就是买一价。这一来一回,中间的差价就是你的成本。
| 市场流动性 | 典型价差(bps) | 影响 |
|---|---|---|
| 高流动性(如沪深300成分股) | 0.5 - 2 bps | 几乎可以忽略 |
| 中等流动性 | 5 - 15 bps | 需要纳入模型 |
| 低流动性(小盘股、ETF) | 20 - 100+ bps | 必须重点考虑 |
我在做ETF套利时,最怕的就是流动性差的品种。盘口价差50bps,你策略逻辑再漂亮,一进去先亏半个点。
注意:价差不是固定的。盘中波动大时,价差会瞬间拉宽。我建议用「加权平均价差」来估算,别只看静态数据。
3.3 隐性滑点:市场冲击、延迟成本、机会成本
这部分才是真正的「隐形杀手」。你看不见它,但它一直在吞噬你的收益。
3.3.1 市场冲击
你下单的量太大,直接把价格打上去了。这就是市场冲击。
举个例子:你想买10万股某小盘股,盘口卖一只有5000股。你市价一砸,卖一吃完了,卖二、卖三、卖四全被你推高。最终成交均价远高于你预期的价格。
核心公式:市场冲击 ≈ (订单量 / 市场深度) × 价格弹性系数
我个人习惯用「Almgren-Chriss模型」来量化冲击成本。简单说,就是把订单拆成小单,用时间换空间。
# 一个简化的冲击成本估算函数
def estimate_impact(volume, avg_volume, spread):
# volume: 你的订单量
# avg_volume: 该股票日均成交量
# spread: 当前买卖价差
participation_rate = volume / avg_volume
impact_bps = 0.5 * spread + 10 * participation_rate
return impact_bps
3.3.2 延迟成本
从你决定下单,到订单真正到达交易所,这中间有延迟。
为什么会这样?因为网络传输、系统处理、交易所撮合都需要时间。这几十毫秒的延迟,在行情剧烈波动时,足以让你的成交价偏离预期。
我记得有一次做股指期货的日内策略,服务器在深圳,交易所数据源在上海。网络延迟30ms,结果每次下单都比预期慢了半拍,一天下来多亏了0.2%。
建议:如果做高频,尽量把服务器托管在交易所机房。如果做中低频,延迟成本可以忽略,但别完全不管。
3.3.3 机会成本
这个最隐蔽。你因为担心冲击成本,把订单拆得很碎,慢慢挂单。结果行情突然起飞,你只成交了一半,另一半没买到。
没成交的那部分,就是机会成本。
说白了,机会成本 = 未成交部分 × (最终价格 - 你的目标价格)。
平衡点:冲击成本和机会成本是一对矛盾。你越想减少冲击,机会成本就越高;你越想快速成交,冲击成本就越大。我建议用「最优执行算法」来动态平衡这两者。
3.4 知识体系总览
下面这张图,是我自己整理滑点归因时画的。它把三大类滑点以及它们之间的关系,一次性讲清楚。
嗯,这张图基本把滑点的骨架搭出来了。你每次做交易归因时,都可以拿这张图对照着看,到底是哪一块在拖后腿。
总结一句话:固定成本是明牌,显性滑点可以算,隐性滑点才是真正考验交易算法的地方。我个人做归因时,会把隐性滑点拆成三个子项分别统计,这样才知道优化方向在哪。
公众号:蓝海数据掘金营,微信deep3321