Skip to content

金融市场数据与回测验证

金融研究不能把价格文件当作无歧义的训练集。市场会适应,数据会修订,不同类型的记录回答不同问题;模型、回测和执行假设还必须使用同一时间尺度。本页给出从金融机器学习、市场数据到 point-in-time(PIT)验证的一套公开检查框架。

金融数据上的机器学习

金融数据通常噪声高、非平稳,而且会受到参与者行为和制度变化反向影响。一个模型可能只拟合了特定波动率、流动性或持仓环境;制度切换本身也往往不能被直接观察,只能通过不完美特征推断,并在事后验证。

机器学习结果至少需要满足三个条件才有研究意义:

  1. 数据生成过程对目标期限足够稳定,或系统能识别稳定性正在破坏;
  2. 数据质量适合任务,包括 PIT 时间戳、缺失值处理、报价新鲜度和来源标签;
  3. 特征描述实际决策问题,而不只是拟合原始价格变化。

模型可以支持特征构造、候选排序、波动率或流动性估计、风险诊断和执行成本校准,但输出仍是模型证据。它不能代替可用报价、账户状态、风险控制或事后对账。

交易期限决定什么数据和模型复杂度是合理的:

决策期限 常见数据 合理的模型形态 主要执行约束
亚秒至数秒 报价、成交、订单更新、交易时段与延迟测量 当前时段的小型规则、缓存分数或严格受限模型;大型模型更适合离线校准 延迟、队列位置、过时报价与 adverse selection
数分钟至日内 分钟数据、近期报价、点差状态、事件窗口、当前组合或账户状态 表格模型、校准分数、regime 标签和显式成本估计 特征新鲜度、报价可用性、滑点与未成交风险
日频 日线、期权曲面快照、OI、实现波动率、宏观和事件背景 集成模型、波动率或 regime 模型、曲面诊断和 walk-forward 排序 交易成本、到期/指派处理与 regime 稳定性
周频至月频 期限结构、宏观状态、事件日历、组合暴露和跨资产背景 组合、仓位、情景与风险模型;复杂研究模型应保留审计路径 结构突变、模型衰减、容量和生命周期风险

不存在天然更优的期限。每个期限有不同的误差预算,数据新鲜度、模型规模和执行路径必须相互匹配。

一套策略有多只时钟

不能只按“多久下一次订单”定义策略频率。至少要分开:

  • alpha / decision frequency:多久可以改变目标头寸、结构或风险暴露;
  • data frequency:输入观测的粒度与新鲜度;
  • holding period:经济风险预计持有多久;
  • execution frequency:订单切片、改价、撤单、重试或路由的频率;
  • risk / control frequency:保证金、Greeks、报价、账户状态、kill switch 和对账刷新的频率。

算法执行比高频交易更宽泛。日频或日内选择策略可以用秒级订单管理,但这不自动使 alpha 成为 HFT。监管和市场结构文献通常用自动决策、低延迟基础设施、高消息率、短库存周期,以及信号、执行和库存控制的紧密耦合来描述 HFT;分类时应同时检查上述几只时钟,而不是只看最快的一只。

市场数据类型

Aggregate bars

Bars 用 open、high、low、close 和 volume 汇总一个时间区间,例如 1-minute 或 1-day bar。它们适合广泛研究、信号构造和粗粒度回测,却隐藏了区间内的报价路径、成交顺序与可交易性,因此不能单独证明某个期权曾能以 bar price 成交。

Trades

Trade 是已经发生的成交,通常包含成交价、数量、时间和场所标识。它可用于成交量、实际打印价格和逐笔聚合,但 last trade 可能陈旧,也不能代替当前可买卖报价。

Quotes

Quote 描述当前 bid、ask、对应 size、时间和场所标识。常用派生量为:

\[ \text{spread}=ask-bid, \qquad \text{mid}=\frac{bid+ask}{2}. \]

Quotes 是流动性检查、滑点估计和 bid/ask-aware 回测的基础;mid 仍只是参考,不保证成交。报价解释与成本例子见Bid、Ask 与流动性

Top of book 与完整深度

Top-of-book 数据通常只有:

  • 当前最优 bid;
  • 当前最优 ask;
  • 两侧显示 size 及相关元数据。

它不包含完整 level-2 深度、多档订单簿或真实队列位置。即使计划下单量小于显示 size,也不能假定自己排在队首或全部数量会保留到达市场。

为什么期权研究特别需要报价

期权可能长时间没有成交。bar 或 last trade 能说明历史活动,却不能回答研究时点的点差、可成交方向和显示规模。若策略按 mid 建仓、按 last trade 平仓,回测可能把流动性不足误写成收益。

因此,执行相关研究至少应:

  1. 明确买入使用 ask、卖出使用 bid,或说明限价成交模型;
  2. 对过时报价、锁盘、倒挂、单边零报价和异常 size 设定规则;
  3. 将组合多腿的净价、不同步成交与未成交纳入成本;
  4. 把成交量/OI 与当前报价可用性分开。

微观结构与交易成本归因

  • Market microstructure noise:点差、离散 tick、异步成交、过时报价、有限深度和订单不平衡造成的短期价格扭曲;
  • Packet burst:开收盘、宏观公布或波动冲击附近,大量行情消息集中到达。均匀抽样的回放会低估排队、陈旧报价和尾部延迟;
  • Bid–ask bounce:成交在 bid 与 ask 之间交替,产生看似反转的短期价格变化,即使有效价格没有反转;
  • Adverse selection:对手方更可能在报价即将不利变化时与你成交;
  • Market impact:订单本身造成的暂时或永久价格变化;
  • Opportunity cost:限价未成交、撤单或等待期间错失的收益或风险变化。

短周期策略可能因为拥有更多下注机会而呈现更高的毛 Sharpe,但这些机会不是免费的。点差、显示深度、滑点、冲击、adverse selection、延迟和未成交机会成本都必须在与决策相同的期限上扣除。

回测验证术语

  • In-sample:用于设计、调参、调试或筛选规则的区间。这里的表现不能单独作为晋级证据;
  • Out-of-sample:在规则和参数范围冻结后才使用的保留区间,用于检查样本外行为;
  • Walk-forward:在滚动或扩展窗口中重复“校准下一段之前的数据,再评估下一段”,适合允许定期重估但不能前视的流程;
  • Multiple testing / data snooping:搜索许多 DTE、执行价、moneyness、止盈止损、决策时间或平仓时间后,只报告最优组合。可靠产物应同时报告完整搜索族、样本外表现和参数邻域稳定性。

随机切分通常不适合有时间顺序、标签重叠或制度变化的金融数据。切分方法必须阻止未来信息通过特征、标签、修订数据或参数选择进入过去。

Point-in-time 时间语义

市场数据与研究元数据使用的字段不同,但原则相同:必须区分“事件何时发生”“外部何时发布”“系统何时能够知道”。

字段 含义
event_ts 市场事件实际发生时间
vendor_publish_ts 供应商记录何时应视为对系统可用
as_of_date 用于重建某个市场日或快照的基准日期
ingested_at 系统实际保存该记录的时间
valid_from / valid_to 可修订记录的有效版本区间

这些字段不能互相替代。历史下载日期不证明当时可见,后来修订的值也不能无标记地覆盖旧版本。论文、报告和研究索引的 published_atfirst_discovered_atfetched_at 约定见研究元数据与 PIT 检查表

Listed universe 与 traded universe

  • Listed universe:某日实际挂牌存在的全部合约,无论是否成交;最好由逐日合约元数据快照重建;
  • Traded universe:某日出现在成交、bars 或某些 quote 数据中的合约;它通常小于 listed universe。

只从成交数据构造期权池会遗漏“存在但没有成交”的合约,并可能造成幸存者或流动性选择偏差。反过来,挂牌存在也不代表报价可用。

调整数据的含义

Bars 中的 adjusted 通常指供应商对公司行动或合约历史的调整,不表示隐含波动率经过了某种“修正”。可能涉及:

  • 股票拆并股;
  • 特别股息;
  • 合约交割物变化;
  • 执行价、乘数或合约数量调整。

研究必须记录供应商的调整口径。原始序列、复权序列和调整后的期权合约不能在没有映射的情况下混用。

为什么要分开元数据、bars、trades 与 quotes

数据 主要回答的问题
合约元数据 当时有哪些合约,条款是什么
Bars 区间价格路径大致如何
Trades 实际打印了什么价格和数量
Quotes 当时可以向哪一侧、以什么点差尝试交易

把四种数据各自保留来源、时间和调整语义,比把它们压成一个“价格表”更容易发现前视、缺失和执行假设错误。

最小验证清单

  1. 决策、数据、持有、执行和风控频率是否分别声明?
  2. 所有特征是否按当时真实可得时间构造?
  3. Listed universe 是否来自当时的合约快照,而不是事后成交集合?
  4. 成交模型是否使用报价方向、时间新鲜度和规模约束?
  5. 点差、费用、滑点、冲击、未成交和生命周期成本是否进入净收益?
  6. 规则与参数是否在样本外评估,并报告完整搜索族?
  7. 公司行动、合约调整、缺失数据和修订版本是否可追溯?
  8. 模型失效、regime 变化与容量上限是否有独立检查?

官方参考