- 主成分套期保值:用少数公因子把组合暴露降到最低方差对冲
最小方差对冲的标准做法是对一堆候选工具做 OLS 回归、用残差当『已对冲』收益。但当你有 200 个对冲工具、只有 150 天样本、且大部分工具只是噪声时,OLS 会过拟合到样本内 R²=1.0、样本外 R²=−322。本文用 numpy 从零实现 PCA 降维对冲:只取承载真实信息的几个主成分,残余方差从 OLS 的『虚高 100% 对冲』回到诚实的 99%,样本外 R² 稳在 0.97。附完整 Python 与三张真实计算图。
8 min Chinese - 贝叶斯优化超参:用高斯过程代理把调参成本砍到最低
网格搜索调策略参数是暴力枚举,参数一多组合数指数爆炸;随机搜索省了枚举却盲目乱撞。贝叶斯优化换个脑子:每跑一次回测都是一次昂贵采样,它用高斯过程(GP)在已跑过的点上拟合一个『代理曲面』连同不确定度,再用采集函数(EI)权衡『去已知的好区域深挖』和『去没探过的区域碰运气』,把下一次回测的算力花在最值得试的参数上。本文从零手写 GP 代理 + EI 采集,在一个多峰目标上对比贝叶斯优化 vs 随机 vs 网格的收敛速度——同样逼近全局最优,贝叶斯优化用的回测次数是网格的零头。最后拆穿最致命的坑:在验证集上优化超参本身就是一种过拟合,优化得越狠样本外亏得越惨(中阶)。
14 min Chinese - 遗传编程因子挖掘:让表达式树自己进化出可交易 alpha
手工构造因子是『人想公式、数据验证』,遗传编程反过来:把因子表达式编码成树(叶子是特征、内部节点是算子),用交叉互换子树、变异随机替换、锦标赛选择淘汰弱者,让公式在 IC 适应度的驱动下自己进化。本文纯 Python 实现极简 GP 引擎:600×100 合成面板埋入非线性真结构 mom*exp(-|vol|)-0.5*rev,进化 25 代后找到 (mom - rev),验证集 IC 0.098——超过最强单因子(0.078)、逼近真实结构上限(0.105),而且简约压力把树从平均 6.1 节点压到 3.8,没有膨胀成垃圾。但要害在最后一图:500 个随机公式在纯噪声特征上搜索,训练 IC 被『迄今最优』推着单调上涨到 0.018——数据挖掘偏差意味着 GP 天生是过拟合机器,防御靠简约压力+验证集早停+多种子重跑看表达式是否稳定(中阶)。
16 min Chinese - Lasso 与弹性网络变量选择:用 L1 惩罚把几百个因子压成可交易少数
你有 500 个因子、2000 个样本,直接全量回归——回测里 R² 漂亮,样本外一塌糊涂。这不是数据问题,是自由度把噪声当成了信号。Lasso 用 L1 惩罚把系数逐个压到 0,弹性网络再补一道相关性缓冲,把「几百个因子」压成「十几个真有信息量的少数」。本文用合成的多因子面板(仅 15 个真信号 + 成组相关)从零跑出系数路径、稀疏度阶梯与 OOS R² 对比,并诚实披露:L1 解决的是过拟合,不是帮你印钞(高阶)。
13 min Chinese - Bootstrap 回测显著性:用重抽样给你的夏普率算出 p 值
回测跑出 1.5 的夏普很爽,但它真的不是运气吗?经典 t 检验在收益非正态、自相关、样本短时会严重失真。本文用 iid bootstrap 重抽样,在「零假设=无 alpha」下重建夏普的分布,直接算出 p 值:真 alpha 策略 p=0.015 当场现形、纯噪声策略 p=0.47 无所遁形。并附功效分析与四类真实陷阱(中阶)。
13 min Chinese - LASSO 与弹性网络在多因子选股中的应用:把 100 个因子收敛到真信号
当因子数量超过有效样本,OLS 会把噪声因子也装进模型。本文用一段 100 因子 / 10 真因子的合成面板,亲手走完 LASSO(ℓ1) 与弹性网络(ℓ1+ℓ2) 的系数路径、真因子恢复、样本外 IC 与多空组合,所有数字与配图由文末代码真实生成。
11 min Chinese - Purged K-Fold 交叉验证:给回测一个诚实的样本外
金融 ML 的标签常向前看,普通 KFold 打乱会把近重复样本留进训练、靠抄作业刷出虚假高分。本文用 López de Prado 的 purge+embargo 逼出诚实的样本外,并附完整 Python。
13 min Chinese - 合成数据增强与对抗训练:提升因子模型的泛化边界
量化因子模型最怕三件事:样本少、过拟合、分布漂移。本文从零实现 MLP 与逻辑回归,演示高斯噪声增强、SMOTE 式混合与 FGSM 对抗训练如何把测试准确率与对抗鲁棒性一起拉起来,并诚实列出会踩的真实陷阱。
14 min Chinese
返回