4、资金流指标计算:主力净流入、净流出、资金强度、资金集中度的计算公式与实现

好,咱们直接进入正题。

上一章我们聊了数据清洗,那都是准备工作。这一章,才是真正开始“算钱”了。

资金流指标,说白了就是回答一个问题:主力到底在买还是在卖?

我刚开始做量化的时候,也迷信过各种复杂模型。后来发现,最基础的资金流指标,往往最管用。你想想看,大资金进出,就像大象过河,动静肯定小不了。

4.1 主力净流入与净流出

这两个指标是孪生兄弟。公式很简单:

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

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

嗯,这里有个坑。很多新手会问:“我怎么知道哪些是主力买入,哪些是主力卖出?”

其实,我们用的是近似法。在A股市场,通常把单笔成交额大于某个阈值(比如100万元)的订单,视为“主力行为”。

具体实现时,我习惯这样处理:

def calculate_net_inflow(df, threshold=1000000):
    """
    计算主力净流入
    :param df: DataFrame,包含成交明细(price, volume, amount, buy_sell_flag)
    :param threshold: 单笔成交金额阈值,默认100万
    :return: 净流入金额
    """
    # 筛选出主力级别的成交
    main_force = df[df['amount'] >= threshold]
    
    # 区分买入和卖出
    buy = main_force[main_force['buy_sell_flag'] == 'B']['amount'].sum()
    sell = main_force[main_force['buy_sell_flag'] == 'S']['amount'].sum()
    
    net_inflow = buy - sell
    return net_inflow

避坑指南: 我曾经在实盘回测中,直接用日线级别的“大单净流入”数据,结果发现信号滞后严重。后来改成用分钟级数据计算,效果好了很多。记住,资金流是高频行为,用低频数据去算,就像用望远镜看蚂蚁搬家——看不清。

4.2 资金强度

净流入只能告诉你方向,但没法告诉你“力度”。

举个例子:某只股票今天净流入1个亿,但全天成交额是100亿。另一只股票净流入5000万,但全天成交额只有5亿。你说哪个主力更积极?

这时候就需要资金强度了。

计算公式:

资金强度 = 主力净流入 / 流通市值(或成交额)

我个人习惯用成交额做分母,因为流通市值变化太慢,反应不够灵敏。

def calculate_strength(net_inflow, total_turnover):
    """
    计算资金强度
    :param net_inflow: 主力净流入
    :param total_turnover: 总成交额
    :return: 资金强度(百分比)
    """
    if total_turnover == 0:
        return 0
    strength = (net_inflow / total_turnover) * 100
    return round(strength, 2)

资金强度大于0,说明主力在净买入;小于0,说明在净卖出。绝对值越大,力度越强。

注意: 资金强度不是万能的。我记得有一次,某只股票资金强度高达15%,我以为是主力强力建仓,结果第二天就跌停了。后来复盘发现,那是主力在对倒出货——左手倒右手,制造假象。所以,资金强度一定要结合价格走势来看。

4.3 资金集中度

这个指标,很多人会忽略。但我认为它非常关键。

资金集中度,衡量的是主力资金是否集中在少数几个价位上。如果主力在某个价位密集成交,说明这里有“阵地战”。

计算公式:

资金集中度 = 前N笔最大成交金额之和 / 总成交金额

N通常取5或10。我一般用10,因为样本量太少了不稳定。

def calculate_concentration(df, top_n=10):
    """
    计算资金集中度
    :param df: DataFrame,包含成交明细(amount)
    :param top_n: 取前N笔最大成交
    :return: 集中度(百分比)
    """
    total_amount = df['amount'].sum()
    if total_amount == 0:
        return 0
    
    # 按成交金额降序排列,取前N笔
    top_amounts = df['amount'].sort_values(ascending=False).head(top_n).sum()
    
    concentration = (top_amounts / total_amount) * 100
    return round(concentration, 2)

集中度越高,说明主力越“抱团”。我一般这样用:

  • 集中度 > 30%:高度集中,主力可能在关键价位博弈
  • 集中度 15% - 30%:中度集中,正常交易状态
  • 集中度 < 15%:分散交易,可能是散户行情

4.4 四个指标的综合应用

单独看一个指标,容易出错。我习惯把它们组合起来看:

场景 净流入 资金强度 资金集中度 我的判断
强势建仓 正,大额 > 5% > 25% 主力真金白银在买,可以跟进
诱多出货 正,小额 < 2% < 15% 可能是假象,小心追高
对倒做量 接近0 接近0 > 40% 主力在自娱自乐,别参与
恐慌出逃 负,大额 < -5% > 30% 主力在跑,赶紧撤

你看,四个指标组合起来,就像给主力资金做了个“CT扫描”,哪里有问题一目了然。

4.5 知识体系总览

为了让你更直观地理解这几个指标的关系,我画了张图:

资金流指标体系 主力净流入/流出 资金强度 资金集中度 核心公式 净流入 = 买入 - 卖出 强度 = 净流入 / 成交额 集中度 = 前N笔最大成交 / 总成交 综合应用场景 强势建仓 诱多出货 对倒做量 恐慌出逃 净流入 + 强度 + 集中度 → 综合判断

这张图把四个指标的关系串起来了。你写代码的时候,可以按照这个结构来组织函数,逻辑会清晰很多。

我的一个小习惯: 在实盘系统中,我会把这四个指标做成一个“资金仪表盘”。每天开盘前跑一遍,看看哪些股票出现了异常的资金行为。这比单纯看K线有效得多。

好了,这一章的内容就到这。公式和代码都给你了,剩下的就是去数据里验证。记住,纸上得来终觉浅,绝知此事要躬行。


公众号:蓝海资料掘金营,微信deep3321