常见建议是:想要诚实的回测,就去拿 Tick 数据。我认为,对大多数策略来说,这个建议是错的;照着做通常会让回测变得更糟,而不是更好。原因不是 Tick 数据不准确——它是你能拿到的最准确的数据——而是大多数人使用它的方式,用分辨率取代了严谨,而两者并不是一回事。
问题通常是这样出现的:研究员用 1-minute K 线构建策略,得到了一个满意的 Sharpe。然后有人——导师、论坛帖子,或是挥之不去的疑虑——告诉他们,基于 K 线的回测不诚实。于是他们把整套流程都改成 Tick 数据:每一笔成交、每一次报价更新,时间戳精确到微秒。回测变慢了,代码复杂了三倍,而 Sharpe……几乎没变,或者变动的方向谁也解释不了。但他们还是把它交付了,因为 Tick 数据让人觉得更严谨,而「感觉严谨」和真正严谨不是一回事。
Tick 级分辨率究竟能带来什么
Tick 数据会告诉你每笔成交的先后顺序和价格,以及(如果你愿意付费)每次订单簿更新的情况。这些都是真实的信息。你可以据此还原排队位置,估算在某个价位的成交概率,并观察逆向选择——也就是假设成交后,市场是否立刻朝对你不利的方向移动。如果你的持仓周期以秒计,优势以 Tick 的零头计,这些都至关重要。
但我们在 Stratmill 看到的大多数策略——以及零售和半专业研究员实际运行的大多数策略——持仓时间从几分钟到几天不等。在这个时间尺度上,决定回测是否诚实的,并不是你有没有建模某一分钟里的第 40 笔成交,而是你有没有正确建模点差、资金费率、滑点曲线,以及你的限价单在队列里排在其他人的订单后面这一事实。用 Tick 数据,这 4 项都可能建模错误;用 1-minute K 线,这 4 项也都可能建模正确。分辨率和真实性是两个互不相关的维度。
最后这个数字最容易被低估。Tick 级回测不只是「行数更多的同一个回测」。在大多数交易所,成交到达时的顺序可能与采集时间戳不符;成交记录可能事后被修正,可能分散在多个撮合引擎分片中;而且在我们采集过的几家平台上,重连时偶尔会重复或完全丢失数据。要搭建一套真正比优质 K 线流程更准确、而不只是粒度更细的 Tick 数据流程,需要投入大量系统工程。大多数团队并不会做这项工作。他们把回测程序指向供应商提供的 Tick 文件,就算完事。结果是,他们用一套未知且未公开的近似处理(供应商在糟糕情况下采用的 Tick 数据对账逻辑),替换了一套已知且有文档记录的近似处理(OHLCV)。
你买到的噪声
第二项代价与其说在工程上,不如说在统计上。单笔成交价会在买价和卖价之间来回跳动——这就是买卖价反弹,自 1980 年代以来,它一直是市场微观结构文献中广为人知的现象。如果你的信号运作周期短于几秒,Tick 级回测可能会让你把实际只是买卖价反弹的东西当成结构。我见过一位研究员在逐笔成交数据上发现了一个漂亮的均值回归模式,可一聚合成哪怕 5-second K 线,这个模式就消失了,因为它其实只是买卖价反弹。
我认识一位量化研究员,之前做市,现在管理一个小型加密货币投资组合。他这样对我说:「Tick 数据就像放大镜。拿它观察你的优势,没问题;拿它观察噪声,你就会花 6 个月把噪声建模得无比精美。」现在他几乎所有回测都用 1-second 或 1-minute K 线,只有在回答「这个限价单实际上能不能成交」这个具体问题时,才会改用 Tick 数据。这是成交概率问题,不是信号问题。
这种区分才是正确的思路,也是大多数 Tick 数据倡导者略过的一点。诚实地使用 Tick 数据,不是把整个策略都放在 Tick 数据上运行,而是有针对性地使用它,只回答那 1 到 2 个 K 线数据确实无法回答的问题。
批评者说对的时候
话虽如此,确实有些策略离不开 Tick 数据,假装并非如此就言过其实了。如果你做的是类似做市的策略——双边报价、逐 Tick 管理库存、关注自己在某个价位队列中的位置——K 线数据根本无法描述你的问题。这类策略的全部经济性都在分钟之内,而不是跨越分钟。同样,跨交易场所的延迟敏感型统计套利也需要 Tick 数据,因为它要回答的问题就是「哪笔交易先发生」;大额期权做市也一样,成交后几百毫秒内的逆向选择就是整个游戏的关键。在这些情况下,用 K 线回测不是简化,而是范畴错误:你测试的不是策略的低分辨率版本,而是一个恰好和真实策略同名的不同策略。
| 策略周期 | K 线数据会遗漏什么 | 是否需要 Tick 数据? |
|---|---|---|
| 做市 / 基于队列的策略 | 成交概率、逆向选择、队列位置 | 需要——不可或缺 |
| 延迟 / 跨交易场所套利 | 成交顺序、哪个交易场所先动 | 需要 |
| 日内动量、均值回归(分钟至小时) | K 线内的成交时机、点差成本 | 只在回答成交概率问题时需要,信号不需要 |
| 波段 / 多日持仓、方向性期权策略 | 几乎没有重要信息 | 不需要——K 线数据足够,往往也更干净 |
所以我们的观点不是「Tick 数据不好」,而是人们常常借由追求 Tick 数据,回避一个更难回答、也没那么光鲜的问题:我的成本模型对吗?我的成交假设对吗?这个订单实际会成交吗?还是我假设自己能以一个订单簿从未真正提供过的价格成交?只要如实考虑队列位置和点差,这些问题用 1-minute 甚至 1-second K 线也能回答。Tick 数据能让答案更精确,但工程成本会高出好几倍;对于那些额外精度不会改变结论的策略来说,这份投入毫无意义。把额外精力花在策略周期确实需要精度的地方,其他地方就省下来——这比默认选择粒度最细的数据更能有效利用研究团队的时间,因为数据越细并不代表回测就越严谨。
← 全部文章


