沪市逐笔文件演化 (SSE Tick File Evolution)
Definition. 上交所历史数据接口在 2020–2024 的几年里把「逐笔」数据换了两次形态: 最早只有成交 (
Tick.csv),2021-04-26 加了独立的委托流 (Entrust.csv), 2024-07-08 把两个文件都停掉、合并成单个StockTick.csv。 也就是说沪市「委托+成交双流」的干净窗口只有三年多。
三代逐笔文件
| 文件 | 启用 | 停供 | 字段数 | 含什么 |
|---|---|---|---|---|
sh2\...\Tick.csv |
2020-02-19 (v1.0.0) | 2024-07-08 | 7 → 11 (2021-04-26) → 12 (加 SendingTime) | 仅成交 |
sh2\...\Entrust.csv |
2021-04-26 | 2024-07-08 | 10 | 仅委托 (A 新增 / D 撤单) |
sh2\...\StockTick.csv |
2023-11-27 | 至今 | 12 | 委托 + 撤单 + 产品状态 + 成交 |
sh2\...\BondTick.csv |
2021-12-01 | 至今 | 12 | 债券逐笔 (布局同 StockTick) |
sh2\...\FpTradeTick.csv |
2019-07-22 | 至今 | 12 | 科创板盘后固定价格交易 (五档聚合) |
2017 年那套 shorder\yyyymmdd\XXXXXX.csv (按证券代码分文件, 字段
OrderNo/OrderNoOld/OrderPrice/OrderQty/OrderStatus/Side/OrderType) 出现在 2017 版结构说明里,
但在后续所有 CSV 接口书版本中都不再出现。它属于早期按代码分文件的接口,与后来的
Entrust.csv 不是同一产品,做长周期回测不要把它当成 Entrust.csv 的祖先。
StockTick 一个字段承载三种语义
Type 字段区分四类记录,字段布局不变但字段含义随类型变:
| Type | 记录 | BuyOrderNo / SellOrderNo | TradeMoney |
TickBSFlag |
|---|---|---|---|---|
| A | 新增委托 | 只有本方一侧 | 已成交的委托数量 (3 位小数) | B 买单 / S 卖单 |
| D | 删除委托 (撤单) | 只有本方一侧 | 无意义 | B / S |
| S | 产品状态订单 | 无意义 | 无意义 | ADD/START/OCALL/CCALL/TRADE/SUSP/CLOSE/ENDTR |
| T | 成交 | 两侧都有 | 成交金额 (元, 5 位小数) | B 外盘 / S 内盘 / N 未知 |
TradeMoney 这一列是沪市逐笔数据最容易读错的地方——A 类记录里它不是金额而是已成交数量。
CCALL (收盘集合竞价) 是 1.1.3 版本才加入的状态值,老数据解析器要留意值集扩展。
TradeBSFlag/TickBSFlag 的 N (未知) 值只在成交记录中出现,委托与债券逐笔没有。
时间精度跨文件不一致
| 文件.字段 | 精度 | 示例 |
|---|---|---|
StockTick.TickTime |
百分之一秒 | 2015112309163002 |
Tick.TradeTime |
百分之一秒 | 2015112309163002 |
Entrust.TransactTime |
毫秒 | 20150803093008000 |
BondTick.TickTime |
毫秒 | 20150803093008000 |
数值长度相同 (17 位含日期) 但小数位含义不同,按时间戳全局排序或做同秒内微秒级对齐时, 不先归一化会排错先后。
沪市 Level-2 快照自带撤单统计
sh2\Snapshot.csv 除十档价量外,给出一组委托簿聚合量,做撤单率研究可直接取用:
- 委托总量
TotalBidQty/TotalOfferQty,加权均价WeightedAvgBidPx/WeightedAvgOfferPx - 总笔数
TotalBidNumber/TotalOfferNumber,价位数NumBidOrders/NumOfferOrders - 成交最大等待时间
BidTradeMaxDuration/OfferTradeMaxDuration - 撤单四件套
WithdrawBuyNumber/WithdrawBuyAmount/WithdrawBuyMoney(笔数 / 数量 / 金额, 金额 2 位小数),卖方对称
队列细节只有买一卖一: BidOrders[50] / OfferOrders[50] 是申买一/申卖一前 50 笔订单;
买二到买十只给 BidNumOrders[10] 总委托笔数,不给逐笔。
2021-12-01 (v1.0.3) 快照字段数 194 → 201,新增 AvgPx / ClosePx / MsgSeqNum / SendingTime /
WarLowerPx / TradingPhaseCode / NumImageStatus。NumImageStatus 标快照是全量 (1) 还是
增量 (2),可用来判断快照序列能否直接当增量消息拼接。
2025-11-24 起 FpTradeSnap.csv 的委托队列与撤单类字段全部置 0,只有 BidOrderQty /
OfferOrderQty 保留。
精度变更清单 (跨年拼接前必查)
| 生效日 | 变更 |
|---|---|
| 2018-01-02 | Level-1 快照价格 NUMBER(3) → NUMBER(4) |
| 2019-07-22 | 新增 FpTradeSnap / FpTradeTick; 日 K 线加 fp_Volume / fp_Amount |
| 2019-11-14 | Level-1 快照、盘后固定价格交易快照、K 线加 AvgPx |
| 2023-06-01 | 成交金额 2 位小数 → 3 位 (Level-1/2 快照、盘后快照与逐笔成交、日 K 线); 股票期权成交金额 2 位 → 4 位 |
| 2026-03-30 | 新增独立文件 IOPV.csv |
| 2026-07-06 | Level-1/2 快照与 K 线的 IOPV 取值调整, NAV 启用 (此前 Level-1 快照 IOPV/NAV 恒为 0) |
2023-06-01 那行最容易出事: 同一列 Amount 在该日之前是 2 位小数、之后是 3 位,
不确认直接拼接会让日内均价 / 金额出现 10 倍量级错位。
三套交易阶段编码
| 场景 | 字段 | 编码 |
|---|---|---|
| Level-1 快照 | PhaseCode |
8 位定长字符串, 前 4 位有效 |
| Level-2 快照 | TradingPhaseCode |
语义引 IS124 mktdt00.txt, 不走前一套 |
| 盘后固定价格交易快照 | TradingPhaseCode |
另一套 (INIT/PCALL/POSMT/ENDPT/POSSP) |
Level-1 的 PhaseCode 每位含义: 第 1 位 S 启动 / C 集合竞价 / T 连续交易 /
B 休市 / E 闭市 / P 停牌 / M 可恢复熔断 (盘中集合竞价) / N 不可恢复熔断 /
D 开集合竞价结束到连续竞价开始之间;第 2 位 0/1 能否正常交易;第 3 位 0/1 是否已上市;
第 4 位 0/1 当前时段是否接受新申报。无定义填空格。
三套编码不可互换,跨文件筛时段要分别映射。
对量化研究的直接影响
- 可重放订单簿的窗口只有 2021-04-26 – 2024-07-08,且即便如此还有主动方申报行缺失问题 (见 逐笔成交的双向委托引用 (Bid-Offer Order Reference))。
- 撤单率研究在沪市不必自己从委托流差分——快照已直接给出撤单笔数/数量/金额。
- L1 vs L2 的队列信息不对称: L1 五档无笔数, L2 十档只有买一卖一有逐笔队列。
- 做跨 2023-06-01 的面板前先处理金额精度。
与本 wiki 其他概念的连接
- 逐笔成交的双向委托引用 (Bid-Offer Order Reference) — 沪市主动方识别为何只能靠成交双腿引用
- 深市高频表结构演化 (SZSE Feed Schema Evolution) — 深市对照, 命名与切分方式都不同
- Level-2 档位与委托队列 (L2 Depth and Order Queue) — 两所 L2 档位字段的共同口径与差异
- 订单流分解 (Order Flow Decomposition) — 主动方识别是订单流按信息含量拆分的前提
- Shanghai Stock Exchange (上交所) · Shenzhen Stock Exchange (深交所)
引用
- 上交所《历史数据接口说明书》v1.0.0–v1.1.5 (2017–2026), 7 份原件
- 供应商样例包《文档对应时间范围区间》xls
- 中文摘要: summaries/202610-sse-historical-data-interface-spec/202610-sse-historical-data-interface-spec · summaries/202610-vendor-l2-sample-pack/202610-vendor-l2-sample-pack