机器学习,能帮ETF轮动什么?13类模型的实测与反思

量化研究
ETF轮动
机器学习
风险控制
从逻辑回归到时间序列基础模型,记录13类模型辅助ETF轮动风险控制的实测结果、优缺点,以及A/B/C和循环平移对照带来的认识。
发布于

2026-10-21

从逻辑回归、梯度提升树到时间序列基础模型,我更关心的不是谁的名字更新,而是谁能在保留原策略逻辑的前提下,提供可核验的风险控制价值。

机器学习与ETF轮动研究封面

机器学习与ETF轮动研究封面

做ETF轮动,最让人纠结的往往不是“今天选哪只”,而是“这一次轮动,值得用多大仓位参与”。

动量排名第一的ETF,可能延续趋势,也可能刚好进入回撤。直接按过去亏损名单永久剔除品种,又容易把历史上表现不好的资产,错当成未来也不会有机会的资产。

于是,我尝试给原策略加一个辅助层:原策略继续负责投资决策,机器学习只判断是否应该少承担一点风险。

这篇文章记录13类已实际运行模型的表现,也记录没有奏效的地方。所有数字都是特定配置下的历史研究结果,不是实盘收益,也不是未来盈利承诺。

一、先让模型做一件小事:辅助仓位,而不是接管策略

本轮实验没有让模型直接决定买哪只ETF,也没有让它生成交易指令。原策略保持不变,模型只作为独立的风险辅助层。本文不展开原策略的具体技术规则。

模型回答的是一个更窄的问题:在当前特征下,原策略选出的这只ETF,未来5个交易日出现亏损的风险是否偏高?

执行方案也很简单:

  • 原策略照常运行,模型不改变其具体规则。
  • 每天固定时点读取模型风险分数;分数不低于0.60,原目标ETF预算乘0.5,否则乘1。
  • 模型只调整相对风险预算,不扩大原策略上限;实际成交仍需遵守交易约束。

这里的“0.60”是固定实验阈值,不意味着模型已经能准确报出“60%的真实亏损概率”。本轮输出尚未经过独立时间样本的概率校准。

目前聚宽验证的是逐年模型历史评分表的回放,不是聚宽端现场构造全部特征、实时推理和实盘下单。这个边界必须讲清楚。

二、模型究竟看到了什么数据?

表格模型使用23个特征,主要分成四组:

  1. 趋势与动量:描述资产过去的方向和趋势状态。
  2. 风险状态:描述波动、下行风险和历史回撤。
  3. 量价和市场环境:描述交易活跃度与市场整体状态。
  4. 基础分类:描述资产类别与数据历史长度。

模型输入按实际决策时点设计,不使用当时尚不可见的信息。未来收益和标签单独保存,不进入特征列。这里仅介绍模型输入的大类,不公开原策略的参数和计算细节。

模型标签衡量决策后未来5个交易日的收益方向。它并不等于原策略实际持仓这一笔最终是否亏损:模型的观察窗口与实际持仓区间未必一致,预测目标与真实交易目标之间仍有距离。

普通监督模型从2018年起扩展训练,分别用于2023、2024、2025、2026年的预测。每年的训练样本必须满足:未来5日标签已经在当年1月1日之前结束。缺失值填补、截尾和标准化也只在训练集拟合,不能先用全样本计算再切分。

三、13类模型,各自能帮什么,又有什么短板?

1. 逻辑回归:一个值得保留的简单基线

逻辑回归适合检验:这些特征是否存在比较稳定、近似线性的风险关系。

优点是训练快、部署轻,系数和输入变化的关系比较容易解释。缺点是面对“高波动但趋势强”和“高波动且趋势破坏”这类交互情形时,表达能力有限。特征强相关时,系数也不能直接当作因果解释。

本轮逻辑回归降低了一部分回撤,但累计收益明显落后原策略。它的价值更像一个基线,而不是看到“可解释”三个字就应当上线的方案。

2. 高斯朴素贝叶斯:速度很快,假设也很强

它结构简单、计算便宜,可以帮助发现复杂模型是否真的超过了很低成本的参照。问题是动量、均线距离和趋势指标之间通常相关,特征条件独立等假设难以完全满足。

本轮它的最大回撤较低,但累计收益损失很大。回撤低,不代表风险判断好,也可能只是错过了太多上涨。

3. 随机森林:擅长捕捉非线性,不等于概率可靠

随机森林综合多棵具有随机性的决策树,可以处理非线性与特征交互,通常不需要像线性模型一样手工列出所有交互项。

不足是模型更大、解释更复杂,时间序列非平稳仍会使历史关系失效。许多相邻交易日的信息高度重叠,“样本很多”不等于独立信息很多。

本轮它减少了回撤,但收益没有超过原策略。

4. ExtraTrees:增加随机性,有时反而更合适

ExtraTrees也使用树集成,但在分裂选择上引入更强随机性,和随机森林不是同一个配置换了名字。

它的好处是可能降低对局部历史细节的依赖,训练也较方便;代价是可能增加偏差,分数仍需验证与校准。本轮收益和回撤都优于原策略,但这个结果不能外推为所有ETF轮动任务都适合它。

5. 传统梯度提升树:本轮最值得继续验证的路线之一

梯度提升树不是让许多树独立投票,而是逐轮改进已有预测的不足。浅树可以组合出“动量还在,但波动与市场广度已经转弱”一类条件关系。

它适合当前这类中小规模表格特征任务,CPU训练和本地部署的门槛较低。缺点是树的深度、学习率和样本条件仍会影响过拟合;学到的历史条件也不保证跨市场阶段稳定。树集成方法说明

本轮它不是所有表格模型中收益最高的那个,但兼顾了结果、部署成本和现有核验进度,因此被选作后续影子验证候选,而非已经认定有效的实盘模型。

6. 直方图梯度提升:更高效,不代表必然更准

它通过离散化连续特征提高树训练效率。在更大表格数据上,这种方法很有吸引力;但在当前样本规模下,效率优势不一定转化为预测优势。

本轮收益和回撤表现不错,不过“换了更快的实现”不应成为忽略时间隔离和过拟合风险的理由。

7. XGBoost:成熟的提升树工具,不是收益保证

XGBoost提供成熟的提升树训练、正则化与工程能力,适合做严肃的表格模型对照。官方文档

它的优点是工具完善、可控制性强;缺点是参数选择空间也更大。反复试深度、树数、阈值,再按测试期收益选最优,很容易把“调参能力”误当成预测能力。本轮它的主要区间表现较好,但扩展区间没有触发减仓,结果与原策略相同。

8. LightGBM:数据规模增大时很有价值

LightGBM采用直方图等设计提高训练速度和内存效率。本轮能快速完成对照,但更灵活的树生长仍需要约束,尤其不能忽略小样本风险。官方特性说明

对我的策略而言,它是值得保留的候选工具,但没有证据表明仅凭“训练快”就应替换当前候选模型。

9. CatBoost:结果很好,但别把类别处理优势想当然

CatBoost是支持类别特征等输入的梯度提升树工具。官方说明

本轮它在主要区间累计收益略高于传统梯度提升树,但回撤几乎相同。需要特别说明:本次主要输入是数值特征和0/1类别标记,并没有充分发挥原生高基数类别处理的全部能力。

所以,不能凭这次结果就说“CatBoost因为理解ETF类别而胜出”,也不能凭几个百分点的历史收益差异直接换实盘模型。

10. TabPFN v2:表格基础模型值得测,但没有免验证特权

TabPFN是一条预训练表格模型路线,不是普通聊天大模型。本轮使用v2检查点、CPU单估计器配置,不代表其他版本或更大配置。官方项目

它可能减少传统模型逐任务拟合和调参的负担,但依赖、运行成本和输入规模仍需考虑。在这次ETF风险任务里,它较频繁地减仓,降低了风险暴露,也明显损失了主要区间收益。

11. TFT:可以看时间结构,但需要更多训练与验证工作

Temporal Fusion Transformer结合时间序列建模与注意力等机制,适合研究多个历史特征随时间的变化。原始论文

本轮使用官方实现的小型网络,历史窗口20日、隐藏维度8、固定训练10轮,并适配成未来5日亏损分类任务。它不是对所有规模TFT的穷尽测试。

优点是可以学习特征的时间变化;缺点是训练和调试成本更高,样本量、正则化和随机性影响更明显。较低回撤仍可能部分来自更低仓位,不能直接解释为神经网络“看懂了风险”。

12. Chronos-2:价格预测基础模型,不能直接等同于风险控制器

Chronos-2支持零样本时间序列预测。本轮使用完整预训练权重、本地推理,没有针对这套策略微调。官方介绍

它的吸引力是可以复用预训练的序列能力,但“预测价格分布”与“决定轮动策略减多少仓”之间还隔着任务转换。本轮把预测分位数转换成风险代理分数,不能将其视为已校准的真实亏损概率。

13. TimesFM 2.5:时间序列预训练并不会自动解决市场适配

TimesFM是Google Research的时间序列基础模型。本轮实际测试的是2.5检查点,不是把后来版本的能力套用到本次结果上。官方项目

它同样便于研究零样本序列预测,但仍存在金融场景迁移、预测目标转换和计算资源方面的成本。本轮未看到足以替换原策略的组合优势。

这几类基础模型本次都在本机完成推理,没有把策略数据发送到在线聊天模型。但下载预训练权重与本地推理是两回事,不能概括为研究全过程从未联网。

四、把结果放在同一张表里

主要比较区间为2023年1月3日至2026年6月18日,每个方案以100万元独立启动。表格展示累计收益和区间最大回撤,不是年化收益。结果已计入本轮设定的费用和撮合规则,但不等于真实账户一定可以实现。

方案 累计收益 最大回撤
原策略 1102.02% 21.04%
逻辑回归 878.29% 19.88%
随机森林 995.02% 17.47%
ExtraTrees 1176.10% 17.47%
梯度提升树 1297.89% 17.47%
直方图梯度提升 1174.59% 17.38%
高斯朴素贝叶斯 519.41% 15.36%
XGBoost 1235.36% 17.47%
LightGBM 1217.17% 17.46%
CatBoost 1301.46% 17.47%
TabPFN v2 929.98% 17.44%
小型TFT 977.58% 16.93%
Chronos-2 965.68% 21.03%
TimesFM 2.5 649.01% 19.29%

13类模型的累计收益与最大回撤

13类模型的累计收益与最大回撤

表中大部分模型来自本地模拟;原策略A组和传统梯度提升树B组,另外完成了聚宽逐笔交易、每日持仓与净值核验。不能将全表描述为“13个模型都已逐一聚宽实测”。

还要注意:表格分类器主要使用相同23个特征;TFT增加了历史特征窗口,Chronos-2和TimesFM主要使用价格序列。因此,这不是所有路线都拥有完全相同信息的严格算法竞赛。

基础模型的价格序列还混合了不同采样时点,并近似为等间隔序列;用于转换风险分数的价格基准与标签基准也存在时点差异。预训练检查点发布时间晚于部分历史回测日期,训练数据重叠尚未完全审计。这些结果不能宣称是“历史当时可获得、无预训练污染”的严格验证。

五、换到另一个区间,结果就没那么漂亮了

为了不只展示有利区间,我也整理了2026年6月22日至10月19日的扩展结果。扩展区间各方案重新以100万元空仓启动,不能把它直接与前表收益相加或当作连续账户净值。

方案 扩展区间累计收益 扩展区间最大回撤
原策略 -20.79% 24.20%
梯度提升树 -18.36% 24.20%
XGBoost -20.79% 24.20%
LightGBM -20.03% 24.20%
CatBoost -18.36% 24.20%
TabPFN v2 -23.85% 25.19%
小型TFT -18.30% 22.57%
Chronos-2 -22.18% 25.53%
TimesFM 2.5 -22.15% 23.90%

梯度提升树在主要区间的优势,并没有变成扩展区间全面避险的能力:虽然少亏了一些,但最大回撤几乎没有改善。TFT在扩展区间比原策略少亏,也不意味着它已经具有稳定预测力。

这段扩展数据如今也已被研究,不应再称作新盲测。表中结果仅代表当前配置,既不能据此宣布某条模型路线永久无效,也不能挑出短期最好的模型马上上线。

六、为什么不能只和“未加模型的原策略”比较?

如果模型经常减仓,回撤变小可能只是因为风险暴露下降。为此,我分了三个组,保持原策略逻辑、比较区间和初始资金一致:

  • A组:原策略,不加模型倍率。
  • B组:梯度提升树风险分数不低于0.60,原目标预算减半。
  • C组:固定预算倍率,不根据比较期模型分数变动。

C组倍率不是看完2023年后的收益再挑的:先用2018—2021年已完成的标签训练模型,在2022年生成分数,将当年风险倍率取平均,得到约0.927686,冻结后应用到比较期。

但这套对照规则是当前回顾性研究中明确的,并不意味着它在2023年之前就被真实预注册。

方案 累计收益 最大回撤 平均收盘仓位
A 原策略 1102.02% 21.04% 96.01%
B 模型减仓 1297.89% 17.47% 92.18%
C 固定减仓 923.95% 19.67% 89.23%

A、B、C三组净值与回撤对比

A、B、C三组净值与回撤对比

A组411笔、B组443笔、C组412笔交易均完成了与聚宽导出的核对。B组的66天触发是“目标预算减半天数”,不等于66次成功成交;实际执行仍受交易约束影响。

B组相对C组收益高、回撤低,但B组平均实际仓位也更高。因此,仅用C组还不能严格分离模型择时贡献。

补充的本地事后同目标倍率对照,平均收盘仓位约92.31%,接近B组的92.18%,累计收益为1000.94%、最大回撤20.29%,仍不及B组。不过,它使用比较期平均倍率,只能作为事后诊断,不是可伪装成事前决策的独立策略。

七、如果把减仓日期移动一下,会怎样?

下一步,我没有继续找新模型,而是做了一个“择时安慰剂”测试:保留B组66天减仓的安排,对整个风险倍率序列做循环平移,穷举其他835种位置。

这种方法保留减仓总天数,以及循环意义下的连续区间长度和间隔,但不保证线性样本两端的区间长度、年度触发数、趋势状态和实际仓位完全一致。

结果如下:

  • B组累计收益1297.89%,平移对照中位数997.43%。
  • B组最大回撤17.47%,平移对照中位数21.03%。
  • 835种对照中,2种收益达到或超过B组,5种回撤不高于B组。
  • 没有一种同时在收益和最大回撤两项上不逊于B组。

循环平移对照结果分布

循环平移对照结果分布

这为“减仓时点可能有价值”提供了额外历史证据。但835个平移方案彼此相关,模型又是从已研究历史中挑选出来的,不能把2/835解释为未来失败概率,也不能把它包装成99%以上的成功率或严格统计显著性。

八、我认为真正有帮助的地方,与尚未解决的问题

这轮实验让我更重视模型的三个用途。

第一是条件化风险识别。同样的动量排名,在不同波动、回撤和市场广度环境下,不一定值得使用相同预算。模型可以研究这些条件的组合。

第二是把主观纠结变成可记录的规则。是否减仓有明确输入、分数和阈值,至少能够回放、核对和复盘,而不是事后为每次交易找理由。

第三是提供可以被否定的研究假设。复杂模型如果不能超过简单基线、固定预算和随机择时对照,就没有必要因为它更“先进”而增加系统负担。

但目前还存在几项实质限制:

  • 普通模型的分类表现整体并不强。梯度提升树主要区间AUC约0.532,接近0.5的随机排序基准,不能把组合收益优势当作高精度预测的证明。概率误差也没有稳定超过常数基线。
  • 风险标签是未来5日收益,而不是实际轮动持仓损益。目标错位可能限制模型价值。
  • 特征和标签在相邻日期重叠,有效独立样本少于表面行数。
  • 多模型比较、历史区间选择和后续研究都带来选择偏差。不能只记住冠军,忘掉失败配置。
  • NAV数据的历史公告可见时点尚未独立核验。净值对应某一天,不代表在当时决策时点已经公开。
  • 日线撮合中的成交容量不能直接等同于实际决策时点的可成交容量,回测与实际交易执行还需进一步核验。
  • 不同模型的风险分数触发频率不同,统一0.60阈值便于固定协议,但不等于概率已可直接横向比较。

DCAH是另一条讨论过的研究路线,但本轮没有完成它的复现和同口径实测,所以没有把它写进13类模型的收益表。 同样,通用聊天大模型并未被用作本轮仓位预测器;它可以辅助文档、代码审查和数据检查,但不能替代历史数据、时间隔离与成交核验。

九、下一步:停止追逐模型名字,开始验证新数据

我目前更愿意保留已经核验过的原策略作为主干,把一个相对轻量、可审计的模型作为影子风险层。

具体做法是冻结现有模型、特征、0.60阈值和0.5倍率,先把当天数据接入、原策略标的对齐、现场特征生成与不可覆盖的评分记录跑通,再观察后续真正新产生的数据。

收盘后下载历史时点的行情并重算,只能算事后数据接入核验,不能冒充当时已生成的前向预测。真正的前向观察起点,应以完成接线后第一条具有真实采集、评分时间记录的合格预测为准。

目前尚未接入真实下单,也不采用盘中反复增减仓的设计。模型每天固定时点辅助原目标预算,不擅自改变选ETF规则或增加原策略上限。跨年更新模型也应有独立版本和训练截止记录,而不是静默换模型后继续拼接成绩。

对我而言,这轮研究最有价值的认识是:

机器学习可能帮助ETF轮动更有选择地承担风险,但这种帮助必须靠对照、核验和新数据证明。模型复杂度不是优势,经过验证的增量价值才是。


研究口径与参考资料

本文实测数字来自本轮本地研究记录与A/B/C聚宽导出核验,不是第三方审计或实盘业绩。原始策略、模型版本和回测假设固定在本轮配置;不应与其他版本直接拼接比较。

主要区间:2023-01-03至2026-06-18;扩展区间:2026-06-22至2026-10-19。研究记录整理于2026年10月。风险分数预测未来5日收益方向,不代表极端损失概率或收益幅度预测。

模型原理参考:scikit-learn树集成、XGBoost、LightGBM、CatBoost、TabPFN、TFT论文、Chronos-2、TimesFM。官方项目页面可能继续更新,不代表本轮使用其当前最新版本。

封面为AI生成的概念插画;统计配图由本轮研究数据绘制。本文仅记录个人研究过程,不构成投资建议。历史回测不代表未来表现,模型可能失效,ETF及相关资产均存在亏损风险。