首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >横截面因子标准化别用全样本:按交易日分组更稳妥

横截面因子标准化别用全样本:按交易日分组更稳妥

原创
作者头像
量化行业新引擎
发布于 2026-10-09 10:08:19
发布于 2026-10-09 10:08:19
200
举报
文章被收录于专栏:AI量化视界AI量化视界

做横截面选股时,因子标准化看起来只是减均值、除标准差,但分组维度如果写错,回测会悄悄混入不该出现的信息。最常见的问题是对整段历史一次性算均值和标准差。这样既把不同市场阶段的分布混在一起,也让早期样本使用了未来数据。

横截面因子的比较对象应该是同一交易日、同一股票池中的股票。例如估值因子在不同年份的整体水平可能相差很大。用全样本参数处理后,结果反映的是记录在全部历史中的位置,而不是某只股票当天相对其他股票的位置。

用 pandas 处理时,可以按交易日分组,再用 transform 把组内统计量对齐回原行:

g = df.groupby("trade_date")["factor"]

mean = g.transform("mean")

std = g.transform("std")

df["factor_z"] = (df["factor"] - mean) / std

GroupBy.transform 返回与原数据同索引的结果,适合把组内统计量映射回每只股票。相比 apply,这种写法的意图也更清楚。

实际使用还要补三层检查。第一,先按当日可投资股票池过滤,停牌、未上市和已退市股票不能混进分布;第二,极端值处理也应在同一天内完成,可先计算当日分位点再缩尾;第三,当日有效样本太少或标准差为零时,直接保留为空,不要强行填成零。

行业中性因子可以把分组键改成 trade_date 与 industry,但小行业样本过少时结果会不稳定。我通常同时保留当日样本数、均值和标准差,抽查几个交易日的分布,并确认排名方向符合原始因子含义。

标准化不会凭空提升策略,它只是让不同日期、不同量纲的因子更容易比较。关键是每个数值只能使用当时可见的股票池和数据,分组边界必须与策略决策时点一致。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档