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=FTradeQty>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.5040,000660,000大单
2成交买入16.5150,000825,500大单
3成交卖出16.4955,000906,950大单
4成交卖出16.4845,000741,600大单
5成交买入16.502,00033,000小单
6成交买入16.501,50024,750小单
7成交买入16.513,00049,530小单
8成交买入16.501,00016,500小单
9成交买入16.492,50041,225小单
10成交卖出16.492,00032,980小单
11成交卖出16.481,80029,664小单
12成交卖出16.491,20019,788小单
13成交卖出16.4890014,832小单
14撤单买入16.4560,000987,000大单
15撤单买入16.442,00032,880小单
16撤单买入16.451,50024,675小单
17撤单买入16.431,00016,430小单
18撤单卖出16.5550,000827,500大单
19撤单卖出16.562,00033,120小单
20撤单卖出16.541,50024,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
看出门道了吗:大单买入金额占比 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∈全部成交 TradeMoney43.74%
TRD_BIG_BUY_VOL成交·大单·买入·股数占比Σi∈S TradeQty / Σi∈全部成交 TradeQty43.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∈全部成交 TradeMoney48.54%
TRD_BIG_SELL_VOL成交·大单·卖出·股数占比Σi∈S TradeQty / Σi∈全部成交 TradeQty48.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∈全部成交 TradeMoney4.86%
TRD_SML_BUY_VOL成交·小单·买入·股数占比Σi∈S TradeQty / Σi∈全部成交 TradeQty4.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∈全部成交 TradeMoney2.86%
TRD_SML_SELL_VOL成交·小单·卖出·股数占比Σi∈S TradeQty / Σi∈全部成交 TradeQty2.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∈全部撤单 TradeQty50.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∈全部撤单 TradeQty42.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∈全部撤单 TradeQty3.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∈全部撤单 TradeQty2.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