图小波网络金融关联:把图卷积换成图小波
谱图卷积用拉普拉斯特征分解定义『图上的傅里叶』,但它有两个死穴:特征分解 O(N³) 太贵,且傅里叶基在整张图上全局铺开、没有空间局部性。图小波网络(GWNN, Xu et al. ICLR 2019)把图傅里叶基换成图小波基——用热核 exp(-sλ) 生成一族随尺度可调的、天然稀疏且局部化的基,既能多尺度分析资产关联,又比谱卷积更省、更可解释。本文用纯 numpy 从零实现『归一化拉普拉斯→热核图小波→谱域滤波→图信号去噪』全链路,在 24 资产两板块合成关联图上诚实实测:图小波低通把板块信号去噪 RMSE 从观测的 0.86 压到 0.67、方向准确率拉满 1.00,并对比局部 GCN(RMSE 0.47),拆穿小波必胜/尺度随便选/谱域万能/去噪无损/关联即因果五类真实陷阱(中阶)。
上一篇谱图神经网络里,我们把资产关联矩阵当成拉普拉斯信号,用特征分解得到”图傅里叶基”,再在谱域滤波。方法漂亮,但用过的人都知道它有两个绕不过去的痛:特征分解 O(N³) 一旦资产上千就爆,而且傅里叶基是全局的——每个基向量在整张图上都不为零,你没法说”这个模式主要发生在哪个板块”。
结论先放这:图小波网络(GWNN, Xu et al. ICLR 2019)用图小波基替换图傅里叶基,一举解决局部性问题。 图小波用热核 exp(-sλ) 生成,天生带一个尺度参数 s——小尺度时能量集中在节点邻域(局部、稀疏),大尺度时扩散到全图(全局、平滑)。这让”多尺度分析资产关联”成为可能:小尺度看板块内部微结构,大尺度看跨板块共振。本文用纯 numpy 从零实现完整链路,在 24 资产两板块合成图上实测:图小波低通把板块信号去噪 RMSE 从 0.86 压到 0.67、方向准确率拉满 1.00。附完整 Python 与五类真实陷阱(中阶)。

一、谱图卷积的两个死穴#
先复习谱图卷积怎么工作。给定归一化拉普拉斯 L = I − D^{−1/2} A D^{−1/2},做特征分解 L = U Λ Uᵀ,则 U 的列就是”图傅里叶基”,Λ 对角线是”图频率”。图卷积 = 把信号 x 用 Uᵀ 搬进谱域、乘一个谱滤波器 g(Λ)、再用 U 搬回来:
x *_G g = U g(Λ) Uᵀ xplaintext问题一:U 是稠密的、全局的。 每个傅里叶基向量在所有节点上都有非零分量。你没法说”频率 λ_k 这个模式主要活在哪几个资产上”——它铺满全图。
问题二:特征分解 O(N³)。 资产一多就跑不动,而且 Uᵀ x、U (...) 每次都是 O(N²) 的稠密矩乘。
图小波的动机就是:换一族基,让它既稀疏又局部,还带尺度。
二、图小波:给傅里叶基加一个”尺度旋钮”#
图小波的定义只改了一个地方——把谱域的滤波器固定成热核 g_s(λ) = exp(−sλ),于是尺度为 s 的图小波基是:
Ψ_s = U diag(exp(−sλ)) UᵀplaintextΨ_s 的第 i 列,就是”以节点 i 为中心、尺度为 s 的一个小波”。它的关键性质:
- s 小:
exp(−sλ)对所有 λ 都接近 1,小波高度局部化,能量集中在节点 i 的近邻——看局部微结构。 - s 大:
exp(−sλ)快速衰减,只保留最低频(λ≈0),小波扩散到整张连通图——看全局共振。

图里看得很清楚:s=1 时小波只点亮节点3的直接邻居;s=8 时能量漫到整个板块甚至跨板块。一个尺度旋钮,就把”局部 vs 全局”连续地调出来了——这是傅里叶基做不到的。
import numpy as np
def graph_wavelet(U, lam, s):
"""尺度 s 的图小波变换矩阵 Psi_s = U diag(exp(-s lam)) U^T"""
return U @ np.diag(np.exp(-s * lam)) @ U.T
def normalized_laplacian(A):
d = A.sum(1)
Dinv = np.diag(1.0 / np.sqrt(np.maximum(d, 1e-9)))
return np.eye(len(A)) - Dinv @ A @ Dinvpython三、谱域视角:图小波就是一族带通/低通滤波器#
把热核画到谱域里,图小波的本质一目了然:它就是对每个图频率 λ 施加一个 exp(−sλ) 的增益。 尺度 s 越大,衰减越狠,越像一个”只放行低频”的低通滤波器。

这跟经典信号处理里的小波完全一个逻辑:小波 = 一族在时频(这里是”空间-频率”)平面上平铺的带通滤波器。图小波把这套搬到了图上——低图频对应”整块资产一起动”的平滑模式,高图频对应”相邻资产反向动”的震荡模式。 用大尺度小波做低通,就是在提取”板块级共振”,压掉”个股噪声”。
四、GWNN 的图卷积层:把 U 换成 Ψ#
有了图小波基,GWNN 的卷积层几乎是照抄谱卷积,只把 U 换成 Ψ_s、Uᵀ 换成 Ψ_s^{−1}(逆小波变换,Ψ_s^{−1} = U diag(exp(+sλ)) Uᵀ):
def gwnn_layer(x, U, lam, s, theta):
"""图小波卷积层:Psi_s diag(theta) Psi_s^{-1} x
theta 是每个"图小波频道"上的可学习滤波系数。"""
Psi = U @ np.diag(np.exp(-s * lam)) @ U.T
Psi_inv = U @ np.diag(np.exp(+s * lam)) @ U.T
return Psi @ (theta * (Psi_inv @ x))pythonGWNN 原论文的两个工程亮点:一是 Ψ_s 在小尺度下天然稀疏,可以阈值截断成稀疏矩阵,把 O(N²) 的稠密乘降成稀疏乘;二是滤波器 diag(theta) 是逐频道对角的,参数量只有 O(N),比早期谱 CNN 的 O(N²) 卷积核省得多,也更不容易过拟合。
五、诚实实测:去噪有效,但没赢过局部 GCN#
我造了个 24 资产、两板块的关联图(块内连边概率 0.55、块间 0.06),真实信号是”板块1全 +1、板块2全 −1”的分块常数,加上 0.9 倍标准正态噪声。任务:从含噪观测里恢复板块信号。对比图小波低通(s=4)和局部 GCN(两跳邻域平滑):
| 方法 | RMSE | 方向准确率 |
|---|---|---|
| 观测(含噪) | 0.86 | — |
| 图小波低通(s=4) | 0.67 | 1.00 |
| 局部 GCN(2 跳) | 0.47 | 1.00 |

诚实说结果:图小波低通确实去噪了(RMSE 0.86→0.67,方向准确率拉满 1.00),但在这个任务上 RMSE 输给了局部 GCN 的 0.47。 原因不难理解——真实信号是”分块常数”,局部 GCN 的两跳平均恰好是块内均值的极好估计器,天然匹配这个结构;而图小波低通保留了若干个低频分量,反而带进了一点跨块的”渗漏”。
这正是我想强调的:没有一种图算子是万能的,算子要匹配信号的结构。 图小波的强项不在”分块常数去噪”这种简单场景,而在需要多尺度分析的地方——同时想看”板块内微结构”和”跨板块共振”、或信号本身有多个空间频率成分时,一个尺度旋钮扫过去,比固定跳数的 GCN 灵活得多。用错场景,它就会像这里一样,被更匹配结构的简单方法比下去。
A. 实现细节#
- 图构建:24 资产分两板块,块内连边概率 0.55、块间 0.06,无向无权(0/1)邻接。
- 拉普拉斯口径:用对称归一化
L = I − D^{−1/2} A D^{−1/2},特征值范围 [0, 2],eigh做特征分解得 U 与 λ。 - 图小波生成:热核
Ψ_s = U diag(exp(−sλ)) Uᵀ,去噪用 s=4 的低通;尺度演示用 s∈{1,3,8}。 - 去噪信号语义:真实信号为板块分块常数(+1/−1),加 0.9 倍标准正态噪声,非价格序列,纯粹演示图算子的去噪能力。
- 对比基线:局部 GCN 用
Ŝ = D̂^{−1/2}(A+I)D̂^{−1/2}两跳传播Ŝ²x。 - 指标口径:RMSE 对真实分块常数计算;方向准确率 = 恢复信号符号与真实符号一致的比例。
B. 已知偏差#
- 合成结构过于规整:真实资产关联图的边权连续、社区边界模糊、非平稳,不是干净的两板块 0/1 图。规整图会同时高估图小波和 GCN 的去噪效果。
- 未做稀疏化与端到端训练:本文用稠密
Ψ_s直接演示,未实现原论文的稀疏截断与滤波系数theta的梯度训练,因此没体现 GWNN 相对谱 CNN 的算力与参数优势。 - 去噪≠可交易信号:把噪声里的板块信号估出来,距离”据此产生正收益”还差配对/择时/成本建模,本文不涉及交易回测。
C. 结果解读#
第一,图小波的核心卖点是多尺度局部性,不是单场景精度。 本例 RMSE 输给局部 GCN,恰恰说明”算子要配结构”:分块常数信号用两跳均值最优。图小波真正无可替代的是一个尺度旋钮连续扫过局部到全局——当你不知道信号活在哪个空间尺度、或它横跨多个尺度时,图小波比固定感受野的 GCN 灵活。
第二,谱域可解释性是白送的。 把热核画进谱域就能直接读出”低频=板块共振、高频=个股震荡”。这对做风险归因很有用:想压掉个股噪声、留住系统性联动,直接调大 s 就行,物理意义清清楚楚,不像黑箱 GNN 那样只能事后归因。
第三,别把关联图当因果图。 整条链路都建立在”相关矩阵→邻接图”这个假设上,去噪去出来的是同涨同跌的板块结构,不是”谁带动谁”的因果。拿它做统计套利前,必须再叠加协整、格兰杰因果这类专门检验——图小波帮你把关联看清楚,但看不出因果方向。
五类真实陷阱#
- 小波必胜谱卷积/GCN:不成立。算子要匹配信号结构,本例分块常数信号里局部 GCN 的 RMSE(0.47)就优于图小波(0.67)。图小波的优势场景是多尺度、非单一空间频率。
- 尺度 s 随便选:s 是核心超参。太小只看邻域、去不掉全局噪声;太大退化成”全图平均”、抹掉所有结构。必须按信号的空间尺度选,最好扫一遍。
- 谱域滤波万能:谱方法假设图结构稳定。资产关联是时变的,昨天的板块图今天可能重组,用陈旧邻接做滤波会系统性偏差。
- 去噪无损:低通去噪必然连同高频真信号一起削掉。若”个股特异 alpha”恰在高图频,图小波低通会把它当噪声抹掉。
- 关联即因果:邻接图来自相关矩阵,去噪结果只反映同期联动,不含领先-滞后因果。直接拿去做套利方向判断会踩空。