【因子挖掘功能】从单因子到多因子,我把动量因子重新梳理了一遍
  我是cyy 13天前 111 0

PandaAI 内测第 5 周:从单因子到多因子,我把动量因子重新梳理了一遍

这周我把重心放在了股票因子挖掘上,想先用 PandaAI 搭一套能跑、能看、也方便继续修改的因子分析流程,为后面的因子大赛做准备。整体体验下来,我最大的感受是:工作流助手确实很适合先把框架搭起来,但真正决定效果的,还是自己对参数、结果和因子方向的理解。

1. 先用工作流助手把框架搭起来

我先直接让工作流助手帮我生成一个股票基础动量因子分析框架。对我来说,这一步最重要的价值,不是让 AI 一次性给出完美答案,而是先把从因子输入、因子构建、因子分析到结果展示这一整套链路搭出来。

image.png

从截图里能看到,助手生成的是一个比较标准的单因子分析流程:先输入因子代码,再做线性因子构建,接着进入因子分析,最后输出分析结果。这个结构很适合拿来做第一轮验证,因为后面不管我要改公式、调参数,还是换成多因子,都是在这个框架上继续迭代。

2. 先运行一遍,再把参数看明白

初版工作流跑起来之后,我先重点看了一下参数设置。像这种因子分析流程里,参数不是附属品,而是会直接影响结论怎么解释。

image1.png

这里面我比较关注几个点:

  • 分组数量 是把股票池按因子值从低到高切成几组。我这里先按 5 组理解,本质上就是看高因子组和低因子组有没有稳定分层。
  • 调仓周期 决定多久重新按因子值排序一次。周期越短,反应越快,但也更容易受噪音影响。
  • 股票池 决定因子在哪个范围里做比较。放在沪深 300 这类相对稳定的池子里,更适合先验证因子有没有基础效果。
  • 因子方向 很关键,它决定系统把“因子值大”理解成更看多,还是更看空。

这一步其实很重要。因为很多时候,工作流能不能跑通只是第一关,真正有价值的是你能不能看懂这些参数背后的含义。

3. 助手生成得不错,但还是要手动改成更符合自己需求的版本

跑完第一版之后,我还是决定手动改一下,把它调成更贴近自己思路的分析框架。这次我用的是一个比较直观的动量写法:RANK(RETURNS(CLOSE, 21)),也就是按过去 21 个交易日的收益率做截面排序。

image5.png

这一版里,我重点调整了几个地方:

  • 因子公式改成 RANK(RETURNS(CLOSE, 21)),意思是最近 21 个交易日涨得越多,因子值越高。
  • 调仓周期 设成了 3,相当于每 3 个交易日做一次重新分组。
  • 分组数量 设成了 6,这样能把分层看得更细一点。
  • 因子方向 先设成 0,也就是先按负向因子去检验。
  • 股票池 继续放在 沪深300,先在更稳一点的范围里观察效果。

我现在越来越喜欢这种工作方式:先让 AI 把工作流搭出来,再由自己去改关键参数。这样效率高,而且不会把“生成出来了”误以为“已经最优了”。

4. 看因子分析结果时,不能只看收益,要重点看 IC

这张结果图是这周我觉得最值得细看的部分。

image6.png

如果只看表面数据,这个因子不算太差:因子收益大约 20.38%,年化收益 21.40%,夏普比率 0.6013,最大回撤 15.87%。单看这几个数字,会让人觉得它已经有点意思了。

但真正关键的是左下角这组指标:

  • IC_mean = -0.0003
  • Rank_IC = -0.0074
  • IC_std = 0.2346
  • IC_IR = -0.0016
  • IR = -0.0085
  • t统计量 = -0.0155

这里最核心的信息是:IC_mean 为负,而且几乎贴近 0,说明这个因子当前更像是一个负向因子,同时预测能力也比较弱。 也就是说,因子值高的股票,并没有稳定对应到更高的未来收益,反而更接近“方向略反、强度又不够”的状态。

再结合 Rank_IC 也接近 0、IC_IR 很低、t统计量 几乎没有显著性,就能看出来,这个因子目前还谈不上是一个稳定的强因子。它不是完全没信息,但离“可以放心拿去做核心信号”还有距离。

这也是我这次一个很深的体会:看因子,不能只看收益曲线漂不漂亮,更要看它有没有稳定的排序能力。

5. 把方向调过来之后,解读会顺很多

既然前面的结果已经说明它更像是负向因子,那最直接的处理方法,就是把公式前面加一个负号,同时把因子方向改成正向。

image7.png

也就是把原来的动量排序,改成 -RANK(RETURNS(CLOSE, 21)),并把方向从 0 调成 1

image8.png

改完之后,IC_mean 变成了 0.0004Rank_IC 变成了 0.0075。这时候从指标表达上看,它就成了一个“正向因子”。

不过这里我觉得也要说清楚:把负号加上去,不是凭空把一个普通因子变强了,而是把它的解释方向调顺了。 因子本身携带的信息并没有突然变多,但后面无论是继续做筛选、做组合,还是和其他因子合并,正向表达都会更直观一些。

6. 再往前走一步,我开始看多因子组合

在单因子看明白之后,我又去看了多因子工作流。这个部分也挺有意思,因为它不再是一个公式单打独斗,而是把多个信号合起来。

image11.png

从工作流结构上看,这里是把两个公式因子和一个 Python 自定义因子分别构建出来,再给不同权重,最后合并成一个总因子送去分析。这个思路我很喜欢,因为它更接近真实的因子研究流程:不是赌一个公式包打天下,而是把不同维度的信息组合起来。

对应的分析结果如下:

image12.png

这张图给我的第一感觉是,多因子组合的表现比前面的单因子更有“组合味道”了。像结果里能看到:

  • 因子收益大约 15.60%
  • 夏普比率 3.4587
  • 年化收益 72.81%
  • 最大回撤只有 4.51%

如果只看收益和回撤,这组数据确实很亮眼,说明组合后的分层效果和多空价差都比前面更有看头。

但左下角这组 IC 指标同样值得注意:

  • IC_mean = -0.0391
  • Rank_IC = -0.0774
  • IC_IR = -0.2792
  • IR = -2.8011

这说明什么?说明这个多因子组合虽然跑出了不错的收益表现,但它当前的有效信息依然更偏向负向解释,至少从 IC 的角度看,还没有完全调顺。如果后面要继续优化,我会优先检查三件事:因子方向是不是统一了、权重分配是不是合理、因子之间有没有太强的重复暴露。

所以我的结论不是“多因子一定更强”,而是:多因子更容易做出结果,但也更容易把方向问题、相关性问题和过拟合问题一起藏进去。

7. 这周的使用心得

  • PandaAI 很适合先把因子研究的工作流脚手架搭出来,尤其是从 0 到 1 的阶段,能省掉很多重复配置时间。
  • 工作流这种可视化方式对因子研究特别友好,因为你能很直观地看到公式、构建、加权、分析分别在哪一层发生。
  • 真正高效的用法不是“全交给 AI”,而是“先让 AI 生成,再自己改关键参数和公式”。
  • 因子结果页的信息量很大,尤其是 IC、Rank_IC、IR 这些指标,一旦能看懂,后面调因子会快很多。
  • 这类平台最有价值的地方,不只是帮我生成流程,而是让我能更快完成一轮“提出想法 -> 验证 -> 修正 -> 再验证”。

8. 这周关于因子挖掘的心得

  • 一个因子好不好,不能只看累计收益,还要看分组是否单调、IC 是否稳定、方向是否一致。
  • IC_mean 为负不一定是坏事,它很多时候只是提醒你:这个因子可能本来就是反着用的。
  • 把负向因子翻成正向因子,是为了统一解释口径,不代表因子的预测能力被凭空增强了。
  • 多因子组合往往能把收益曲线做得更好看,但如果没有先处理好方向和相关性,很容易得到“结果不错、逻辑不稳”的组合。
  • 因子挖掘里最重要的不是一次找到神奇公式,而是持续筛掉无效因子、保留逻辑清楚且稳定的因子。

9. 总结

这周的体验对我来说挺有价值的,因为我不是停留在“让 AI 帮我生成一个因子分析工作流”,而是真的顺着结果继续往下追:参数是什么意思,为什么 IC 是负的,方向该怎么调,多因子为什么看起来更好但也更复杂。

如果说前几周更多是在感受 PandaAI 的生成和修复能力,那这周我更明显感受到,它已经能进入到一个更实战的阶段了:帮我更快做因子验证,但最终的判断权,还是牢牢掌握在自己手里。

最后一次编辑于 13天前 0

暂无评论

推荐阅读
我是cyy