深市高频表结构演化 (SZSE Feed Schema Evolution)

Definition. 深交所行情接口 2016-05-09 从「四版」切到「五版」,文件名、字段数、主键体系 全部重来一次;此后五版的现货四表 (逐笔委托 / 逐笔成交 / 快照 / 快照档位) 字段布局再没动过, 十年里的所有变化都发生在快照尾部追加字段与债券新表上线。

四版 → 五版:命名与切分方式整体重写

时期 命名 切分 表数
20160509 前 (四版) SZL2_ORDER_YYYYMMDD.txt 等大写名 单文件含全天 7 张
20160509 后 (五版) am_hq_order_spot.txt / pm_... 上午/下午拆分 品种后缀化

四版 7 张表: SZL2_STOCKINFO / SZL2_STOCKSTATUS / SZL2_SNAPSHOT / SZL2_SNAPSHOTDW / SZL2_INDEX / SZL2_ORDER / SZL2_TRADE,全部大写无前缀。

五版改为 hq_<类型>_<品种>,品种后缀 _spot / _option / _pledge / _bond / _agreement / _refinance / _xianquan / _jingmai,靠 MDStreamID 字段区分行情类别。

MDStreamID 值集新旧一致: 现货快照 010 / 现货逐笔 011、质押式回购 020/021、 债券分销 030、期权快照 040 / 期权逐笔 041、协议交易意向 051 / 定价 052、 转融通 071、指数 900、盘后定价 060/061/370。MDStreamID 不是判别版本的特征, 两代相同。

五版现货四表字段数十年未变

表 四版 五版初期 五版 v2.3 (2017-05-12 后) 五版 v3.0 (2024-01-04 后)
逐笔委托 hq_order 10 20 20 20
逐笔成交 hq_trade 12 16 16 16
快照 hq_snap 20 32 35 39
快照档位 snap_level 50 55 55 55

五版比四版多的字段集中在主键与时间戳体系: 五版每行前缀是 tradedate / OrigTime / SendTime / recvtime / dbtime / ChannelNo / MDStreamID / ApplSeqNum, 主键是 (ChannelNo, ApplSeqNum) 的组合;四版只有 TRADEDATE / SENDTIME / SETNO / RECNO。 这意味着跨四版/五版拼接必须重映射主键,不能只对齐列名。

快照的三个分界 (32 / 35 / 39)

字段数 生效 变化
32 2016-05-09 – 2017-05-11 五版初期
35 2017-05-12 起 尾部加 Vwap (成交量加权平均利率)、xj (加权平均利率涨跌)、xk (昨收盘成交量加权平均利率) — 质押式回购用
39 2024-01-04 起 再加 xwsize/xwnum (ETF 申购数量/笔数)、xxsize/xxnum (ETF 赎回数量/笔数)

价格精度同步变化: v3.0 (2022-05-16 起) 全表价格字段 N(9,3) → N(9,6),即 3 位小数改 6 位。 逐笔委托的 TransactTime 声明从 N(10) 加宽到 N(20) (时间戳位数声明放宽, 字段本身不变)。

判断数据对应哪份文档以生效日期为准,不要按文档发布日期推: 2022-05-16 之前 v2.3, 之后 v3.0。

2022-05-16 新债券行情上线

v3.0 相对 v2.3 的唯一结构性变化是新增债券类表:

表 用途 MDStreamID
hq_order_xianquan 债券现券委托 413 点击委托 / 415 意向申报 / 417 大额委托
hq_trade_xianquan 债券现券成交 412 协商 / 413 点击 / 414 询价 / 417 大额
hq_order_jingmai 债券竞买委托 416 竞买委托
hq_trade_jingmai 债券竞买成交 416 竞买成交
snap_bond 新债券快照 020 质押式回购 / 030 债券分销 / 410 债券现券

竞买表额外有 SecondaryOrderID (竞买编号)、BidTransType (竞买业务类别)、 BidExecInstType (竞买成交方式)、LowLimitPrice/HighLimitPrice、MinQty, 成交表另有 MarginPrice (达成成交的边际价格)。债券现券表还带一整套交易主体字段 (MemberID 交易商 / InvestorType / InvestorID / InvestorName / TraderCode)—— 债券行情是逐席位披露的,现货没有。

深市委托流没有主动/被动标志

hq_order 的字段集: Price / OrderQty / TransactTime / Side (1=买 2=卖, G=借入 F=借出) / OrderType (1=市价 2=限价 U=本方最优)。 没有「主动买 / 主动卖」字段。方向只能靠 hq_trade 的 BidApplSeqNum / OfferApplSeqNum 引用回委托流比较得出 (从 1 开始计数, 0 表示无对应委托)。

四版同样如此: SZL2_ORDER 用 FUNCTIONCODE 取 B/S/C 分别对应买、卖、撤单, SZL2_TRADE 的 FUNCTIONCODE 取 0=成交、C=撤销,成交类别在 ORDERKIND (0 连续竞价 / 1 开盘集合 / 2 盘中集合 / 3 收盘集合 / X 本方最优 / Y 对手方最优 / W 全额成交或撤销市价 / V 最优五档立即成交剩余 / T/C/O 其他成交)。

委托类别 ORDERKIND 在委托表里的值集是另一套: 0 限价 / 1 全额成交或撤销限价 / 2 即时成交剩余撤销 / X 本方最优市价 / Y 对手方最优市价 / W 全额成交或撤销市价 / V 最优五档立即成交剩余。同一列名 ORDERKIND 在委托表和成交表里值集不同。

一个坑: 四版快照的 ENDOFDAYMAKER

四版 SZL2_SNAPSHOT 里交易阶段字段是 ENDOFDAYMAKER (C1),文档未定义取值含义。 五版换成定义完整的 TradingPhaseCode (C2 两位)。跨四版/五版做时段筛选时, ENDOFDAYMAKER 的语义需要另行确认,不能直接套五版的两位编码。

深市 TradingPhaseCode (C2 两位)

  • 第 0 位: S 启动 (开市前) / O 开盘集合竞价 / T 连续竞价 / B 休市 / C 收盘集合竞价 / E 已闭市 / H 临时停牌 / A 盘后交易 / V 波动性中断
  • 第 1 位: 0 正常状态 / 1 全天停牌

与沪市 Level-1 的 8 位 PhaseCode 不可通用,详见 沪市逐笔文件演化 (SSE Tick File Evolution)。

快照档位: 只有买一卖一有委托队列

snap_level 的 55 字段 = 表头 12 + 十档 × (价 + 量) × 2 = 40 + 6 个委托队列字段: NUMORDERS_B1 (买一总委托笔数) / NOORDERS_B1 (买一揭示委托笔数) / ORDERQTY_B1 (买一价委托队列, | 分隔, VARCHAR2(512)),卖一对称。买二至买十只有价和量,没有队列。

沪市口径与此一致,详见 Level-2 档位与委托队列 (L2 Depth and Order Queue)。

对量化研究的直接影响

  1. 深市逐笔委托/成交主键是 (ChannelNo, ApplSeqNum) 组合,跨四版/五版拼接要重映射。
  2. 深市快照字段数 32/35/39 三档,价格精度 3 位→6 位,分界是 2017-05-12 / 2022-05-16 / 2024-01-04。
  3. 深市委托流无主动/被动标志,方向只能靠成交双向索引比较。
  4. 债券行情逐席位披露,做债券微观结构有额外维度。

与本 wiki 其他概念的连接

引用