4. 信号标准化与去噪
盘口失衡指标本身是一个“量纲依赖”很强的数值。以常见的订单簿失衡度为例,若定义为 OFI = (BidSize − AskSize) / (BidSize + AskSize),取值落在 −1 到 +1 之间,看似已经归一化,但真正用于收益分层检验时仍会遇到三类麻烦:不同股票的盘口深度、最小报价单位、活跃度差异巨大,导致同一数值在不同标的上的经济含义不同;同一股票在开盘、午间、尾盘的量级分布明显漂移;偶发的挂单撤单、冰山单刷新、涨跌停封单会造成极端值,把分层边界拉偏。因此,本节的核心任务不是“再算一个指标”,而是把原始失衡信号加工成横截面可比、时序稳定、对异常值稳健的标准化信号,为后续按信号强弱分组、检验各组收益差异打下基础。
一、先明确标准化的目标与参照系
标准化要回答的问题是:某只股票在某一时刻的失衡值,相对于“它自己平时的水平”和“同期其他股票的水平”,究竟算强还是弱。这里涉及两个参照系,必须分开处理并保持全文一致:
- 横截面参照:在同一时间截面上,把所有股票(或同一股票池内)的原始失衡值放在一起比较,消除市场整体情绪造成的共同偏移。例如某日全市场买盘普遍偏强,若不做横截面处理,几乎所有股票都会被判为“强买盘”,分层就失去区分度。
- 时序参照:对单只股票,用它过去一段时间的分布来度量当前值偏离了多少,消除个股自身的量级差异和日内节律。
工程上通常先做时序平滑与异常值处理,再做横截面标准化,最后可选做一次时序标准化。顺序不能随意颠倒:若先做横截面标准化再平滑,极端值会污染整个截面的均值与标准差;若先做时序标准化再横截面处理,则个股分布参数本身已被异常值扭曲。
二、异常值处理:先“止血”再谈标准化
盘口数据的极端值来源明确:涨跌停板上的巨量封单、集合竞价阶段的虚拟撮合挂单、机构冰山单的瞬时刷新、以及数据源偶发的字段错位。处理原则是识别而非删除,保留记录但替换数值,避免样本选择偏差。
推荐做法是对每只股票、每个交易日的原始失衡序列做中位数绝对偏差(MAD)截断。相比 3σ 法,MAD 对厚尾分布更稳健。设原始序列为 x_t,计算:
med = median(x)
mad = median(|x − med|)
scale = 1.4826 × mad # 使 MAD 在正态下与标准差可比
lower = med − k × scale
upper = med + k × scale
x_clip = min(max(x, lower), upper) # k 常取 3~5
示例(合理假设,非实测):某股票某日原始 OFI 序列中位数为 0.08,MAD 为 0.05,则 scale≈0.074,取 k=4 得截断区间约 [−0.22, 0.38]。若某时刻因涨停封单出现 OFI=0.95,则被截断为 0.38,同时在该样本上打“截断标记”,便于事后统计极端值出现频率。若某只股票当日 MAD 接近 0(盘口长期几乎无变化,如停牌前后),应改用全市场同日截面 MAD 作为替代尺度,避免除零或过度放大。
三、时序平滑:压低噪声但保留信号转折
逐笔或逐秒的失衡值抖动很大,直接分层会让同一股票在相邻时点反复跳组。平滑的目标是提高信噪比,但不能把真实的盘口转向抹平。常用手段有三类,选择取决于信号频率与调仓周期:
- 滚动均值:窗口取 5~20 个采样点,实现简单,但对突变响应滞后,且对残留极端值仍敏感。
- 指数加权移动平均(EWMA):
s_t = α·x_t + (1−α)·s_{t−1},α 取 0.1~0.3 时等效窗口约 7~19 个点,计算量小、可实时更新,适合盘中滚动计算。 - 中位数滚动滤波:窗口 5 点取中位数,对脉冲型噪声抑制最好,代价是计算稍重、转折处略钝。
实操建议:先用 MAD 截断,再做 EWMA 平滑,α 与后续检验的持有周期匹配——若按 30 分钟收益分层,采样为 1 分钟,则 α 取 0.1 左右(等效约 10 分钟记忆)较为合理。平滑窗口一旦确定,应在整个回测期内固定,不得按结果反复调参,否则标准化本身就成了过拟合来源。
四、横截面标准化:让不同股票站到同一把尺子上
平滑后的信号 s 在同一时间截面上做 z 分数标准化:
mu_t = mean(s_i,t) # 截面内所有股票
sigma_t = std(s_i,t)
z_i,t = (s_i,t − mu_t) / sigma_t
这一步消除了市场共同偏移,使 z 值表示“相对同期同池股票的强弱”。需要注意三点:其一,股票池必须固定且可交易,停牌、ST、上市不足 N 日的标的应剔除,否则截面统计量被污染;其二,sigma_t 过小时(如全市场盘口极度清淡)应设下限或跳过该截面,防止 z 值被放大到几十倍;其三,若信号分布明显厚尾,可改用截面排序百分位 rank/(N+1) 映射到 (0,1),再线性变换到近似正态区间,稳健性更好但损失了绝对幅度信息。
完成横截面标准化后,若仍需跨日比较个股自身强弱,可再对每只股票的 z 序列做一次滚动时序标准化(窗口如 20 个交易日),得到“双重标准化”信号。是否加这一步取决于检验设计:做纯截面分层(每日分组比较次日收益)时,单次横截面标准化已足够;做时序择时或跨期稳定性检验时,双重标准化更有意义。
五、可比性校验:标准化是否真的“生效”
标准化做完不能直接进入分层,必须先做三项校验,否则后续收益差异可能来自标准化缺陷而非信号本身。
- 截面分布校验:逐日检查 z 值的均值是否接近 0、标准差是否接近 1,并观察偏度与峰度。若某日标准差远大于 1,说明当日存在未被截断的极端值或股票池异常;若均值长期偏离 0,说明截面计算混入了非交易标的。
- 个股稳定性校验:对每只股票统计其 z 值的时序标准差。若某股票 z 值长期集中在 ±0.2 以内,说明它几乎从不进入极端分层,可能是流动性过低导致信号被平滑抹平,应在股票池中降权或剔除。
- 分层均衡校验:按 z 值分位数(如 20%/60%/20%)分组后,检查各组样本数量是否稳定、组间原始 OFI 均值是否单调。若出现“强买盘组原始均值反而低于中性组”的倒挂,通常是平滑窗口过长或截断过狠所致。
六、一个可复用的参数配置样例
下表给出一份可直接参考的配置样例,参数值属于教学示例与合理假设,实际使用需按标的池与采样频率重新标定:
| 环节 | 参数 | 示例取值 | 作用与判断依据 |
|---|---|---|---|
| 采样 | 采样频率 | 1 分钟快照 | 与持有周期匹配,过快则噪声占比高 |
| 异常值 | MAD 倍数 k | 4 | k 越小越稳健,但会削弱真实极端信号 |
| 异常值 | MAD 退化阈值 | MAD < 1e−4 时改用截面 MAD | 防止清淡标的除零放大 |
| 平滑 | EWMA α | 0.1 | 等效记忆约 10 个采样点 |
| 截面 | 股票池 | 剔除停牌、ST、上市不足 60 日 | 保证截面统计量干净 |
| 截面 | σ 下限 | 0.02 | 低于下限则跳过该截面 |
| 分层 | 分组分位 | 20% / 60% / 20% | 保证各组样本量可比 |
按上述流程处理后,输出的是逐股票、逐时点的标准化信号 z。它已经消除了个股量级差异、市场共同偏移和脉冲噪声,可以直接送入下一阶段的收益分层检验:按 z 分组、统计各组未来收益均值与显著性、并检查分层单调性。需要强调的是,标准化只保证“可比”,不保证“有效”;信号是否真的包含收益信息,仍要由分层检验的结果来回答,而标准化的质量决定了这个回答是否可信。