综合介绍
FinRobot是由AI4Finance Foundation开发的开源AI智能平台,专为金融分析设计。它不仅涵盖了传统的语言模型,还融入了多种AI技术,旨在为金融行业提供全面的解决方案。FinRobot的设计初衷是通过先进的人工智能技术,简化并优化金融分析流程,提升分析精度和效率。其核心功能包括市场趋势解读、经济预测和投资策略提供等,适用于各类金融机构和个人投资者。
功能列表
- 市场趋势分析:实时监控和分析市场动态,提供趋势预测和投资建议。
- 经济预测:利用大数据和AI算法,对宏观经济指标进行预测。
- 投资策略提供:基于历史数据和市场分析,生成个性化的投资策略。
- 多模态数据处理:整合市场数据、新闻和经济指标,进行多维度分析。
- 开源代码库:提供丰富的开源代码库,支持二次开发和功能扩展。
FinRobot 的架构设计
1. FinRobot 生态系统
FinRobot 采用四层架构,每一层针对金融 AI 任务进行了优化。
- 金融 AI 代理层:包含市场预测代理、文档分析代理、交易策略代理等,支持金融链式思维(CoT)提示。
- 金融 LLM 算法层:支持金融领域特定的 LLM 调优,提升金融分析的专业性。
- LLMOps & DataOps 层:提供多源数据整合,并支持多种 LLM 模型的动态适配。
- 多源 LLM 基础模型层:支持 Plug-and-Play 式的 LLM 模型调用,灵活适配不同任务。
2. AI 代理工作流程
FinRobot 代理的工作流程包含三个核心部分:
- 感知(Perception):获取市场数据、新闻、经济指标,进行多模态解析。
- 思考(Brain):使用 LLM 结合金融链式思维方法,生成交易决策。
- 行动(Action):执行交易、调整投资组合、生成报告或发送预警。
3. 智能调度系统
FinRobot 采用 Smart Scheduler 调度系统,确保任务能够分配给最合适的 AI 代理。
- Director Agent:根据任务特性分配代理。
- Agent Registration:管理代理注册,跟踪其状态。
- Agent Adaptor:调整代理功能,提高任务适配性。
- Task Manager:存储和管理 AI 代理的任务执行情况。
使用帮助
安装步骤
(1)创建 Python 环境
conda create --name finrobot python=3.10 conda activate finrobot
(2)克隆代码库
git clone https://github.com/AI4Finance-Foundation/FinRobot.git cd FinRobot
(3)安装依赖
pip install -U finrobot # 或者从源码安装 pip install -e .
(4)配置 API Key
# 修改 OAI_CONFIG_LIST_sample 文件 mv OAI_CONFIG_LIST_sample OAI_CONFIG_LIST vi OAI_CONFIG_LIST # 添加 OpenAI API Key # 修改 config_api_keys_sample 文件 mv config_api_keys_sample config_api_keys vi config_api_keys # 添加 Finnhub、SEC-API、FinancialModelingPrep API Key
2. 示例应用
(1)市场预测代理:预测股票价格变动
import autogen from finrobot.utils import get_current_date, register_keys_from_json from finrobot.agents.workflow import SingleAssistant # 读取 OpenAI API 配置 llm_config = { "config_list": autogen.config_list_from_json("../OAI_CONFIG_LIST"), "timeout": 120, "temperature": 0, } # 注册 API 密钥 register_keys_from_json("../config_api_keys") # 运行预测 company = "NVDA" assistant = SingleAssistant("Market_Analyst", llm_config, human_input_mode="NEVER") assistant.chat(f"分析 {company} 近期市场动态,并预测未来一周股价走势。")
结果
(2)金融分析代理:自动生成财务报告
import os import autogen from finrobot.utils import register_keys_from_json from finrobot.agents.workflow import SingleAssistantShadow # 配置 LLM 参数 llm_config = { "config_list": autogen.config_list_from_json("../OAI_CONFIG_LIST"), "timeout": 120, "temperature": 0.5, } # 注册 API 密钥 register_keys_from_json("../config_api_keys") # 创建工作目录 work_dir = os.path.join("..", "report") os.makedirs(work_dir, exist_ok=True) # 初始化智能助手 assistant = SingleAssistantShadow("Expert_Investor", llm_config, human_input_mode="TERMINATE") # 设定公司和年份 company = "Microsoft" fyear = "2023" # 生成报告请求 message = f"请基于 {company} {fyear} 年的财务数据撰写年度分析报告,并导出 PDF。" # 运行助手并处理异常 try: assistant.chat(message, use_cache=True, max_turns=50, summary_method="last_msg") print(f"报告已成功生成并保存至 {work_dir}") except Exception as e: print(f"生成报告时出错: {e}")
结果
金融持仓分析(Financial CoT):
- 收集初步数据:10-K 报告、市场数据、财务比率
- 分析财务报表:资产负债表、利润表、现金流量表
- 公司概述与业绩:公司描述、业务亮点、分部分析
- 风险评估:评估风险
- 财务业绩可视化:绘制市盈率(PE ratio)和每股收益(EPS)图表
- 综合研究结果形成段落:将所有部分整合为连贯的总结
- 生成 PDF 报告:使用工具自动生成 PDF 文件
- 质量保证:检查字数