基于趋势资金日内交易行为的选股因子的研报复现
  18958283423 2025年06月08日 120 0

报告原文下载链接:https://pan.baidu.com/s/1ab9uNgS2Ydhimlu1jf5raA 提取码:hgei

本篇研报以趋势资金为切入点:通过日内分钟级别的成交量来识别趋势资金,再通过对应的 价、量数据推测其交易行为,构建有效的选股因子。该因子主要利用了市场的无效性,根据A股市场散户占比高,定价效率较低的特征,得出主力资金行为更容易产生超额收益机会这一结论,并将将主观交易经验(如“跟庄策略”)转化为可量化的指标。

由于获取数据上的限制,我在复现研报时只采用了 2024-03-04 至 2024-08-31 的 30 只股票的数据,但是这30只股票只来自于能源和材料两个行业,这样方便后续进行行业中性化处理。

一. 数据预处理

在股票停牌导致的收盘价信息缺失时,我通过找到这只股票上一个有效交易日的收盘价,来填充这个停牌日的空白格,这也正确地反映了停牌期间股价没有变动(收益为 0)的现实。在计算每日因子时,如果当天股票停牌,就会缺少分钟线的价格和成交量数据,导致当天的因子值为空(NaN)。如果只是零星几天停牌,研报的月度聚合逻辑(取均值)会自动忽略这 几天的 NaN。但如果一只股票整个月都在停牌,那么它的月度平均因子值会被填充为0,代表该股票在这个月表现中性,没有表现出因子特征。

二. 第一个因子的复现(趋势资金相对均价因子)

(1)每个交易日t,回看过去k个交易日 t-k、t-(k-1)、…、t-1,计算过去 k 日分钟成交量序列的m%分位数,定义为成交量阈值;其中,k暂取5,m暂取90; (2)将交易日t的每分钟成交量与上述阈值进行对比,若某一分钟的成交量大于上述阈值,则该分钟的交易被视为趋势资金的交易。识别了日内所有的趋势资金后,本节内容先来考察它们在交易价格层面提供的信息。具体地,我们计算趋势资金交易均价相对于当日所有分钟交易均价的高低水平,定义如下选股因子: (1)每个交易日,计算“趋势资金的成交量加权平均价格/所有分钟的成交量加权平均 价格-1”;
(2)每月月底回看过去20个交易日,计算上述指标的平均值,并做横截面市值、中信一级行业中性化处理,得到趋势资金相对均价因子。趋势资金相对均价因子的逻辑在于:若因子值较大,则表明趋势资金的交易价格相对较高,其出货的可能性更大,后市看空;若因子值较小,则表明趋势资金的交易价格较低,其交易行为更有可能是逢低买入,后市看涨。

部分代码实现:
image.png
image.png
image.png

行业中性化相关代码:
image.png

结果输出:
image.png
image.png
该因子的 Rank IC 表现波动较大且不太稳定。月度分布显示 IC 值离散且偏离均值,累计曲线的起伏也反映出因子预测能力在统计期间内时好时坏,微弱的平均正相关性说明因子对未来收益有一定正向预测潜力,但需进一步观察和优化以提升稳定性和有效性。
image.png
image.png

三. 第二个因子的复现(趋势资金净支撑量因子)

(1)每个交易日,根据本文第二节的方法,以过去 5 日分钟成交量序列的90%分位数为衡量标准,识别当日的趋势资金;
(2)计算所有趋势资金分钟收盘价的平均值,筛选趋势资金中、收盘价小于该平均值的分钟,将它们的成交量加总,得到趋势资金支撑成交量;
(3)类似地,将趋势资金中、收盘价大于上述平均值的分钟成交量加总,得到趋势资金阻力成交量;
(4)每日计算(趋势资金支撑成交量-趋势资金阻力成交量)/当日流通股本,月底回看过去20个交易日,求20日均值,再做横截面市值、行业中性化处理,得到趋势资金净支撑量因子。

部分代码实现:
image.png
image.png

结果输出:
image.png
image.png
因子2的RankIC表现同样存在波动。月度分布显示IC值离散且偏离均值,累计曲线的起伏体现出因子预测能力在统计期内不稳定。不过,相比因子1,因子2的平均正相关性稍强(均值0.0472大于因子1的0.0254 ),但预测能力的稳定性仍需关注和改进,以提升其在量化投资中的有效性。
image.png
image.png

四. 第三个因子的复现(趋势资金交易行为综合因子)

每月月底,将上述两个因子各自做横截面标准化处理,再按照因子方向等权合成,得到趋势资金交易行为综合因子:
综合因子= −zscore(相对均价因子) + zscore(净支撑量因子)

部分代码实现:
image.png
image.png

结果输出:
image.png
image.png
因子 3 的 Rank IC 表现波动剧烈且不稳定。月度分布显示IC值离散且偏离均值,累计曲线的大幅起伏反映出因子预测能力在统计期内极不稳定。平均负相关性(均值-0.0303)说明该因子对未来收益的预测方向整体与理想情况相反,且预测能力的稳定性差。
image.png
image.png

五. 探究以上因子在现在的有效性

如今A股市场散户占比依旧较高,此类趋势因子应当依旧有效,但是由于同类策略规模过大(多家机构跟踪趋势资金),信号被快速稀释,可能导致因子失效。

六. 代码编写心得

在编写python代码复现因子时,我们应采用面向对象编程。将整个因子回测流程封装到一个类(Class)里,可以把所有全局参数(如回测起止日期、K值、M值、文件路径等)都作为类的初始化参数。这样,每次想用不同的参数运行时,只需要在创建类的实例时传入不同的值,而不需要去修改代码内部的全局变量,非常方便、清晰且不易出错。
另外,类可以持有自己的状态(比如加载后的交易日历、股票列表、计算出的因子数据等),这些数据被封装在类的实例中,不会污染全局命名空间。
同时,未来如果想在其他项目中复用这个回测框架,或者想增加新的因子、新的分析方法,基于类的结构会更容易扩展。

七. 评估因子预测能力和策略稳定性的指标

最后,附上各类判断评估因子预测能力和策略稳定性的指标的对比:
1. IC(Information Coefficient,信息系数)
截屏20250608 23.22.09.png
范围:[-1, 1],绝对值越接近1,预测能力越强。
IC具有的局限性来自因子与收益为线性关系的假设。另外,其对极端值敏感。
2. ICIR(IC Information Ratio,信息比率)
截屏20250608 23.22.41.png
表示单位波动下的IC收益,用来衡量因子稳健性。
**范围:**无固定上下限,通常:ICIR > 1.5:因子稳定有效。ICIR > 2:因子极强。
3. RankIC(秩相关系数)
截屏20250608 23.23.01.png
范围:[-1, 1],绝对值越大,排名预测能力越强。
4. RankICIR(RankIC信息比率)
截屏20250608 23.23.24.png
衡量综合排名信号的长期有效性和稳定性。
5. Accumulate IC(累积信息系数)
截屏20250608 23.23.44.png
趋势方向:
上升趋势:因子长期有效,预测能力稳定。
下降趋势:因子长期失效,预测能力减弱。
水平波动:因子预测能力不稳定,时好时坏。
斜率:
陡峭斜率:因子预测能力强,累积 IC 增长快。
平缓斜率:因子预测能力弱,累积 IC 增长慢。
转折点:
累积 IC 曲线的拐点可能表示因子逻辑失效(如市场风格切换)。

指标 优点
IC 直观反映因子与收益的线性关系。
ICIR 结合因子预测能力(Mean(IC))与稳定性(Std(IC))。避免高IC但波动大的“伪有效”因子。
RankIC 不依赖线性假设,仅要求单调关系。抗极端值干扰(如某股票因子值极高但收益异常)。更适合股票收益的非正态分布特征。
RankICIR 适用于当因子值与收益的关系非线性但单调时。
Accumulate IC 通过累积多期 IC,平滑短期波动,展示因子在长期的持续预测能力。

综合来看,IC与RankIC优先看RankIC(因股票收益常非线性),但需结合IC验证逻辑一致性。ICIR与RankICIR是因子实盘化的核心指标,RankICIR > 2的因子方可考虑纳入策略。

最后一次编辑于 9天前 0

暂无评论

推荐阅读