滑点
滑点(slippage)是一笔交易预期成交价与实际成交价之间的差额。在期货里通常按跳动点计量,它是一项回测必须显式建模的成本,因为历史数据里从来不会记录它。
Senzoukria · 术语表 · 更新于 2026 年 9 月
滑点从哪里来
市价单到达时,会去吃掉盘口另一侧当时挂着的任何量。如果最优价上可见的挂单量小于你的委托量,剩下的部分就会在更差的价位成交。如果从做出决定到抵达交易所这段时间里价格动了,整张单子都会按新价成交。止损单触发后会转成市价单,所以在行情最快的时候滑得最厉害——偏偏那正是止损最要紧的时候。
- 盘口薄:最优价上挂着的量不够这张单子吃。
- 延迟:委托在传输途中市场已经走了。
- 止损触发:单子恰好在活跃度爆发的那一刻进入市场。
- 限价单不会在价格上滑,但可能成交不了,那是另一种成本。
在回测里给滑点建模
历史 K 线、甚至历史逐笔数据,呈现的都是曾经成交过的价格,而不是一张新委托当时能拿到的价格。基于 K 线、在信号 K 线收盘价成交的回测,等于假设滑点为零;逐笔回放按下一笔成交价成交,仍然默认你的单子排在队列最前面。通常的修正办法是按单边加一个以跳动点计的固定惩罚,方向永远不利于这笔交易。盘口回放可以做得更好,因为它能沿着历史深度逐层吃单,但前提是该时段确实存在深度历史。
- 滑点永远算在交易的不利方向上,绝不算成好处。
- 止损的滑点假设要比平静条件下的挂单入场更大。
- 把假设调得更宽再跑一遍,看结果在哪一点上会变号。
在 Senzoukria 里
桌面端回测面板有一个「交易成本」区块,含三个输入项:「每点价值($)」「每手往返手续费($)」和「滑点(跳动点)」。面板提示写明:手续费对每笔交易都计,滑点始终惩罚入场;把它们设成零,只要策略交易频繁,一条亏损策略就会变成盈利策略——面板把这称为回测撒谎的第一种方式。交易日志的时段视图不扣佣金,因为模拟账户本身不收,这一点也写在注释里;因此这两个视图在成本上并不能直接比较。
常见错误
- 用零滑点做测试,然后去实盘跑一条优势还不到一个跳动点的策略。
- 对平静时段的入场和新闻期间被打掉的止损用同一个滑点数值。
- 以为改用限价单就消除了这项成本;它只是把价格滑点换成了错过成交。
- 在跳动点大小不同的品种之间用点数来衡量滑点。
相关内容
其他语言版本
常见问题
- 期货回测该假设几个跳动点的滑点?
- 没有通用数字;它取决于合约、时段、委托类型和手数。一个合理的做法是:在日志里记录实际成交价与意图价格的差距,用观测到的分布作为依据,然后再把假设调宽跑一遍,看这条策略还剩多少余量。
- 限价单会有滑点吗?
- 限价单不可能以差于限价的价格成交,所以它在价格上不会滑。但它可能完全不成交,或者只成交一部分——当价格只是触及这个价位而没有穿过去的时候。这种错过成交的成本是真实的,只不过它体现为「少了几笔交易」,而不是价格差。
- Senzoukria 为什么总是把滑点算在入场上?
- 因为回测无法知道某张委托本来会以有利价格成交,任何对称的模型都会时不时地把一份策略从未拥有过的优势记在它头上。惩罚入场是一种保守的约定,它让测试不去奉承这条规则。