第四章:大单资金流模型——解析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%就算大单。这个方法更科学,因为它考虑了股票的流动性。

我在项目中遇到过这样的情况:用固定阈值去判断,结果在低价股上抓出一堆「假大单」,其实人家只是正常交易。后来我改用「动态阈值+相对比例」的组合,效果就好多了。

💡 我的经验: 对于沪深300成分股,我一般用50万作为大单阈值;对于中小盘股,用20万就够了。你可以根据自己的策略灵活调整。

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 计算净流入:大单资金流的核心指标

净流入 = 大单买入金额 - 大单卖出金额

这个公式看着简单,但实际计算时有很多坑。我曾经踩过一个坑:把「大单买入」和「大单卖出」搞反了,结果算出来的净流入方向跟股价走势完全相反,差点把策略带沟里去。

正确的计算流程是这样的:

  1. 从Level-2逐笔数据中,筛选出所有大单(按我们设定的阈值)
  2. 对每笔大单,判断方向(买入/卖出)
  3. 分别累加买入金额和卖出金额
  4. 净流入 = 买入总额 - 卖出总额

我给你们写个完整的计算函数:

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 知识体系总览

为了让你更直观地理解这一章的内容,我画了张图:

大单资金流模型知识体系 Level-2 逐笔成交数据 核心处理流程 大单判定 方向识别 净流入计算 输出指标 大单买入金额 | 大单卖出金额 | 净流入 | 大单笔数 实战应用场景 主力吸筹识别 | 出货预警 | 真假突破判断 | 资金趋势跟踪

这张图把整个大单资金流模型的脉络理清楚了。从数据源开始,经过判定、识别、计算三个核心步骤,最终输出关键指标,再应用到实战场景中。你写代码的时候,就按这个流程来组织逻辑,不会乱。

4.7 写在最后

大单资金流模型,说白了就是给主力资金「画像」的工具。你掌握了这个模型,就能从海量的成交数据中,把主力的操作痕迹给揪出来。

不过我要提醒一句:任何模型都有局限性。大单数据只能反映「已经发生」的交易,不能预测未来。而且主力也会反侦察——拆单、对倒、虚假申报,这些手法都能干扰你的判断。所以,这个模型最好跟其他指标配合使用,别单打独斗。

好了,这一章的内容就到这儿。代码我已经给你们写好了,回去跑一跑,看看你关注的股票里,主力到底在干嘛。


专注资料整理