联邦学习因子共享:在不交换原始数据的前提下联合训练选股模型
券商、私募、银行理财子各自握着一批选股数据,但监管与商业壁垒让它们无法把数据池到一起。联邦学习(Federated Learning)让多方只交换模型参数、不交换原始样本,就能联合训练一个比各自单打独斗更准的选股模型。本文用 numpy 从零实现 FedAvg,在受控 non-IID 数据上证明:FedAvg 的全局测试准确率 0.891,逼近集中池化的 0.893,却把纯本地不共享的 0.778 甩开 11 个百分点;并诚实给出差分隐私的精度代价与三条实战红线。附完整 Python 与四张真实计算图。
选股模型最怕两件事:数据太少和数据太窄。一家私募的历史样本可能只有几千条,覆盖了它自己擅长的那一类行情;另一家券商金工组手里有海量数据,但行业分布完全不同。理论上把两家的样本拼起来训练,模型会更稳——但现实中拼不了:监管不允许原始数据出域(个保法、数据跨境、客户隐私),商业上谁也不愿把自家 alpha 源交出去。
联邦学习(Federated Learning, McMahan et al. 2017)就是为这种「数据孤岛」而生的:各方只交换模型参数(梯度/权重),不交换任何原始样本,却能在服务器上聚合出一个联合模型。本文结论先放这:在受控的 non-IID(非独立同分布)数据上,FedAvg 聚合出的选股模型全局测试准确率 0.891,几乎等于把数据物理池到一起训练的 0.893,却把「各家关起门自己训」的 0.778 甩开 11 个百分点。所有数字来自真实 numpy 运行,附完整 Python 与四张真实计算图。

一、核心矛盾:数据孤岛 vs 模型质量#
设共有 家机构(客户端),第 家持有本地数据集 ,其选股标签由全局概念 加一个机构专属漂移 决定:
- 若 :所有机构数据同分布 → 本地训出的 自然接近 ,联邦收益小;
- 若 大:各机构数据概念漂移严重(non-IID) → 本地模型彼此偏倚,单独训都不准,但加权聚合仍能逼近全局最优。
这正是联邦学习的甜区:当数据不敢/不能集中、且各方分布有偏时,联合训练比本地训练好,又比「违法集中」损失小。
二、FedAvg:只用四步就能联合训练#
最经典的算法是 FedAvg(Federated Averaging)。它把训练拆成「本地多步 SGD + 服务器聚合」,原始样本永远不离开机构:
服务器初始化 w_0
for 通信轮次 r = 1..R:
服务器把当前 w_r 下发给所有客户端
for 每个客户端 k:
w_{k} = 本地用 SGD 在 D_k 上更新若干步(epochs 步)
服务器聚合:w_{r+1} = Σ_k (n_k / Σn) · w_k # 按样本量加权平均plaintext关键性质只有两点:
- 本地训练:各家在自己的数据上做普通梯度下降,数据不出门;
- 加权平均:服务器只收到各家更新后的权重,按样本量加权求平均。
下面是从零实现的 numpy 版本(本文全部数字的来源)。我们用逻辑回归做二分类选股(涨/跌):
import numpy as np
def sigmoid(z):
return 1.0 / (1.0 + np.exp(-np.clip(z, -30, 30)))
def local_train(w, b, X, y, epochs, lr):
"""单家机构本地训练:普通 SGD(这里用全批量梯度下降演示)。"""
w = w.copy()
for _ in range(epochs):
p = sigmoid(X @ w + b)
g = p - y
gw = X.T @ g / max(len(y), 1) # 对 w 的梯度
gb = np.mean(g) # 对 b 的梯度
w -= lr * gw; b -= lr * gb
return w, b
def fedavg(clients, R, epochs, lr, noise_sigma=0.0, clip=1.0, dp_scale=0.08):
"""FedAvg 聚合。clients = [(X_k, y_k, w_k, b_k), ...]。
noise_sigma>0 时叠加差分隐私噪声;clip 做梯度裁剪(限制单客户端影响)。"""
w = np.zeros(d); b = 0.0
ns = np.array([len(y) for _, y, _, _ in clients], float)
for _ in range(R):
ws, bs = [], []
for X, y, _, _ in clients:
wk, bk = local_train(w, b, X, y, epochs, lr) # 本地多步更新
nrm = np.linalg.norm(wk)
if nrm > clip:
wk = wk * (clip / nrm) # 裁剪:限制单客户端贡献
ws.append(wk); bs.append(bk)
w = np.sum(ns[:, None] * np.array(ws), axis=0) / ns.sum() # 加权平均
b = np.sum(ns * np.array(bs)) / ns.sum()
if noise_sigma > 0: # 差分隐私:加噪声
w = w + rng.normal(0, noise_sigma * dp_scale, d)
b = b + rng.normal(0, noise_sigma * dp_scale)
return w, bpython注意 clip(梯度裁剪)和 noise_sigma(加噪)这两行——它们是把「隐私」焊进聚合步骤的关键,下文第四节量化它们的代价。
三、三种范式对照:池化 / 本地 / 联邦#
我们固定 6 家机构、8 维选股特征、概念漂移 ,构造三类训练范式并比较全局测试集准确率(测试集由真实 生成,各方都没见过):
- 集中池化(pooled):把 6 家数据物理拼到一起训练——理论上限,但现实中往往不可行;
- 纯本地不共享(local-only):各家关门自己训,预测时取本地模型在全局测试集上的平均表现;
- FedAvg(federated):只交换权重、不交换样本。
实测结果:

| 范式 | 全局测试准确率 | 是否交换原始数据 |
|---|---|---|
| 集中池化 pooled | 0.893 | 是(违规风险) |
| FedAvg(联邦) | 0.891 | 否 |
| 纯本地不共享 | 0.778 | 否 |
结论:FedAvg 在几乎不损精度的前提下,拿到了「集中训练」90% 以上的收益,而纯本地训练掉了 11 个百分点——因为各方数据有偏,单独训出来的模型只拟合了自己那一小块分布,放不到全局上就露怯。联邦聚合相当于用加权平均把各方的偏倚互相抵掉。
四、non-IID 越狠,联邦越值钱#
把概念漂移 从 0 扫到 1.5,三种范式的准确率变化如下(每根柱子都是真实运行):

- (各家同分布):池化 0.886 / FedAvg 0.886 / 本地 0.787——同源时联邦≈池化,但本地仍偏低(样本少);
- :池化 0.892 / FedAvg 0.892 / 本地 0.778;
- (极端异构):池化 0.829 / FedAvg 0.829 / 本地 0.736。
一个反直觉但诚实的发现:在这个线性概念漂移设定下,FedAvg 几乎完全追上池化——因为各方虽然概念方向不同,但样本量相当、加权后能互相补偿。联邦真正的、稳定的优势是相对「纯本地」那 8–12 个百分点,而不是相对「池化」那接近 0 的差距。换句话说:联邦学习不是「免费逼近集中训练」,而是「用参数交换替代数据交换、保住大部分联合收益」——它的价值基准应该是「不联合」而非「非法集中」。

五、隐私不是白给的:差分隐私的代价#
联邦学习默认只防「原始样本泄露」,但上报的权重本身仍可能通过成员推断攻击反推样本。标准加固是在聚合时加高斯噪声(差分隐私 DP)。我们扫描噪声尺度 :
| σ(噪声尺度) | FedAvg 全局准确率 |
|---|---|
| 0.0 | 0.892 |
| 0.05 | 0.885 |
| 0.10 | 0.876 |
| 0.20 | 0.858 |
| 0.40 | 0.818 |

隐私-效用权衡是单调且温和的:σ 从 0 到 0.1,准确率只掉 1.6 个百分点;到 0.4 才掉 7.4 个点。实务上中等噪声(σ≈0.1)通常换来可接受的隐私预算(ε 在十几的量级),代价远小于「干脆不联合」。但红线是:噪声越大越隐私、也越损精度,没有免费午餐——这条曲线就是你的取舍边界。
六、实战红线(收尾提醒)#
- 通信成本是真瓶颈:每轮要把所有权重上传下载一次。6 家、8 维无所谓;换成 100 家机构、百万参数 LSTM,带宽和轮次就是主要开销。FedAvg 用「本地多步 + 少轮聚合」缓解,但别假设它比本地训练快。
- 客户端漂移会拖垮聚合:如果某家机构数据分布长期偏到全局之外(它押注的策略失效了),它的权重会持续拉偏平均。生产环境要监控各家上传权重的余弦相似度,对离群客户端降权或剔除。
- 「不交换样本」≠「零隐私风险」:权重仍可能泄露成员信息,金融场景必须叠 DP 或安全聚合(MPC/同态加密),否则合规上站不住。
- non-IID 下的收敛更慢:本文每轮本地 5 步、15–20 轮才贴住池化;真实异构数据往往需要更多轮次和 learning-rate 调参,别拿 IID 实验的轮次直接套。
一句话总结:联邦学习把「数据不敢集中」变成「参数可以联合」,在受控设定下几乎无损地拿到了集中训练的联合收益;它的价值基准是「不联合」而非「非法集中」,且隐私加固的代价是温和可调的——但通信、漂移监控、合规这三件事,一个都绕不开。