发布时间:2024 年 05 月 23 日
Agent应用
FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models
金融机构和专业人士正越来越多地采用大型语言模型(LLMs),但专有数据和专业知识等障碍仍横亘在金融界与 AI 社区之间,限制了 AI 在金融任务上的有效提升。认识到金融分析的重要性,我们致力于开发基于 LLM 的金融专用工具链,并通过开源方式推广,以促进 AI 在金融决策中的广泛应用。本文介绍了 FinRobot,一个支持多种金融专用 AI 代理的开源平台,每个代理均由 LLM 驱动。平台架构包括:金融 AI 代理层,将复杂问题逻辑分解以形成金融思维链;金融 LLM 算法层,为任务定制模型策略;LLMOps 和 DataOps 层,利用相关数据进行模型训练和微调;以及多源 LLM 基础模型层,整合各类 LLM 资源。FinRobot 不仅服务于专业分析师,也让普通用户能够利用 AI 技术进行深入的金融分析。项目已开源,地址为\url{https://github.com/AI4Finance-Foundation/FinRobot}。
- 金融数据与AI的碰撞:现状与问题
金融分析涉及解读市场动向、预测经济走向和制定投资策略,为金融决策提供辅助。如果将股票市场的分析分为两大类,那么一类是基本面分析 ,它深入研究公司并给出估值;另一类是技术分析 ,它通过分析市场行为来预测价格的未来走势。
金融分析始终建立在数据之上,而随着数字革命的深入,可供金融分析的数据越来越多。面对日益增长的数据量和复杂性,金融专家越来越多地求助于算法和机器智能来处理数据。人工智能(AI)通过自动化情感分析和市场预测等任务,彻底改变了金融分析的面貌。
随着大型语言模型(LLMs)和计算能力的进步,AI的能力得到了显著提升。LLMs能够吸收全球知识、理解上下文并执行复杂的逻辑推理,这不仅使得它们能够同时处理多项任务,还扩展了它们在金融领域进行复杂分析和决策的能力。
在LLMs的基础上,AI代理已经发展到能够执行包括规划、内存管理和工具使用在内的一系列复杂功能,这促进了在现实世界场景中的智能和自主行动。
推荐阅读:Agent四大范式 | 综述:全面理解Agent工作原理
这些能力使得AI代理能够执行那些传统上需要大量人类干预和专业知识的复杂金融分析和操作。例如,用于交易的FinAgent和用于金融决策的FinMem等AI代理的最新应用,凸显了这些技术在执行复杂金融操作中的日益依赖。尽管取得了这些进展,但这些解决方案仍未解决一些关键挑战:
- • 如何提高AI代理驱动的金融分析平台的决策过程透明度,以建立用户信任?
- • AI代理如何有效适应全球股票市场的多语言和多元文化特点,以确保全面准确的市场分析?
- • 仅依赖单一的LLM架构,如GPT-4,进行复杂金融分析存在哪些限制?如何通过多样化模型架构来提升性能?
- • AI代理平台如何高效管理和路由大量金融数据,以确保及时准确的金融分析?
- 什么是FinRobot?
为了应对这些挑战,今天这篇论文的作者介绍了FinRobot:一个创新的开源AI代理平台,利用多源LLMs来执行多样化的金融任务。
FinRobot优化了从数据处理到策略实施的金融工作流程,扩大了对高级分析工具的使用,并提高了可扩展性和透明度。通过采用多样化的LLM架构,FinRobot能够根据全球市场的需求量身定制解决方案,确保精确适应和性能优化。平台的多源集成架构有助于为特定任务选择合适的LLMs,而其实时数据处理流水线确保了及时的金融分析:
- • FinRobot提供了一个全面的框架,用于开发能够执行从市场预测到金融文档分析等一系列任务的金融AI Agent。值得注意的是,FinRobot是首个专门用于金融分析的AI Agent平台,这标志着AI在金融应用中的重大进步。
- • FinRobot引入了一种新颖的Smart Scheduler机制,允许无缝集成多源LLMs,使平台能够利用各种最先进的LLMs的优势,并为特定的金融任务选择最合适的。这种适应性对于处理全球金融市场的复杂性和多语言数据至关重要。
- • 通过采用开源方法,FinRobot促进了金融AI社区的更广泛合作,并加速了创新。这种开放性不仅促进了透明度,还允许持续的增强和适应,这在快速发展的金融领域至关重要。
- FinRobot架构
如上图,FinRobot的整体架构被划分为四个独特的层次,每层都针对金融AI处理和应用的不同方面进行了专门设计:
- • 金融AI Agent层:这一层引入了金融思维链(CoT)提示,大幅提升了对复杂分析和决策的能力。市场预测代理、文档分析代理和交易策略代理通过CoT将金融难题细化为逻辑步骤,将它们的高级算法和专业知识与金融市场的不断演变同步,以获取精准且可行的洞察。
- • 金融LLMs算法层:这一层配置并运用了针对特定领域和全球市场分析特别定制的模型。它采用了FinGPT以及多源LLMs,如针对美国市场的Llama系列和针对中国市场的ChatGLM,每个模型都针对各自区域的特性进行了优化。Falcon模型在金融关系分析方面表现出色。同时,多模态模型结合了文本与蜡烛图,而FinRL优化了投资组合分配等任务,传统机器学习方法则进一步完善了股票选择。这一策略确保了在市场预测和金融文档分析等关键操作上的高精确度。
- • LLMOps和DataOps层:LLMOps层执行了一个多源集成策略,为特定金融任务挑选最合适的LLMs,运用了一系列尖端模型。系统首先部署通用LLMs,若性能未达最佳,便动态切换至微调后的LLMs以提升效能。这种适应性方法为多样化的金融场景提供了定制化解决方案,增强了平台的整体性能。与此同时,DataOps层负责管理实时数据处理,这对于市场的快速响应至关重要。这种双重层次的配置加强了FinRobot在动态市场条件下提供及时准确金融洞察的能力。
- • 多源LLM基础模型层:这个基础层支持各种通用和专业LLMs的即插即用功能,构成了平台的核心,确保所有模型保持最新、最优化,并与金融技术和数据标准的最新进展保持同步。
3.1 金融AI Agent层
在FinRobot中,Agent如上图所示,由专门定制的领域特定AI代理组成,它们通过高级数据感知、认知处理和动态行动执行来强化金融分析:
- • 感知模块:该模块捕捉并解析来自市场动态、新闻资讯和经济指标的多模态金融数据,为深入分析构建结构化信息。
- • 大脑模块:作为核心处理单元,该模块利用大型语言模型(LLMs)接收感知模块的数据,并通过金融思维链(CoT)流程,生成有序的指令集。
- • 行动模块:模块根据大脑模块的指令执行操作,运用工具将分析洞见转化为实际成果。行动可能包括交易执行、投资组合调整、报告生成或警报发送,积极塑造金融环境。
3.1.1 多代理工作流程
多代理工作流程系统使得具有不同角色和职责的多个代理能够协同解决复杂任务。在处理复杂的金融数据集并确保高标准的分析准确性和深度方面,部署多代理工作流程系统尤为有益。该系统整合了多种专门角色,协同工作,从多样的金融数据源中处理、分析并提炼出可操作的洞见。
- • 导演角色:作为项目的战略领导者,导演负责监督工作流程的各个方面。这包括确定金融任务的优先级、资源分配,以及协调团队工作,以优化分析的时间表和成果。
- • 助理角色:助理在金融分析中专注于初步的数据管理工作,如数据收集、处理和初步分析,并促进代理间的沟通。这个角色通过准备数据集、维护数据库和执行基础的金融计算与可视化,支持更专业的分析师,使他们能够专注于金融分析中更复杂和解释性的方面。
- • LLM分析师角色:LLM分析师运用先进的计算技术,利用LLMs分析财务文本,如报告、备案文件和新闻文章。这一角色对于从定性数据中提取深入见解、进行情感分析和预测市场趋势至关重要。通过将这些见解与定量数据相结合,LLM分析师为财务健康状况和市场条件提供了全面评估,从而增强了决策过程。
- • 金融分析师角色:在LLM分析师的指导下,金融分析师深入进行各个领域的定量数据分析,包括投资组合管理、风险评估和市场分析。他们运用统计工具和金融模型来解读数据、评估投资机会,并制定风险缓解策略。他们的专业分析对于制定健全的金融策略和提供明智的建议至关重要。
这些角色在多代理工作流程中的协作,实现了对金融的全面分析,涉及宏观经济状况和具体的金融指标。这种结构化且灵活的方法确保了对金融数据的深入探索和解释,从而引导出明智的战略决策。
3.1.2 运用LLMs实现工具应用
自然语言转API调用
将自然语言查询转化为API请求,巧妙融合了生成函数调用与构建API请求的功能。在此技术路径中,LLM首先分析文本,识别并抓取关键参数。随后,这些参数被用于动态创建函数调用或直接转化为与金融软件或数据库交互的API请求。这一方法在执行既定操作,以及从外部服务获取或处理财务数据时尤为有效。
自然语言生成代码
面对需要即时生成解决方案的复杂财务任务,LLMs能够运用文本到代码的技术,即时编写并编译代码。这一能力在基于用户查询所反映的独特市场状况或财务场景,开发定制化算法时显得至关重要。
3.2 金融LLMs算法层
本层集合了专为金融领域量身定制的高级AI算法,旨在拓宽平台在各类金融应用中的功能性。
3.2.1 金融大型语言模型(FinGPT)
FinGPT,是一款专为金融领域设计的LLM(PS:这个模型也是由本篇论文作者研发的模型 https://github.com/AI4Finance-Foundation/FinGPT)。经过精心打造,旨在提升金融语境下的自然语言理解能力。这些模型能够精准分析和解读金融叙述,从诸如年度报告和实时金融新闻等复杂文档中抽取关键信息,辅助决策过程更为高效。
FinGPT模型的开发主要采用监督式微调方法,利用金融领域特有的“指令-响应”配对数据,对开源的大型语言模型进行精细调整。这一过程通过最小化负对数似然函数来完成,确保模型在金融领域的应用更为精准和高效。
3.2.2 金融强化学习(FinRL)
FinRL,采用集成深度强化学习算法来优化交易策略,它通过分析历史和实时市场数据来实现(PS:这个模型也是由本篇论文作者研发的模型:https://github.com/AI4Finance-Foundation/FinRL)。这种动态调整策略有助于在最大化财务收益的同时最小化风险,这使得股票投资组合的配置成为应用此方法的理想场景。
在FinRL框架内,股票投资组合的配置被视为一个马尔可夫决策过程(MDP)。在任意时间点τ,处于状态s(属于状态空间𝒮)的智能体根据策略π(s)选择一个动作a(属于动作空间𝒜)。这一动作将导致智能体进入新的状态s'和获得相应的奖励r(s, a, s')。核心目标在于优化这一策略,以实现长期的最大化回报。
3.2.3 金融机器学习(FinML)
FinML,融合了从回归分析到复杂的神经网络等多样化的机器学习技术,旨在提升金融领域的预测分析能力(https://github.com/AI4Finance-Foundation/FinML)。这些算法对于预测市场趋势、消费者行为、信用风险以及其他关键金融指标至关重要,帮助实现更加明智的决策制定。
3.2.4 金融领域多模态大型语言模型(Fin-MLLMs)
金融文档往往融合了文本之外的多种数据类型,比如图表。这些额外的数据形式带来了丰富而互补的信息,极大提升了分析的深度。为了有效地整合并运用这些多样化的数据,我们研发了金融领域多模态大型语言模型(Fin-MLLMs),这一模型专为处理和综合多元模态信息而设计,能够提供对金融文档全面而深入的理解。
3.3 模型运维层(LLMOps)
LLMOps层以其高度模块化和可插拔性设计,能够迅速集成并根据技术发展与金融市场需求动态更换LLMs。不仅实现了模型的无缝整合,还配备了严格评估和筛选特定金融任务最优模型的机制,这对维持运营效率和确保方案适应多变金融场景至关重要。
3.3.1 智能调度器
智能调度器确保模型多样性和优化各任务最合适LLM集成与选择的核心。
3.3.2 智能调度器架构
智能调度器优化了代理间的任务分配,包括以下组成部分:
- • 导演Agent:负责协调任务分配,确保任务根据代理的性能指标和任务适用性进行合理分配。
- • Agent注册:管理代理注册信息,跟踪系统内代理的可用性,以促进高效任务分配。
- • Agent适配器:针对特定任务定制代理功能,提升其性能和系统整体的融合度。
- • 任务管理器:负责管理和存储为各类金融任务量身定制的通用及微调后的LLMs代理,定期更新以保持其相关性和有效性。
3.3.3 智能调度器初始化流程
- • 金数据集创建:填充行业特定数据。
- • 提示库填充:为不同代理填充定制化提示。
- • 任务评分填充:利用适配器评估响应与最佳答案,将评分存储于任务评分数据库。
3.3.4 智能调度器实际操作流程
操作阶段遵循以下顺序:
- • 任务启动:用户发起任务。
- • 导演Agent角色:评估任务输入,根据性能和相关性对代理进行排名。
- • Agent选择与任务路由:将任务分配给排名最高的代理。
- • 工作流进展与自我评估:任务完成后,代理进行自我评估,评估结果存储于未来反思存储区。
- • 工作流完成与评估:工作流结束时,代理评估结果并提供反馈,以实现持续改进。
3.3.5 评分指标
智能调度器内的评分流程包含多个关键步骤,用以评估不同LLMs在特定任务应用中的性能:
- • 数据收集:收集多个评估任务中各种LLMs的性能数据。
- • 标准化:将各项评估任务结果标准化,范围设为0到1。
- • 权重分配:根据行业标准或专家意见,为不同评估维度分配权重。
- • 综合评分计算:将标准化评分乘以相应权重并求和,得出任务评分。
- • 结果分析:分析评分以排名和评估LLMs,提供性能对比和选择建议。
这一增强型架构不仅提升了金融AI代理的运营效率,还支持了多样化金融任务的可扩展、动态管理,显著增强了系统在实时金融环境中处理复杂多代理场景的能力。
3.4 数据运维层(DataOps)
数据运维层负责管理金融分析所需的庞大和多元数据集,涵盖从公共表格数据到专属市场情绪分析。确保流入AI处理流程的数据不仅质量上乘,而且能够反映市场的最新动态。高效的数据管理是AI模型发挥准确可靠性能的基石,因此数据运维层采用了尖端的数据处理技术来准备和提供这些数据输入。通过提升数据的可达性和质量,数据运维层增强了FinRobot平台的整体效能,使得基于坚实数据洞察的复杂和精确的金融决策成为现实。
3.4.1 检索增强型生成技术
检索增强型生成(RAG)是FinGPT中的一项核心技巧,它完美融合了上下文检索机制与大型语言模型的优势,以提升语言生成任务的效率。
LLMOps和数据运维层共同构成了FinRobot运作能力的基础,确保平台始终站在技术创新的潮头,同时提供稳定而高效的金融AI服务。
3.5 多源大型语言模型基础层
多源大型语言模型基础层用来管理和融合多个来源的大型语言模型(LLMs),这对于适应全球金融市场的不断变化至关重要。该层的主要特点包括:
- • 即插即用功能:实现各类通用及专业LLMs的无缝整合与更新,保证平台的灵活性,并与金融技术的最新发展保持同步。
- • 模型多样性与评估:集成了参数规模从7亿到72亿不等的LLMs,每一种都经过严格的效果评估,以确定其在特定金融任务中的性能,从而能够基于诸如准确性和适应性等性能指标进行最优的模型选择。
- • 全球市场适应性:支持多语言模型的整合,增强了平台处理和分析多样化金融数据的能力,这对于全球市场的运作至关重要。
4 金融思维链提示工程
"思维链"由Wei和Xia团队分别在2022年和2024年提出,通过构建提示来引导人工智能模型进行逐步推理,模拟人类的解题策略。这种方法通过鼓励模型明确表达推理的中间步骤,显著提升了解决数学和常识推理等复杂问题的能力,同时提高了结果的准确性和决策过程的透明度。
4.1 概念与实施
金融领域的"思维链"提示技术,将CoT方法应用于AI驱动的金融分析中,融合了高级的认知处理技术,以提升决策质量。通过逻辑且有序的推理引导,激发金融专家的思维,以解决复杂的金融问题。这种方法将复杂的金融场景细化为易于管理的小部分,逐一分析并综合信息,形成结论或建议。在需要深度分析的任务中,如估值、制定投资策略、分析市场趋势和评估风险时,这种方法尤为宝贵。
4.2 金融思维链提示的优势
尽管各有千秋,但目前市场上尚缺乏一种能够智能执行特定行业和公司分析的工具,这种工具能够与投资专家的工作相媲美。
例如,彭博、FactSet、CapitalIQ和Refinitiv Eikon等现有数据服务提供商,通常依赖于基础且通用的数据提取模板,这往往会忽略与企业核心紧密相连的关键运营指标和定性信息。手动分析不仅耗时,有时还重复性高,而现有的自动化工具往往无法从年度报告等非结构化资源中提取原始数据。尽管这些平台信息量巨大,但关键信息的提取和深入分析仍需依赖投资专家的专业知识。
FinRobot通过引入CoT提示,在AI代理平台中独树一帜,模仿人类在金融分析中的认知过程,超越了仅依赖数字计算的传统模式。运用LLMs来解构并分析金融专家在审视企业数据时所采用的方法。
有效的分析本质上依赖于对公司业务基础的全面理解,这反映在详尽的会计数据、定制化的行业特定指标和定性信息中。
此方法之所以能克服前述限制,是因为它:
-(1)不依赖于固定模板,得益于LLMs的创造性;-(2)通过提示的层次结构内嵌错误检查,避免了误分类;-(3)通过将投资逻辑编码于推理过程中,简化了人力劳动;-(4)能够从收益电话记录等复杂非结构化数据格式中提取相关的历史数字和定性信息;-(5)由于其多层结构,为每个记录和派生值的来源和推导提供了更有力的解释基础;-(6)具有高度的适应性和发展性,因为LLMs可以通过监督微调和指令调整不断进步。
4.3 金融思维链提示的实践应用
金融思维链提示在证券分析界引发了一场革命,彻底革新了跨领域的传统分析工具:
- • 财务分析:FinRobot不止步于数据罗列和比率计算,它深入探究三份公开财务报表间的内在联系,洞察历史财务数据的长期趋势,并与行业竞争对手进行深度比较。这种全方位的分析手法,对于深刻理解公司的商业版图及其财务指标的深层含义和逻辑基础至关重要。
- • 业务定制分析:FinRobot采用自下而上的解析方法,对公开信息进行细致解读,解构公司多条产品线,分析不同渠道和区域的趋势,审视成本结构,评估供应链的动态变化,并衡量研发投入的转化效果。它还系统性地剖析公司的商业模式,包括轻资产、重资产、订阅服务、特许经营、剃须刀与刀片模式、网络效应等多种变体。这种精细的分析赋予FinRobot深入理解公司运营细节的能力,助力明智的决策和战略规划。
- • 行业深度分析:FinRobot运用多层逻辑推理,超越单一公司的数据集,揭示行业指标中的微妙趋势和根本驱动力。这种自上而下的行业分析方法,不仅加深了对行业动态和竞争格局的理解,还预测了这些趋势如何塑造公司的基本面。这使得投资者和股东能够预见市场动向,做出具有前瞻性的战略决策。
- • 投资策略构建:在全面理解财务报表、商业模式和行业趋势的基础上,FinRobot对公司的未来盈利性、现金流预测和资本结构进行全面评估。进一步地,FinRobot提供细致的投资评估,覆盖不同的投资视野、结构、回报标准和风险阈值。此外,它还就最佳投资时机和策略提供战略指导,涵盖普通股、高收益债券、夹层融资、可转换债券、衍生品等多样的金融工具,并明确风险-回报优化的边界。
5 Demo演示和实操
FinRobot代码全部开源,安装步骤:
1. 推荐使用Conda来创建虚拟环境
conda create --name finrobot python=3.10conda activate finrobot
2. 在命令行下载FinRobot代码仓库
git clone https://github.com/AI4Finance-Foundation/FinRobot.gitcd FinRobot
3. 从pypi源安装依赖
get our latest release from pypi
pip install -U finrobot
or install from this repo directly
pip install -e .
4. 修改 OAI_CONFIG_LIST_sample 配置文件
1) rename OAI_CONFIG_LIST_sample to OAI_CONFIG_LIST
2) remove the four lines of comment within the OAI_CONFIG_LIST file3) add your own openai api-key <your OpenAI API key here>
5. 修改 config_api_keys_sample 文件
1) rename config_api_keys_sample to config_api_keys
2) remove the comment within the config_api_keys file
3) add your own finnhub-api "YOUR_FINNHUB_API_KEY"4) add your own financialmodelingprep and sec-api keys "YOUR_FMP_API_KEY" and "YOUR_SEC_API_KEY" (for financial report generation)
6. 运行demo:
# find these notebooks in tutorials
1) agent_annual_report.ipynb
2) agent_fingpt_forecaster.ipynb
3) agent_trade_strategist.ipynb
4) lmm_agent_mplfinance.ipynb5) lmm_agent_opt_smacross.ipynb
5.1 场景一:市场预测
市场预测是由人工智能代理组成的一套系统,专门设计用来整合最新的市场资讯和财务数据,为公司的最新成就和可能的风险提供深入的分析,并对未来的股价走势做出预测。作为入门级的智能理财顾问,市场预测标志着人工智能在金融咨询领域的一次重大飞跃。
PS:github上有本demo的代码 https://github.com/AI4Finance-Foundation/FinRobot#1-market-forecaster-agent-predict-stock-movements-direction
5.1.1 数据源
汇聚多元数据资源,为决策提供信息支持。具体来说,搜集包括最新动态、基础财务数据和股价在内的公司多维度信息,覆盖美国、中国股市以及加密货币市场等。数据来源包括Finnhub和东方财富。
5.1.2 模型架构
依托于经过精细调整的FinGPT模型,结合Llama-2-7b-chat-hf与LoRA技术,利用美国道琼斯工业平均指数和中国上证50指数的最新年度数据,确保对这些重要股票的精准预测,并展现出在不同股票标识上的卓越泛化能力。文章还遵循金融多任务指令调优范式,以确保基础模型的强大功能与市场预言家的特定需求相匹配。
5.1.3 提示设计
与多任务指令调优框架相一致,市场预言家采用一套复杂的提示格式。首先搜集公司的多维度信息,然后通过提示工程,构建出结构化的指令性提示,格式为“任务指令+公司信息:公司概况+最近股价+最新新闻+最新基础财务数据”。下图展示了该Agent的一个提示词模板。
5.1.4 样本预测
为美国和中国市场的两大标志性股票——苹果(AAPL)和贵州茅台,提供的样本预测分别在下图中展示,这些示例彰显了市场预言家在综合多元信息源并提炼出宝贵洞察力方面的高超技艺。此外,市场预言家还就股票的未来走向提供建议,凸显了其基于分析数据提供实用指导的能力。
5.2 场景二:文档解析与内容创作
文档解析与内容创作应用在财务文档管理和报告撰写领域,展示了人工智能代理和大型语言模型(LLMs)的革命性应用。该应用借助AI的强大分析能力,对财务文档进行深度解析,并自动化产出深入、有见地的报告。
5.2.1文档解析
结合了高级LLMs的AI代理被用来深入挖掘如年报、SEC备案文件和收益电话会议记录等财务文档。这些代理能够精准提取核心信息,识别关键财务指标,并揭示需要进一步审查的趋势与异常。AI代理对复杂财务术语和上下文的理解能力,将海量非结构化数据转化为有序、可行的洞察。
5.2.2内容创作
分析阶段之后,同一代理被用于生成全面的财务报告。系统借助LLMs的强大功能,制作出连贯、清晰、详尽的文档,全面覆盖财务分析的多个维度,包括业绩评估、市场对比和前瞻性财务预测。每份报告均精心打造,保持专业的风格和格式,达到顶尖金融分析师的水准。
下面的图片是FinRobot创作的研究报告(PS:卖方分析师要失业了)
6 未来规划
展望未来,随着FinRobot的持续演进,作者计划将其应用拓展至更精细的领域,例如投资组合配置和全面风险评估,以增强其在金融行业的实用价值。同时,致力于拓展平台的全球影响力,将其能力延伸至更多市场。这一扩展将不仅丰富FinRobot的应用场景,还将增强其适应多变经济环境的灵活性,推动全球AI驱动的财务分析在创新与普及上迈出更大步伐。
-
• 论文原文: https://arxiv.org/abs/2405.14767
-
• 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!
-
• 加入社群,+v: iamxxn886
推荐阅读: