32 个因子字段:四集合笛卡尔积
{金额占比 · 股数占比 · 笔数占比 · HHI价格集中度} × {大单 · 小单} × {买入 · 卖出} × {成交 · 撤单}
= 4×2×2×2 = 32 字段 · 基于深交所逐笔数据(
MdsL2Order / MdsL2Trade)① 设计:四个集合做笛卡尔积
每个因子字段 = 从四个集合各取一个元素的组合。其中后三个集合(②③④)决定"挑哪一批逐笔记录"(选择层,2×2×2=8 个子集),第一个集合(①)决定"对这批记录算什么"(度量层,4 个度量)。
① 度量(4)
金额占比 AMT
股数占比 VOL
笔数占比 CNT
HHI价格集中度
×
② 大小(2)
大单 BIG
小单 SML
×
③ 方向(2)
买入 BUY
卖出 SELL
×
④ 行为(2)
成交 TRD
撤单 CXL
↓ 命名 = 行为_大小_方向_度量,例
TRD_BIG_BUY_AMT = 成交·大单·买入·金额占比② 数据基础:每个集合用我们的字段怎么判定
| 集合 | 取值 | 用 MdsL2Order/MdsL2Trade 字段判定 |
|---|---|---|
| ④ 行为 | 成交 | Trade 表 ExecType=F 且 TradeQty>0(剔除心跳记录) |
| 撤单 | Trade 表 ExecType=4;被撤委托 = Bid/OfferApplSeqNum 中非0者,回连 Order 表取价/方向 | |
| ③ 方向 | 买入 | 成交:BidApplSeqNum>OfferApplSeqNum(主动买) | 撤单:被撤委托 Side=1 |
| 卖出 | 成交:OfferApplSeqNum>BidApplSeqNum(主动卖) | 撤单:被撤委托 Side=2 | |
| ② 大小 | 大单 | 单笔金额 ≥ θ。成交额=TradeMoney;撤单额=委托Price×TradeQty |
| 小单 | 单笔金额 < θ(本页示例 θ = 500,000 元,可配置) |
✅ 已在真实数据上验证:撤买单的序号一定落在
BidApplSeqNum、撤卖单落在 OfferApplSeqNum(全天 23509 条 0 违例)。所以撤单方向既可查被撤委托的 Side,也可直接看哪个字段非0。③ 度量层:4 个度量怎么算(公式 + 计算方法)
设已选出的子集为 S(满足②③④的逐笔记录),其所属行为(全部成交 或 全部撤单)为 B。四个度量定义如下:
1) 金额占比 AMT — 这批单子占了多少钱
公式 AMT(S) = Σi∈S 金额i / Σj∈B 金额j
计算方法:成交用
TradeMoney,撤单用 Price×TradeQty;分母是该行为(成交或撤单)窗口内的总额。2) 股数占比 VOL — 占了多少量(股)
公式 VOL(S) = Σi∈S TradeQtyi / Σj∈B TradeQtyj
3) 笔数占比 CNT — 占了多少笔(频率)
公式 CNT(S) = count(S) / count(B)
4) HHI 价格集中度 — 这批钱是否扎堆在少数价位
公式 HHI(S) = Σp wp² , wp = (S 中价位 p 的金额) / (S 总金额)
计算方法:把子集 S 内的记录按
Price 分组,每个价位的金额占比平方后求和。全扎在 1 个价位→HHI=1(最集中);均摊在 k 个价位→HHI=1/k。它衡量子集内部,不是占大盘的比,所以不参与"占比之和=1"。📐 三个占比有个自洽性质:同一行为下,大买+大卖+小买+小卖 这 4 个子集恰好不重不漏地划分了该行为,所以它们的 AMT 之和、VOL 之和、CNT 之和都 = 1(100%)。这可当计算正确性的校验。
④ 选择层:8 个子集的选择条件
| 子集代码 | 含义 | 选择条件(用我们的字段) |
|---|---|---|
TRD_BIG_BUY | 主动买的大单成交 —— 主力扫货 | ExecType=F 且 TradeQty>0 | BidApplSeqNum>OfferApplSeqNum | 单笔成交额=TradeMoney ≥ θ |
TRD_BIG_SELL | 主动卖的大单成交 —— 主力出货 | ExecType=F 且 TradeQty>0 | OfferApplSeqNum>BidApplSeqNum | 单笔成交额=TradeMoney ≥ θ |
TRD_SML_BUY | 主动买的小单成交 —— 散户买 | ExecType=F 且 TradeQty>0 | BidApplSeqNum>OfferApplSeqNum | 单笔成交额=TradeMoney < θ |
TRD_SML_SELL | 主动卖的小单成交 —— 散户卖 | ExecType=F 且 TradeQty>0 | OfferApplSeqNum>BidApplSeqNum | 单笔成交额=TradeMoney < θ |
CXL_BIG_BUY | 撤掉的大买单 —— 买盘支撑撤离/诱多 | ExecType=4 (撤单) | 被撤委托 Side=1(买) | 撤单额=委托Price×TradeQty ≥ θ |
CXL_BIG_SELL | 撤掉的大卖单 —— 卖压撤离/诱空 | ExecType=4 (撤单) | 被撤委托 Side=2(卖) | 撤单额=委托Price×TradeQty ≥ θ |
CXL_SML_BUY | 撤掉的小买单 —— 散户撤买 | ExecType=4 (撤单) | 被撤委托 Side=1(买) | 撤单额=委托Price×TradeQty < θ |
CXL_SML_SELL | 撤掉的小卖单 —— 散户撤卖 | ExecType=4 (撤单) | 被撤委托 Side=2(卖) | 撤单额=委托Price×TradeQty < θ |
⑤ 一个完整算例:20 条逐笔小样本(一个10秒窗口)
大单阈值 θ = 500,000 元。设计成"大单笔少额大、小单笔多额小",便于看清各度量差异。
| # | 行为 | 方向 | 价格 | 数量(股) | 金额(元) | 大小 |
|---|---|---|---|---|---|---|
| 1 | 成交 | 买入 | 16.50 | 40,000 | 660,000 | 大单 |
| 2 | 成交 | 买入 | 16.51 | 50,000 | 825,500 | 大单 |
| 3 | 成交 | 卖出 | 16.49 | 55,000 | 906,950 | 大单 |
| 4 | 成交 | 卖出 | 16.48 | 45,000 | 741,600 | 大单 |
| 5 | 成交 | 买入 | 16.50 | 2,000 | 33,000 | 小单 |
| 6 | 成交 | 买入 | 16.50 | 1,500 | 24,750 | 小单 |
| 7 | 成交 | 买入 | 16.51 | 3,000 | 49,530 | 小单 |
| 8 | 成交 | 买入 | 16.50 | 1,000 | 16,500 | 小单 |
| 9 | 成交 | 买入 | 16.49 | 2,500 | 41,225 | 小单 |
| 10 | 成交 | 卖出 | 16.49 | 2,000 | 32,980 | 小单 |
| 11 | 成交 | 卖出 | 16.48 | 1,800 | 29,664 | 小单 |
| 12 | 成交 | 卖出 | 16.49 | 1,200 | 19,788 | 小单 |
| 13 | 成交 | 卖出 | 16.48 | 900 | 14,832 | 小单 |
| 14 | 撤单 | 买入 | 16.45 | 60,000 | 987,000 | 大单 |
| 15 | 撤单 | 买入 | 16.44 | 2,000 | 32,880 | 小单 |
| 16 | 撤单 | 买入 | 16.45 | 1,500 | 24,675 | 小单 |
| 17 | 撤单 | 买入 | 16.43 | 1,000 | 16,430 | 小单 |
| 18 | 撤单 | 卖出 | 16.55 | 50,000 | 827,500 | 大单 |
| 19 | 撤单 | 卖出 | 16.56 | 2,000 | 33,120 | 小单 |
| 20 | 撤单 | 卖出 | 16.54 | 1,500 | 24,810 | 小单 |
成交合计:额 3,396,319 元 / 量 205,900 股 / 13 笔 |
撤单合计:额 1,946,415 元 / 量 118,000 股 / 7 笔。这些是占比的分母。
手把手算 4 个度量(以子集 TRD_BIG_BUY 成交·大单·买入 = 第1、2笔 为例)
子集 S = 第1笔(16.50×40000=660,000) + 第2笔(16.51×50000=825,500) → S额=1,485,500 S量=90,000 S笔=2
金额占比 = 1,485,500 / 3,396,319 = 43.74%
股数占比 = 90,000 / 205,900 = 43.71%
笔数占比 = 2 / 13 = 15.38%
HHI = (660,000/1,485,500)² + (825,500/1,485,500)² = 0.1974 + 0.3088 = 0.5062
金额占比 = 1,485,500 / 3,396,319 = 43.74%
股数占比 = 90,000 / 205,900 = 43.71%
笔数占比 = 2 / 13 = 15.38%
HHI = (660,000/1,485,500)² + (825,500/1,485,500)² = 0.1974 + 0.3088 = 0.5062
看出门道了吗:大单买入金额占比 43.74% 很高,但笔数占比仅 15.38%——这就是"大单笔少额大"。反观小单买入
TRD_SML_BUY:金额占比仅 4.86%,笔数占比却高达 38.46%。金额占比和笔数占比的背离,正是区分主力与散户的核心信号。⑥ 32 字段总表(示例值来自上面的 20 条样本)
矩阵视图:8 子集 × 4 度量
| 选择(集合②③④) | 金额占比 AMT | 股数占比 VOL | 笔数占比 CNT | 价格集中度 HHI |
|---|---|---|---|---|
成交大单买入TRD_BIG_BUY 主动买的大单成交 —— 主力扫货 | 43.74% | 43.71% | 15.38% | 0.5062 |
成交大单卖出TRD_BIG_SELL 主动卖的大单成交 —— 主力出货 | 48.54% | 48.57% | 15.38% | 0.5050 |
成交小单买入TRD_SML_BUY 主动买的小单成交 —— 散户买 | 4.86% | 4.86% | 38.46% | 0.3550 |
成交小单卖出TRD_SML_SELL 主动卖的小单成交 —— 散户卖 | 2.86% | 2.87% | 30.77% | 0.5036 |
撤单大单买入CXL_BIG_BUY 撤掉的大买单 —— 买盘支撑撤离/诱多 | 50.71% | 50.85% | 14.29% | 1.0000 |
撤单大单卖出CXL_BIG_SELL 撤掉的大卖单 —— 卖压撤离/诱空 | 42.51% | 42.37% | 14.29% | 1.0000 |
撤单小单买入CXL_SML_BUY 撤掉的小买单 —— 散户撤买 | 3.80% | 3.81% | 42.86% | 0.3581 |
撤单小单卖出CXL_SML_SELL 撤掉的小卖单 —— 散户撤卖 | 2.98% | 2.97% | 28.57% | 0.5103 |
字段字典:逐个字段的公式与示例值
| 字段代码 | 中文名 | 计算公式(我们的字段) | 示例值 |
|---|---|---|---|
TRD_BIG_BUY_AMT | 成交·大单·买入·金额占比 | Σi∈S TradeMoney / Σi∈全部成交 TradeMoney | 43.74% |
TRD_BIG_BUY_VOL | 成交·大单·买入·股数占比 | Σi∈S TradeQty / Σi∈全部成交 TradeQty | 43.71% |
TRD_BIG_BUY_CNT | 成交·大单·买入·笔数占比 | count(S) / count(全部成交) | 15.38% |
TRD_BIG_BUY_HHI | 成交·大单·买入·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.5062 |
TRD_BIG_SELL_AMT | 成交·大单·卖出·金额占比 | Σi∈S TradeMoney / Σi∈全部成交 TradeMoney | 48.54% |
TRD_BIG_SELL_VOL | 成交·大单·卖出·股数占比 | Σi∈S TradeQty / Σi∈全部成交 TradeQty | 48.57% |
TRD_BIG_SELL_CNT | 成交·大单·卖出·笔数占比 | count(S) / count(全部成交) | 15.38% |
TRD_BIG_SELL_HHI | 成交·大单·卖出·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.5050 |
TRD_SML_BUY_AMT | 成交·小单·买入·金额占比 | Σi∈S TradeMoney / Σi∈全部成交 TradeMoney | 4.86% |
TRD_SML_BUY_VOL | 成交·小单·买入·股数占比 | Σi∈S TradeQty / Σi∈全部成交 TradeQty | 4.86% |
TRD_SML_BUY_CNT | 成交·小单·买入·笔数占比 | count(S) / count(全部成交) | 38.46% |
TRD_SML_BUY_HHI | 成交·小单·买入·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.3550 |
TRD_SML_SELL_AMT | 成交·小单·卖出·金额占比 | Σi∈S TradeMoney / Σi∈全部成交 TradeMoney | 2.86% |
TRD_SML_SELL_VOL | 成交·小单·卖出·股数占比 | Σi∈S TradeQty / Σi∈全部成交 TradeQty | 2.87% |
TRD_SML_SELL_CNT | 成交·小单·卖出·笔数占比 | count(S) / count(全部成交) | 30.77% |
TRD_SML_SELL_HHI | 成交·小单·卖出·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.5036 |
CXL_BIG_BUY_AMT | 撤单·大单·买入·金额占比 | Σi∈S (Price×TradeQty) / Σi∈全部撤单 (Price×TradeQty) | 50.71% |
CXL_BIG_BUY_VOL | 撤单·大单·买入·股数占比 | Σi∈S TradeQty / Σi∈全部撤单 TradeQty | 50.85% |
CXL_BIG_BUY_CNT | 撤单·大单·买入·笔数占比 | count(S) / count(全部撤单) | 14.29% |
CXL_BIG_BUY_HHI | 撤单·大单·买入·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 1.0000 |
CXL_BIG_SELL_AMT | 撤单·大单·卖出·金额占比 | Σi∈S (Price×TradeQty) / Σi∈全部撤单 (Price×TradeQty) | 42.51% |
CXL_BIG_SELL_VOL | 撤单·大单·卖出·股数占比 | Σi∈S TradeQty / Σi∈全部撤单 TradeQty | 42.37% |
CXL_BIG_SELL_CNT | 撤单·大单·卖出·笔数占比 | count(S) / count(全部撤单) | 14.29% |
CXL_BIG_SELL_HHI | 撤单·大单·卖出·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 1.0000 |
CXL_SML_BUY_AMT | 撤单·小单·买入·金额占比 | Σi∈S (Price×TradeQty) / Σi∈全部撤单 (Price×TradeQty) | 3.80% |
CXL_SML_BUY_VOL | 撤单·小单·买入·股数占比 | Σi∈S TradeQty / Σi∈全部撤单 TradeQty | 3.81% |
CXL_SML_BUY_CNT | 撤单·小单·买入·笔数占比 | count(S) / count(全部撤单) | 42.86% |
CXL_SML_BUY_HHI | 撤单·小单·买入·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.3581 |
CXL_SML_SELL_AMT | 撤单·小单·卖出·金额占比 | Σi∈S (Price×TradeQty) / Σi∈全部撤单 (Price×TradeQty) | 2.98% |
CXL_SML_SELL_VOL | 撤单·小单·卖出·股数占比 | Σi∈S TradeQty / Σi∈全部撤单 TradeQty | 2.97% |
CXL_SML_SELL_CNT | 撤单·小单·卖出·笔数占比 | count(S) / count(全部撤单) | 28.57% |
CXL_SML_SELL_HHI | 撤单·小单·卖出·价格集中度 | Σp ( 价位p的额 / S总额 )² (p 遍历 S 内不同 Price) | 0.5103 |
⑦ 真实数据验证(000001.sz · 20240102 · 11:16:40 这个10秒窗口)
该窗口共 289 条逐笔:成交 276 / 撤单 13 / 其中大单 4。
撤单方向规则全天校验:23,509 条符合 / 0 违例(证明"撤买单序号在Bid字段、撤卖单在Offer字段"的规则正确)。
| 选择(集合②③④) | 金额占比 AMT | 股数占比 VOL | 笔数占比 CNT | 价格集中度 HHI |
|---|---|---|---|---|
成交大单买入TRD_BIG_BUY 主动买的大单成交 —— 主力扫货 | 0.00% | 0.00% | 0.00% | 0.0000 |
成交大单卖出TRD_BIG_SELL 主动卖的大单成交 —— 主力出货 | 35.71% | 35.71% | 1.45% | 1.0000 |
成交小单买入TRD_SML_BUY 主动买的小单成交 —— 散户买 | 0.34% | 0.34% | 1.09% | 1.0000 |
成交小单卖出TRD_SML_SELL 主动卖的小单成交 —— 散户卖 | 63.95% | 63.95% | 97.46% | 1.0000 |
撤单大单买入CXL_BIG_BUY 撤掉的大买单 —— 买盘支撑撤离/诱多 | 0.00% | 0.00% | 0.00% | 0.0000 |
撤单大单卖出CXL_BIG_SELL 撤掉的大卖单 —— 卖压撤离/诱空 | 0.00% | 0.00% | 0.00% | 0.0000 |
撤单小单买入CXL_SML_BUY 撤掉的小买单 —— 散户撤买 | 56.27% | 56.41% | 53.85% | 0.7594 |
撤单小单卖出CXL_SML_SELL 撤掉的小卖单 —— 散户撤卖 | 43.73% | 43.59% | 46.15% | 0.7091 |
真实窗口里
TRD_BIG_SELL:金额占比 35.71% 却只占 1.45% 的笔数——
典型的大单特征(少数几笔吃掉大半成交额)。0 值表示该窗口此子集无样本(如无大单主买)。⑧ 几个要注意的点
① θ 阈值:大/小单分界是唯一的人为参数。可用绝对值(如 50万)或当日成交额分位数(如 80% 分位,对应字典里的"统计口径")。阈值变,所有大/小单字段跟着变。
② 金额占比 ≈ 股数占比:单只股票一个短窗口内价格几乎不变(都在 16.4x),所以这两个度量数值非常接近(上例 43.74% vs 43.71%)。它们的差异要到价格波动大、或跨股票横向比较时才显现。同时保留两者主要是为了横截面与跨期可比。
③ 占比的分母:本页用"同行为总量"(成交字段÷全部成交,撤单字段÷全部撤单),好处是 4 子集占比和=1、可解释。若想要"撤单率"(撤单÷委托)那是跨行为口径,需另接 Order 委托总量做分母。
④ 撤单的价/方向必须 join:深交所撤单记录里 TradePrice=0,撤单金额要用被撤委托的 Price(按非0的 ApplSeqNum 回连 Order 表),不能用撤单记录自己的价。
⑤ HHI 的样本量陷阱:子集只有 1 笔时 HHI 恒=1(真实窗口里常见)。笔数很少时 HHI 不稳,做因子时建议加最小笔数过滤,或在更长窗口上算。
⑥ 32 字段只是"原子":它们是某一时刻/窗口的截面快照。真正进模型前通常还要再套一层时序算子(差分Δ、滚动均值/标准差、趋势斜率、累计)——例如"大单净买金额占比的 6 窗口变化率"。
θ=500,000元 · 示例样本20条 · 真实验证 000001.sz/20240102 · 计算脚本 compute_fields32.py