报告原文下载链接:https://pan.baidu.com/s/1yShAqy_AY8aB8Vx4RvgvNg提取码:lvi0
和上次一样,我们先来分析标签、特征和因子分别是什么。在这篇研报中,标签有股票代码、每日开盘价、每日收盘价、交易者结构等未经加工的底层市场数据。特征有交易者结构(大小单)、交易占比(如小单交易占比 = 小单成交金额 / 总成交金额)、过去20日累计涨跌幅(Ret20)、过去240日累计涨跌幅(Ret240)、剔除最近40日的过去200日涨跌幅(Ret240_40)等从原始标签中提取或计算出的尚未验证预测能力的中间变量。因子有传统因子如Ret20(过去20日涨跌幅)、Ret240(过去240日涨跌幅)、Ret240_40(剔除最近40日的过去200日涨跌幅)和改进后的新因子如New_Ret20(新反转因子)和New_Ret240_40(新动量因子)。
本篇研报本质是想通过交易者结构(订单大小分布)识别股价对信息的反应模式(反应不足或反应过度),从而改进传统动量/反转因子,增强选股效果。如果是小单在进行缓慢交易,信息就会被逐步消化,趋势会延续;如果是大胆在快速推动交易,则价格可能短期会偏离基本面,后续价格修正会表现为反转。传统动量/反转因子(如过去20日涨跌幅)的表现不稳定,因其未区分股价涨跌背后的驱动力量(大单 vs 小单)。
由于获取数据上的限制,我在复现研报时只采用了 2024-03-12 至 2025-03-12 的 30 只股票的数据,但是这30只股票只来自于能源和材料两个行业,这样方便后续进行行业中性化处理。由于一年的数据无法完全复现Ret240和Ret240_40(因为要240+20天的数据来完成因子计算和IC计算),我将计算Ret240时回看的天数改为了120天、将计算Ret240_40时回看的天数改为了120天,剔除的最近天数改为了20天。但是总体逻辑和原研报保持一致。本文章中的所有数值仅供参考。
一、传统涨跌幅因子(Ret20)
构建逻辑:
20 个交易日大约相当于 1 个月,这个时间窗口能够较好地捕捉股票的中期趋势,既不会太 短(如 5 日涨跌幅)导致过度关注短期波动,也不会太长(如 60 日涨跌幅)导致信号过于滞后。
代码实现:
(19)输出结果:**
二、交易者结构与动量/反转
当一只股票成交量较大、或者大单交易占比较高时,更有可能造成股价在短时间内被朝着同一方向快速推动,也就更有可能发生反应过度,那么对应的涨跌幅因子自然也就更容易呈现反转效应。反之,成交量较小、或者由小单交易主导的涨跌幅,就更有可能反应不足,从而表现为动量。
接下来我们用数据来证明一下这个结论。
小单、超大单交易占比对涨跌幅因子的区分能力最强,5 个局部因子的年化ICIR 不仅严格单调,而且方向也发生了变化;具体来看,随着小单交易占比的提升,局部因子逐渐由反转变为动量;而随着超大单交易占比的提升,局部因子的变化正好完全相反,逐渐由动量变为反转。
超大单通常代表机构,小单通常代表散户。在我们的认知里,机构意味着理性,为什么理性的机构会造成股票价格反应过度呢?
首先,机构拆单的现象越来越普遍,而有钱的散户、游资也越来越多,因此在很多时候,可能反而是散户、游资在挂大单,而机构已经拆成了小单进行交易。所以,并不一定是超大单代表机构,小单代表散户。
其次,不管是机构还是散户,只要入市场的是一个大单子,那么这个订单就很容易引起股价在短期内反应过度。
三、基于交易者结构的新反转因子(New_Ret20)
我们选择利用“小单”交易占比,构建新的反转因子,具体步骤为:
(1)先以“小单”为例,每月月底,将每只股票过去 20 个交易日的涨跌幅(今收/昨收-1)序列,按照该股票每日的“小单”交易占比,从低到高进行排序,等分为5个小组;
(2)每一组计算该组内 4 个交易日涨跌幅的平均值,共可得到 5 个局部因子;具体地,若股票 A 过去 20 个交易日的涨跌幅序列,按照每日“小单”交易占比排序后,依次为,则5个局部因子定义为:
其中,“small”表示按照“小单”交易占比划分,small_part1 即为 20 个交易日中,小单交易占 比最低的 4 个交易日涨跌幅的平均值
(3)每只股票的新反转因子 New_Ret20 定义为因子 1 与因子 5 之差(两个因子相减之前, 先各自做横截面标准化),即:
New_Ret20 = small_part1 − small_part5
(4)在回测时间段中,月度换仓,以全体 A 股为研究样本,做 5 分组回测。
构建逻辑:
小单主导时段(small_part5) 可能进行价格修正,大单主导时段(small_part1)更容易出现过度 反应,两者差异越大,说明价格扭曲越严重,未来反转可能性越大。
代码实现:
结果输出:
该因子失效的时间点大约在2024.4。原因可能与新“国九条”的发布与发酵有关。在新“国九条”这种强大的宏观政策驱动下,市场形成了一致性极强的投资主题——买入高股息、大市值的“核心资产”,卖出绩差小盘股。资金的流动不再由个股自身的微观交易结构(如散户行为)主导,而是被自上而下的宏观叙事所支配。这导致了强大的动量效应,符合政策导向的股票持续上涨,不符合的则持续下跌。在这种情况下,所有试图“逆势而为”的反转因子(无论是基于价格还是资金流),其信号都会被这种强大的趋势所淹没,从而失效。
四、新动量因子的构建
4.1 传统长周期动量因子(Ret240)
构建逻辑:
240个交易日大约相当于1年,这个超长周期设计用于识别真正的长期趋势、过滤短期市场 噪音和捕捉跨越市场周期的持续性表现等。
代码实现:
结果输出:
但是因子的RankIC仍然是负的,仍表现为较弱的反转而不是动量。
4.2 Barra定义的动量因子(Ret240_40)
回看过去 240 个交易日,并且把距离最近的一段时间剔除。比如我们暂且把最近的 40 个交易日剔除,只计算剩下200个交易日的累计涨跌幅。在我的研报复现中,我把这里的数据同步变化为回看过去120个交易日,把最近的20个交易日剔除。
为什么可以这样定义动量因子(构建逻辑)?
学术研究表明,6-12个月的股价趋势在未来1-3个月可能延续(Jegadeesh & Titman, 1993)。
最近1个月的收益可能包含流动性冲击或短期反转效应(如超卖反弹),为了避免短期反转干扰,剔除后可减少噪声。
代码实现:
结果输出:
RankIC依旧为负,依旧没有呈现出动量。
4.3 在Ret240_40基础上更改得到新动量因子(New_Ret240_40)
(1)每月月底,每只股票回看过去 240 个交易日,剔除最近的 40 个交易日;
(2)在剩下的 200 个交易日中,先分别用每日的小单交易占比、换手率,各自划分为2个组;
(3)将同时属于小单交易占比高组、换手率低组的交易日取出来,计算这些交易日涨跌幅的平均值,得到新动量因子New_Ret240_40。
构建逻辑:
双重筛选机制只保留"小单占比高+低换手"的交易日计算动量,用来捕捉被小单持续缓慢推高的"温水煮青蛙"式趋势,避免了高换手率下的价格操纵或短期投机干扰。
代码实现:
结果输出:
该因子失效的时间点也大约在2024.4,也是跟新“国九条”引发的市场范式剧变有关。该因子关注小单,选出的股票很可能是那些市值偏小、机构关注度低、但因特定题材而吸引了部分散户资金的股票。这些正是传统意义上游资和散户博弈的“战场”。而新“国九条”之后市场的“宠儿”是高股息、高现金流、大市值、业绩稳定的“核心资产”,即“中字头”和各类茅。因此,New_Ret240_40 因子非常精准地构建了一个 “待被市场抛弃”的股票组合,所以失败是大概率事件。
这说明当宏观叙事和市场风格发生根本性转变时,基于微观交易结构构建的因子,其逻辑前提可能会被完全颠覆。这背后的本质的原因是市场Beta因子的变体,它们的失效往往与市场整体状态密切相关。动量因子依赖市场存在趋势延续性,反转因子依赖市场存在过度反应后的修正。两者均需要市场具备特定的波动模式(趋势或均值回复),本质是对市场状态(Beta)的暴露,一旦市场失去趋势或均值回复特性,因子逻辑即被破坏。