4. 价格序列构建差异
回测的第一性原理是“用历史价格序列重放市场”。但同一只股票、同一段时间,用分钟K线构建的价格序列与用逐笔成交构建的价格序列,往往不是同一条曲线。差异的根源不在策略逻辑,而在价格序列的生成方式:分钟线是对区间内成交的聚合采样,逐笔是每一笔成交的原始记录。理解这两类序列如何生成、在哪些位置发生偏离,才能判断回测信号是否可信。
一、分钟价格序列的生成方式
分钟K线由交易所行情或数据商按固定时间窗口聚合而成。以1分钟线为例,每根K线包含开盘价、最高价、最低价、收盘价、成交量和成交额。其生成规则可概括为:
- 开盘价:该分钟内第一笔成交的价格(部分数据商取该分钟首个快照的买一/卖一中间价,需确认口径)。
- 收盘价:该分钟内最后一笔成交的价格。
- 最高/最低价:该分钟内所有成交价的极值。
- 成交量:该分钟内所有成交数量之和。
关键点在于:分钟线只保留四个价格采样点,区间内的价格路径被压缩。若一分钟内价格先冲高再回落,K线只留下最高价和收盘价,中间的成交顺序、成交笔数、每笔成交量全部丢失。对于以收盘价撮合的策略,信号只依赖每分钟最后一个价格;对于以开盘价撮合的策略,信号依赖每分钟第一个价格。两者都不是“连续价格”,而是离散采样。
二、逐笔成交序列的生成方式
逐笔成交数据记录每一笔撮合的明细,通常包含成交时间(精确到毫秒或微秒)、成交价格、成交数量、买卖方向(主动买/主动卖,部分数据源提供)。逐笔序列的“价格”不是聚合值,而是事件流:每一笔成交都是一个独立的价格点,时间间隔不均匀,成交量大小不一。
用逐笔数据构建价格序列时,需要先做一次“重采样”决策:是按逐笔事件逐点推进,还是按固定时间窗口(如每秒、每5秒)取最后一个成交价。前者保留全部路径,后者又回到采样逻辑。因此,逐笔数据的价值不在于“价格更多”,而在于保留了成交顺序和每笔量级,这使得成交量加权、大单过滤、盘口冲击等逻辑成为可能。
三、差异如何传导到回测信号
价格序列的生成方式差异,会通过三条路径影响回测信号:
路径一:信号触发时点不同。以“价格突破前高”为例,逐笔序列中价格可能在某一笔成交瞬间突破,信号立即触发;分钟序列中,只有该分钟收盘价突破才算数,若价格在分钟内突破后回落,分钟收盘价未突破,信号不触发。这会导致逐笔回测的信号数量多于分钟回测,且触发时间更早。
路径二:成交价与信号价错位。分钟回测常用“当根K线收盘价”作为信号价,下一根开盘价作为成交价。但真实市场中,信号触发的那一笔成交价与分钟收盘价可能相差数个价位。逐笔回测可以用触发后的下一笔成交价撮合,更接近真实滑点。两者在震荡行情中的成交价差异会累积成可观的收益偏差。
路径三:成交量信息粒度不同。分钟线只给出区间总成交量,无法区分大单与小单。逐笔数据可以按单笔成交量过滤,例如只统计单笔≥500手的成交作为“主力信号”。分钟回测无法复现这类逻辑,信号定义本身就被降级。
四、实操中的对齐与验证
若手头同时有分钟数据和逐笔数据,建议做一次“同区间对齐检查”,确认两条序列的偏差量级。具体做法:取同一交易日同一分钟窗口,从逐笔数据中提取该分钟的首笔成交价、末笔成交价、最高价、最低价、总成交量,与分钟K线的开/高/低/收/量逐项比对。正常情况下开盘价与首笔成交价应一致(口径相同的前提下),收盘价与末笔成交价应一致,最高/最低价应一致,成交量应一致。若出现系统性偏差,通常是数据商聚合口径不同(如是否包含集合竞价、是否剔除撤单)所致,需在回测前统一口径。
对于信号层面的验证,可以构造一个简单对照:用同一策略分别跑分钟收盘价序列和逐笔重采样序列(例如每5秒取最后成交价),比较信号数量、信号时间分布和单笔收益分布。若逐笔序列的信号数量显著多于分钟序列,说明策略对价格路径敏感,分钟回测可能低估交易频率;若两者信号数量接近但收益差异大,则问题更可能出在成交价假设上。
五、构建价格序列时的口径清单
无论使用哪类数据,构建价格序列前应确认以下口径,避免回测结果不可复现:
| 口径项 | 分钟线需确认 | 逐笔需确认 |
|---|---|---|
| 时间戳含义 | K线起始时间还是结束时间 | 成交时间是否含毫秒、是否有时区偏移 |
| 集合竞价处理 | 开盘集合竞价是否并入第一根K线 | 集合竞价成交是否单独标记 |
| 收盘价定义 | 最后一笔成交价还是收盘集合竞价价 | 收盘集合竞价是否作为独立事件 |
| 异常值处理 | 是否剔除涨跌停板上的虚假成交 | 是否剔除撤单、废单 |
| 复权方式 | 前复权/后复权/不复权 | 逐笔价是否已复权(通常不复权) |
这张清单看似琐碎,但每一条都可能在回测中放大成信号差异。例如,若分钟线将开盘集合竞价并入第一根K线,而逐笔数据将集合竞价单独标记,两者在开盘第一分钟的开盘价就可能不同,进而影响以开盘价为触发条件的策略。口径统一是价格序列可比的前提,也是分钟与逐笔回测差异对照的第一道关口。
总结来说,分钟收盘价、开盘价是聚合采样点,逐笔成交价是事件流。前者丢失路径与顺序,后者保留但需要重采样决策。回测信号对价格路径越敏感、对成交价假设越依赖、对成交量粒度要求越高,两类序列的差异就越不可忽略。构建序列时先对齐口径,再对照信号,才能判断回测结论是否站得住。