第四节:净流入净流出计算原理——大单、中单、小单的划分标准

好,咱们直接切入正题。

很多新手看资金流向,上来就盯着那个红绿柱看。但说实话,如果连大单、中单、小单怎么划分的都不清楚,那看到的净流入净流出,基本就是看个热闹。我刚开始做量化那会儿,也犯过这个错——拿到的数据漂亮得很,结果一跑回测,亏得我头皮发麻。

后来我才明白:划分标准,才是资金分析的地基。地基歪了,上面盖什么都是危楼。

4.1 为什么需要划分大单、中单、小单?

交易所的原始数据,其实只有每一笔成交的价格数量。它不会告诉你「这单是机构买的还是散户买的」。

那怎么办?我们只能通过单笔成交金额的大小,来反推这笔交易背后的资金性质。

逻辑很简单:

  • 大单:金额大,大概率是机构、主力在操作
  • 中单:金额中等,可能是游资或者大户
  • 小单:金额小,基本就是散户行为

嗯,这里要注意:这个划分不是绝对的。不同市场、不同股票、甚至不同时间段,标准都不一样。我见过有人拿一套固定参数跑遍全市场,结果惨不忍睹。

4.2 常见的划分标准(实战经验版)

我个人习惯用金额阈值法,简单直接,回测效果也稳定。下面是我在A股市场常用的标准:

单笔成交金额 划分类型 典型资金性质
≥ 100万元 大单 机构、主力
20万元 ~ 100万元 中单 游资、大户
< 20万元 小单 散户

你可能会问:为什么是100万和20万这两个数?

其实没有标准答案。我在项目中测试过50万、80万、120万等多个阈值,最终发现100万这个点,在沪深300成分股上的信号质量最好。对于小盘股,我建议把阈值下调到50万甚至30万。说白了,标准要跟着股票走,不能一刀切

💡 我的小技巧: 如果你拿不准阈值,可以用股票过去20天的平均成交金额 × 2,作为大单的阈值。这个方法我用了好几年,适应性很强。

4.3 主力净流入的核心公式

好,划分标准定下来了。接下来就是核心逻辑:

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

就这么简单?对,就这么简单。但简单不代表容易用。

我解释一下:

  • 大单买入:所有被判定为大单的成交中,属于主动买入的部分
  • 大单卖出:所有被判定为大单的成交中,属于主动卖出的部分
  • 差值:正数就是净流入,负数就是净流出

举个例子:

某只股票今天有3笔大单:

  • 第一笔:主动买入 200万元 → 大单买入 +200万
  • 第二笔:主动卖出 150万元 → 大单卖出 -150万
  • 第三笔:主动买入 300万元 → 大单买入 +300万

那么:主力净流入 = (200 + 300) - 150 = +350万元

嗯,这里有个坑:「主动」和「被动」的区别。主动买入是指买方直接以卖一价甚至更高价格成交,说明买方着急要货。被动买入是挂单等着别人来砸。我一般只统计主动成交的部分,因为那才是真实意图。

⚠️ 避坑指南: 我曾经踩过一个坑——把所有的成交都算进去,结果净流入数据跟股价走势完全背离。后来才发现,很多大单是「对倒」出来的,左手倒右手,看着热闹,实际没意义。所以一定要区分主动和被动。

4.4 代码实现:从原始数据到净流入

光说不练假把式。我直接给一段Python代码,你拿去就能用。


import pandas as pd

def classify_order(amount):
    """根据成交金额划分大单、中单、小单"""
    if amount >= 1000000:  # 100万元
        return '大单'
    elif amount >= 200000:  # 20万元
        return '中单'
    else:
        return '小单'

def calculate_net_inflow(df):
    """
    计算主力净流入
    df 必须包含字段:amount(成交金额), side(方向: 'buy' 或 'sell')
    """
    df['order_type'] = df['amount'].apply(classify_order)
    
    # 只筛选大单
    big_orders = df[df['order_type'] == '大单']
    
    # 计算买入和卖出
    buy_amount = big_orders[big_orders['side'] == 'buy']['amount'].sum()
    sell_amount = big_orders[big_orders['side'] == 'sell']['amount'].sum()
    
    net_inflow = buy_amount - sell_amount
    return net_inflow

# 示例用法
data = {
    'amount': [2000000, 1500000, 50000, 3000000, 80000],
    'side': ['buy', 'sell', 'buy', 'buy', 'sell']
}
df = pd.DataFrame(data)
result = calculate_net_inflow(df)
print(f"主力净流入: {result} 元")

这段代码很基础,但核心逻辑都在里面了。你实际用的时候,需要从行情接口获取逐笔成交数据,然后按这个思路处理。

4.5 知识体系总览

为了让你看得更清楚,我画了一张图,把整个计算逻辑串起来:

主力净流入计算逻辑框架 原始逐笔成交数据 第一步:按金额划分 大单(≥100万) | 中单(20~100万) | 小单(<20万) 只保留「大单」用于后续计算 第二步:区分主动方向 主动买入 vs 主动卖出(排除对倒) 主力净流入 = 大单买入 - 大单卖出

4.6 几个实战中的注意事项

最后,我把自己踩过的坑总结一下,你直接拿去用:

  1. 阈值要动态调整:牛市和熊市,阈值肯定不一样。我一般每季度重新校准一次。
  2. 小心「拆单」:有些主力会把大单拆成中单甚至小单,来隐藏意图。所以只看大单会漏掉信号。
  3. 结合价格位置看:同样的净流入,在低位和高位含义完全不同。低位净流入可能是建仓,高位净流入可能是拉高出货。
  4. 不要只看一天:单日的净流入数据噪音很大。我习惯看3日、5日的累计值,信号更稳定。
📌 一句话总结: 净流入计算的核心不是公式本身,而是「大单」的划分标准。标准对了,后面的一切才有意义。
专注资料整理