回测明明赚钱,为什么把所有交易成本算进去,利润就快没了?

每笔毛赚 12 个基点,扣完手续费、点差和滑点只剩 1 个。先把这笔账算清,再检查成本有没有漏算或重复扣除。

回测明明赚钱,为什么把所有交易成本算进去,利润就快没了?

回测里每笔赚一点,手续费、点差和滑点一补齐,利润却快没了。常见原因是单笔赚得太薄,每次买卖又要付一遍成本。但也别急着判策略没用:漏算、重复扣费和单位填错,都会改变结果。先算清一笔交易,再顺着账单找出最该检查的地方。

只看最后的收益率,分不清是策略赚得少,还是成本算错了。要回答这个问题,得把“扣了什么、扣了多少、在哪一步扣的”放在一起看。

先算一笔:赚了 12,为什么只剩 1?

假设策略一次完整买卖,扣成本前赚 12 个基点。1 个基点就是 0.01%,所以这里的毛收益是 0.12%。进出场手续费合计 6 个基点,点差和滑点再花掉 5 个,最后只剩 1 个基点,也就是 0.01%。

下面各项都按同一笔交易的名义本金计算。这是一组教学假设,不是某个交易所的标准收费。

一次完整买卖的成本账
项目变化还剩多少
扣成本前的收益+12 个基点12 个基点
进出场手续费合计−6 个基点6 个基点
点差和滑点−5 个基点1 个基点

忙活一圈赚了 12,账单拿走 11。剩下这 1 个基点,成交价格再差一点就可能没了。

手续费、点差和滑点逐层吃掉回测毛优势
毛优势不等于到手利润:成本会按成交次数反复发生。

这笔账解释了利润为什么会变薄。接下来要分清:哪些是交易确实要付的代价,哪些是回测设置出了问题。

利润被哪项成本吃掉,就从哪里查起

先把手续费、点差、滑点和资金费用分开。涉及借币、借券或融资时,也把对应费用列出来。不要只留一个“总成本”,否则知道钱少了,还是不知道该改哪里。

看到的现象优先检查
手续费占掉大部分利润交易次数、进出场双边费率、每笔平均毛利润
点差或滑点影响最大买卖价差、订单类型、下单规模和成交假设
资金费用明显拖累结果合约的收费方向、费率及持仓时间
每项费用都不大,加起来却几乎不剩单笔毛利润是否太薄,以及交易频率是否值得
成本大得不合常理是否重复扣费、百分比与基点是否混用、计费本金是否正确

表里的对应关系是排查方向,不是看到某个现象就能确定原因。比如手续费高,既可能是交易太频繁,也可能只是费率填错了。

同一项成本只算一次。已经反映在成交价格或净收益里的费用,不要再扣。例如,滑点设置已经包含点差,再单独加上同一段点差,就算重了。TradingView 的成交模拟说明解释了手续费与滑点设置,也提到可用滑点设置模拟点差。

流动性好的市场,能把滑点设为零吗?

低频、小规模、使用限价单的策略,滑点影响确实可能较小。但“可能小”跟“就是零”不是一回事。先检查实际成交或盘口数据,也要检查回测是不是把碰到限价的订单都当成了成交。

想拆开看,可以继续读手续费如何吃掉利润和滑点如何改变回测结果,再把它们放回同一笔账。

成本到底吃掉了多少优势?

核对完计算方式,再看每笔平均成本占每笔平均毛利润的多少。两边要来自同一组交易,使用相同币种和成本定义。

成本占毛利润的比例=每笔平均总成本 ÷ 每笔平均毛利润 × 100%。

前面的例子就是 11 ÷ 12 × 100% ≈ 91.7%。也就是说,成本拿走了约 91.7% 的毛利润,只留下约 8.3%。这里的 8.3% 是毛利润剩余的比例,不是账户收益率。

这个比例以平均毛利润大于零为前提。毛利润本来就是零或负数,就先检查策略本身。也别把某个固定百分比当成“合格线”:还有多少余量,得结合更差的成交条件和不同时间段的结果来看。

下一步,做一次只改成本的对照

固定代码、参数和数据版本,保留每笔交易明细。先按当前假设跑一遍,再只改一项成本,比较结果差了多少。这样才能分清变化来自成本,还是来自别的设置。

如果一个合理的小变化就让盈利变成亏损,说明剩下的空间很薄。降低费用假设能让曲线好看,但只有实际能拿到那样的费率和成交价格,这个修改才有意义。

一轮对照能回答当前版本。参数、标的或周期一换,账又得重算。麻烦的就不再是除法,而是记住每一版到底用了什么条件。

把这套排查交给 EdgePilot Research

传统做法是翻回测报告、找成交记录,再对着 Excel 和截图核对。文件一多,很容易把这版的收益和上版的费率放在一起。

EdgePilot Research 把策略研究、历史回测和结果比较放进同一个工作流程。你可以先让 AI 梳理排查方向,再提供报告核对具体数字;继续测试时,保留策略版本和成本假设,方便比较每次改动的影响。

安装并启用 EdgePilot Research 后,直接在 AI 对话里问:

用 EdgePilot 帮我看看,为什么这个回测把所有交易成本算进去后,利润就快没了?先说重点,告诉我最该查什么。
EdgePilot 截图
EdgePilot 截图

EdgePilot 先指出了三个排查重点:每单位成交额能赚多少、哪项成本占得最多,以及成本再增加多少就会把利润吃完。同时检查费率、计费次数和单位,分清是策略赚得太薄,还是设置算错了。

截图中的“净利润 2 万、成本 8 万”是算账示例:假设毛利润和交易不变,当前总成本大于零,总成本再增加 25%,就会吃掉剩下的 2 万利润。这个数字不是通用合格线,也不是你的回测结果。另外,截图中的“总成交金额”要计入进出场成交额,跟前面按一次完整买卖的本金计算基点,分母不同,不能直接混比。

下一步,把毛利润、净利润、总成交额、交易次数和各项费用发进同一段对话,就能从这些排查方向继续核对具体数字。市场冲击如果已包含在滑点里,也记得只算一次。

你提供什么EdgePilot 帮你检查什么接下来怎么做
毛利润、净利润和交易次数每笔成本占掉多少利润判断剩余空间是否值得继续测试
费率、成交假设和费用明细漏算、重复扣费与单位错误先修正影响结果的假设
固定的策略版本和可比较的回测不同成本条件下的结果变化确定下一轮对照怎么跑

选定策略后,沿着详情继续追问

如果你检查的是策略目录里的一个策略,可以先看它的说明、测试区间、收益和回撤。下方是 EdgePilot Live 的策略详情面板,展示的是发布摘要。把摘要和详细回测报告放在一起,才能进一步核对收益里已经算进了哪些成本。

EdgePilot 截图
EdgePilot 截图

看到盈利因子时,也别把它当成到手利润:它是一个比值。你要继续确认的是,这次测试用了什么费用假设,以及这些条件是否适合你准备采用的交易方式。

把解释变成下一次能执行的检查

拿到明细后,先找出影响最大的成本,再核对有没有漏算或算重。最后,用同一套成本定义比较不同参数和时间段。这样每一轮都有明确的问题,而不是盯着曲线反复调到好看为止。

EdgePilot Research 适合完成这段历史研究。想继续检查执行表现时,还可以通过 EdgePilot Live 进入本地模拟盘、交易所模拟盘和实盘工作流程。

手上正好有一套回测?把当前报告和成本假设留下来,用 EdgePilot Research 试着核对一次。就从这句话开始:这笔交易忙完一圈,到底还剩多少?

成本一扣就没什么余地,可以继续查是不是反复调参才挑出这一组赢家。如果利润只在换平台后缩水,再看同一套网格的平台规则和成交条件。

参考资料

本文用于交易研究与软件测试教育,不构成投资建议。示例数字仅用于解释计算方法,历史结果不代表未来表现。