量化概念 04:数据清洗四步(去极值 → 标准化 → 中性化 → 正交化)
为什么要清洗
因子值是从原始数据加工出来的,原始数据不干净,因子值就不可信。
数据清洗做的事,是把因子值里的"脏"东西处理掉。不清洗,因子值之间的比较、多个因子的加权、因子好坏的验证,全都建立在不可信的基础上——洗的不是数据本身,是结论的可靠性。
洗掉哪些问题
- 极端值:个别股票的数据离谱——财报手误、停牌复牌、极端行情。举个例子:99 只股票的换手率都在 1%~10% 之间,一只票因为数据错误出现 500%,平均值就从 3% 左右被拉到 8%——后面所有用平均值、相关性的步骤全被带偏
- 量纲不一:PE 是几十倍,换手率是百分之几,动量也是百分之几。数值尺度完全不同:直接相加的话,PE 的数值是换手率的几百倍,小尺度的因子等于没参与
- 混入他因:因子值高,可能只是因为它是小市值股、属于某个热门行业,而不是因子本身在起作用。比如小盘股平均涨 5%、大盘股平均涨 1%,一个恰好选中小盘股的因子,"看起来有效"其实可能是市值在起作用
- 重复信息:动量、波动率、换手率看似不同,其实高度相关。比如动量 20 日和动量 60 日的相关系数常常超过 0.9,一起加权等于同一个观点投了两次票
怎么洗
第一步:去极值。 处理极端值。做法:算出中位数,把"离中位数太远"的值压回合理边界。多远算太远,用 MAD(中位数的平均偏离)来定——它比均值和标准差抗极端值。类比体检:发现异常指标,先复查,再按合理范围修正,而不是让一个离谱数拖着整个结论跑。
第二步:标准化。 处理量纲不一。做法:减去均值、除以波动,把每个因子变成"离平均几个波动"的分数。洗完所有因子都在同一把尺子上:均值是 0,波动一致。类比不同科目:数学 90 分和英语 70 分没法直接比,都换成"超出平均几个标准差",就能比了。
第三步:中性化。 处理混入他因。做法:把因子值里"跟着市值走""跟着行业走"的部分剥掉,剩下的才是因子自己的信号。类比比成绩:先剔除班级整体水平的差异,看你在班里的相对位置;同行业股票之间比,排除行业冷暖的影响。
第四步:正交化。 处理重复信息。做法:相关性太高的因子只留一个;或者把新因子里"和已有因子重复的部分"去掉,只保留别人没说过的新信息。类比:已经有了温度计,再加一个摄氏度温度计没有新信息。
有哪些坑
- 顺序不能乱:去极值必须在标准化之前。先标准化,极端值已经把均值和波动带偏了,后面全建立在错误的前提上
- 阈值是取舍:去极值阈值太狠,会把真实的大行情当异常削掉;太松,等于没洗
- 中性化会误杀:如果一个因子的价值就在于"小市值",市值中性化会把它整个削掉——测出来无效,其实是被洗掉了。清洗之前,得先想清楚这个因子在赚什么钱
- 小心未来函数:用全样本的中位数、均值来清洗,等于偷看了未来。每一步都只能用"当时能得到"的数据
寒蝉 Hancic

