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 知识体系总览

下面这张图,是我自己整理滑点归因时画的。它把三大类滑点以及它们之间的关系,一次性讲清楚。

滑点构成要素全景图 固定成本 显性滑点 隐性滑点 佣金 印花税 过户费 / 经手费 买卖价差(买一 vs 卖一) 盘口深度影响 市场冲击 延迟成本 机会成本 核心关系 总滑点 = 固定成本 + 显性滑点 + 隐性滑点 隐性滑点中,冲击成本与机会成本互为矛盾

嗯,这张图基本把滑点的骨架搭出来了。你每次做交易归因时,都可以拿这张图对照着看,到底是哪一块在拖后腿。

总结一句话:固定成本是明牌,显性滑点可以算,隐性滑点才是真正考验交易算法的地方。我个人做归因时,会把隐性滑点拆成三个子项分别统计,这样才知道优化方向在哪。


公众号:蓝海数据掘金营,微信deep3321