Hook:没有 Barra 许可证的统计风险模型
周二早上,某中型多空对冲私募给初级量化研究员的任务:周五交一套「统计风险模型」——把沪深300 成分股最近 1000 个交易日的日度收益拆成几个共同因子加特异噪声,做成数据驱动的因子模型(factor model)。没有 Barra 模型(Barra model)授权,基本面数据要月底涨价,只有 1000×300 的收益面板。周三下午她对 300×300 样本协方差矩阵(covariance matrix)做特征分解(eigendecomposition),第一特征值约是第二的 17 倍,对应特征向量在每支股票上都是正分量。她撞上了每个量化人都会撞一次的事实:股票收益面板上,第一主成分就是市场模式。本课要把这个意外变成纪律。
上一课分群,本课换坐标系
上一课把样本 {x1,…,xn} 看作云团,问哪些观测应该聚到一起;k-均值与高斯混合做的是分群。本课换问题:云团在 Rd 沿哪些方向延展?主成分分析(principal component analysis, PCA)是线性解答,t-SNE、UMAP 与自编码器是它的非线性后继。
PCA 视角一:最大方差投影
把 X∈Rn×d 各列去均值,记 Σ=n1X⊤X 为样本协方差。在所有单位方向里,投影后方差最大的方向是
w1=arg∥w∥=1maxw⊤Σw,Σ=n1X⊤X.
写拉格朗日 L(w,μ)=w⊤Σw−μ(w⊤w−1),令 ∇wL=0,得 Σw1=μw1:w1 是特征向量,目标值就是对应特征值——取最大那个。第 k 主成分是 Σ 在 w1,…,wk−1 正交补上的最大特征向量。实对称半正定矩阵的特征分解保证特征值非负、特征向量两两正交。
PCA 视角二:最小重构误差
在所有秩-K 正交投影 WW⊤ 中(其中 W∈Rd×K,W⊤W=IK),哪一个把信息损失压到最小?
W∈Rd×K,W⊤W=IKmini=1∑n∥xi−WW⊤xi∥2.
展开平方、用 W⊤W=IK,原问题化为 maxtr(W⊤ΣW)。Ky Fan 迹定理直接给答案:W 装的是 Σ 的前 K 个特征向量。两个视角落到同一子空间——这是 Pearson (1901) 与 Hotelling (1933) 给出的原始等价。
SVD 把两个视角拼到一起
d 不大时直接对 Σ 做特征分解;n、d 都大时对 X 做奇异值分解(singular value decomposition, SVD):
X=USV⊤,Σ=n1VS2V⊤,λk=nsk2.
V 的列就是主成分方向,US 是主成分得分。PCA 在数值上就是中心化数据矩阵的截断 SVD——sklearn 的 randomized_svd 走的就是这条路,比先组装 X⊤X 再做特征分解稳定。
方差贡献率与「PC1 = 市场模式」
特征值排序 λ1≥⋯≥λd≥0,总和即总方差 tr(Σ)。前 K 个分量解释的方差比例是
VE(K)=∑j=1dλj∑k=1Kλk.
把 λk 画成碎石图(scree plot)找肘点,或截到 VE(K) 越过 80%;Bai-Ng (2002)、Onatski (2010) 有更严谨判据,但桌面先用的总是肘点。沪深300 一千天面板上 VE(1) 通常落在 40%–50%,v1 在几乎每支股票上都是正分量——这就是 Connor-Korajczyk (1986) 统计因子模型的数据驱动复本,与 Fama-French / Barra 模型互为基本面与统计两套对照。PC2、PC3 把周期股(银行、地产)与防御股(消费、医药)分开,每条特征向量的分量就是各股票对该统计因子的因子暴露(factor loading)。
R2 中,若特征值是 λ1,λ2,沿与 PC1 夹角 θ 的单位方向投影方差为 cos2θ⋅λ1+sin2θ⋅λ2。拖动 θ 看视角一的动态:
Formula Explorer
cos(theta)*cos(theta)*lambda1 + sin(theta)*sin(theta)*lambda2
非线性表亲:t-SNE 与 UMAP
PCA 是线性方法——做风险模型刚好,做高维分群可视化就力不从心。Van der Maaten 与 Hinton 的 t-SNE (2008) 在输入空间用高斯相似度 pj∣i∝exp(−∥xi−xj∥2/2σi2),2D 输出用 Student-t 相似度 qij,最小化 ∑ijpijlog(pij/qij)。带宽 σi 按困惑度(perplexity,常取 5–50)逐点定。McInnes 等 (2018) 的 UMAP 把 KL 换成模糊单纯复形交叉熵,速度快一个数量级。
两者都是可视化工具。图上的簇大小与簇间距没有几何意义,只反映局部邻域目标;引用时只能说「这里看出四个簇」,不能说「A 离 B 比离 C 远两倍」——这是 A 股因子研究里反复踩的坑。
自编码器与表示学习的桥梁
把线性投影换成可学的非线性映射对。自编码器是一对编码器 fϕ:Rd→RK 与解码器 gψ:RK→Rd,联合最小化
L(ϕ,ψ)=n1i=1∑n∥xi−gψ(fϕ(xi))∥2.
若两端都是线性——fϕ(x)=Ax,gψ(z)=Bz——Baldi 与 Hornik (1989) 证明:最优 B 的列空间恰好张成 Σ 的前 K 个特征方向,即 PCA 子空间(A、B 相差一个可逆线性变换)。把两端换成深度网络(复用 2.6.3 的前馈架构与反向传播),就放弃闭式解,换来对弯曲流形的拟合。去噪自编码器(Vincent et al. 2008)、VAE(Kingma & Welling 2014)以及现代自监督方法(SimCLR、MoCo、何恺明的 MAE)都是这一线索的后继,正式推导属于后续模块。
三视图合并
算例:R3 中四个点的 PCA
取 x1=(2,0,0)⊤、x2=(0,2,0)⊤、x3=(−2,0,0)⊤、x4=(0,−2,0)⊤。列均值为零,X 已中心化。
Exercise
(i) 算 Σ=41X⊤X,凭对称性读出特征值与一组标准正交特征基,给出一种 (w1,w2) 选择。
(ii) 把每个 xi 投影到 w1、w2,验证投影坐标精确重构原样本。
(iii) 确认 VE(1)=0.5、VE(2)=1,并解释为什么重特征值 λ1=λ2 使 (x,y) 平面内 w1 的选取是任意的,而秩-2 子空间本身唯一。
提示
X⊤X 是对角阵:第 1、2 列在行空间互相正交,第 3 列恒为零。除以 4 后特征值是
(2,2,0)。
提示
(iii):
λ1=λ2=2 是二重特征值,所以
(x,y) 平面任一组标准正交基都是合法 PC 选择;方差贡献率只看特征值之和,与具体基向量无关。
实务陷阱
三类失败反复出现。协方差非平稳:沪深300 在 2015 年股灾、2018 年 Q4、2022 年 Q2 这些涨跌停成片的日子里 PC1 能吞掉 60% 以上方差,整段历史一锅煮会抹平不同 regime;实务用滚动窗口(常 252 天)或指数加权,配 Ledoit-Wolf 收缩。符号歧义:vk 与 −vk 都满足特征值方程,朴素再拟合会让因子序列突然翻号;实务一般强制 vk 在某只权重股上的分量为正。前视偏差:整段历史一次拟合再回测是初学者最常踩的坑——正确做法是每个再平衡点只用截至 t 的样本估 Σt 再向前预测;详见 López de Prado《金融机器学习进阶》第 8 章。
通向下一课
PCA、t-SNE、UMAP、自编码器、k-均值与 GMM 都在一批静态样本上跑,没有反馈回路——学习器读完数据出一个摘要,环境不会回头推你一把。但量化里的核心问题大多不是这样:CFFEX 的 IF 主力合约最优执行、SSE 50ETF 与 300ETF 期权的动态对冲、做市报价的库存控制,都是智能体动作、市场反应、下一状态与奖励由刚才动作决定的序列决策。下一课把这套结构形式化为马尔可夫决策过程,推贝尔曼方程,导出价值迭代、策略迭代与 Q 学习——这是把「优化目标」改写为「长期回报」的关键一步,也是 T+1 行情下把策略压成代码的算法骨架。