第四章:大单资金流模型——解析Level-2逐笔成交数据
各位同学,咱们今天聊点硬核的。
前面几章讲了主力资金的基础逻辑,但说实话,光看分时图和K线,你很难判断到底是谁在买、谁在卖。我刚开始做量化那会儿,就吃过这个亏——看着股价涨得挺好,一追进去就被套,后来才发现是散户在自嗨,主力早就跑了。
所以这一章,咱们要深入Level-2逐笔成交数据,把大单资金流模型彻底讲透。说白了,就是教会你怎么用数据「看穿」主力的手。
4.1 什么是Level-2逐笔成交数据?
先问个问题:普通行情软件里看到的「成交明细」,跟Level-2的「逐笔成交」有什么区别?
嗯,区别大了去了。
普通行情是3秒或5秒切片一次,把这段时间内的所有成交汇总成一条记录。你看到的「10:30:00 成交1000手」,其实是这3秒内所有成交的加总。而Level-2逐笔成交,是把每一笔真实的委托成交都列出来——谁在什么时间、以什么价格、买了多少股,清清楚楚。
我举个例子你就明白了:
| 数据类型 | 时间精度 | 单笔信息 | 能否识别大单 |
|---|---|---|---|
| 普通行情 | 3秒切片 | 汇总数据 | ❌ 无法识别 |
| Level-2逐笔 | 毫秒级 | 每笔真实成交 | ✅ 精准识别 |
你看,没有逐笔数据,你根本不知道那1000手是1笔大单还是100笔小单。而有了逐笔数据,我们就能精准地抓出「大单」——也就是主力资金的手笔。
4.2 大单的判定标准
这里有个关键问题:多大的单算「大单」?
我个人习惯用两个维度来判断:
- 绝对金额法:单笔成交金额超过某个阈值,比如20万、50万、100万。这个阈值要根据股票的价格和流通市值来调整。茅台的一笔20万可能不算大,但ST股的一笔20万可能就是天量了。
- 相对比例法:单笔成交量占该股日均成交量的比例,比如超过0.1%就算大单。这个方法更科学,因为它考虑了股票的流动性。
我在项目中遇到过这样的情况:用固定阈值去判断,结果在低价股上抓出一堆「假大单」,其实人家只是正常交易。后来我改用「动态阈值+相对比例」的组合,效果就好多了。
4.3 识别大单买入与大单卖出
有了逐笔数据,我们怎么判断一笔大单是买入还是卖出?
这里有个核心逻辑:看这笔成交是主动成交还是被动成交。
简单说:
- 如果买方主动吃掉了卖一价上的挂单,那就是主动买入(买方强势)
- 如果卖方主动砸向了买一价上的挂单,那就是主动卖出(卖方强势)
Level-2数据里有一个字段叫「成交方向」,直接告诉你这笔是Buy还是Sell。但要注意,有些数据源可能没有这个字段,那我们就得自己算——用成交价格跟买卖盘口对比。
代码实现其实不复杂,我给你们写个核心函数:
def classify_trade(row, bid_price, ask_price):
"""
判断单笔成交的方向
row: 逐笔成交数据
bid_price: 当前买一价
ask_price: 当前卖一价
"""
if row['price'] >= ask_price:
return '主动买入' # 买方主动吃单
elif row['price'] <= bid_price:
return '主动卖出' # 卖方主动砸盘
else:
return '中性成交' # 盘口中间成交,一般是撮合单
嗯,这里要注意:有些交易所的逐笔数据会把「中性成交」标记为0,我们直接过滤掉就好,不影响大单统计。
4.4 计算净流入:大单资金流的核心指标
净流入 = 大单买入金额 - 大单卖出金额
这个公式看着简单,但实际计算时有很多坑。我曾经踩过一个坑:把「大单买入」和「大单卖出」搞反了,结果算出来的净流入方向跟股价走势完全相反,差点把策略带沟里去。
正确的计算流程是这样的:
- 从Level-2逐笔数据中,筛选出所有大单(按我们设定的阈值)
- 对每笔大单,判断方向(买入/卖出)
- 分别累加买入金额和卖出金额
- 净流入 = 买入总额 - 卖出总额
我给你们写个完整的计算函数:
def calculate_net_inflow(trades, large_threshold=500000):
"""
计算大单资金净流入
trades: DataFrame,包含price, volume, direction字段
large_threshold: 大单金额阈值,默认50万
"""
# 计算每笔成交金额
trades['amount'] = trades['price'] * trades['volume'] * 100 # 假设volume单位是手
# 筛选大单
large_trades = trades[trades['amount'] >= large_threshold]
# 分别统计买入和卖出
buy_amount = large_trades[large_trades['direction'] == '主动买入']['amount'].sum()
sell_amount = large_trades[large_trades['direction'] == '主动卖出']['amount'].sum()
net_inflow = buy_amount - sell_amount
return {
'buy_amount': buy_amount,
'sell_amount': sell_amount,
'net_inflow': net_inflow,
'large_trade_count': len(large_trades)
}
4.5 实战中的几个关键技巧
光会算还不够,你得知道怎么用。我分享几个实战中总结的技巧:
- 看累计值,别只看单日:单日的净流入可能有噪音,我习惯看3日、5日的累计净流入,趋势更明显。
- 结合股价位置判断:同样的净流入,在低位是吸筹,在高位可能是诱多。这个判断需要经验积累。
- 注意大单的「真假」:有些主力会用「拆单」手法,把大单拆成小单来隐藏意图。所以除了看单笔大单,还要看「密集小单」——短时间内连续出现同向的小单,也可能是主力在操作。
说到拆单,我想起一个案例。有次我跟踪一只股票,发现大单净流入是负的,但股价却在涨。后来仔细看逐笔数据,发现每隔几秒就有一笔9万多的买入单(刚好低于我设的10万阈值),连续出现了几十次。这就是典型的拆单手法。从那以后,我在模型里加入了「密集小单识别」模块。
4.6 知识体系总览
为了让你更直观地理解这一章的内容,我画了张图:
这张图把整个大单资金流模型的脉络理清楚了。从数据源开始,经过判定、识别、计算三个核心步骤,最终输出关键指标,再应用到实战场景中。你写代码的时候,就按这个流程来组织逻辑,不会乱。
4.7 写在最后
大单资金流模型,说白了就是给主力资金「画像」的工具。你掌握了这个模型,就能从海量的成交数据中,把主力的操作痕迹给揪出来。
不过我要提醒一句:任何模型都有局限性。大单数据只能反映「已经发生」的交易,不能预测未来。而且主力也会反侦察——拆单、对倒、虚假申报,这些手法都能干扰你的判断。所以,这个模型最好跟其他指标配合使用,别单打独斗。
好了,这一章的内容就到这儿。代码我已经给你们写好了,回去跑一跑,看看你关注的股票里,主力到底在干嘛。