- 流形学习资产表征:用降维把高维因子铺成可看的地图
几十个因子把每只资产变成高维空间里的一个点,但这些点往往不是均匀撒开的——它们卷在一张低维曲面(流形)上,比如『板块轮动相位』这条一维曲线被揉进 30 维。PCA 是线性投影,遇到弯曲流形只会把它拍扁、撕裂:把卷在一起的两端硬凑到一块。Isomap 换个距离度量——不走欧氏直线(会穿过流形空洞造成近邻假象),而走 kNN 图上的最短路径(测地距离,沿曲面爬行),再用经典 MDS 展开。合成实验:一条一维流形(swiss-roll 式)升到 30 维,Isomap 的局部近邻保持率 0.927 碾压 PCA 的 0.681——谁挨着谁的结构被保住了。纯 numpy 从零实现 Isomap(kNN 图→Floyd-Warshall 测地距离→MDS),并诚实暴露它的死穴:对近邻数 k 极敏感(k=3 轴相关 0.65、k=40 到 0.88),k 太小图断裂、太大短路穿洞;样本外无自然投影;测地距离 O(n³)。拆穿降维=可视化即真相/Isomap 必胜 PCA/k 随便选/流形假设永成立五类陷阱(中阶)。
11 min Chinese - 马尔可夫区制转移 VAR:让宏观变量在牛熊状态间自行切换
线性 VAR 假设股票收益和宏观动量的联动关系恒定不变——但牛市里动量是温和的助推器,熊市里却变成下跌的加速器,一套系数怎么可能同时描述两种世界。MS-VAR 给 VAR 挂一条隐藏马尔可夫链:每个 regime 一套独立的截距、系数矩阵和协方差,用 EM + Hamilton 滤波从数据里把牛熊自动切出来。纯 numpy 实现 2-regime MS-VAR(1):合成数据上 EM 17 次迭代收敛,转移矩阵估到 [0.97,0.954] vs 真值 [0.97,0.94],regime 识别准确率 95.9%,熊市方差 6.27 vs 真值 6.0。择时端:样本外 300 周,滤波概率仓位 Sharpe 1.06 vs 买入持有 −1.90,回撤从 89% 压到 26%。诚实说明:实盘只能用滤波概率而非平滑概率(后者用了未来数据),滤波概率在 regime 边界处会迟疑几周;EM 对初始化敏感、样本外恰逢长熊市放大了择时优势。拆穿平滑概率直接进回测、regime 数越多越好等经典陷阱(中阶)。
16 min Chinese - 非负矩阵分解 NMF:把资产收益矩阵压成可解释的基与权重
PCA 的成分有正有负,你没法把 PC1 读成『40% 科技 + 30% 消费』——因为它允许负载荷,本质是方差最大的正交方向,不是构成。NMF 强制 W、H 全非负,分解出的每个基就是一个可加的『主题』,每个资产是这些主题的非负叠加,读起来像占比。合成实验:12 个资产由 3 个非负时间主题混合而成,NMF 乘法更新 400 次把重构误差从随机初值压到 2.536,还原的时间基激活与真实基相关 0.82~0.92、权重矩阵相关 0.80~0.91;PCA 拿同样数据,58.3% 的载荷是负的,PC1 根本没法解释成资产构成。秩选择靠误差肘部:K 从 1→2→3 时误差 17.48→10.98→2.52 断崖下跌,K=3 之后拐平(2.52→2.51→2.30)精确对上真实秩。纯 numpy 实现 Lee-Seung 乘法更新,拆穿 NMF 唯一解/成分自动对齐/负值数据也能用/秩越大越好/基一定有金融意义五类陷阱(中阶)。
12 min Chinese - 非线性 Granger 因果:用神经网络把『谁预测谁』的单向箭头放宽
线性 Granger 因果检验只问一个问题:x 的滞后项能否线性地改善对 y 的预测。但如果 x 通过 x² 驱动 y——波动传导、恐慌放大这类金融常见机制——线性 F 检验会完全漏检。合成实验实测:y 被 0.6·x²(t-1) 强驱动,线性 F 统计量只有 0.17(临界值 3.0),检验结论『无因果』;换成 16 隐单元的小 MLP,加入 x 滞后让样本外 MSE 从 2.72 降到 1.35(改善 50.5%),而线性回归加同样的 x 滞后只改善 1%。显著性用置换检验解决:打乱 x 滞后重训 30 次,最大伪改善仅 3.9%,真实改善 50.5% 的 p 值 < 0.033。方向准确率 74.2%,简单择时把日均收益从 0.10 抬到 0.51。诚实说明:NN Granger 的检验功效换来了解释性损失;置换检验计算量是线性检验的百倍;非线性因果在真实数据中远比合成数据微弱,且极易与波动聚集混淆。拆穿『相关为零=无关系』『NN 改善=真因果』『因果=可交易』等误区(中高阶)。
14 min Chinese - One-Class SVM 异常检测:用高维边界圈出『不正常』的交易日
高斯类方法(马氏距离)默认『正常』只有一个中心,偏离中心越远越异常。但真实市场的正常状态往往是多峰的——平静区制和承压区制是两团各自正常的云。麻烦就藏在两团之间的『山谷』:那些既不像平静、也不像承压的交易日,恰恰是最危险的,而马氏距离会把山谷判成中心(AUC 仅 0.080,方向都反了)。One-Class SVM 用 RBF 核学一条非凸的支撑边界,把两团正常各自圈住、山谷留在外面:合成实验 1000 个正常日(两区制)+ 30 个山谷异常日,OC-SVM AUC 0.961、top-30 命中 33%,而马氏距离几乎为零。纯 numpy 实现带盒约束单纯形投影的对偶求解器,附 ν / γ 双参数敏感性曲线与五类真实陷阱(中阶)。
14 min Chinese - 置换不变集合建模:用 DeepSets 处理无序资产集合
组合层面的建模有个被普遍忽视的结构问题:一篮子资产是『集合』不是『序列』——把 8 只股票的特征按任意顺序摊平喂给 MLP,同一个组合换个排列顺序,模型输出就变。DeepSets(Zaheer et al., NeurIPS 2017)给出通用解:先对每只资产独立编码 φ(x_i),再做对称池化(sum/mean),最后 ρ 读出——数学上可表达一切置换不变函数。本文用纯 numpy 从零实现 DeepSets(含手写反向传播),在组合尾部风险聚合任务上诚实实测:DeepSets R²=0.90 优于摊平 MLP 的 0.79 与手工聚合特征的 0.78,置换后输出偏移 1.8e-15(数值零)而 MLP 偏移达目标标准差的 39%;但变集合大小泛化诚实翻车——训练只见 K=8,测试 K=12 时 sum-pooling R² 崩到 -6.2。并拆穿池化随便选/摊平加增广就行/万能逼近=实际可学/变 K 免费泛化/组合建模必用集合网络五类真实陷阱(中阶)。
17 min Chinese - 分位数 RNN 风险预测:用分位损失给出收益区间
点预测答不出「明天最坏跌多少」。分位数 RNN(QRNN)把 RNN 的隐状态接 5 个输出头,用 pinball 损失同时学 τ=0.05/0.25/0.5/0.75/0.95 五条条件分位数——隐状态自动记住波动聚集,区间随市场松紧收放。纯 numpy 从零实现 Elman RNN + 截断 BPTT + 分位损失(手推 pinball 次梯度),在 GARCH(1,1)+t(5) 合成收益上样本外 1000 步实测:QRNN pinball=0.2720 逼近 Oracle(真实 σ+t 分位)的 0.2694,90% 区间覆盖 88.5%,区间宽度与真实波动相关 0.861——碾压滚动历史分位的 0.137;但诚实告败:EWMA-高斯(RiskMetrics,2 个参数)pinball=0.2717 与 QRNN 打平,因为数据生成过程恰好是它的主场。真实翻车实测:独立训练 5 个分位数模型 → 1.9% 时间步分位数交叉(q̂₀.₀₅ > q̂₀.₂₅),联合训练+单调重排才干净;高波动 regime 覆盖率掉到 86.8%。拆穿区间=分布/覆盖率达标=校准/深度必胜EWMA/交叉不重要/合成赢=实盘赢五类陷阱(中阶)。
14 min Chinese - 稳健协方差 MCD 估计:用最小协方差行列式抗住极端值污染
协方差矩阵是组合优化、风险模型、配对交易的地基,但样本协方差有个致命弱点——单点崩溃:只要几个极端值,整个相关结构就被拖歪。合成实验(真实相关 0.7,10% 样本被反向污染):经典相关系数直接崩到 −0.068(连符号都错了),MCD 稳健估计还原到 0.611。距离-距离图上 MCD 把 40 个污染点里的 27 个甩到右上方(FP 仅 1),经典马氏距离只抓到 11 个。最扎心的是组合权重:真实最小方差权重是 (1.04, −0.04),经典协方差给出 (0.62, 0.38)——把该做空的资产配成了 38% 多头,MCD 给出 (0.95, 0.05) 基本还原。核心机制:在所有样本子集里找行列式最小(最紧致)的那 h 个点估协方差,极端值天然行列式大、被排除在外。附一致性校正因子、C-step 迭代、以及『稳健≠无脑抗噪,h 选太大照样被污染拉偏』的反面教材(中高阶)。
17 min Chinese
返回