Fisher-z Correlation Forecasting
大白话:相关系数 \rho 只在 [-1, 1] 之间取值,而且靠近 0 和靠近 1 时,同样的 0.05 变动含义完全不同, 直接拿它做回归会出问题。做法是先做一个 Fisher 变换 z = \operatorname{atanh}(\rho) 把 \rho 拉到整条实数轴上, 在 z 上预测相对于一个滚动基准的残差,最后再用 \tanh 变回 \rho。
Fisher-z 相关性预测:在 Fisher 变换后的实数轴上预测相关性的残差,以解决 \rho \in [-1, 1] 上的异方差和分布畸变。
直接预测 \rho 的问题
相关系数是有界的(\rho \in [-1, 1]),而且在水平方向上异方差:在 0 附近变动 0.05 与在 \pm 1 附近变动 0.05 是两种完全不同的信号。抽样噪声也取决于 \rho 的水平。这意味着:
- 朴素的 MSE 损失用在 \rho 上时,会被那些靠近极端值的样本主导——那些位置上大的 \rho 根本不可能取到。
- 残差不可加:如果想学 \Delta\rho = \rho_{\text{true}} - \rho_{\text{base}},在边界附近的数学处理会变得很别扭。
- 梯度会爆炸或消失:在大多数参数化形式下,\rho \to \pm 1 时梯度会出问题。
Fisher 变换
标准做法(Fisher 1915,从 meta 分析到 DCC-GARCH 都这么用)是 z 变换:
z = \operatorname{atanh}(\rho) = \tfrac{1}{2} \log\!\frac{1+\rho}{1-\rho}, \qquad \rho = \tanh(z)
有三条性质让 z 成为合适的工作空间:
- 无界且近似线性:z \in \mathbb{R},小 \rho 时 z \approx \rho,同时可以自然地延伸到很大的相关性。
- 方差稳定:对样本相关系数有 \text{Var}(z) \approx 1/(n-3),与 \rho 无关。
- 可加:残差学习 z_{\text{true}} - z_{\text{base}} = \Delta z 定义良好,梯度表现也正常。
Fisher-z 空间中的残差学习
Fanshawe–Masih–Cameron 的 THGNN 模型被训练来预测相对于 30 日滚动基准的偏离:
\hat z_{ij, t+10} = z^{\text{base}}_{ij, t} + \Delta \hat z_{ij, t}, \qquad \hat\rho_{ij, t+10} = \tanh(\hat z_{ij, t+10})
其中 z^{\text{base}}_{ij, t} = \operatorname{atanh}(\rho^{\text{base}}_{ij, t}),\rho^{\text{base}} 是 30 日滚动收益相关性。模型至少要学会相对于一个非平凡基准的偏离——这就避免了在噪声很大的金融目标上常见的「预测均值」式的模式崩塌 (mode collapse)。
这里为什么用「残差」
模式崩塌不是抽象概念。作者明确描述过:只用逐点 Huber 损失做初始训练时,边预测值会按关系类别挤在很窄的几条带里。一旦所有预测都落在各头的均值附近,下游的聚类(对相关性矩阵做 k-means)就会糊成一团,篮子交易的收益随之塌掉。
残差化写法带来三个相互叠加的好处:
- 锚定 (anchoring):在正常市场状态下,预测值始终贴着那个经过校准、含义清楚的基准。
- 适应性:模型可以纠正滚动窗口无法预见的结构性变化(COVID、俄乌冲突)。
- 梯度卫生:z 空间的残差是可加且近似正态的,因此 MSE / Huber 的梯度在整个 [-1, 1] 区间内表现良好。
损失函数设计 —— Huber + 高斯软分桶直方图
两个损失分量,权重相等:
- Huber 边损失 L_{\text{edge}} = \text{Huber}(\hat z_{ij, t+10}, z_{ij, t+10})
- 零点附近是二次的,尾部是线性的 → 零点附近梯度稳定,对造成大误差的市场状态冲击也稳健。
- 直方图匹配损失,采用高斯软分桶(Karandikar et al. 2021)
- 每个关系类别三个直方图(各 6 个桶),外加一个全市场统一的直方图(15 个桶)。
- 每个样本按高斯权重同时贡献给相邻的若干个桶(可微,硬分桶则不可微)。
- 强制预测相关性的分布与实际分布一致——保住的是相关性矩阵的形状,而不只是逐点精度。
总损失为 L = L_{\text{edge}} + s \cdot L_{\text{histo}},取 s = 7 让两项量级相当。去掉直方图项,模型能学到准确的均值,但会丢掉篮子聚类所需的尾部结构。
实证校准
在 2.69 亿条样本外边上(2019–2024 年标普 500,预测目标为 10 个交易日后):
| 指标 | 持续性基准(20 日滚动) | THGNN |
|---|---|---|
| MAE | 0.3071 | 0.2302 |
| RMSE | 0.3852 | 0.2940 |
| 偏差 | −0.0049 | −0.0012 |
| Pearson r | 0.310 | 0.778 |
| Spearman \rho | 0.314 | 0.795 |
注意:论文在做持续性对比时用的是 20 日滚动基准,尽管模型内部是对着 30 日基准训练的。30 日与 20 日的选择对头条结果没有实质影响——差距主要由机器学习信号决定。
实务提示
- 永远用残差:当你要对一个有噪声的有界变量、相对于一个已知的校准基准做预测时。问题的结构决定了「预测 \Delta z」比「预测 z」容易。
- 直方图损失是关键的那一环:没有它,相关性矩阵预测就没法用于组合构建;模式崩塌会直接毁掉下游聚类。
- 最后再用 \tanh 反变换。绝不要在损失函数里做 \rho \to z \to \rho \to z 的来回转换。
- 当心泄漏:滚动基准窗口与滚动特征窗口之间要留意信息泄漏。论文对特征用 60 日 z-score、对相关性基准用 30 日滚动;两者都截止于 t,目标在 t+10,所以没有未来信息泄漏,但特征与基准窗口重叠是个常年的坑。
符号说明
| 符号 | 含义 |
|---|---|
| \rho_{ij} | 股票 i 与 j 之间的收益相关性 |
| z_{ij} | \operatorname{atanh}(\rho_{ij}) —— Fisher-z 变换 |
| z^{\text{base}}_{ij,t} | t 时刻 30 日滚动基准相关性的 Fisher-z 值 |
| \Delta \hat z_{ij, t} | 模型在 Fisher-z 空间上预测的残差 |
| \hat \rho_{ij, t+10} | 反变换之后的最终预测:\tanh(z^{\text{base}} + \Delta \hat z) |