博客

为什么回测盈利,实盘却亏损?成本、成交与对账检查清单

2026年4月20日 · 更新于 2026年9月5日

English

回测盈利而实盘不理想,可能因为信号过拟合、市场变化、成交假设不现实,也可能因为账算错了。收益差异本身不能告诉你是哪一种原因。 先建立可比口径,再考虑是否需要重新研究信号。

本文聚焦成交与成本核验。下面是合成教学案例,不是 Dnalyaw 账户业绩,也不构成策略盈利证据。旧版把成本解释说得过于绝对;成本应该是需要验证的假设,而不是预设结论。

先比较什么:保留三本独立账

统一标的、决策时间、起始资金、币种口径和评价窗口,然后分开记录:

账本输入能证明什么
冻结决策回放决策当时可获得的信息、冻结策略产生的订单、明确的成交与费用模型在这些假设下,策略原本会尝试做什么
实际成交重建已发生的成交、费用、资金进出和估值价格本地会计计算是否还原了实际发生的事情
券商对账口径对齐后的报表记录还有哪些成交、费用、持仓或资金变化无法解释

把实际成交重新计算一遍,可以验证会计逻辑;但它不是独立的成交预测。决策时并不知道未来成交价,不能把它们填回第一本账,再称为样本外回测。

算例:滑点和价差不能重复扣

假设买入再卖出 100 股,全部使用美元,没有分红、融资费用或资金进出。

项目决策回放实际成交重建
买入价格100.00100.02
卖出价格101.00100.98
毛利润100.0096.00
买卖合计费用2.002.00
净利润98.0094.00

相差的 4 美元来自成交价格,不是手续费。如果已经按真实成交价计算,就不能再机械扣一次通用买卖价差。使用中间价的回放则必须明确如何模拟跨价差、冲击、延迟与无法成交。

还要问清楚“几个基点”的分母:订单名义金额、账户净值,还是成交额?这里 4 美元是入场名义金额 10,000 美元的 4 个基点,不自动等于账户收益差了 4 个基点。

手续费晚到:未知不等于零

IBKR TWS API 的成交文档展示了通过执行 ID 关联成交和佣金报告的机制。该页面属于旧版文档;接入时应对照安装的 SDK 与 IBKR Campus 当前文档确认回调名称和更正行为。

不依赖某个回调名字,账务至少应满足:

  1. 按券商执行标识记录成交。
  2. 费用记录到达或确认确实免费之前,标记为待定,而不是零。
  3. 费用关联到对应执行;重复回调不能重复扣费。
  4. 保留更正信息,重连后补齐缺失记录。
  5. 区分临时收益与已对账收益。

晚到回调本身不会增加经济成本,但会产生暂时计量差异;漏记或错记才可能造成长期误差。同步记账的回测也可以正确,前提是费用完整,且没有假装还原盘中信息可用时点。

运行一个最小核验

下载独立测试脚本,保存为 cost-reconciliation.py,再运行下面的命令。它只用 Python 标准库和合成数据,不连接券商:

python3 cost-reconciliation.py

它检查待定费用、费用先于成交到达、重复记录、显式费用更正、缺失汇率,以及上面的 98 对 94 算例。通过这些测试只证明小型会计案例成立,不代表券商适配器、策略或实盘系统已经验证。

币种与费率:把单位放进数据里

金额必须带币种。汇率需要说明方向、时点与估值政策。例如 7.80 港元费用,按示意汇率 0.128205 美元/港元换算,约为 1.00 美元。汇率缺失时保留未解决状态,不能默认为 1。

成交时点换汇和日终折算可能不同,对账必须统一口径。账户收益还受到资金进出、持仓和估值时点影响。

费率也不能用一个常数覆盖所有市场。IBKR 股票收费表区分固定式与阶梯式等安排。回放应记录收费计划与生效日期,实际费用另行核对;融资、借券、交易所费用和公司行动在适用时也要独立处理。

按顺序定位剩余差异

观察到的现象下一步检查不能直接得出的结论
实际成交重建对不上券商报表漏费、重复、汇率、资金进出、更正、估值时点信号已经衰减
会计一致,但模拟成交不同延迟、可执行报价、订单大小、部分成交、队列假设收盘价一致就说明能成交
信号或订单数量不同时点数据、标的池、交易日历、预热、策略版本缺失决策一定由成本导致
会计与执行检查通过,收益仍不理想选择偏差、抽样不确定性、市场状态变化、信号衰减对账误差小就证明存在 alpha

无法成交的订单不能从报告里消失。应分别展示全部决策与实际成交子集;只展示可成交样本可能改变评价对象。诊断过程中保持策略冻结,不能一边解释差异,一边在同一个窗口反复调参。

可执行的验收清单

  • 每次比较都有策略版本、数据快照和时间窗口。
  • 金额带币种,时间戳带时区。
  • 待定、重复、更正和缺失事件都有测试。
  • 费用与买卖价差没有重复扣除。
  • 无成交、部分成交仍留在报告中。
  • 容差在评价前定义,并与策略规模匹配;不存在可以证明信号有效的通用月度基点阈值。
  • 会计对账、成交校准、统计验证和资金配置分别决策。

继续阅读

理解回测结果的不确定性,可以接着读夏普比率的统计陷阱。从系统角度理解“收到确认”为什么不等于“动作完成”,可以读清仓验证器。一个检查证据是否足够,另一个检查效果是否真的发生。