行业资讯

加入亿拓客·流量大师 撬动财富之门!!!

复现华泰SVM选股研报:模型全灭之后,一行IC权重把年化从-4%拉到+19%

wang 2026-10-19 行业资讯
复现华泰SVM选股研报:模型全灭之后,一行IC权重把年化从-4%拉到+19%

声明:本内容为个人业余研究,所有标的代码仅做为示例,回测收益不代表未来,不做为投资建议。

今天复现的对象是华泰证券 2017 年 8 月 4 日的金工深度报告《人工智能选股之支持向量机模型》,人工智能系列之三。

结论先行:研报口径的高斯核 SVM 在本地数据上 63 组参数全部失效,样本外 AUC 只有 0.4797。但诊断证明因子信号本身仍然存在,失效发生在模型层。把模型换成一行 IC 加权线性组合之后,本地回测年化从-4.37%恢复到+18.94%,落到 PTrade 平台的版本年化 19.89%,两个平台对账一致。

本文记录完整过程:口径怎么落地、SVM 为什么失效、失效如何定位到模型层、替换模型后的回测、双平台对账。全部数字来自真实回测,附 run_id 可溯源。

一份承诺年化超额 21%的研报

先交代研报方法。每月月末计算全市场个股 70 个因子的暴露(估值、成长、动量、波动率、换手率、技术指标等族),喂给支持向量机,预测下个月相对沪深 300 的超额收益方向。SVM 在样本里寻找把上涨与下跌两类分开的分类超平面,预测值是个股到超平面的距离,越正越看多。报告同时测试了五种核函数与支持向量回归,结论是高斯核表现最好。

研报的成绩单:高斯核 SVM 全 A 选股,样本外测试集正确率 56.25%,AUC 0.6214(AUC 衡量区分涨跌方向的能力,0.5 等价于随机,越接近 1 越强);全 A 行业中性策略相对中证 500 年化超额 21.1%,信息比率 3.66(信息比率=年化超额收益÷跟踪误差,衡量每单位偏离换来的超额,大于 1 算优秀);分层回测多空组合年化 30.10%。

样本内是 2005 至 2011 年共 72 个月末截面,2011 年起样本外,固定训练集一直用到 2017 年。报告在风险提示里写明:这是历史经验的总结,存在失效的可能。

我本地的数据条件:2019 年 1 月至 2026 年 8 月共 5784 只股票的日线、逐日估值与市值、财报净利润和营收同比(按公告日对齐)、分红记录(按除息日对齐),沪深 300 与中证 500 指数日线齐备。够做口径级复现,做不了数字级复现。

复现口径:70 个因子砍到 23 个

三处替代,逐条交代。

第一是因子池。研报 70 个因子里,分析师评级、一致目标价、户均持股、FF3 特质波动等族本地没有数据源。能落地的是 23 维:市盈率倒数、市净率倒数、股息率、净利润与营收同比、对数市值、1 至 12 个月动量、1 至 6 个月波动率、换手率、MACD、RSI、PSY、BIAS、12 个月 beta、对数股价。研报的因子相关系数图显示,模型预测值与反转、波动率、换手率、技术四个族关联最强——这四个族都在这 23 维之内,所以因子缺口不伤及信号主体。

第二是区间与样本量。研报训练集 2005 至 2011 年,本地扣掉 250 日长窗口特征的预热期后,训练集只剩 2020 年 1 月至 2022 年 3 月的 27 个月末截面,截面样本量约为研报的五分之一。交叉验证集没有沿用研报的随机切分,改为时间尾部的 2022 年 4 月至 11 月,避免验证信息泄漏进训练。样本外是 2023 年 1 月至 2026 年 8 月共 44 个月,每月首个交易日截面预测。

第三是股票池。研报用历史当期的沪深 300 成份,本地只有当前成份名单,存在幸存者偏差,且偏差方向偏向利好。即便在这个偏乐观的口径下 SVM 仍然亏损,后面的证伪结论因此更稳。

预处理链照研报执行:中位数去极值(中位数±5 倍绝对中位差)、缺失值按行业均值填充、因子对行业哑变量与对数市值回归取残差、截面标准化。PCA 一步按研报附录的自证结论(对高斯核与线性核分类结果无影响)跳过。研报 PDF 用 MinerU 转换,绩效表格可读,校验数字全部取自转换后的表格。

第一次失效:SVM 全线跑输

按研报图表 15 的网格搜索:惩罚系数 C 取 0.01 至 10 共 7 档,高斯核γ取 0.0001 至 1 共 9 档,63 组参数以交叉验证集 AUC 选优。

结果:63 组的交叉验证 AUC 最高只有 0.5358(C=0.03,γ=0.1)。用这组参数在 44 个样本外月份预测,平均 AUC 0.4797;训练集正确率约 54%,研报同口径是 65.4%。

上图红线是研报口径 SVM 的回测(沪深 300 池、Top20 等权、月频调仓、万 1 佣金加印花税):年化-4.37%,跑输沪深 300 约 9.6 个百分点(超额年化=策略年化减基准年化),最大回撤 31.6%(净值从峰到谷的最大跌幅)。灰线是同期基准,年化+5.2%。

0.48 的 AUC 意味着预测方向能力低于随机。我的第一判断是实现有误,进入诊断。

诊断:信号存在,失效在模型层

诊断第一步不碰模型,先验证因子本身有无信号。对 23 个因子逐月计算截面秩 IC(IC 是预测排序与真实收益排序的相关系数,月均 0.03 以上即有实用信号)。

上图取 IC 绝对值前 12 名的因子,紫色为训练窗(2020-02 至 2022-11),青色为样本外(2023-01 至 2026-08)。股息率、低波动、低 beta、短期反转在两个窗口方向一致、幅度均在 0.02 至 0.04 之间:2023 年之后的沪深 300 里,低波高息反转类信号持续存在。12 个因子中 9 个方向严格同向,其余 3 个训练窗 IC 接近零。

第二步排查预处理。行业市值中性化使原始 IC 约打五折,但方向不变,排除。

第三步集中排查模型层,做了四组对照:49 组参数的 SVM 在样本外逐组评估,AUC 全部落在 0.480 至 0.504;线性核 0.505 至 0.507;滚动折交叉验证选参、秩变换特征、中位数切分标签三个变体,样本外同样无效。训练集正确率在合理参数下只有 0.51 至 0.56,说明±1 的月度标签在当前样本量下信噪比过低,RBF 核映射拟合到的是噪声。

最后做对照实验:以训练窗各因子的月均截面 IC 为权重线性加权(即 oracle 组合,理论上限参照),样本外 IC 为+0.029,月度 Top20 模拟年化超额约+13%。

结论:信号呈线性形态,SVM 分类框架在训练样本四千余行(不到研报的五分之一)的规模下连线性成分都未提取。研报自己的结论五是这批因子与收益存在显著线性关系、核 SVM 并不优于广义线性模型——本地复现把这个结论推到了更极端的地方:线性模型能提取的部分,SVM 一点没有多拿,反而为负。

替换模型后的回测:IC 加权线性

按诊断结论做模型层替换,方案简单到不需要训练框架:每个因子取训练窗内的月均截面 IC 作为权重,预测分等于因子秩的加权和。替换后信号样本外 IC 从-0.0199 恢复到+0.0287,IC IR 0.25。

回测矩阵(口径同前:沪深 300 池、万 1 佣金加印花税、2023-01 至 2026-08,基准年化+5.18%):

策略
年化
超额年化
夏普
最大回撤
IC 加权 Top10
22.92%
+17.74%
1.06
15.8%
IC 加权 Top20
18.94%
+13.75%
0.96
17.5%
IC 加权 Top50
14.27%
+9.09%
0.86
17.4%

(夏普=年化收益÷年化波动,衡量每承担一单位波动换到的回报。)

持仓越集中超额越高,Top10 年化超额+17.74%,与研报中选股数越少超额越高的规律方向一致。

逐年分解:2023 年超额+27.70%(当年沪深 300 为-11.75%,低波高息的防御属性占优);2024 年+13.21%;2026 年至 8 月+9.95%;2025 年-5.92%,普涨行情中资金集中成长股,低波类因子整体跑输,这是该类因子的结构性弱势年份。

PTrade 落地:双平台对账

本地验证之后落到 PTrade。策略的 23 个因子里有估值、财报同比、股息率,PTrade 平台侧没有与本地等价的数据源,平台内重算必然口径漂移,因此采用离线信号表方案:生成器脚本把 44 个月、每月前 40 名的有序信号内嵌进策略文件(Top20 持仓加 20 名顺延缓冲,流动性过滤后顺延取满),策略只负责读本月信号、过滤 20 日均成交额、Top20 等权下单。重训后重跑生成器即可刷新信号表。

平台约束逐条执行:证券后缀用.SS/.SZ、成交额字段用 money、复权参数不传字符串、取数后逐股数值校验、调仓用 run_daily 注册在 14:50、信号表内代码转平台码。

对账结果:同为万 1 佣金加印花税,PTrade 版年化 19.89%、夏普 1.01、最大回撤 16.9%,native 版 18.94%。订单数量级一致(1423 单对 1427 单),净值偏离中位数-2.31%,差异来自成交时点——PTrade 日线语义在信号日 15:00 收盘成交,本地 native 是次日开盘成交,相差一个隔夜。降级订单 2 笔,为停牌订单到期,占 0.14%,属设计行为。

费率口径补充:PTrade 平台回测默认万 8 双向无印花,同策略按平台默认口径年化 19.08%,与万 1 终版口径相差 0.8 个百分点,月频低换手结构对费率不敏感。

本复现有三个遗留问题。其一,幸存者偏差:当前成份名单使超额偏乐观。其二,研报自己的警告应验:固定训练集在风格切换后失效,研报 2017 年上半年正确率跌破 50%,而本地的整个样本外区间几乎都处于风格切换之中。其三,历史成份、分析师情绪、股东结构、财务质量明细,这些研报拥有而本地缺失的数据,才是它 21.1%超额的本体。

PS: 源码下载,请移步知识星球!

星球中整理了文章中涉及到的源码,加入后即可以看到之前发的源码,三天内不满意可以退款。也会将收集到的机构研报,优秀策略源码,群友常咨询的问题整理到不同标签下,做为知识库沉淀下来。

所有策略仅用于学习和研究,不保证交易收益,不作为投资建议,风险自负,所有收益仅表示历史回测收益,不表示未来收益。大QMT和ptrade请充分使用模拟盘测试,miniQMT使用模拟账号测试。

相关文章:

小白也能做量化:零门槛QMT/Ptrade免费送

量化python代码解析:QMT回测龙头打首板和连板的策略

听了群友的建议,年化收益达到了70%,增加了动态仓位权重调整后的全球核心资产轮动策略(含python代码解析)

欢迎扫描下方二维码,备注【开通】,开通QMT或Ptrade;备注【加群】,加入量化交易交流群;备注【电子书】,赠送QMT或Ptrade入门操作指南。

免责声明:

仅做知识整理,本公众号对这些信息的准确性和完整性不作任何保证,本材料不构成任何投资意见。投资有风险,入市需谨慎。

猜你喜欢

发表评论

发表评论: