回测赚 20%,加入真实滑点后还剩多少?

同样的滑点,对低频策略可能只是少赚一点,对高换手策略却可能吃掉整段回测利润。用敏感性测试算清盈亏平衡滑点。

回测赚 20%,加入真实滑点后还剩多少?

先说答案:在下面这组例子里,回测赚 20%,单边滑点到 0.05% 后只剩 10%;到 0.10%,利润直接归零。

回测里的市场特别有礼貌:信号一来,立刻按你看见的价格成交。真实市场没这么讲武德。你看见 100,点下买入,成交可能已经是 100.05;卖出时再来一下。

一次差一点,看着没啥。来回 100 轮以后,那个“小数点误差”能把整段利润啃干净。

滑点和手续费不是一回事

手续费是平台按规则收取的显性费用;滑点是预期成交价与实际成交价之间的差异。点差则是同一时刻最佳买价和最佳卖价之间的距离。

Coinbase 的官方解释指出,滑点是订单实际执行价格与预期价格出现偏差;流动性较低或交易活动较少时,滑点可能更高。Understanding slippage and spread

对买入而言,实际成交价高于预期是不利滑点;对卖出而言,实际成交价低于预期是不利滑点。

说人话:你眼睛看见一个价,手点下去,真正成交又是另一个价。中间差的那一点,就是市场趁你眨眼时顺走的。

八爪鱼拉住看见的价格和实际成交价格,执行间隙不断掉落小损失
滑点,就是看见的价和真正成交的价之间那点距离。

简化估算就是:一笔滑点损失,大约等于成交金额乘以不利滑点率;把每次“就差一点”全加起来,就是总滑点损失。

这个公式适合做第一轮压力测试,但不能完整替代订单簿、部分成交和市场冲击模型。

单边只滑 0.05%,为什么可能毁掉策略?

假设一个教学场景:

  • 初始资金 10,000 USDT;
  • 每次完整买卖的名义金额为 10,000 USDT;
  • 一年完成 100 轮买卖,共 200 次单边成交;
  • 手续费暂时设为 0,只单独观察滑点;
  • 回测毛利润为 2,000 USDT,即初始资金的 20%;
  • 每次成交金额固定,不做复利。
单边滑点 100 轮成本 最后剩下
0.01% 200 USDT 1,800 USDT
0.05% 1,000 USDT 1,000 USDT
0.10% 2,000 USDT 0 USDT
0.20% 4,000 USDT 倒亏 2,000 USDT

看到没有:单边滑点到 0.05%,利润先砍一半;到 0.10%,回测里那 20% 的收益,实盘还没来得及发朋友圈就没了。

单边只滑 0.05%,来回 100 轮,就能吃掉一半毛利润。

一脸困惑的网络反应动图
不是,我回测里的利润去哪儿了?

这不是市场平均,也不是对任何策略的预测。它只说明:成本看的是累计成交额,回测标题看的却常常是初始资金收益率,两者不在一个口径上。

为什么低周期策略特别脆?

因为它们通常同时具备三件事:

  • 单笔预期优势薄;
  • 交易次数多;
  • 更依赖及时成交。

假设策略每轮预期毛优势只有 0.15%,但买入和卖出分别承受 0.05% 不利滑点,滑点已经消耗 0.10%。如果再加入双边手续费,剩余优势可能非常有限。

反过来,低频策略每笔目标幅度更大,滑点占比可能较低。但这不是说低频一定更好;持仓风险、跳空、资金占用和错过机会都可能更高。

回测应该填一个固定滑点吗?

固定滑点比完全不填好,但只填一个数字仍然很容易自欺欺人。

滑点可能受以下因素影响:

  • 交易对流动性;
  • 下单金额相对于盘口深度的大小;
  • 市价单或限价单;
  • 波动率和新闻时段;
  • 信号到订单、订单到成交的延迟;
  • 部分成交与撤单重下;
  • 多个用户或策略是否同时执行相同信号。

一个 Reddit 用户描述过典型落差:回测假设按最后成交价立即成交,实盘却受到买卖价差、延迟和高波动期 API 变慢影响;在其个人案例中,加入更高滑点假设后,回测结果显著下降。这只能作为用户痛点样本,不能代表普遍幅度。Reddit discussion

更诚实的做法:跑一条滑点压力曲线

与其争论“滑点应该填多少”,不如同时测试 0、0.01%、0.03%、0.05%、0.10% 和 0.20% 多档情景。

然后观察:

  1. 净收益何时降到零;
  2. 最大回撤何时超过容忍范围;
  3. 哪类交易贡献了最多滑点损失;
  4. 减少交易频率后,收益和成本分别下降多少;
  5. 策略是否只在“几乎零滑点”时才成立。

最后一条尤其重要。如果一个策略只有在完美成交条件下才赚钱,它未必是策略,可能只是回测软件给你发的一张体验券。

最强反对意见:滑点也可能对你有利

是的,实际成交有时可能优于预期价格,尤其是使用限价单或市场朝有利方向变化时。因此把每笔成交都设置为同样的不利滑点可能过于悲观。

但另一面是,简单平均也可能掩盖“坏时候滑得更多”:市场快速波动、流动性下降时,策略最需要执行,成交偏差却可能最大。

合理做法不是永远假设最坏,也不是默认零滑点,而是:

  • 用实盘或模拟成交日志估计分布;
  • 按市场状态、订单类型和交易规模分组;
  • 同时报告中性与不利情景;
  • 保留极端压力测试。
发现利润消失后的崩溃反应动图
一次差一点,最后真的一点不剩。

怎样计算自己的滑点?

至少记录:

  • 信号时间;
  • 下单时间;
  • 预期价格;
  • 实际平均成交价;
  • 买卖方向;
  • 成交数量;
  • 首次成交和完全成交时间;
  • 当时点差与可用盘口深度。

买入的不利滑点率,可以近似看成“实际成交价减去预期价格,再除以预期价格”。

卖出方向相反。之后按成交金额加权,而不是把一笔 50 USDT 小单和一笔 50,000 USDT 大单简单平均。

回测赚的钱,实盘还能剩多少?

真正危险的不是滑点高,而是你不知道它会吃掉多少利润。

EdgePilot 可以把回测结果与真实成交数据放在一起,直接算出:利润被吃掉了多少、损失集中在哪些交易,以及滑点升到多少时策略会开始亏钱。

如果回测赚 20%,实盘只剩 8%,你需要的不是一句“平均滑点 0.06%”,而是一个明确结论:

六成利润消失在低流动性时段和高频小单里。避开这些时段、减少无效交易,否则这套策略不适合直接上线。

八爪鱼把回测百分之二十经过真实成交筛网,最终只留下实盘百分之八
回测的 20% 经过真实成交,损失主要漏进低流动性和高频小单,最后只剩 8%。

再测试 0.02%、0.05% 和 0.10% 三档滑点,就能提前找到策略的盈亏临界点。别等实盘把答案算给你,那时交的是真钱。

以上为 EdgePilot 规划中的实盘差距诊断能力,具体以上线版本为准。

FAQ

滑点是不是交易所偷偷收费?

不是同一概念。手续费是明确收费规则;滑点是预期价格与实际成交价格的偏差,可能来自波动、流动性、订单规模和执行延迟。

限价单可以完全避免滑点吗?

限价单可以限制最差成交价格,但可能不成交、部分成交或错过行情,不能免费解决所有执行问题。

回测里应该设置多少滑点?

没有适用于所有策略的固定答案。应根据交易对、订单规模、订单类型和真实成交记录设置多档情景。

手续费和滑点能不能直接加在一起?

可以在统一成本模型中分别计算后汇总,但要确认点差、成交价和平台费用没有被重复计算。

最后一句

别再问“回测赚了多少”,先问:滑点填到多少,这条曲线会死?

今天就跑 0、0.01%、0.05%、0.10% 四档。要是加到 0.05% 就腰斩,这个策略下一步不是上线,而是继续审。

本文由 EdgePilot 内容团队制作,用于研究与教育,不构成投资建议。示例为静态情景,不代表真实账户、市场平均或未来表现。

来源