小单资金流残差因子

小单资金流残差因子——一个用来捕捉"散户异常情绪"的信号。

听起来很高大上,但逻辑其实很朴素:

散户(小单)在疯狂买入或疯狂卖出一只股票,但这种行为又无法用股价本身的涨跌来解释——这就是一个值得关注的信号。

先聊聊背景:什么是资金流?

在 A 股,每一笔交易都可以按照挂单金额分为四类:

类型

挂单金额

代表谁

超大单

> 100 万

机构、大户

大单

20~100 万

中大户

中单

4~20 万

小机构、活跃散户

小单

< 4 万

普通散户

资金流向就是统计每类资金的净流入(买入 - 卖出)。

小单净流入多 → 散户在买;小单净流出多 → 散户在卖。


第一步:计算小单资金流强度

光看净流入金额不够用,因为不同股票体量差异很大。我们需要一个标准化的指标:

白话解释:

  • 分子:过去 20 天,散户总体是净买入还是净卖出(有方向)

  • 分母:过去 20 天,散户每天"动静"的绝对值之和(只看大小)

  • 结果:一个介于 -1 到 +1 之间的数字

举个例子:

  • :散户过去 20 天持续猛买,情绪很高涨

  • :散户过去 20 天持续在卖,情绪很悲观

  • :散户买卖相对均衡,没有明显倾向


第二步:为什么不直接用 ,还要多做一步?

这里有个关键问题:散户跟涨跟跌是很正常的行为。

一只股票涨了 30%,散户跑去追买, 自然会很高——但这个高并不是因为散户有什么"独特判断",只是在跟着涨幅走而已。

如果直接用 ,你衡量的其实是"股票涨了多少",而不是"散户行为有多异常"。

解决方案:回归 + 取残差

在每一天,对全市场所有股票做一个截面回归:

  • 用涨跌幅解释资金流强度,把"正常跟涨跟跌"的部分去掉

  • 剩下的残差 ,才是无法被涨跌幅解释的散户异常行为

这个 就是我们的最终因子。

类比理解:就像考试成绩和学习时间高度相关。如果一个学生花了很多时间学习却考了低分,这个"异常"才值得关注——残差因子就是在找这种"异常"。

代码实现

在 BigQuant 平台上,用 DAI SQL 几行就能搞定:

WITH base AS (
    SELECT
        date, instrument,
        -- 每日小单净资金流
        active_buy_amount_small - active_sell_amount_small AS net_small
    FROM cn_stock_prefactors
    WHERE st_status = 0 AND suspended = 0
),
intensity AS (
    SELECT date, instrument,
        -- 滚动20日资金流强度
        m_sum(net_small, 20) / m_sum(ABS(net_small), 20) AS small_st,
        -- 近20日涨跌幅
        close / m_lag(close, 20) - 1 AS ret20
    FROM base
)
SELECT date, instrument,
    -- 截面回归取残差 = 最终因子
    c_regr_residual(small_st, ret20) AS factor
FROM intensity

三个核心函数:

  • m_sum(x, 20):时间序列上向前滚动求 20 日之和

  • m_lag(close, 20):取 20 日前的收盘价

  • c_regr_residual(y, x):截面 OLS 回归,返回残差

BigQuant CodeShare