线性因子到端到端模型的实战系列(一) 开篇
  ELVES 18天前 54 0

背景

最近在小安老师建议下做端到端阿尔法模型的构建复现,踩了不少坑,也有一些收获。这篇文章是结合招商证券那篇《端到端的动态Alpha模型》研报的第一部分,以及我自己的实践经验整理出来的,顺便附了我画的图来梳理结构。

一、线性因子模型逐渐失效了?

研报里其实讲得很清楚,线性模型的问题并不只是过时这么简单,而是它在理论假设上就有点站不住脚。比如APT模型假设资产收益率和因子之间是线性关系,而且残差是独立同分布的、无异方差的。但现实中的金融市场,残差往往具有强烈的异方差性和截面相关性。
这也解释了为啥我们实际中用多因子回归算出来的因子收益,经常和真实收益表现差很多。为了缓解这个问题,传统做法会用Fama-Macbeth回归、WLS回归、Barra的风控模型等等,但这其实都是在补救线性假设带来的偏差。
除此之外,线性因子模型还有两个结构性的问题:

  1. 因子冗余、同质化严重:现在流行的alpha因子(比如BP、EP、AR等)大多是高度相关的,这些因子组合在一起时很容易导致多头多空相互抵消,实际收益弱甚至为负。
  2. 多头拥挤现象突出:特别是在近年来的A股市场中,很多因子的空头端贡献了大部分IC,而多头端反而被资金挤压、表现越来越差。研报中特别提到BP和AR因子,在过去几年中多头拥挤日益严重,空头贡献主导了IC。

思维导图我也做了总结:

  1. 一方面是线性结构在表达复杂关系上力不从心,我这个野路子选手做因子分析的时候只敢一个一个因子的测试,2个因子加一块都心慌,多个因子组合起来效果确实很好,但是和实盘完全对不上,因为多因子组合去拟合过去的数据得到好的结果,完全就是在过拟合了,当然如果是类似财务因子的组合分析另当别论,有逻辑的组合还是可以的,但是没逻辑的组合不敢用。
  2. 另一方面是传统因子在策略层面已经高度趋同,导致市场参与者之间的撞车越来越严重。小市值YYDS,我最近实测两个月发现市值偏大、流动性较好的标的一般都没什么超额收益,常见的因子基本效果都不好,只有小标的、流动性差的地方没人玩,因为策略资金容量不高。

二、从线性到非线性MLP

说实话我一开始也没想走那么激进的端到端路线,直到我发现线性模型对一些细分行情的适应能力真的很差,尤其在震荡市或者结构性轮动的时候,传统的因子组合表现频繁翻车,说人话就是。。。规律还在,但是噪音太多,如果愿意熬还是能熬到行情的,这特么要搞成价值投资了。
招商的研报他们用MLP做非线性Alpha建模,直接从原始因子到预期收益率进行端到端训练。关键是几个实验结果让我印象深刻:

  1. 虽然MLP的平均RankIC比线性模型略低(9.27% vs 10.43%),但多空夏普更高,多头收益更强,策略回撤更小。
  2. 多头组合的表现显著改善,这对我没法做空的选股策略特别重要。
  3. 最重要的一点:他们用正交惩罚机制解决了因子冗余问题,让大类因子的相关性更低,稳定性更高。
    我在图里加了这一部分的总结,也对比了我自己的实验情况。可以说,用MLP不仅仅是模型升级,是给因子组合找到线性维度下更微观的超额部分表达。

三、辩证地看端到端建模的优劣

虽然提出了MLP,但我不打算神化它,甚至我认为AI只是某个策略或者有效信号的放大器而不是能自动帮你挖坑赚钱的魔法棒。模型这东西,本质还是服务于策略目标,不能迷信形式。研报里其实也提到了一些值得警惕的点:

  1. 端到端模型越复杂,越难解释。尤其是你面对回撤的时候,如果模型说不清楚逻辑来源,那其实也是一种风险,你会严重怀疑自己。
  2. 验证集优化与过拟合的边界很模糊。很多人在训练深度网络的时候,容易把验证集当作调参目标,导致结果在训练集与验证集之间来回最优,而失去了真实的样本外泛化能力,泛化能力特别重要,我们公司做小样本图片识别也强调迁移性的重要性。
  3. 损失函数要正确的看待。MSE作为传统loss,其实在排序任务上经常拟合得好但预测得烂。IC作为loss虽然更贴合排序目标,但它是非凸的,训练难度大。CCC则是折中方案,但也有缺陷。
    所以,我在思维导图里标了一点:深度模型不是魔法棒,黑箱结构的潜在bug同样危险。

四、关于此次实践的一些看法

如果说传统因子模型是知识图谱式的表达,那么MLP更像是数据驱动的语言模型。一个是靠人主导的规则集,一个是靠数据驱动的自动组合。
我认为真正有效的路径可能不是A或B,而是两者融合。例如:

  1. 用传统方法先做因子池筛选,
  2. 用非线性模型做组合与交互建模,
  3. 最后再配合风险控制模块,形成完整的交易策略闭环。

感觉未来端到端的模型是种趋势,但它不是终点。它是我们从假设驱动转向数据驱动的中间形态。把握好中间状态,不走极端,是我现在的策略构建逻辑。在模型构建中重点关注数据集的构建已经学习的目标,在没有明确场景和任务的前提下都是耍流氓的炼丹。

下一篇文章我将详细讲解数据集的构建、代码的搭建、回测的实现等等,不讲细节主要是为了大家能拿到数据和代码就能跑起来,心里有个数。欢迎关注,也欢迎交流讨论。
下面我贴2个图,一个是MLP模型学习后纯多下策略的收益,一个是本篇的思维导图。当然我因子数据少,仅供参考,当然不能只看回测,还有很多策略评价相关的内容我就不详细展开讲了,先把流程跑通。
使用的因子比较少主要是(‘换手率_5’, ‘成交额Std_5’, ‘ROE_单季’, ‘EP_单季’, ‘波动率_5’, ‘成交额Mean_5’, ‘市值’, ‘归母净利润同比增速_60’,)

模型在没有择时下的回测 (虽然不强(风格标签很严重),但是我感觉比散户乱买还是要强的)

图片1.png

加入一些择时魔法后回测(虽然也不行…当然优化空间还很大)
图片2.png

思维导图
端到端模型构建阿尔法.jpg

最后一次编辑于 18天前 0

暂无评论

推荐阅读