4. 数据基础与治理

在Post-Trade TCA(交易后成交质量分析)中,模型与算法只是“上层建筑”,真正决定分析可信度的是数据底座。成交数据、行情数据、订单数据三类数据源构成了TCA的输入基础,而参考价选择、数据清洗与时间对齐则决定了这些输入能否被正确比较。本章围绕“数据链路如何从原始记录变成可分析的成交质量指标”展开,帮助学员建立可落地的数据治理框架。

一、核心原理:三类数据与一条时间轴

TCA的本质是“将成交价格与某个基准价格进行比较”,因此至少需要两类信息:成交记录(实际发生了什么)与参考价(应该以什么为基准)。但仅有这两类还不够,因为成交质量还取决于订单生命周期——下单时间、到达市场时间、成交时间、撤单时间等。因此,完整的TCA数据基础由三部分构成:

  • 成交数据(Execution Data):记录每笔成交的价格、数量、方向、成交时间、交易对手方、场所等。它是被评估的对象。
  • 行情数据(Market Data):提供市场基准,包括买卖盘口、中间价、最新成交价、成交量加权平均价(VWAP)等。它是比较的标尺。
  • 订单数据(Order Data):记录订单从创建到终结的全生命周期事件,包括下单、路由、修改、撤单、成交回报等。它是解释成交质量成因的关键。

三类数据必须挂在同一条时间轴上。时间对齐不是简单的“按时间戳排序”,而是要在不同精度、不同时区、不同事件语义之间建立可比较的时序关系。例如,订单在10:00:00.123到达交易所,行情快照在10:00:00.100更新,成交在10:00:00.150发生——只有明确各事件的时间语义,才能判断成交时市场处于什么状态。

TCA数据链路:从原始记录到可分析成交质量 成交数据 价格/数量/方向/时间/场所 行情数据 盘口/中间价/VWAP/快照 订单数据 下单/路由/修改/撤单/回报 数据治理层:清洗 · 标准化 · 时间对齐 · 参考价选择 去重 · 异常值处理 · 时区统一 · 事件排序 · 基准匹配 TCA分析层:滑点 · 市场冲击 · 执行差额 · 时机成本 成交价 vs 参考价 → 质量指标 → 归因与优化

二、方法流程:从原始数据到可分析数据集

一个可复用的TCA数据治理流程通常包含以下步骤:

  1. 数据接入与字段映射:将不同来源的成交、行情、订单数据统一到标准字段模型。例如,成交数据中的“成交时间”可能来自交易所时间戳、券商回报时间或本地记录时间,必须明确字段语义。
  2. 数据清洗:处理缺失值、重复记录、异常价格与异常数量。例如,成交价格偏离当日涨跌停板、数量为负、时间戳倒序等都需要标记或剔除。
  3. 时间对齐:将成交事件与行情快照、订单事件按时间轴对齐。常用方法包括最近邻匹配、前向填充、区间匹配等。
  4. 参考价选择:根据分析目标选择基准价格,如到达价(Arrival Price)、VWAP、TWAP、收盘价、开盘价等。
  5. 数据集构建与版本管理:生成可复现的分析数据集,记录清洗规则、对齐参数与参考价定义,确保不同时间、不同团队的分析结果可比。

关键原则:时间对齐必须保留“事件语义”。成交时间、行情时间、订单时间可能分别代表“交易所撮合时间”“行情发布时间”“订单到达时间”,不能简单混用。建议在数据模型中为每个时间戳增加“时间类型”标签。

三、参考价选择:不同基准决定不同结论

参考价是TCA的“标尺”,选择不同基准会得出不同的成交质量结论。以下是常见参考价及其适用场景:

参考价类型 定义 适用场景 注意事项
到达价(Arrival Price) 订单到达市场时的中间价或最新成交价 评估执行时机与滑点 需明确“到达”定义:下单时间还是交易所接收时间
VWAP 区间内成交量加权平均价 评估大单执行是否优于市场平均 区间选择影响结果,需与订单生命周期匹配
TWAP 区间内时间加权平均价 评估均匀执行策略 对成交量分布不敏感,适合流动性均匀场景
收盘价/开盘价 特定时点的官方价格 评估收盘/开盘竞价执行 仅适用于对应时段成交
中间价(Mid Price) 买一与卖一的均值 快速评估买卖价差成本 盘口稀疏时可能失真

选择参考价时,必须与交易策略和分析目标一致。例如,评估算法执行质量时,到达价和VWAP是常用组合;评估被动挂单成交时,中间价或盘口价更合适。切忌用收盘价去评估一笔上午的主动成交,否则结论会被时间错配严重扭曲。

四、案例与场景:一次时间对齐失败引发的误判

某交易团队在复盘一笔大额买入订单时,发现滑点异常高。初步分析显示,成交均价明显高于当日VWAP,团队一度认为执行算法存在严重问题。但经过数据治理排查,发现以下问题:

  • 成交数据中的时间戳来自券商回报系统,比交易所撮合时间晚约200毫秒;
  • 行情数据中的时间戳为交易所快照时间,但快照间隔为500毫秒;
  • 订单数据中的“下单时间”为本地系统时间,未与交易所时间同步。

由于三类数据的时间语义不一致,简单按时间戳排序后,成交被错误地匹配到了较早的行情快照,导致参考价偏低,滑点被高估。修正方法是为每个时间戳增加时间类型标签,并统一到交易所时间轴,再按“最近邻+前向填充”规则重新对齐。修正后,滑点回归正常区间,算法问题被排除。

常见误区:很多团队在TCA初期只关注成交数据与行情数据的匹配,忽略订单数据的时间语义。实际上,订单事件是解释成交质量成因的关键。没有订单数据,你只能看到“结果”,无法回答“为什么”。

五、数据清洗与时间对齐的工程实践

在工程实现上,建议采用以下配置与规则:

# 数据清洗规则示例(伪代码)
cleaning_rules:
  drop_duplicates: true
  price_range_check: [涨停价, 跌停价]
  quantity_positive: true
  timestamp_monotonic: true
  missing_value_policy: "标记并隔离"

# 时间对齐配置示例
time_alignment:
  base_clock: "exchange_time"
  market_data_fill: "forward"
  execution_match: "nearest"
  tolerance_ms: 500
  order_event_window_ms: 1000

# 参考价定义示例
reference_price:
  arrival: "mid_price_at_order_arrival"
  vwap_window: "order_start_to_order_end"
  twap_interval: "1min"

清洗后的数据应保留审计痕迹:哪些记录被剔除、为什么剔除、对齐时使用了哪个行情快照、参考价如何计算。这些元数据是TCA结果可解释、可复现的基础。

实战建议:在TCA项目启动阶段,先花时间建立“数据字典”和“时间语义表”,明确每个字段的含义、单位、时区和精度。这比急于跑模型更能提升最终分析质量。数据治理不是一次性工作,而应嵌入日常数据管道,持续监控数据质量指标,如缺失率、时间偏差、异常值比例等。

总结来说,成交数据、行情数据、订单数据是TCA的三根支柱,参考价选择决定了分析视角,数据清洗与时间对齐则决定了分析结果是否可信。只有把数据基础打牢,后续的滑点分析、市场冲击归因和算法优化才有意义。