回测与交易日志:为什么两者都需要

回测在任何资金承担风险之前用历史价格数据模拟策略;交易日志记录真实订单下达后实际发生的事。为什么两者是互补而不是可互换的,以及如何结合使用。

回测与交易日志:为什么两者都需要

最近更新:

简而言之。 回测(backtesting)是在没有任何资金承担风险之前,用历史价格数据模拟一个策略;交易日志则记录真实订单下达后实际发生了什么。它们回答的是不同的问题,谁也不能替代谁:回测可以显示一套规则在历史上是否有价值,但只有日志才能显示交易者是否真的能执行它,而真实的滑点、真实的费用和真实的心理都会挡在路上。

交易者往往依赖其中一个而跳过另一个。有人把策略跑一遍回测,看到一条干净的资金曲线,便假定回测已经证明了结论而开始实盘交易。另一些人认真记录每一笔实盘交易,却从未在历史数据上检验过底层想法是否有任何统计价值。这两种习惯都留下了另一种做法本可以发现的盲点。

回测究竟测试什么

回测把一套固定的入场和离场规则应用于历史价格数据,并衡量会发生什么:净盈亏、胜率、回撤以及其他绩效统计数据,而且无需承担一分钱的风险(Corporate Finance Institute,"Backtesting")。这使它运行成本低、迭代快。一个规则想法可以用多年的价格历史进行测试,调整后再测,这一切都发生在任何一笔实盘订单发出之前。像 MetaTrader 的策略测试器(Strategy Tester)这样的零售平台正是为此而存在:针对存储的历史价格数据模拟自动化策略的执行,以便在它接触实盘或模拟账户之前检查其逻辑(MetaQuotes,MQL5 文档,"Testing Trading Strategies")。

回测的价值狭窄而具体:它回答的是,一套明确的规则在选定的一段历史上是否会产生正的结果。它不回答的是,同一位交易者在真实市场条件下是否真的能遵守这些规则。

回测看不到的东西

回测基于干净的历史数据运行,并在每个信号处模拟成交。它无从得知规则与真实订单之间发生了什么:点击买入前半秒的犹豫,因为交易"感觉"不对而被移动的止损,出于紧张而提前平掉的头寸,或者因为希望反弹而被持有太久的头寸。这些在模拟中都不会出现,因为模拟没有神经。

它还往往低估真实的交易成本。回测中的历史成交经常被假定在确切的信号价格,而实盘订单则在市场稍后提供的任何价格成交,外加点差和佣金。流动性好的品种上的滑点可能只有百分之几,在较薄的市场上则可能远超一个百分点,即使是一个小小的滑点假设,一旦被一致地应用于每一笔交易,也可能把回测中的优势变成实盘中的亏损者。

重要提示。 一个没有考虑现实的滑点、佣金和成交的回测,衡量的并不是交易者实盘中真正会体验到的策略。把一条干净的回测曲线当作起始假设,而不是保证。

交易日志转而捕捉什么

交易日志记录实际下达的交易:真实的入场和离场价格、真实的仓位、扣除费用后的真实结果,以及如果日志有记录的话,进入和退出交易时的心理状态。这是唯一能显示按规则书写与按规则执行之间差距的记录。

这个差距往往正是真正的故事所在。一个形态在回测中胜率干净地达到 55%,在实盘中仍然亏钱,不是因为形态错了,而是因为实盘执行每笔交易都持续地因滑点、犹豫或提前一根 K 线离场而吐出几个基点。给每笔交易记录形态标签才使这种比较首先成为可能;没有它,一段实盘亏损和一个失效的想法从内部看是一样的。

各自单独时的盲点

问题 仅回测 仅交易日志
这套规则是否曾有价值? 直接回答,成本低,涵盖多年数据 不先冒真实交易的风险就无法回答
我真的能在实盘中执行这条规则吗? 无法回答;假定完美、无情绪的执行 逐笔直接回答
我的成本(滑点、费用)是否已计入? 只有被刻意建模时才会,而且往往被低估 始终存在,因为它们已经发生
一段亏损期是正常的,还是优势已经消失的信号? 没有可供对照的实盘数据 没有可供对照的历史基线

双卡片对比:回测能告诉交易者什么,与实盘交易日志能告诉交易者什么

实用工作流:先回测,再记录执行差距

这两种做法作为先后顺序而不是二选一效果最好。先回测一个想法,在足够长的一段历史上并涵盖不止一种市场状况,在投入任何资金之前过滤掉从未有价值的规则。如果回测站得住,就以缩小的仓位实盘交易这个想法,并在专用标签下记录每一笔交易,包括入场和离场价格、仓位以及扣除成本后的结果。

在该标签下积累了一定数量的实盘交易之后,把日志记录的胜率和平均结果与同一套规则的回测数字比较。若吻合,在成本和正常波动能解释的范围内,说明该策略经受住了与真实执行的接触。若差距大而持续,则指向真实的问题:回测中被低估的成本,或者在真钱和真实情绪介入后没有按书面规则执行的规则。按固定时间表而不是只在形态感觉失灵时,去复盘该标签的策略拆解,才能让这种比较保持诚实。

对照回测基线解读实盘亏损期

没有回测可供对照,一个有记录的实盘形态上的亏损期很容易被误读。如果历史测试已经显示,连续五六次亏损是该策略回报模式的正常组成部分,那么类似长度的实盘亏损期就不是新信息;它是策略在按预期运行。没有这个基线,同样的连续亏损可能看起来像是想法已经失效的证明,交易者便会放弃从来没有出过问题的形态,或者对悄悄出了问题的形态加倍下注。

这与根据过小的实盘样本判断优势是不同的失败模式,后者是样本量问题。这里的问题是,对这个具体策略的"正常"是什么样子根本没有任何参照点,因为回测步骤被跳过了。期望值在回测和实盘日志中以同样的方式计算,是使这种比较具体而不是一种感觉的数字。

记录什么才能让比较真正奏效

只有当日志记录的细节足以与回测自身的输出对齐时,回测与实盘的比较才有效。只记录盈亏的日志条目,无法与报告胜率、平均结果和回撤的回测进行核对;两组数据需要说同一种语言。

至少,该标签下的每一笔实盘交易都需要形态名称、入场和离场价格、仓位、扣除费用后的结果以及日期,这样双方都可以计算同样的统计数据(该标签的胜率、平均结果、最大回撤)并并排放置。围绕这种细节程度构建的交易日志示例,使这种比较成为五分钟的查询,而不是事后根据经纪商对账单的手工重建。

常见错误

  • 实盘交易一个经过回测的想法,却从不把实盘结果与回测对照。 对照才是全部意义所在;跳过它意味着回测只是一次性练习,而不是持续的检验。
  • 假定回测的成交和成本与实盘状况相符。 不现实的滑点和佣金假设,经常把回测中的优势变成实盘的亏损者。
  • 为一个从未在历史数据上测试过的想法记录实盘交易。 没有基线,就无法区分正常的亏损期和失效的想法。
  • 在亏损期与其自身回测的回撤模式相符时就放弃策略。 在断定优势消失之前,先与回测对照。
  • 把单次回测运行视为永久的证明。 市场状况会变化;一年前测试良好的规则集,需要用新数据定期重新核查,就像实盘优势一样。

本文仅供教育目的,不构成财务或投资建议。使用杠杆交易存在很高的亏损风险。过往业绩,无论来自回测还是实盘记录,都不代表未来结果。

使用 BitStat 交易日志自动将回测预期与真实的、有记录的结果进行对比,而不是追踪两张独立的电子表格并猜测两者之间的差距。

常见问题,一一解答

常见问题

回测与交易日志的主要区别是什么?
回测在任何资金承担风险之前,用历史价格数据模拟一套交易规则,显示这个想法在过去是否有价值。交易日志则记录实盘交易实际发生的情况,包括真实的滑点、费用和执行。回测检验想法;日志检验这个想法能否真正被交易。
我可以跳过回测,只记录实盘交易吗?
可以,但有风险。没有回测,就没有基线来说明该策略的正常亏损期是什么样子,所以实盘的连续亏损很难与真正失效的想法区分开。先回测,即使是简单版本,也能让日志有可对照的东西。
如果我的回测看起来已经盈利,可以跳过日志吗?
不可以。回测无法捕捉真实的滑点、真实的费用或真实的心理,如犹豫、提前离场或被移动的止损。许多回测良好的策略在实盘中亏钱,因为执行悄悄偏离了模拟。记录实盘交易是确认优势能否经受真实交易考验的唯一方法。
回测策略时应该假设多大的滑点?
取决于品种的流动性和所用订单类型,最好尽可能对照经纪商自己的成交数据。作为起点,对每笔模拟交易假设保守的、非零的滑点和佣金,而不是假设在信号价格完美成交,能让回测更接近实盘的实际面貌。
需要多少笔实盘交易之后才能与回测结果比较?
没有适合每个策略的固定数字,但把同一形态标签下不足约 30 笔记录的交易视为太少而无法得出结论,是一个合理的下限。随着数量增长到 100 笔或更多,与回测胜率和平均结果的有意义比较会更加可靠。
实盘连续亏损是否意味着我回测过的策略已经失效?
不一定。如果回测已经显示连续几次亏损是策略回报模式的正常组成部分,那么类似长度的实盘连续亏损可能只是策略在按预期运行。把连续亏损的长度和深度与回测自身的回撤历史对照,才能区分正常波动与真正的问题。
策略实盘交易一段时间后,应该重新运行回测吗?
应该。市场状况会变化,在一段历史上测试良好的规则集不保证永远有效。定期用更近期的数据重新测试,同时复盘同一时期的实盘日志,可以在优势衰退变成长期实盘连续亏损之前发现它。