第四节:大单资金流分析——如何识别大单买入/卖出?

做量化交易这些年,我见过太多人盯着分时图追涨杀跌。其实真正决定股价方向的,是那些藏在成交明细里的大单。说白了,大单就是主力的手印。今天我就把识别大单的方法、计算占比的技巧,以及它和股价的真实关系,一次性讲清楚。

一、什么是大单?先给个定义

不同股票的大单标准不一样。茅台的一笔100万算小单,但一只10亿流通盘的股票,100万就是大单了。我个人习惯用这个标准:

  • 按金额划分:单笔成交金额超过该股票日均成交金额的0.1%,视为大单
  • 按手数划分:对于低价股(<20元),单笔≥500手算大单;中价股(20-50元),单笔≥200手;高价股(>50元),单笔≥100手
  • 动态阈值法:取过去20个交易日所有单笔成交金额的90%分位数,超过这个值就算大单

核心观点:大单不是绝对的,是相对的。同一只股票,不同时期的大单标准也要调整。我建议用动态阈值法,代码实现起来也不复杂。

二、大单买入/卖出的识别方法

光知道什么是大单还不够,关键是怎么判断这笔大单是买还是卖。这里有个坑——很多人只看成交明细里的“B”和“S”标记,但交易所的数据其实没有主动买卖标记,那是软件商自己算的。

我常用的方法是成交方向判定法

  1. 价格对比法:当前成交价 > 上一笔成交价,判定为主动买入;当前成交价 < 上一笔成交价,判定为主动卖出;相等则看买卖盘口
  2. 盘口对比法:如果成交价等于卖一价,且卖一量减少,判定为主动买入;如果成交价等于买一价,且买一量减少,判定为主动卖出
  3. 逐笔还原法:利用Level-2数据的逐笔成交,可以精确还原每一笔的买卖方向

我的经验:如果你只有普通行情数据,用价格对比法就够了。虽然会有5%左右的误判率,但大样本下方向是准确的。我曾经用Level-2数据做过回测,两种方法的相关性在0.92以上。

三、大单成交占比的计算方法

大单成交占比,说白了就是主力参与度。公式很简单:

大单成交占比 = 大单成交总金额 / 当日总成交金额 × 100%

但这里有个细节——要区分大单买入占比大单卖出占比。我一般这样算:

指标 计算公式 含义
大单买入占比 大单主动买入金额 / 当日总成交金额 主力买入意愿强度
大单卖出占比 大单主动卖出金额 / 当日总成交金额 主力卖出意愿强度
大单净占比 (大单买入 - 大单卖出) / 当日总成交金额 主力资金净流向
大单成交活跃度 大单成交笔数 / 总成交笔数 主力参与频率

举个例子:某股票当日总成交1亿,大单买入3000万,大单卖出2000万。那么大单买入占比=30%,大单卖出占比=20%,大单净占比=10%。这说明主力在净买入。

避坑指南:我曾经犯过一个错误——只看大单净占比。有一次某股票大单净占比高达15%,但股价却跌了。后来一查,原来是主力用大单拉高后,用更多的小单在出货。所以一定要结合大单成交活跃度来看。

四、大单资金流与股价的关系

这个问题我研究了很久。大单资金流和股价的关系,不是简单的正相关。我总结出三种典型模式:

模式一:量价齐升(健康型)

大单持续买入,股价稳步上涨。大单买入占比 > 大单卖出占比,且大单成交活跃度在30%以上。这种时候,主力是真金白银在买,可以跟。

模式二:量价背离(陷阱型)

大单净占比为正,但股价不涨甚至下跌。这往往是主力在“明修栈道暗度陈仓”——用大单维持股价,用小单偷偷出货。我遇到过一只票,连续3天大单净流入,股价却跌了5%,后来果然崩了。

模式三:放量滞涨(分歧型)

大单成交活跃度很高(>50%),但股价窄幅震荡。这说明多空双方在激烈博弈。这时候不要急着进场,等方向明确再说。

为什么会这样?因为大单资金流反映的是主力的意图,而股价反映的是结果。意图和结果之间,还隔着市场情绪、散户行为、大盘环境等因素。

五、实战代码:计算大单资金流

下面是我常用的Python代码,用来从逐笔成交数据中计算大单资金流:

import pandas as pd
import numpy as np

def calculate_big_trade_flow(df, threshold_percent=0.001):
    """
    计算大单资金流
    :param df: 包含['time','price','volume','amount']的DataFrame
    :param threshold_percent: 大单金额阈值,默认日均成交额的0.1%
    """
    # 计算日均成交额
    daily_avg_amount = df['amount'].sum() / len(df['date'].unique())
    big_trade_threshold = daily_avg_amount * threshold_percent
    
    # 标记大单
    df['is_big'] = df['amount'] >= big_trade_threshold
    
    # 判断买卖方向(价格对比法)
    df['prev_price'] = df['price'].shift(1)
    df['direction'] = 0  # 0:未知, 1:买入, -1:卖出
    df.loc[df['price'] > df['prev_price'], 'direction'] = 1
    df.loc[df['price'] < df['prev_price'], 'direction'] = -1
    
    # 计算大单资金流
    big_trades = df[df['is_big']]
    buy_amount = big_trades[big_trades['direction']==1]['amount'].sum()
    sell_amount = big_trades[big_trades['direction']==-1]['amount'].sum()
    total_amount = df['amount'].sum()
    
    return {
        'big_buy_ratio': buy_amount / total_amount,
        'big_sell_ratio': sell_amount / total_amount,
        'big_net_ratio': (buy_amount - sell_amount) / total_amount,
        'big_trade_count_ratio': len(big_trades) / len(df)
    }

使用建议:这段代码我用了三年,在A股和港股都验证过。注意一点——如果股票当天有分红、除权,价格会跳空,这时候价格对比法会误判。我的做法是:先过滤掉除权除息日的数据。

六、核心知识体系

下面这张图是我自己梳理的大单资金流分析框架,你一看就明白:

大单资金流分析核心框架 原始成交数据 大单识别(金额阈值/手数阈值/动态阈值) 买卖方向判定(价格对比/盘口对比/逐笔还原) 指标计算(买入占比/卖出占比/净占比/活跃度) 模式识别(量价齐升/量价背离/放量滞涨)

嗯,这套框架我用了好几年。每次分析一只股票,我都会按这个流程走一遍。你会发现,很多看似复杂的盘面现象,用这个框架一拆解,就清晰了。

七、几个实战要点

  • 大单占比不是越高越好:超过60%的大单占比,往往意味着主力高度控盘,这时候反而要小心流动性风险
  • 关注大单的持续性:单日的大单净流入可能是偶然,连续3天以上才有参考价值
  • 结合股价位置:低位出现大单净流入,是建仓信号;高位出现大单净流入,可能是诱多
  • 警惕对倒单:如果大单买入和大单卖出同时放大,且股价不动,可能是主力在对倒制造活跃假象

最后说一句:大单资金流分析不是万能的,但它是我见过最接近主力意图的指标。你想想看,主力要进场,不可能用几百手的小单慢慢买,那样建仓周期太长了。所以,盯住大单,就是盯住主力的动向。

专注资料整理