阶段3概率与分布●●●●●

Winsorize与MAD:驯服因子列里的"9999"

我的掌握程度:
q-238精讲

先掌握这个答案

Winsorize(缩尾):把超过上下边界的值「夹」到边界上(不是删除)。边界两流派:①分位数法:1%/99%(或5%/95%)分位——简单直观,行业默认;②MAD法:中位数±3×1.4826×MAD(MAD=绝对偏差的中位数)——抗污染:σ会被极端值本身抬高(9999把σ拉爆→3σ边界宽到放走异常值),MAD基于中位数免疫污染。截断比例权衡:截少了残余污染、截多了伤信息(尾部有时正是信号)——1%是稳健默认,做敏感性对照(0.5%/1%/5%三档)更专业。

先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。

从理解到使用

预处理也是研究的一部分

记录截面日期、股票池、行业版本与缺失规则。用于预测的统计量只能由当时可得样本或训练集估计;标准化不自动消除行业、市值暴露,中性化也不证明剩余信号有Alpha。

本阶段实战方法 · 每个统计量都要带单位和假设

计算收益、波动、回归、显著性或相关性时,先明确样本和推断条件。

  1. 写清收益频率、样本数、缺失处理、是否含费用;百分数与小数不可混用。
  2. 手算一组小样本,再用代码复算;区分算术均值年化、复合年化和年化波动。
  3. 解释假设不成立会发生什么:自相关、肥尾、非平稳与多次试验都会影响结论。

使用边界

  • p值不是原假设为真的概率,也不是策略未来盈利概率。
  • 日波动×√252依赖时间聚合假设;252是教学常用交易日数,实际市场与口径可能不同。
背景 · 从一个困惑说起
PE列里躺着-38和9999、市值跨两个数量级、某个因子值突然是均值的一万倍——直接拿去做回归/标准化,整个横截面被极端值绑架。驯服它们是因子预处理的第一步(q-347三件套的第一件)。
由此产生的问题
Winsorize的标准做法是什么?为什么边界用MAD而不用3σ?截断比例(1%/5%)怎么选?
核心概念
Winsorize(缩尾):把超过上下边界的值「夹」到边界上(不是删除)。边界两流派:①分位数法:1%/99%(或5%/95%)分位——简单直观,行业默认;②MAD法:中位数±3×1.4826×MAD(MAD=绝对偏差的中位数)——抗污染:σ会被极端值本身抬高(9999把σ拉爆→3σ边界宽到放走异常值),MAD基于中位数免疫污染。截断比例权衡:截少了残余污染、截多了伤信息(尾部有时正是信号)——1%是稳健默认,做敏感性对照(0.5%/1%/5%三档)更专业。
为什么需要它
①后续步骤的地基:标准化与回归系数都被极值主导——不清明则全乱;②抗污染的原理值得吃透:它和Robust统计(中位数/IQR家族)同源,是「数据里有敌情时的标准武器」;③截断vs删除:截面数据删除会改变股票池(引入偏差),夹住保留样本量——Winsorize是横截面场景的正确形态。
实际应用场景
一行代码:s.clip(lower, upper);财务因子用MAD、量价因子常配合对数变换(先log再winsorize双保险);边界值记录进因子档案(被夹比例>5%说明数据或逻辑有问题)。
与之前知识的联系
q-237的分位数是边界的原料;q-347(阶段4三件套)把本题纳入流水线;q-240(Rank标准化)是「彻底免疫极值」的另一条路——两条路的信息取舍不同。
⚠ 常见误解
  • 去极值=删除异常值:删除改变样本构成(幸存者偏差微缩版);Winsorize夹住边界——保留存在感、剥夺破坏力
  • 用3σ就行:σ自己被极值污染——"让纵火犯决定消防预算";MAD才是抗污染的边界
  • 截断越狠越干净:5%截断已删掉10%的信息(上下各5%);因子尾部常是信号(极端低估/高异动)——敏感性对照不可省

🤖 AI导师

导师会先检查你的前置知识(分位数、标准差、中位数),再用案例、公式和代码帮助理解。此功能需要先启用服务。