为什么你的换手率因子总“变脸”?——聊聊因子平稳性与两种实用转换技巧
明明回测曲线很漂亮,实盘一跑就变脸?问题可能出在你直接用了“原始均换手率”这个因子值。
在量化圈,20日均换手率是一个非常经典的量价因子。它简单直观:过去20个交易日的平均换手率,反映了一只股票的交投活跃程度。很多初学者会直接把这个值放进多因子模型,或者作为机器学习的一个特征。
然而,如果你直接用原始值建模,往往会遇到一个诡异的现象:样本内表现惊艳,样本外(或实盘)却持续失效。这背后的罪魁祸首,常常是因子非平稳。
今天我们就来聊聊:为什么20日均换手率天生“不老实”?为什么建议你对它进行差分(日度变化)或分位数转换,而不是直接使用原始值?
先来看PandaAI对20日均换手率因子和进行差分处理后的20日均换手率因子进行3年回测分析的结果:
1,对非线性因子回测的工作流设置:
2,20日均换手率因子(按熊猫AI平台的规范格式输入公式:MA(TURNOVER,20))回测结果图:
3,进行差分处理后的20日均换手率因子(按熊猫AI平台的规范格式输入公式:DIFF(MA(TURNOVER,20),1))回测结果图:
对比两组回测数据,我们可以很明显地看出清晰的数据差异:
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日均换手率的三大隐患
- 伪回归:相关系数不靠谱
假如你把两只股票的原始换手率做回归,可能发现它们高度相关。但这种相关很可能只是因为两者都随市场整体流动性趋势同步上升,而不是真正的基本面联系。在统计上,这种虚假关系会让你的因子权重被严重高估。 - 统计量失效:t值、p值都是“骗人”的
多因子模型里,我们常用t检验判断因子是否显著。如果因子非平稳,t值的分布会偏离正态分布,原本不显著的因子看起来“显著”,实盘却一塌糊涂。 - 模型泛化能力差
机器学习模型(如LSTM、XGBoost)如果直接输入非平稳特征,会过度拟合历史中不可重复的趋势。比如,模型学会了“换手率大于5%就买入”——但在2015年,全市场换手率普遍高于5%,这个阈值根本不具区分度。
三、两种让因子“变老实”的转换方法
针对20日均换手率的非平稳特性,业内常用两种简单而有效的处理方式:差分(日度变化) 和分位数转换。
方法一:差分——从“数值”变成“变化”
为什么有效?
原始换手率像一辆车的累计里程,随着时间不断增长。
差分相当于瞬时速度,它只关心今天比昨天快了多少,而不是总里程数。
在金融市场,变化量往往比绝对值更具预测力。比如“换手率突然放大”比“换手率很高”更能反映资金异动。
适用场景
时序预测(如预测下一日收益率)、构建价量配合类因子(如“换手率变化率与涨幅的关系”)。
注意事项
差分虽然解决了趋势问题,但会放大噪声。如果原始换手率存在微观结构噪声(比如由于停牌导致的跳空),差分后可能产生虚假信号。建议配合中位数平滑或异常值处理一起使用。
方法二:分位数转换——从“具体数值”变成“相对位置”
操作
在每个截面上(比如每天),对所有股票的20日均换手率进行排序,然后映射为百分位数(0~1)或标准正态分位数。
效果
彻底消除绝对数值的量纲和长期趋势。
无论市场整体换手率是3%还是8%,排名靠前的股票始终是“活跃股”,排名靠后的始终是“冷门股”。
为什么有效?
截面多因子模型(如Barra模型)最关心的不是因子的绝对值,而是股票之间的相对差异。
分位数转换保留了排序信息,同时使得因子在时间序列上近似平稳(每个股票的分位数分布在不同年份保持一致)。
适用场景
截面选股(如每天的因子暴露用于横截面回归)
机器学习中的Ranking任务(如Learning to Rank)
注意事项
分位数转换会导致极端值的相对差异被压缩,如果因子本身在极端分位具有强非线性预测能力,可能需要结合分位数分段处理。
四、实战建议:哪种方法更适合你?
时序择时模型(如预测大盘涨跌):
差分,关注的是市场活跃度的边际变化,差分后的因子更平稳,适合时间序列建模。
截面多因子选股(如ICIR分析):
分位数转换,保持横截面的可比性,消除市场整体换手率中枢漂移的影响。
机器学习(树模型):
分位数转换,树模型对单调变换不敏感,分位数转换能增强因子在不同市场环境下的泛化能力。
高频/日间统计套利:
差分 + 标准化,同时处理趋势和波动率聚集问题,使因子满足协整检验的前提。
五、检验一下:你的因子“老实”了吗?
处理完因子后,建议用ADF检验(Augmented Dickey-Fuller) 和KPSS检验组合验证。
ADF检验:原假设是非平稳。如果p值<0.05,说明平稳。
KPSS检验:原假设是平稳。如果p值>0.05,说明平稳。