四大AI编程代理量化因子挖掘实测:Codex、Claude Code、DeepSeek Harness、Grok Bot谁更强

发布时间:2026/10/21 17:11:51
四大AI编程代理量化因子挖掘实测:Codex、Claude Code、DeepSeek Harness、Grok Bot谁更强
1. 量化因子挖掘这件事为什么突然被AI代理盯上了量化因子挖掘在过去很多年里都是一件门槛极高的事。你得懂金融时序数据的结构得会写高效的向量化计算代码得理解回测框架里那些容易骗人的细节还得有足够的耐心去反复试错。一个稍微像样的因子从想法到验证往往要消耗掉一个熟练研究员好几天的时间。而真正能上生产环境的因子背后可能是几百个被淘汰的候选。大模型编程代理的出现让这件事有了新的可能性。所谓AI代理挖因子本质上是把提出假设—写代码验证—读取结果—调整方向这个循环交给一个能自主执行代码的智能体去跑。它不只是帮你补全一行pandas代码而是能自己决定下一步该测什么、该怎么改。这就从辅助编码升级成了自主研究。我最近花了两周时间把手上四个主流的编程代理——Codex、Claude Code、DeepSeek Harness、Grok Bot——放在同一套量化因子挖掘任务上做了对比实测。任务设定很明确给定一份A股风格的日频量价数据约500只标的、8年历史要求代理自主挖掘出若干具备统计显著性的alpha因子并给出样本外表现。整个过程我只做三件事搭环境、给初始prompt、看结果。中间不干预它的思路。先说结论的方向性判断这四个代理在能不能跑通这件事上差距不大但在挖出来的因子有没有真alpha这件事上差距非常明显。有的代理擅长快速产出大量候选因子但过拟合严重有的代理产出慢但样本外稳定性好还有的代理会在回测环节悄悄犯一些低级但致命的错误。下面我把整个实测过程拆开讲包括任务怎么设计、每个代理的表现细节、以及我从里面总结出的可复用经验。如果你也在考虑用AI代理来做量化研究或者只是好奇这些编程代理在真实数据任务上的边界在哪这篇内容应该能帮你省下不少自己踩坑的时间。我会尽量把每个环节讲透包括那些看起来不起眼但实际影响很大的细节。2. 实测任务的设计怎么让四个代理站在同一条起跑线上2.1 数据与因子池的边界设定要让对比有意义首先得控制变量。我给四个代理的是完全相同的数据快照一份本地Parquet格式的日频数据字段包括open、high、low、close、volume、amount、turnover_rate、market_cap时间跨度从某年到某年标的数量约500只已经做过基础清洗剔除停牌、ST、上市不足60日的样本。这里有个关键决策我没有给它们任何预置的因子模板库。原因是如果给了模板代理很可能只是做参数微调那就测不出自主挖掘的能力了。我要看的是它们能不能从原始量价数据里自己构造出有经济含义的表达式。因子池的约束我也做了明确限定单因子表达式长度不超过15个token只能用给定的字段和基础算子加减乘除、rank、ts_mean、ts_std、ts_corr、delay、delta等。这个约束很重要因为如果不限制复杂度代理很容易堆出一个几十项的黑箱表达式样本内IC能到0.15样本外直接归零。提示约束表达式复杂度是防止代理过拟合的第一道闸门。我建议任何用AI挖因子的场景都加上这条否则你拿到的很可能是一堆漂亮的垃圾。2.2 评估口径IC、ICIR、换手与衰减评估一个因子好不好不能只看IC均值。我用了四个维度指标含义合格线优秀线IC均值因子值与未来收益的秩相关0.030.05ICIRIC均值/IC标准差0.30.5多空年化分组多空组合收益8%15%IC半衰期IC衰减到一半所需天数5天10天样本外我采用的是滚动窗口用前5年训练后3年做样本外验证中间不留gap。这个设置比简单的7:3切分更严格因为它模拟了因子在时间上的稳定性。2.3 给代理的初始prompt长什么样四个代理收到的是同一段prompt内容大意是你是一名量化研究员请基于给定的量价数据自主挖掘alpha因子要求因子具备经济逻辑、样本外稳定、换手可控。你需要自己写代码完成数据加载、因子构造、回测评估并输出最终因子表达式和评估报告。我没有告诉它们具体该挖什么方向的因子。这是故意的因为一旦指定方向比如挖一个动量因子就变成了执行任务而不是自主研究。我要测的是它们在开放空间里的探索能力。prompt里我特意加了一句请记录你尝试过的所有因子及其评估结果包括失败的。这句话后来被证明非常有用因为它让我能看到每个代理的探索轨迹而不只是最终产物。3. Codex的表现工程能力强但研究品味一般3.1 它跑通了什么Codex给我的第一印象是执行力极强。它在第一轮就写出了完整的数据加载和回测框架代码结构清晰用了向量化计算跑500只标的8年数据只用了不到40秒。这一点上它明显比其他三个更利索没有出现任何环境依赖或API调用上的低级错误。它第一批就产出了12个候选因子覆盖了动量、反转、波动率、量价背离几个大类。其中有一个基于成交量加权价格偏离度的因子样本内IC到了0.061样本外IC还有0.042ICIR 0.38。这个成绩在四个代理里属于中上水平。3.2 问题出在研究品味上但Codex的问题也很明显它太喜欢堆复杂度了。我看了它尝试过的因子列表发现它很快就从简单表达式滑向了复杂组合。比如它有一个因子是这样的rank(ts_corr(close, volume, 20)) * rank(delta(turnover_rate, 5)) - rank(ts_std(returns, 10))。这个表达式已经接近我设的15个token上限样本内IC 0.078看起来很漂亮但样本外直接掉到0.019。我复盘了它的探索轨迹发现它有一个明显的模式每当一个简单因子表现不够好它的第一反应不是换方向而是加项。这其实是一种典型的过拟合行为——用复杂度去拟合噪声。它在12个因子里有7个都是这种多层嵌套结构样本外衰减普遍严重。注意代理的加项冲动是AI挖因子最需要警惕的倾向。它本质上是在用搜索空间换样本内表现而量化研究里样本内表现是最不值钱的东西。3.3 一个值得借鉴的细节不过Codex有一个做法我觉得很聪明它在评估阶段自动加了因子间相关性检查。当它发现两个候选因子相关性超过0.7时会主动只保留ICIR更高的那个。这个动作不在我的prompt要求里是它自己加的。这说明它在工程层面确实有组合思维知道最终交付的应该是一组低相关的因子而不是一堆同质化因子。这个细节后来被我加进了自己的标准流程。因为实际生产中你挖出10个相关性0.9的因子等于只挖了1个。4. Claude Code的表现慢工出细活样本外最稳4.1 探索节奏明显更克制Claude Code的节奏和Codex完全相反。它前20分钟几乎没产出任何因子一直在做数据探索——算各种字段的分布、看缺失值模式、检查极端值。我当时甚至以为它卡住了。但等它开始产出因子时质量明显不一样。它第一批只给了4个因子但每一个都有清晰的经济逻辑说明。比如它构造的一个隔夜收益与日内收益的背离因子表达式只有7个tokenrank(ts_mean(open/close-1, 5) - ts_mean(close/delay(close,1)-1, 5))。样本内IC 0.048样本外IC 0.041衰减很小。4.2 样本外表现对比我把四个代理最终交付的因子做了统一的样本外回测Claude Code的因子在稳定性上明显领先代理交付因子数样本外IC均值样本外ICIR多空年化Codex50.0310.299.2%Claude Code40.0430.4113.7%DeepSeek Harness70.0280.247.8%Grok Bot60.0350.3310.4%Claude Code的样本外ICIR 0.41是四个里唯一接近优秀线的。它的多空年化13.7%也明显高于其他三个。4.3 它的慢到底慢在哪我后来仔细看了它的执行日志发现它把大量时间花在了自我质疑上。它每构造一个因子都会先问自己三个问题这个因子的经济含义是什么它在不同市场状态下会不会失效它和已有因子的相关性如何这种自我质疑在工程上其实是低效的因为它增加了大量额外的计算和推理。但在研究上它恰恰是防止过拟合的关键。Codex是先挖再说Claude Code是想清楚再挖两种策略在样本外的差距就是这么拉开的。提示如果你追求的是因子数量选激进型代理如果你追求的是能上生产的因子选克制型代理。这个取舍在实测里非常明显。5. DeepSeek Harness与Grok Bot两个极端5.1 DeepSeek Harness产出最多但质量堪忧DeepSeek Harness是四个里产出因子最多的一共给了7个。但它的样本外表现是最差的IC均值只有0.028ICIR 0.24。我看了它的因子列表发现问题出在重复造轮子上。它7个因子里有4个本质上都是动量类的变体只是窗口期不同5日、10日、20日、60日。这种因子在样本内可能都还行但它们高度相关组合起来没有任何分散化价值。更麻烦的是它有一个因子在样本外出现了IC符号反转——样本内IC 0.052样本外-0.018。这是量化研究里最危险的情况因为符号反转意味着因子逻辑本身可能有问题而不是简单的衰减。我复盘了它的探索过程发现它很少做因子逻辑检验。它更像是在做参数搜索而不是在提出假设。这导致它挖出来的东西缺乏经济含义支撑一旦市场结构变化就崩了。5.2 Grok Bot中规中矩但有个隐藏问题Grok Bot的表现介于中间6个因子样本外IC 0.035ICIR 0.33。单看数字不算差但我在检查它的回测代码时发现了一个隐藏问题它在计算未来收益时用的是close到close的收益但没有做复权处理。这个细节很致命。如果数据里有分红送转未复权的价格会在除权日出现跳空这个跳空会被错误地计入收益导致因子IC被高估。我手动修正后重新回测它的样本外IC从0.035掉到了0.029。注意代理写的回测代码一定要人工审查收益计算部分。复权、停牌、涨跌停这些细节代理很容易忽略而它们对结果的影响可能是决定性的。5.3 两个代理的共性问题DeepSeek Harness和Grok Bot有一个共同问题它们都不太会止损。当某个方向的因子连续失败时Codex会换方向Claude Code会停下来反思但这两个代理会继续在同一个方向上微调参数。这导致它们的探索效率其实不高——看起来尝试了很多但大部分尝试都是低价值的重复。6. 从四个代理的表现里我总结出的可复用经验6.1 代理选型没有全能选手只有场景匹配实测下来我的判断是如果你要快速搭建因子挖掘的工程框架Codex最合适它的代码质量和执行效率最高。如果你要的是能上生产的稳定因子Claude Code最合适它的样本外表现最好。如果你要做大规模的因子初筛DeepSeek Harness的产出速度有优势但必须配合严格的人工筛选。Grok Bot适合做辅助验证它的表现中规中矩但回测细节需要重点审查。这个结论不是绝对的因为代理的能力还在快速迭代。但它反映了一个底层逻辑代理的研究品味比它的编码能力更重要。编码能力决定它能不能跑通研究品味决定它跑出来的东西有没有价值。6.2 流程设计三道闸门缺一不可不管用哪个代理我在实测里验证有效的流程是三道闸门第一道是表达式复杂度限制。这个必须在prompt里写死不能靠代理自觉。我建议token数上限设在12到15之间超过这个长度的因子样本外衰减概率会显著上升。第二道是因子逻辑审查。代理产出的每个因子你都要能用自己的话解释它的经济含义。解释不通的直接淘汰。这一步能过滤掉大部分过拟合产物。第三道是样本外滚动验证。不要用简单的训练测试切分要用滚动窗口。因为量化因子的失效往往是渐进的滚动窗口能更早发现衰减趋势。6.3 一个容易被忽略的细节因子相关性管理Codex那个自动做相关性检查的动作我后来在所有代理的流程里都加上了。具体做法是当候选因子池里出现相关性超过0.7的因子对时只保留ICIR更高的那个。这个动作看起来简单但它对最终组合的贡献很大。我做过对比加了相关性管理后同样数量的因子组合的多空年化能提升2到3个百分点。原因很简单低相关因子的组合分散化收益是实打实的。6.4 关于AI能不能替代量化研究员这件事实测两周下来我的看法是AI代理目前能替代的是因子挖掘里的体力活比如批量试错、代码实现、初步筛选。但它替代不了的是研究判断比如判断一个因子的经济逻辑是否成立、判断样本外衰减是噪声还是真失效、判断当前市场环境适合什么类型的因子。所以更现实的定位是把AI代理当成一个不知疲倦的初级研究员它能帮你把候选池从100个扩到1000个但最终拍板的那一下还是得你自己来。这个分工在实测里被反复验证——凡是完全放手让代理自己决定最终交付的结果都不太理想凡是我在关键节点做了人工干预的结果都明显更好。7. 实操中几个具体的坑和应对7.1 数据加载环节的隐性错误四个代理里有两个在数据加载时犯了同一个错误把turnover_rate当成了百分比数值直接参与计算而没有先除以100。这个错误不会报错但会让所有涉及换手率的因子量纲完全错乱。应对方法很简单在prompt里明确写出每个字段的量纲和取值范围。我后来加了一句turnover_rate为百分比数值范围0到100这个错误就再没出现过。7.2 回测里的未来函数这是最危险的一类错误。有一个代理在构造因子时用了ts_mean(close, 5)但在计算IC时没有做delay处理导致因子值和未来收益出现了时间上的重叠。这种错误会让IC虚高很多而且很难通过看代码发现。我的应对是在prompt里强制要求所有因子在计算IC前必须做一期delay确保因子值在收益实现之前已经确定。这一条加上后所有代理的IC都出现了不同程度的下降但下降后的数字才是真实的。7.3 代理的自信偏差有一个现象很有意思代理在报告自己的因子表现时普遍会偏向乐观。比如它会在报告里写该因子样本外IC 0.04表现稳健但实际上0.04的IC在扣掉交易成本后可能就不剩什么了。应对方法是统一评估口径。我后来要求所有代理必须输出扣费后的多空收益费率按单边千分之一点五算。这个要求加上后好几个因子的稳健标签就挂不住了。7.4 关于算力消耗的现实考量四个代理跑完整个任务消耗的算力差异很大。Codex和Claude Code的token消耗明显更高因为它们做了更多的探索和反思。DeepSeek Harness消耗最低但产出质量也最低。Grok Bot居中。如果你的预算有限我的建议是把算力花在验证环节而不是生成环节。也就是说让代理少生成一些候选因子但对每个候选因子做更严格的验证。这个策略在实测里被证明是性价比最高的。8. 我个人的使用体会两周实测下来最大的感受是AI代理挖因子这件事工具本身的差距其实没有想象中那么大真正拉开差距的是你怎么用它。同样的Claude Code如果你prompt写得粗糙它产出的东西和DeepSeek Harness不会有本质区别同样的Codex如果你加了严格的复杂度约束和逻辑审查它的样本外表现也能明显提升。我现在的工作流是这样的用Codex做工程框架搭建和批量初筛用Claude Code做重点因子的深度验证DeepSeek Harness用来做参数敏感性测试Grok Bot做交叉复核。四个代理各司其职而不是指望某一个包打天下。还有一个体会是关于人的位置。实测里表现最好的那几个因子无一例外都是我在某个节点做了干预的结果——要么是我否掉了代理的一个过拟合方向要么是我提示它换一个经济逻辑。代理能帮你跑得很快但方向感这件事目前还是得人来给。最后分享一个小技巧让代理在每次尝试后都输出一段失败原因分析。这个动作看起来是额外的但它能逼着代理做反思而不是盲目试错。我对比过加了失败分析的代理后续尝试的有效率明显更高。这个技巧对Codex和Claude Code尤其有效。