首页
/ FinRobot项目中的FinGPT-Forecaster智能预测代理实现教程

FinRobot项目中的FinGPT-Forecaster智能预测代理实现教程

2025-07-09 04:59:50作者:裴麒琰

概述

本文将介绍如何在FinRobot项目中实现一个基于FinGPT-Forecaster模型的智能预测代理。这个代理能够接收公司股票代码、近期财务数据和市场新闻作为输入,预测其股票走势。

技术背景

FinGPT-Forecaster是一个专门为金融预测设计的语言模型,它结合了传统金融分析方法和现代自然语言处理技术。在FinRobot项目中,我们通过AutoGen框架重新实现了这一功能,使其更加模块化和易于扩展。

环境准备

首先需要导入必要的库和工具:

import autogen
from autogen.cache import Cache
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.data_source import FinnHubUtils, YFinanceUtils

配置API密钥

项目需要配置两个关键API:

  1. OpenAI API:用于语言模型服务
  2. Finnhub API:用于获取金融数据
# 读取OpenAI配置
config_list = autogen.config_list_from_json(
    "../OAI_CONFIG_LIST",
    filter_dict={"model": ["gpt-4-0125-preview"]},
)
llm_config = {"config_list": config_list, "timeout": 120, "temperature": 0}

# 注册FINNHUB API密钥
register_keys_from_json("../config_api_keys")

创建代理

我们创建两个主要代理:

  1. 市场分析师(Market_Analyst):负责收集和分析金融信息
  2. 用户代理(User_Proxy):作为用户与分析师之间的接口
analyst = autogen.AssistantAgent(
    name="Market_Analyst",
    system_message="作为市场分析师,必须具备强大的分析和解决问题的能力...",
    llm_config=llm_config,
)

user_proxy = autogen.UserProxyAgent(
    name="User_Proxy",
    is_termination_msg=lambda x: x.get("content", "") and x.get("content", "").endswith("TERMINATE"),
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    code_execution_config={"work_dir": "coding", "use_docker": False},
)

注册工具函数

我们为代理注册了四个关键工具函数:

  1. 获取公司概况
  2. 获取公司相关新闻
  3. 获取基本财务数据
  4. 获取股票价格数据
from finrobot.toolkits import register_toolkits

tools = [
    {"function": FinnHubUtils.get_company_profile, "name": "get_company_profile", ...},
    {"function": FinnHubUtils.get_company_news, "name": "get_company_news", ...},
    {"function": FinnHubUtils.get_basic_financials, "name": "get_financial_basics", ...},
    {"function": YFinanceUtils.get_stock_data, "name": "get_stock_data", ...}
]
register_toolkits(tools, analyst, user_proxy)

执行预测分析

启动对话,让代理调用所有工具函数,并分析收集到的信息:

user_proxy.initiate_chat(
    analyst,
    message="使用所有提供的工具检索2024-04-11苹果公司的可用信息..."
)

分析流程

代理会按照以下步骤执行分析:

  1. 获取公司基本信息
  2. 收集近期相关新闻
  3. 获取基本财务数据
  4. 获取股票价格历史数据
  5. 综合分析所有信息
  6. 做出预测并给出理由

预测结果解读

预测结果通常包括:

  1. 正面发展因素(2-4个关键点)
  2. 潜在担忧因素(2-4个关键点)
  3. 下周股价变动预测(如上涨/下跌2-3%)
  4. 支持预测的总结分析

技术优势

这种实现方式具有以下优势:

  1. 模块化设计:每个功能都是独立的工具,易于维护和扩展
  2. 自动化流程:从数据收集到分析预测完全自动化
  3. 多数据源整合:结合了FinnHub和YFinance的数据
  4. 可解释性:分析过程透明,预测结果有据可依

应用场景

这种预测代理可以应用于:

  1. 个人投资决策支持
  2. 机构投资研究
  3. 金融教育工具
  4. 量化交易系统的信号生成

总结

通过FinRobot项目实现的FinGPT-Forecaster代理,我们展示了如何将大型语言模型与专业金融数据源相结合,构建一个强大的金融预测工具。这种方法不仅提高了预测的准确性,还增强了分析过程的可解释性,为金融分析提供了新的技术路径。