1. Level2 行情概述

Level2 行情是上海证券交易所与深圳证券交易所向市场推出的深度行情数据,相比普通 Level1 行情,它在数据粒度、更新频率、信息维度上均有质的提升。对于量化交易与风控系统而言,Level2 是识别坏账率、虚假申报、资金异动的核心数据源。

1.1 Level2 行情与普通行情的区别

对比维度 普通行情(Level1) Level2 行情
数据刷新频率 3 秒 / 5 秒(静态快照) 逐笔成交实时推送,快照 3 秒一次
买卖盘口深度 5 档(买 1~5 / 卖 1~5) 10 档(买 1~10 / 卖 1~10)
逐笔成交 无 每笔成交明细(时间、价格、数量、买卖方向)
逐笔委托 无 每笔委托挂单与撤单明细
总买卖队列 无 买一 / 卖一前 50 笔明细队列
加权均价 无 逐笔加权均价(VWAP)
数据用途 基础行情展示 量化策略、风控哨兵、盘口分析
核心差异总结: Level1 只能看到“结果”,Level2 能看到“过程”。对于坏账率哨兵系统,逐笔成交与委托队列是识别对倒、虚假申报、老鼠仓等异常行为的唯一数据源。

1.2 Tick 级数据特征

Level2 行情的最小时间单位是 Tick(一笔成交或一次委托变动)。Tick 级数据具有以下关键特征:

  • 高频性: 单只股票在交易活跃时段每秒可产生数十笔 Tick 数据,全市场每秒数万笔。
  • 无序性: 不同股票的 Tick 到达时间不完全同步,需要按时间戳排序与对齐。
  • 自相关性: 相邻 Tick 的价格、买卖方向、委托量存在统计依赖,是坏账检测的重要特征。
  • 微结构噪声: 包含买卖价差、订单簿不平衡、大单拆分等微观市场结构信息。
实战提示: Tick 级数据通常以微秒(μs)或纳秒(ns)精度记录时间戳。在风控系统中,必须使用 uint64 或 decimal 类型存储,避免浮点精度丢失导致时间错序。

1.3 逐笔成交与快照数据

Level2 行情包含两种核心数据形态:逐笔成交(Transaction Tick)与快照(Snapshot)。两者在坏账率哨兵系统中扮演不同角色。

逐笔成交数据

逐笔成交记录每一笔实际发生的交易,字段结构如下:

字段 类型 说明
ticker string 股票代码
timestamp int64 成交时间(微秒)
price float64 成交价格
volume int64 成交数量(股)
turnover float64 成交金额(元)
buy_sell_flag int8 买卖方向(1=买, -1=卖, 0=未知)
order_id int64 原始委托编号(用于关联委托)

快照数据

快照是每隔 3 秒对当前订单簿的完整截取,包含:

  • 10 档买卖盘口(价格 + 数量)
  • 累计成交量、成交额
  • 最高价、最低价、开盘价、收盘价
  • 加权均价(VWAP)
  • 买一 / 卖一前 50 笔委托队列
坏账哨兵关键点: 逐笔成交用于检测对倒交易(同一账户自买自卖)和虚假成交;快照数据用于检测虚假申报(大单挂单后迅速撤单)。两者必须联合分析,单一数据源无法覆盖全部坏账场景。
Level2 行情数据流架构 交易所行情网关 Level2 数据分发(TCP / UDP 组播) 逐笔成交流 每笔成交明细 快照流 3 秒订单簿截取 逐笔委托流 挂单 / 撤单明细 时序数据库 / 消息队列(Kafka / InfluxDB) 坏账率哨兵风控引擎

1.4 逐笔成交与快照的联合分析

在坏账率哨兵系统中,逐笔成交与快照数据需要联合使用,才能覆盖完整的异常检测场景:

  • 场景一:虚假申报 — 快照中买一出现巨额挂单,但逐笔成交中并未产生对应的大额买入,随后快照中该挂单消失。说明主力通过大单引诱跟风盘后撤单。
  • 场景二:对倒交易 — 逐笔成交中出现大量买卖方向相同、价格相同、时间相近的成交对,但快照中的订单簿深度未发生实质性变化。
  • 场景三:老鼠仓 — 逐笔成交中某账户在重大利好公布前精准买入,快照中该账户的委托队列出现异常撤单行为。
实战代码示例: 使用 Python 解析逐笔成交与快照数据的基本结构:
import pandas as pd

# 逐笔成交数据示例
tick_data = pd.DataFrame({
    'timestamp': [1000001, 1000002, 1000003],
    'price': [10.01, 10.02, 10.01],
    'volume': [1000, 2000, 1500],
    'buy_sell_flag': [1, -1, 1]
})

# 快照数据示例
snapshot_data = {
    'timestamp': 1000000,
    'bid_prices': [10.01, 10.00, 9.99, 9.98, 9.97],
    'bid_volumes': [5000, 8000, 3000, 2000, 1000],
    'ask_prices': [10.02, 10.03, 10.04, 10.05, 10.06],
    'ask_volumes': [4000, 6000, 2000, 1500, 500]
}

# 联合分析:检查快照中买一挂单是否在逐笔成交中兑现
bid1_volume = snapshot_data['bid_volumes'][0]
recent_buy_volume = tick_data[tick_data['buy_sell_flag'] == 1]['volume'].sum()
if bid1_volume > 10000 and recent_buy_volume < bid1_volume * 0.1:
    print("⚠️ 检测到潜在虚假申报:买一挂单巨大但实际买入极少")
逐笔成交与快照联合分析流程 逐笔成交流 快照流 时间戳对齐(微秒级) 特征提取:挂单量 / 成交量 / 撤单率 / 价差 坏账检测引擎 虚假申报 / 对倒交易 / 老鼠仓 / 资金异动 坏账率评分 / 预警信号

1.5 本章小结

  • Level2 行情相比 Level1 提供了逐笔成交、逐笔委托、10 档盘口和委托队列等深度数据。
  • Tick 级数据具有高频性、无序性、自相关性和微结构噪声四大特征。
  • 逐笔成交与快照数据必须联合分析,才能有效检测虚假申报、对倒交易、老鼠仓等坏账行为。
  • 风控系统需要微秒级时间对齐和高精度存储,才能支撑实时哨兵引擎。