乐于分享
好东西不私藏

【利得基金】AI赋能投研系列:基于Agent开发量化工具

【利得基金】AI赋能投研系列:基于Agent开发量化工具

 ◆     投资摘要

  • 本文是AI赋能投研的系列报告,研究重点是通过与Agent交流而生成因子自动发掘工具(程序源代码)。由反馈的结果来看生成的程序框架较好,应该是借鉴了训练AI模型的成熟结构,因此这一过程可以理解为通过Agent收集了大量的有用信息,最后整合成符合我们要求的结果。通过使用Agent完成金融自动化工具的开发可以极大的提高工作效率,减少人工开发的工作,更快的达成目标落地。对于投资和研究具有重要的意义。
  • Agent在生成金融模型或工具方面的优势:1.借鉴已有的相似或相同的功能,直接生成完整的软件架构;2.交互生成程序后,Agent会对程序进行必要的修复和调试(缺少的插件也会被自动安装),保证程序可以正常运行;3.通过详细的交流和沟通反馈,Agent可以生成符合目标的程序源代码,这一过程需要对任务进行细致的分解,之后Agent才能更好的完成整体任务;4.Agent的理解能力具有巨大的优势,公认的概念或模型可以直接被Agent理解并生成可执行的源代码;
  • Agent在生成金融模型或工具方面的劣势:1.虽然Agent生成了完整的模型,但程序中隐藏了一些细节问题,计算的结果可能存在问题;2.程序调试过程时间过长,而Agent并没有设定合理的结束条件,因此生成的程序非常容易陷入不停的运行与修改的循环过程;3.通过Agent修改程序细节的过程较为繁琐,需要准确的命令,而且离不开人工的引导和校验;4.交互过程中容易发生修改或删除已生成代码的情况,而且删除的代码难以恢复,因此在与Agent交互中每次生成的结果要做好备份,否则会导致之前的工作前功尽弃;
  • 建议不要完全依赖Agent来达到完美的结果,一旦Agent生成整体框架以及大部分功能模块后,细节可以通过人工修改的方式来完善,这样一方面可以保证快速完成目标,另一方面又提高了程序的准确性;
  • 风险提示:报告基于历史数据分析,历史规律未来可能存在失效的风险;报告中的案例仅供测试使用,不构成投资建议;AI大模型回答结果不一,生成结论可能存在错误。
◆     正文    ◆
一、引言

OpenClaw为代表的AI智能体,它通过连接多种大语言模型利用本地设备权限,让用户能够通过自然语言指令远程操控电脑执行实际任务前期的研究中我们分别从基础和研报分析两个部分对智能体框架在金融领域发挥的作用进行了展示和介绍,发现智能体在金融领域具有巨大的发展潜力,但金融领域具有一定的特殊性,大数据模型对于一些任务的处理较为模糊,无法准确的把握重点,因此在完成精确度上有所不足。另外一旦研究报告中的原始信息不完整,那么研报复现方面也无法完整的呈现。由我们的应用分析来看AI智能体在信息收集,程序代码生成方面具有优势,因此在投资研究尤其是量化研究方面可以更好的发挥作用。

1.1 AI大模型具有信息搜索的优势

AI大模型从根本上改变信息搜索的方式,它不再只是一个简单的检索工具,而更像一个智能的信息处理伙伴。AI大模型驱动的搜索,其优势主要体现在以下几个方面:

l深度的意图理解与自然语言交互,传统搜索需要用户将问题提炼成几个关键词,通过搜索引擎检索,而大模型可以理解完整的、口语化的复杂问题;

l高效的信息整合与知识蒸馏,传统搜索返回的是包含大量冗余信息和广告的网页列表,用户需要自己逐一点击、阅读、筛选和整合,这是一个从信息知识的费力过程,而大模型汇总海量信息源,直接生成一份去重、提炼、归纳后的答案,省去了自行翻阅数十篇论文和报道的时间;

l跨领域、跨文档的逻辑推理与洞察,大模型不仅能找到信息,还能基于信息进行推理、对比和创造;

l多模态信息的统一处理,新一代的大模型具备了多模态能力,可以同时处理文本、图像、音频甚至视频,它将视觉信息转化为语义信息并进行分析,打破了传统搜索以文搜文的局限;

l交互式探索与个性化迭代,传统搜索是一次性的,如果结果不满意,需要自己换一组关键词重新搜索,而大模型支持多轮对话式的搜索,像和一个专家交流一样,不断深化问题;

l自动化推荐能力,对于技术类搜索,大模型不仅能提供理论,还能直接提供可执行的软件教程或在线工具等解决方案。

        AI大模型的信息搜索优势,本质上是从提供链接交付答案的进化,这一步飞跃在生产和生活中会发挥重要的作用。
1.2 研究员开发量化策略的认知过程
通常开发完整的量化策略涉及到整体框架的设定以及细节的调整,这一过程往往不是一蹴而就的,作为研究人员有其擅长的领域同时也有存在短板的知识盲区。人类自身的认知过程可以分为四个阶段,第一阶段不知道自己不知道;第二阶段知道自己不知道;第三阶段知道自己知道;第四阶段不知道自己知道。四个阶段按照对自己的认知以及对知识的理解两个维度可以划分为四个象限,如下图所示。
图1 知识认知四象限

资料来源Wind,利得基金

认知过程,恰与Dunning-Kruger Effect(达克效应)的总结相类似:越是无知的人就越自信。当一个人知识越来越多,自信心会下降,但是突破临界点以后,自信心会回升,但之后不论怎么回升,都不如一开始一无所知时那么自信。即越是知识丰富的人越能意识到自己的不足,也越能发现、承认与学习别人的优点。梭罗曾在《瓦尔登湖》中写道:“知道自己知道什么,也知道自己不知道什么,这就是真正的知识。”(Know what you know,and know what you don't know, this is the real knowledge.)研究人员开发量化策略时经常面临上述的认知偏差现象。开始阶段通常受到外界的现象和某种逻辑的影响形成了策略的初始框架和想法,其中可能隐含了大量模糊的判断;之后通过实验的论证数据的验证逐渐发现策略中的弊端;再后不断地改进和完善策略,通过回测历史数据可以检验历史投资效果;最后策略实际部署和投资,期望获得预期的投资目标,但该阶段可能也会面临大笔亏损,这就要再次检验策略的逻辑,重新验证数据发现并修正策略中的错误,该过程不断往复从而使得策略达到可外延投资的目的。
1.3 人机结合优势互补

AI智能体的优势在于信息收集,当前的大语言模型是生成式模型,其底层逻辑是上下文相关的概率推理,由此生成对话或逻辑提示,它依靠训练数据获得语句的概率,这与人类的推理存在较大的差异,因此很多人类的创新思维AI模型无法理解,但它的计算和处理信息、记忆数据的能力很强,适合处理重复且频繁的工作。

人类的创造能力是AI无法比拟的,人类的跨领域跨学科的联想与推理是长期进化形成的,依据人类的观察、学习以及对世界的感知,形成了很多创新的理论与方法,这些方法在人类进化的过程中发挥了重要的作用,有些创新不是对以往知识的简单堆砌,是划时代的产物。

AI与人类的能力结合,人类只需要按照想法和思路下达指令,计算机按照指令执行并生成结果。这样的组合可以将人类的创意快速落地以检验结果的优劣。在金融领域策略与自动化工具的开发恰恰需要人机结合的模式,该领域需要人类的创意以及计算机快速的统计和验证计算,二者的结合既提高了策略或工具的开发效率,又可以减少很多重复性的劳动,有利于研究人员将重心放在创新研发上。AI辅助的重要作用在于它可以直接借鉴很多已有架构或设计体系的源代码,在AI模型的训练过程中它会将很多已有的类似研究进行汇总,研究员在与AI的交流过程中可以借鉴类似的方案,并在其中加入自己的改进和创新,最终形成更好的策略和工具。
二、自动生成因子挖掘框架

量化投资领域对于因子的关注是一个长期的需求,因子是解释和预测资产收益差异的关键变量,它的核心作用可以概括为:将模糊的投资经验,转化为可量化、可回测、可执行的科学决策依据。因子的应用较广,我们罗列出以下应用。

l通过将收益分解,因子可以回答“收益从何而来”。

l构建投资组合应用中,投资者可以根据单一因子筛选股票,或融合多个因子打分构建组合。

l在指数投资领域,基于因子的聪明贝塔(Smart Beta)策略产品已非常普及,规模持续增长。

l因子还可以精确识别和管理风险,通过分析投资组合在一些因子上的暴露程度,管理者能预测其在特定市场环境下的反应。

l学术和业界通过研究因子,能发现传统定价模型无法解释的市场异象,进而开发新策略。

因子也存在一些缺点:因子一般不会长期有效一旦某个赚钱的因子被公开,套利行为会使其超额收益逐渐消失。此外,因子的表现本身也有周期性和轮动特征,因此在一定时期因子会失效;纯粹从数据中出的因子可能只是统计巧合,在未来样本外测试中会失效;一些因子在考虑实际交易成本和资金规模后,收益可能被显著侵蚀。总而言之,因子是连接理论、实证与投资的桥梁,是现代投资管理不可或缺的工具。
2.1 因子自动发现工具
因子的构建方法分为两种分别自上而下的,从理论、现象出发去数据中寻找证据;自下而上的,基于统计分析从数据出发去发现其内在模式。传统的金融因子是自上而下构建的,当前几乎被发掘殆尽了,而基于统计方法挖掘因子是当前主流的因子发现方法。计算机的统计计算能力在发掘因子的过程中可以发挥重要作用,并且可以跟踪发现因子是否有效。自动发现和挖掘因子的工具在量化投资领域中具有重要意义。
基于统计合成因子的计算过程没有成熟的指导方案,很多是通过随机组合的方式来发掘因子,因此合成过程中涉及的操作要考虑随机组合的合理性。另外,对于输入的数据要考虑数据的频率、异常值、长度、单位等特征,通常要经过去除异常和正规化值等步骤,才能在合成因子的过程中进行使用。可见因子自动发现工具要包括数据预处理功能模块。
2.2 AI辅助下生成因子自动发现工具
我们使用Claude Code作为AI辅助工具,该工具是擅长规划、执行多文件复杂任务的智能代理,在程序自动生成方面具有较强的优势,通过与其交互来生成代码框架。首先我们发出指令:“我是做量化金融研究的,我需要一个股票因子的自动挖掘程序框架,该框架基于我输入的股票各维度信息,自动寻找可能的有效因子,并计算因子与股票未来收益率的IC值,程序中要体现出这些内容,生成源代码放到工作目录下”。之后Claude Code在工作目录下生成了一个stock_factor_miner.pyPython源代码,该源代码被Agent自动调用运行,并将发现的几个因子展示如下。
图2 生成的新因子展示

资料来源Wind,利得基金

由结果来看寻找到的因子不但列出了ICIR、胜率等,还通过分组的方式列出了头尾两组股票组合的收益差,这些都是较为主流的因子检验方法,可见生成的源代码是一个较为成熟的因子检验计算框架。
通过阅读程序代码,我们发现因子的挖掘过程中没有随机计算组合的操作,而是简单的将一些股票指标汇总,按照固定算法计算了一些区间的均值。为此我们继续与Agent交互,“挖掘因子的过程中请加入随机组合生成因子的操作,保证发现更多的因子”。之后生成的代码中增加了“随机组合因子”操作,它将一些股票的指标随机组合后当成一个新的股票指标,这一处理逻辑也是合理的,但发现涉及的计算操作仅包括加、减、乘、除、加权等计算,这些计算较为常规,我们希望可以更复杂的计算操作,因此我们继续与Agent交互,“请在因子挖掘中加入更多的数学运算操作,产生更多的因子”。之后Claude Code在代码中加入了幂运算、平均、开方、排序计算、平均计算、绝对值等一些操作,这样使得产生的因子数量会更多,最后程序运行的结果如下:
图3 中型图,5.8*13.4cm

资料来源Wind,利得基金

可见经过几次交流后获得的结果还是比较合适的(具体框架在下文讨论),其中有四个随机运算发现的因子。我们认为这种随机生成因子的方法随意性较强,如果加入一定的优化指导措施可以发现更好的因子。为此我们继续与Agent交互“随机生成因子这部分请用遗传算法实现,并生成一个函数”之后Claude Code在源代码中增加了_add_genetic_algorithm_factors()函数,至此我们要求的因子自动生成工具基本就完成了。接下来对该工具的框架做详细的分析和说明,以便总结Agent在生成工具或策略方面的优劣势。
三、因子自动分析工具详细说明
前文通过与Agent的互动生成了因子自动挖掘工具的主体架构和源代码,下面我们对生成的源代码模块进行详细说明。由于与Agent互动要求的是生成股票因子,因此因子来自股票数据的合成,程序中涉及到的一些类、属性、功能等模块展示如下:
基本信息模块定义:
因子自动发掘工具的工作流程:
我们对因子发掘工具工作流程中涉及的一些内容进行解释,首先股票数据分为模拟生成和真实数据两个功能模块,之所以存在模拟生成股票数据部分是因为生成的程序需要数据运行,而我们并没有提供数据的来源,因此Claude Code提供了这部分功能,此外,我们也认为模拟生成股票数据在自动化工具中具有一定的作用,例如对于验证特定市场环境下的因子表现或者一些极端情况下的压力测试就需要该功能。在生成因子的功能部分里共计有三个模块,分别是按指定方法计算因子、随机计算组合计算因子、遗传算法计算因子。原始生成的代码中仅有指定方法计算的因子,其中包括动量类、价格涨跌类的一些因子计算,这些因子通常是较为常见的因子,但对于自动发掘新的因子意义不大,其后的随机计算组合、遗传算法计算都是在我们要求后生成的新功能。其中随机计算组合仅仅是简单的单步随机计算,即随机选择计算操作,之后将两个或多个(如取平均计算)股票指标通过选择的计算操作获得因子值,这一方法对于较为复杂的计算显得不足。遗传算法的结构可以生成更加复杂的计算操作,但由源代码分析来看生成的遗传算法中的操作也仅有加、减、乘、除、四个运算,但计算过程变成了多步,有了这个框架未来通过主动加入一些计算操作可以扩展因子生成能力。因子检验功能主要是计算因子的ICIR值是否超越一定的阈值从而判定为有效,另外该功能还可以将股票按因子值排序,等分成几个组合将高分因子股票组合的收益率与低分因子股票组合的收益率做差以突出因子的有效性。
部分程序代码展示如下:
图4 因子及股票的类定义

资料来源Wind,利得基金

图5 随机计算因子函数

资料来源Wind,利得基金

图6 遗传算法计算因子函数

资料来源Wind,利得基金

图7 计算IC值的函数

资料来源Wind,利得基金

对框架的分析可以发现,通过与Agent的交互几乎完整生成了因子自动发掘工具的源代码,这个框架较为完善而且其中的一些功能函数远超预期,可见这得益于AI大模型的训练过程中有大量的完整案例数据,因此对于一些常规的模型、算法甚至框架中需要的一些操作函数都可以直接生成。我们在与Agent对话的过程中只要说明什么模型和算法(最好是公认的模型和算法,否则结果未必正确)即可,不需要说明详细的计算过程,此外Agent生成的Python源代码中也应用了较为成熟的软件架构,因此Agent回馈的结果是大量已有或相似的成熟方案,在准确性上是较高的。以我们要求的遗传算法的细节来看,其生成的染色体以加、减、乘、除四种操作为基础,生成的计算公式还加入了检验修复的过程,保证公式的合理性。进化的适应度选择了因子的IC值,各种选择、交叉、变异的操纵都比较明确,程序源代码如下:
图8 修复因子计算公式函数

资料来源Wind,利得基金

图9 遗传算法选择、交叉、变异函数

资料来源Wind,利得基金

但详细分析源代码的细节我们发现,其中有些结构尽管做了定义,但程序中并没有调用,我们认为可能是学习的成熟框架中涉及到了一些数据结构,然而具体的使用可能是出于程序运行等客观情况并没有详细的调用,这也是自动生成工具过程中的一个遗憾。另外,通过详细阅读代码我们还发现因子合成的公式存在不合理性,但Claude Code没有考虑这些,使得程序在计算中会导致错误结论。因此通过Agent辅助金融工具开发,还无法达到代码可以运行就直接使用计算结果的程度,虽然代码编写的大部分工作Agent可以完成,但是人工审阅和检查代码的工作仍然无法完全被取代。即便当前很多的前沿研究将这部分工作再次交给其他Agent来完成,但我们认为由于策略或工具中的一些特殊操作仍然无法离开人工的指导,甚至有些情景研究员也无法一步完成,而是需要依据计算结果不停的修正。
对于模型中需要加入一些修改方案的情况我们在此重点讨论。与Agent交互的过程中发现有些修改较为容易而且明确,例如我们要加入遗传算法来发掘因子,并且要求作为独立的函数,由其生成的源代码不仅嵌入框架中还能够在程序中正常运行。还有一些修改操作涉及到的情况较为复杂,尤其在开发金融领域的一些模型和工具时往往要对过程和步骤不断调整,这些操作如果全部要Agent自动生成则与其对话交流会非常繁琐,而且过程中有可能发生将已生成的源代码修改或删除的情况,在发生这种情况时,我们要求Agent恢复原来的代码,但反馈的结果往往不理想,甚至直接提示无法完成,因此做好已生成源代码的备份非常重要。我们还发现有些轻微的改动若要求Agent完成,下达的命令反而较为繁琐,此时直接人工进行修改反而更加准确和高效。
四、总结与分析
本文是AI赋能投研的系列报告,我们的研究重点是通过与Agent交流而生成因子自动发掘工具(程序源代码)。该过程整体较为流畅通过几次对话,要求Agent生成目标功能模块,由反馈的结果来看生成的程序框架较好,应该是借鉴了训练AI模型的成熟结构,因此这一过程可以理解为通过Agent收集了大量的有用信息,最后整合成符合我们要求的结果。在生成因子自动发掘工具的过程中总结了使用AI工具的一些优缺点。

Agent在生成金融模型或工具方面的优势:

1.借鉴已有的相似或相同的功能,直接生成完整的软件架构;

2.交互生成程序后,Agent会对程序进行必要的修复和调试(缺少的插件也会被自动安装),保证程序可以正常运行;

3.通过详细的交流和沟通反馈,Agent可以生成符合目标的程序源代码,这一过程需要对任务进行细致的分解,之后Agent才能更好的完成整体任务;

4.Agent的理解能力具有巨大的优势,公认的概念或模型可以直接被Agent理解并生成可执行的源代码;

Agent在生成金融模型或工具方面的劣势:

1.虽然Agent生成了完整的模型,并保证程序能够运行,但程序中隐藏了一些细节问题,如果不仔细阅读代码计算的结果可能存在问题;

2.程序调试过程时间过长,由于金融领域一些求解优化过程往往较多,而Agent并没有设定合理的结束条件,因此生成的程序非常容易陷入不停的运行与修改的循环过程,这在实际应用中是不推荐的,因为研究人员可能也无法直接给定合理的判定条件,常规的做法是使用小批量数据以及较容易判断的优化结束条件来完成程序的正确性检验,之后再修改优化结束条件正式运行程序,但当前Agent还无法达到这一程度;

3.通过Agent修改程序细节的过程较为繁琐,需要准确的命令,而且离不开人工的引导和校验。过程中容易发生修改或删除已生成代码的情况,而且删除的代码难以恢复,因此在与Agent交互中每次生成的结果要做好备份,否则会导致之前的工作前功尽弃。在实践过程中我们建议不要完全依赖Agent来达到完美的结果,一旦生成整体框架以及大部分功能模块后,一些细节可以通过人工修改的方式来完善,这样一方面可以保证快速完成目标,另一方面又提高了程序的准确性;

总之,通过使用Agent完成金融自动化工具的开发可以极大的提高工作效率,减少人工开发的工作,更快的达成目标落地。对于投资和研究具有重要的意义。

法律声明

风险提示

投资有风险。基金的过往业绩并不预示其未来表现。基金管理人管理的其他基金的业绩并不构成基金业绩表现的保证。相关数据仅供参考,不构成投资建议。投资人请详阅基金合同等法律文件,了解产品风险收益特征,根据自身资产状况、风险承受能力审慎决策,独立承担投资风险。

重要声明

阁下/贵方接受、阅读或使用本文件即表明阁下/贵方已事先及无条件接受以下“重要声明”所载之条款和条件:

本文件系为利得基金备制,本文件中的信息仅作参考之用,不构成任何具有法律约束力之产品投资要约或要约邀请,并且不可用于对投资的评估。

本文件所载信息仅为初步提示,利得基金从未表述或保证本文件中的信息的完整性和准确性,接受或使用者亦不得对其完整性和准确性提出要求。即使本文件所有信息系已尽最大的谨慎提供、选择和校验,利得基金对于信息的完整性以及内容的正确性亦不承担任何责任。

本资料仅为宣传用品,本机构及工作人员不存在直接或间接主动推介相关产品的行为,不构成投资建议。

保密条款

本文件中的信息均为保密信息,未经利得基金书面事先同意,不得为任何其它目的,整体或部分地使用、复制或传播本文本中所含信息。

未经事先书面许可,本文件不可被复制或分发,本文件内容亦不可向任何第三者披露,仅供特定范围内的资深专业投资人士使用,不得用作它途。一旦接收或阅读本文件,阁下/贵方应被视为已经接受此项保密条款。