FinRobot
用多智能体与确定性计算自动完成股票研究、估值和报告。
证据说明系统需要 OpenAI、FMP、Finnhub、SEC API 和可选 Adanos 密钥,并会访问市场、申报、新闻及社交情绪服务;配置示例使用独立密钥文件,测试也验证 API 密钥通过请求头传递。README 描述了数据提供方、故障切换、数字来源追踪、报告证据链接,并明确警告不可将结果视为投资建议。扣分原因是没有展示密钥加密、日志脱敏、访问范围限制、保留期限或密钥轮换;没有针对交易、投资组合调整、发送提醒等高影响动作的逐次用户确认机制;也未完整列出每个外部服务发送和接收的数据。依赖大量未固定版本的软件包,且没有锁文件、漏洞扫描、更新策略或供应链校验。部署脚本提供 stop/restart,属于有限恢复路径,但没有事务回滚、输出撤销或外部动作补偿。项目、论文作者和数据来源标注较清楚,因此来源归属得分较高;发布者身份未知本身未被视为风险。
测试材料覆盖模块导入、估值、敏感性、新闻、图表、报告结构以及上游情绪源部分失败时的降级,并提供可读的成功、跳过和异常消息;因此失败消息处理较充分。扣分原因是部分所谓测试只是打印结果或检查方法是否存在,缺少强断言,且没有给出任何实际执行结果。依赖可从常见包仓库和多个外部 API 获取,但 requirements.txt 同时包含重复依赖、宽松约束和固定旧版本,未提供锁文件或离线方案。README 还同时出现 Python 3.6 徽章、Python 3.8 文案和 Python 3.10 安装要求,并混合传统框架、Pro、Web 和 Desktop 架构叙述,降低了自洽性。
README 明确覆盖投资研究、估值、风险分析、报告生成、交易策略、初学者教程、高级开发者教程、Web、CLI 和 Apple Silicon Desktop,受众与场景说明很强。它也区分代码计算的数字与 LLM 叙述,列出数据提供方、代理角色、管线和桌面平台限制,并含非投资建议边界。扣分原因是自动工具调用的触发条件、冲突处理、用户批准点和不同代理之间的路由规则主要是概念性描述,没有精确的操作契约。环境适配提供 Conda、pip、源码、Web、CLI 和 macOS 指引,但 Desktop 仅支持 Apple Silicon、未公证,且 Python 版本信息矛盾。
README 提供分层架构、代理工作流、目录树、安装步骤、配置方式、CLI 示例、教程、示例报告、论文引用、免责声明和 Desktop 版本说明;完整 Apache-2.0 文本也与许可证元数据一致,因此许可证满分。扣分原因是单一 README 混合 FinRobot 核心框架、FinRobot Pro、equity 子系统和 Desktop,产品边界及命名不够稳定;徽章和 Python 要求互相冲突。已说明 Apple Silicon、未公证以及金融建议限制,但缺少系统性的已知问题清单或 FAQ。只看到 Desktop v0.1.0 发布段落,没有完整 changelog、迁移说明或统一的仓库版本策略。维护入口可由组织仓库、Issue/PR 徽章和 Discord 推断,但没有明确维护者名单、支持承诺或安全报告渠道。
材料展示了可直接使用的多章节 HTML/PDF 研究报告、图表、估值、风险、来源标注、CLI 和 Web 工作流;测试夹具还展示了报告所需字段和情绪数据的实际呈现形式,因此输出可用性证据充分。多代理编排、确定性估值和一体化报告相对单纯 LLM 文本生成具有可辨识的增量价值。扣分原因是较强的效果宣称主要来自 README,未提供基准、用户研究或质量比较;运行依赖多个付费或限额 API、LLM 调用和复杂依赖栈,却没有费用估算、延迟、资源需求或规模化权衡。
README 把计算数字、LLM 叙述和来源追踪明确区分,给出论文引用、示例报告、数据提供方和具体架构数量;测试代码也交叉支持报告结构、来源注释、估值模块、图表以及情绪源降级等部分能力。扣分原因是所给材料没有包含核心实现文件,因而无法静态核对约 184k 行、9 个代理、7 条管线、30 个计算算子、自动故障切换及所有输出均带来源等宣传数字。测试中的大量金融内容是明确标识的模拟数据,这有助于事实与示例分离,但营销性表述和实现事实仍有混合,且没有独立来源或执行结果进行进一步佐证。
- 在投入真实资金或连接券商前,应确认交易、投资组合调整和提醒功能默认关闭,并为每个高影响动作增加明确批准、限额、审计日志和可恢复机制。
- API 密钥以配置文件形式录入;应核实文件是否被版本控制排除,并补充密钥最小权限、轮换、静态加密和日志脱敏措施。
- requirements.txt 含大量未固定及重复依赖且没有锁文件或安全扫描证据;部署前应生成可复现锁定清单并进行漏洞与许可证审查。
- 不要把测试脚本打印的 PASSED 或 README 的架构数量视为已验证结果;本评估未执行代码,且所给证据未包含多数核心实现。
- README 的 Python 版本和多个产品形态存在冲突;安装前应确认目标子系统、受支持版本、外部 API 费用及平台要求。
- 报告可能包含 LLM 生成的投资叙述和第三方数据;即使数字声称由代码计算,也应独立核验输入、假设、时间戳和来源。
这个 Agent 能做什么,适合哪些场景?
FinRobot 是面向金融应用的开源 AI 智能体平台,覆盖投资研究自动化、量化分析、估值、风险评估和交易策略。其桌面研究系统由 Lead Agent 调度数据、分析、建模、综合和报告智能体,并通过 Bull、Bear 与 Judge 智能体展开投资观点辩论。DCF、DDM、LBO、WACC、可比公司分析和蒙特卡洛模拟由纯 Python 运算器计算,语言模型主要负责推理、综合、解释和撰写报告。系统可以读取市场数据、公司财务报表、SEC 文件和新闻,并生成带证据链接、数值来源和章节结构的股票研究成果。交付方式包括 Python 包与教程、命令行研究管线、自托管 Web 界面,以及仅支持 Apple Silicon Mac 的 FinRobot Desktop v0.1.0。
完整流程从数据获取开始:通过 FMP、Finnhub、yfinance、SEC EDGAR、Adanos、NewsAggregator 和 FX 等提供方读取市场数据、财务报表、监管文件、新闻及情绪信息。Lead Agent 将任务路由至 Data Agent、Analysis Agent、Modeling Agent、Synthesis Agent 和 Report Agent,随后由 Bull Agent、Bear Agent 与 Judge Agent形成并评判多空观点。30 个纯 Python 运算器和 7 个协调器执行 DCF、DDM、LBO、WACC、可比公司估值及蒙特卡洛分析,避免由语言模型直接生成财务数字。旧版库结构还提供 finrobot.agents、data_source、functional、toolkits.py 和 utils.py,以及年报分析、FinGPT 预测、交易策略和 mplfinance 等教程。FinRobot Pro 管线通过 generate_financial_analysis.py 获取并预测财务数据,再由 create_equity_report.py 生成包含多种图表的 HTML/PDF 股票研究报告;Web 应用由 run_web_app.py 启动并监听 http://127.0.0.1:8001。
- 股票分析师需要从市场数据、SEC 文件和公司财务报表出发,形成可追溯的多章节研究报告。
- 估值团队需要使用代码计算 DCF、DDM、LBO、WACC、可比公司分析或蒙特卡洛结果,同时让语言模型解释结论。
- 投资委员会需要把多头、空头和裁判式论证整合为 IC memo,并保留证据链接与数字来源。
- 研究人员或开发者希望通过 beginner/advanced notebooks 试验年报分析、FinGPT 预测、交易策略或多模态金融图表工作流。
- Apple Silicon Mac 用户希望在原生桌面界面中完成数据获取、估值、观点辩论和报告生成。
- 需要本地部署的团队希望通过 FastAPI Web 界面或命令行批量生成股票分析与 HTML/PDF 报告。
这个 Agent 有哪些优点和局限?
- 明确分离确定性财务计算与语言模型叙述:估值数字由纯 Python 运算器生成,并记录来源。
- 角色化多智能体架构覆盖数据、分析、建模、综合、报告及多空辩论,不只提供单一聊天界面。
- 数据层列出 7 个带故障切换的提供方,并覆盖市场数据、SEC EDGAR、新闻、情绪和外汇。
- 同时提供 Python 包、notebook、CLI、自托管 Web 应用和 Apple Silicon 桌面应用,可匹配不同研究流程。
- 报告输出包含章节化研究、IC memo、证据链接、数值来源以及 HTML/PDF 图表。
- 首次配置涉及 OpenAI、Finnhub、FMP 和 SEC 等多组凭证;数据服务与模型调用可能各自产生成本或访问限制。
- FinRobot Desktop v0.1.0 仅支持 Apple Silicon Mac,没有 Intel Mac 构建,且尚未经过 Apple 公证。
- Web/CLI 部署需要本地 Python 环境、依赖安装、文件系统和网络访问,运维负担高于托管式研究产品。
- README 同时描述通用 FinRobot、FinRobot Pro、finrobot_equity 和新桌面架构,采用者需要先确定要部署的代码路径。
- 项目明确声明其代码和文档不构成财务建议,也不应直接视为实盘交易推荐。
如何安装或部署这个 Agent?
通用 Python 版本:
conda create --name finrobot python=3.10
conda activate finrobot
git clone https://github.com/AI4Finance-Foundation/FinRobot.git
cd FinRobotpip install -e .
也可安装 PyPI 版本:
pip install -U finrobot将 OAI_CONFIG_LIST_sample 重命名为 OAI_CONFIG_LIST,删除其中四行注释并填入 OpenAI API key。将 config_api_keys_sample 重命名为 config_api_keys,删除注释并配置 Finnhub key;生成财务报告还需 FMP 和 SEC API keys。
FinRobot Pro Web 版本:
cp finrobot_equity/core/config/config.ini.example finrobot_equity/core/config/config.ini在 config.ini 的 [API_KEYS] 中设置 fmp_api_key 和 openai_api_key;adanos_api_key 可选。然后运行:
chmod +x deploy.sh
./deploy.sh start若脚本不可用,可运行:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-equity.txt
python run_web_app.py桌面版 v0.1.0 仅提供 Apple Silicon macOS 构建。下载 FinRobot_0.1.0_aarch64.dmg 并拖入 Applications;由于尚未 Apple 公证,首次启动如被报告为“损坏”,运行:
xattr -cr /Applications/FinRobot.app如何使用这个 Agent?
Web 部署后访问 http://127.0.0.1:8001。部署脚本支持 ./deploy.sh start、stop、restart 和 status。
命令行示例先执行财务分析:
python finrobot_equity/core/src/generate_financial_analysis.py --company-ticker NVDA --company-name "NVIDIA Corporation" --config-file finrobot_equity/core/config/config.ini --peer-tickers AMD INTC --generate-text-sections再生成报告:
python finrobot_equity/core/src/create_equity_report.py --company-ticker NVDA --company-name "NVIDIA Corporation" --analysis-csv output/NVDA/analysis/financial_metrics_and_forecasts.csv --ratios-csv output/NVDA/analysis/ratios_raw_data.csv --config-file finrobot_equity/core/config/config.ini通用库用户可以从 tutorials_beginner 和 tutorials_advanced 中的 agent_annual_report.ipynb、agent_fingpt_forecaster.ipynb、agent_trade_strategist.ipynb、lmm_agent_mplfinance.ipynb 或 lmm_agent_opt_smacross.ipynb 开始。
这个 Agent 与同类方案有什么区别?
相较于 FinGPT 的单模型路径,FinRobot 定位为整合语言模型、强化学习和量化分析的多技术、多智能体平台。其重点是由专门角色协作完成研究,并把代码计算的估值与语言模型生成的叙述分离。