为什么你的换手率因子总“变脸”?——聊聊因子平稳性与两种实用转换技巧.
  林坤 14天前 110 0

为什么你的换手率因子总“变脸”?——聊聊因子平稳性与两种实用转换技巧

明明回测曲线很漂亮,实盘一跑就变脸?问题可能出在你直接用了“原始均换手率”这个因子值。
在量化圈,20日均换手率是一个非常经典的量价因子。它简单直观:过去20个交易日的平均换手率,反映了一只股票的交投活跃程度。很多初学者会直接把这个值放进多因子模型,或者作为机器学习的一个特征。
然而,如果你直接用原始值建模,往往会遇到一个诡异的现象:样本内表现惊艳,样本外(或实盘)却持续失效。这背后的罪魁祸首,常常是因子非平稳。

今天我们就来聊聊:为什么20日均换手率天生“不老实”?为什么建议你对它进行差分(日度变化)或分位数转换,而不是直接使用原始值?

先来看PandaAI对20日均换手率因子和进行差分处理后的20日均换手率因子进行3年回测分析的结果:

1,对非线性因子回测的工作流设置:
9010c09e86a04394a74d5fa9266e8ea6.png

2,20日均换手率因子(按熊猫AI平台的规范格式输入公式:MA(TURNOVER,20))回测结果图:
A.png
A1.png

3,进行差分处理后的20日均换手率因子(按熊猫AI平台的规范格式输入公式:DIFF(MA(TURNOVER,20),1))回测结果图:
B.png
B1.png

对比两组回测数据,我们可以很明显地看出清晰的数据差异:

20日均换手因子:分组收益混乱,多空组合年化为负(-15.5%)、回撤高达40%,完全不具备使用价值。20日均换手的差分因子:分组收益有所区分,多空组合表现优异(年化8.7%、夏普3.6),但换手率极高(100%),且不同构造方式下表现差异大,稳健性存疑。

所以我们可以得出结论:

弃用20日均换手因子:预测能力极弱,风险收益为负,无实盘价值。
20日均换手的差分因子显著优于原因子:差分处理使无效因子升级为具备选股能力的有效因子,但需谨慎使用。因其高换手(成本敏感)与稳健性不足,仅建议作为辅助因子纳入模型,不宜作为核心策略单独使用。

4,

一、什么是“平稳性”?用体温来打个比方

先想象一下:健康人的体温一天内会小幅波动,但始终围绕37℃左右,不会逐年升高。这就是平稳序列——均值和方差在时间上稳定,未来走势有一定的“均值回归”规律。
但如果看的是年龄,从0岁到80岁,它只会单调上升,永远不会回到过去的数值。这就是非平稳序列——统计特性随时间变化,过去的规律在未来可能完全失效。
回到金融数据,20日均换手率更像是“年龄”而不是“体温”。A股市场在2005年、2015年、2020年的日均换手率中枢完全不同:股权分置改革前普遍较低,2015年牛市飙升,注册制推行后又出现结构性的流动性分化。如果你用一个2005年训练好的模型去预测2023年的收益,模型会“刻舟求剑”,因为因子值的“正常范围”已经彻底变了。

二、直接使用原始20日均换手率的三大隐患

  1. 伪回归:相关系数不靠谱
    假如你把两只股票的原始换手率做回归,可能发现它们高度相关。但这种相关很可能只是因为两者都随市场整体流动性趋势同步上升,而不是真正的基本面联系。在统计上,这种虚假关系会让你的因子权重被严重高估。
  2. 统计量失效:t值、p值都是“骗人”的
    多因子模型里,我们常用t检验判断因子是否显著。如果因子非平稳,t值的分布会偏离正态分布,原本不显著的因子看起来“显著”,实盘却一塌糊涂。
  3. 模型泛化能力差
    机器学习模型(如LSTM、XGBoost)如果直接输入非平稳特征,会过度拟合历史中不可重复的趋势。比如,模型学会了“换手率大于5%就买入”——但在2015年,全市场换手率普遍高于5%,这个阈值根本不具区分度。

三、两种让因子“变老实”的转换方法

针对20日均换手率的非平稳特性,业内常用两种简单而有效的处理方式:差分(日度变化) 和分位数转换。

方法一:差分——从“数值”变成“变化”

531fb7ad0bd84a489deb4075d5b6d08b.png

为什么有效?

原始换手率像一辆车的累计里程,随着时间不断增长。
差分相当于瞬时速度,它只关心今天比昨天快了多少,而不是总里程数。
在金融市场,变化量往往比绝对值更具预测力。比如“换手率突然放大”比“换手率很高”更能反映资金异动。

适用场景

时序预测(如预测下一日收益率)、构建价量配合类因子(如“换手率变化率与涨幅的关系”)。

注意事项

差分虽然解决了趋势问题,但会放大噪声。如果原始换手率存在微观结构噪声(比如由于停牌导致的跳空),差分后可能产生虚假信号。建议配合中位数平滑或异常值处理一起使用。

方法二:分位数转换——从“具体数值”变成“相对位置”

操作

在每个截面上(比如每天),对所有股票的20日均换手率进行排序,然后映射为百分位数(0~1)或标准正态分位数。

效果

彻底消除绝对数值的量纲和长期趋势。
无论市场整体换手率是3%还是8%,排名靠前的股票始终是“活跃股”,排名靠后的始终是“冷门股”。

为什么有效?

截面多因子模型(如Barra模型)最关心的不是因子的绝对值,而是股票之间的相对差异。
分位数转换保留了排序信息,同时使得因子在时间序列上近似平稳(每个股票的分位数分布在不同年份保持一致)。

适用场景

截面选股(如每天的因子暴露用于横截面回归)
机器学习中的Ranking任务(如Learning to Rank)

注意事项

分位数转换会导致极端值的相对差异被压缩,如果因子本身在极端分位具有强非线性预测能力,可能需要结合分位数分段处理。

四、实战建议:哪种方法更适合你?

时序择时模型(如预测大盘涨跌):
差分,关注的是市场活跃度的边际变化,差分后的因子更平稳,适合时间序列建模。

截面多因子选股(如ICIR分析):
分位数转换,保持横截面的可比性,消除市场整体换手率中枢漂移的影响。

机器学习(树模型):
分位数转换,树模型对单调变换不敏感,分位数转换能增强因子在不同市场环境下的泛化能力。

高频/日间统计套利:
差分 + 标准化,同时处理趋势和波动率聚集问题,使因子满足协整检验的前提。

五、检验一下:你的因子“老实”了吗?

处理完因子后,建议用ADF检验(Augmented Dickey-Fuller) 和KPSS检验组合验证。
ADF检验:原假设是非平稳。如果p值<0.05,说明平稳。
KPSS检验:原假设是平稳。如果p值>0.05,说明平稳。

理想情况是 ADF拒绝非平稳,KPSS不拒绝平稳,这代表你的因子已经“改过自新”。(以上实验可以在pandaAI平台自由验证)

最后一次编辑于 14天前 0

暂无评论

推荐阅读
  17302718730   12天前   85   0   0 线上课
  LOJU   11天前   92   0   0 机器学习策略
  浴缸   12天前   54   0   0 机器学习