Skip to content

MarkLo127/FinRobot

 
 

Repository files navigation

image

FinRobot: 一個用於使用大型語言模型進行金融分析的開源 AI 代理平台

Downloads Downloads Python 3.8 PyPI License

FinRobot 是一個超越 FinGPT 範疇的 AI 代理平台,代表著一個專為金融應用精心設計的全面解決方案。它整合了多種 AI 技術,超越了單純的語言模型。這一廣闊的願景突顯了平台的多功能性和適應性,解決了金融行業的多方面需求。

AI 代理的概念:AI 代理是一個智能實體,使用大型語言模型作為其大腦來感知環境、做出決策並執行行動。與傳統人工智能不同,AI 代理具有獨立思考和利用工具逐步實現給定目標的能力。

FinRobot 白皮書

Visitors

FinRobot 生態系統

FinRobot 的整體框架分為四個不同的層次,每個層次都旨在解決金融 AI 處理和應用的特定方面:

  1. 金融 AI 代理層:金融 AI 代理層現在包括金融思維鏈(CoT)提示,增強了複雜分析和決策能力。市場預測代理、文檔分析代理和交易策略代理利用 CoT 將金融挑戰分解為邏輯步驟,將其先進算法和領域專業知識與金融市場的不斷變化的動態相結合,以獲得精確、可行的見解。
  2. 金融 LLMs 算法層:金融 LLMs 算法層配置並使用專門調整的模型,適用於特定領域和全球市場分析。
  3. LLMOps 和 DataOps 層:LLMOps 層實施多源集成策略,為特定金融任務選擇最合適的 LLMs,利用一系列最先進的模型。
  4. 多源 LLM 基礎模型層:這一基礎層支持各種通用和專業 LLMs 的即插即用功能。

FinRobot: 代理工作流程

  1. 感知:該模塊捕獲並解釋來自市場饋送、新聞和經濟指標的多模態金融數據,使用複雜的技術來構建數據以進行徹底分析。

  2. 大腦:作為核心處理單元,該模塊通過 LLMs 感知來自感知模塊的數據,並利用金融思維鏈(CoT)過程生成結構化指令。

  3. 行動:該模塊執行來自大腦模塊的指令,應用工具將分析見解轉化為可行的結果。行動包括交易、投資組合調整、生成報告或發送警報,從而積極影響金融環境。

FinRobot: 智能調度器

智能調度器是確保模型多樣性並優化最適合每個任務的 LLM 的集成和選擇的核心。

  • 導演代理:該組件協調任務分配過程,確保根據代理的性能指標和對特定任務的適合性將任務分配給代理。
  • 代理註冊:管理系統內代理的註冊並跟踪其可用性,促進高效的任務分配過程。
  • 代理適配器:根據特定任務定制代理功能,提高其性能和在整個系統中的集成。
  • 任務管理器:管理和存儲為各種金融任務量身定制的不同通用和微調 LLMs 基礎代理,定期更新以確保相關性和有效性。

文件結構

主文件夾 finrobot 有三個子文件夾 agents, data_source, functional

FinRobot
├── finrobot (主文件夾)
│   ├── agents
│   	├── agent_library.py
│   	└── workflow.py
│   ├── data_source
│   	├── finnhub_utils.py
│   	├── finnlp_utils.py
│   	├── fmp_utils.py
│   	├── sec_utils.py
│   	└── yfinance_utils.py
│   ├── functional
│   	├── analyzer.py
│   	├── charting.py
│   	├── coding.py
│   	├── quantitative.py
│   	├── reportlab.py
│   	└── text.py
│   ├── toolkits.py
│   └── utils.py
│
├── configs
├── experiments
├── tutorials_beginner (實踐教程)
│   ├── agent_fingpt_forecaster.ipynb
│   └── agent_annual_report.ipynb 
├── tutorials_advanced (適用於潛在 finrobot 開發者的高級教程)
│   ├── agent_trade_strategist.ipynb
│   ├── agent_fingpt_forecaster.ipynb
│   ├── agent_annual_report.ipynb 
│   ├── lmm_agent_mplfinance.ipynb
│   └── lmm_agent_opt_smacross.ipynb
├── setup.py
├── OAI_CONFIG_LIST_sample
├── config_api_keys_sample
├── requirements.txt
└── README.md

安裝:

1. (建議) 創建一個新的虛擬環境

conda create --name finrobot python=3.10
conda activate finrobot

2. 使用終端下載 FinRobot 存儲庫或手動下載

git clone --recurse-submodules https://github.com/MarkLo127/FinRobot.git
cd FinRobot

3. 安裝 finrobot 及其依賴項

uv pip install -e .

4. 修改 OAI_CONFIG_LIST_sample 文件

1) 將 OAI_CONFIG_LIST_sample 重命名為 OAI_CONFIG_LIST
2) 刪除 OAI_CONFIG_LIST 文件中的四行註釋
3) 添加您自己的 openai api-key <your OpenAI API key here>

5. 修改 config_api_keys_sample 文件

1) 將 config_api_keys_sample 重命名為 config_api_keys
2) 刪除 config_api_keys 文件中的註釋
3) 添加您自己的 finnhub-api "YOUR_FINNHUB_API_KEY"
4) 添加您自己的 financialmodelingprep 和 sec-api 密鑰 "YOUR_FMP_API_KEY""YOUR_SEC_API_KEY"(用於財務報告生成)

6. 開始瀏覽教程或下面的演示:

# 在教程中找到這些筆記本
1) agent_annual_report.ipynb
2) agent_fingpt_forecaster.ipynb
3) agent_trade_strategist.ipynb
4) lmm_agent_mplfinance.ipynb
5) lmm_agent_opt_smacross.ipynb

演示

1. 市場預測代理(預測股票走勢方向)

以公司的股票代碼、最近的基本財務和市場新聞作為輸入,預測其股票走勢。

  1. 導入
import autogen
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.agents.workflow import SingleAssistant
  1. 配置
# 從 JSON 文件讀取 OpenAI API 密鑰
llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={"model": ["gpt-4-0125-preview"]},
    ),
    "timeout": 120,
    "temperature": 0,
}

# 註冊 FINNHUB API 密鑰
register_keys_from_json("../config_api_keys")
  1. 運行
company = "NVDA"

assitant = SingleAssistant(
    "Market_Analyst",
    llm_config,
    # 如果您想聊天而不是簡單地接收預測,請設置為 "ALWAYS"
    human_input_mode="NEVER",
)
assitant.chat(
    f"使用提供的所有工具來檢索 {company}{get_current_date()} 可用的信息。分析 {company} 的積極發展和潛在問題,"
    "分別列出 2-4 個最重要的因素並保持簡潔。大多數因素應該從公司相關新聞中推斷出來。"
    f"然後對下週 {company} 股價走勢做出粗略預測(例如上漲/下跌 2-3%)。提供摘要分析以支持您的預測。"
)
  1. 結果

2. 財務分析師代理用於報告撰寫(股權研究報告)

以公司的 10-k 表格、財務數據和市場數據作為輸入,輸出股權研究報告

  1. 導入
import os
import autogen
from textwrap import dedent
from finrobot.utils import register_keys_from_json
from finrobot.agents.workflow import SingleAssistantShadow
  1. 配置
llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={
            "model": ["gpt-4-0125-preview"],
        },
    ),
    "timeout": 120,
    "temperature": 0.5,
}
register_keys_from_json("../config_api_keys")

# 中間策略模塊將保存在此目錄中
work_dir = "../report"
os.makedirs(work_dir, exist_ok=True)

assistant = SingleAssistantShadow(
    "Expert_Investor",
    llm_config,
    max_consecutive_auto_reply=None,
    human_input_mode="TERMINATE",
)
  1. 運行
company = "Microsoft"
fyear = "2023"

message = dedent(
    f"""
    使用您提供的工具,根據 {company}{fyear} 10-k 報告撰寫年度報告,並將其格式化為 pdf。
    請注意以下幾點:
    - 在開始之前明確解釋您的工作計劃。
    - 為了清晰起見,一個接一個地使用工具,特別是在請求指示時。
    - 所有文件操作都應在 "{work_dir}" 中完成。
    - 一旦生成圖像,就在聊天中顯示。
    - 所有段落應該結合 400 到 450 個單詞,在明確滿足這一點之前不要生成 pdf。
"""
)

assistant.chat(message, use_cache=True, max_turns=50,
               summary_method="last_msg")
  1. 結果

金融思維鏈

  1. 收集初步數據:10-K 報告、市場數據、財務比率
  2. 分析財務報表:資產負債表、損益表、現金流量
  3. 公司概況和績效:公司描述、業務亮點、分部分析
  4. 風險評估:評估風險
  5. 財務績效可視化:繪製市盈率和每股收益
  6. 將發現綜合成段落:將所有部分組合成一個連貫的摘要
  7. 生成 PDF 報告:使用工具自動生成 PDF
  8. 質量保證:檢查字數

3. 具有多模態能力的交易策略師代理

AI 代理論文

AI 代理博客和視頻

AI 代理開源框架和工具

  • AutoGPT (163k stars) 是一個供所有人使用的工具,旨在民主化 AI,使每個人都能使用和構建。
  • LangChain (87.4k stars) 是一個用於開發由語言模型驅動的上下文感知應用程序的框架,使它們能夠連接到上下文源並依賴模型的推理能力進行響應和行動。
  • MetaGPT (41k stars) 是一個多代理開源框架,為 GPTs 分配不同角色,形成協作軟件實體以執行複雜任務。
  • dify (34.1.7k stars) 是一個 LLM 應用程序開發平台。它整合了後端即服務和 LLMOps 的概念,涵蓋了構建生成式 AI 原生應用程序所需的核心技術堆棧,包括內置的 RAG 引擎。
  • AutoGen (27.4k stars) 是一個用於開發具有協作解決任務的會話代理的 LLM 應用程序的框架。這些代理是可定制的,支持人類交互,並以結合 LLMs、人類輸入和工具的模式運行。
  • ChatDev (24.1k stars) 是一個專注於開發能夠對話和問答的會話式 AI 代理的框架。它提供了一系列預訓練模型和交互界面,促進用戶開發定制聊天代理。
  • BabyAGI (19.5k stars) 是一個由 AI 驅動的任務管理系統,致力於構建具有初步通用智能的 AI 代理。
  • CrewAI (16k stars) 是一個用於編排角色扮演、自主 AI 代理的框架。通過促進協作智能,CrewAI 使代理能夠無縫協作,解決複雜任務。
  • SuperAGI (14.8k stars) 是一個以開發者為先的開源自主 AI 代理框架,使開發者能夠構建、管理和運行有用的自主代理。
  • FastGPT (14.6k stars) 是一個基於 LLM 的知識平台,提供開箱即用的數據處理和模型調用能力,允許通過 Flow 可視化進行工作流編排。
  • XAgent (7.8k stars) 是一個開源的實驗性大型語言模型(LLM)驅動的自主代理,可以自動解決各種任務。
  • Bisheng (7.8k stars) 是開發 LLM 應用程序的領先開源平台。
  • Voyager (5.3k stars) 一個具有大型語言模型的開放式實體代理。
  • CAMEL (4.7k stars) 是一個提供全面工具和算法集的框架,用於構建多模態 AI 代理,使它們能夠處理各種數據形式,如文本、圖像和語音。
  • Langfuse (4.3k stars) 是一個語言融合框架,可以整合多個 AI 代理的語言能力,使它們同時具備多語言理解和生成能力。

引用 FinRobot

@inproceedings{
zhou2024finrobot,
title={FinRobot: {AI} Agent for Equity Research and Valuation with Large Language Models},
author={Tianyu Zhou and Pinqiao Wang and Yilin Wu and Hongyang Yang},
booktitle={ICAIF 2024: The 1st Workshop on Large Language Models and Generative AI for Finance},
year={2024}
}

@article{yang2024finrobot,
  title={FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models},
  author={Yang, Hongyang and Zhang, Boyu and Wang, Neng and Guo, Cheng and Zhang, Xiaoli and Lin, Likun and Wang, Junlin and Zhou, Tianyu and Guan, Mao and Zhang, Runjia and others},
  journal={arXiv preprint arXiv:2405.14767},
  year={2024}
}

@inproceedings{han2024enhancing,
  title={Enhancing Investment Analysis: Optimizing AI-Agent Collaboration in Financial Research},
  author={Han, Xuewen and Wang, Neng and Che, Shangkun and Yang, Hongyang and Zhang, Kunpeng and Xu, Sean Xin},
  booktitle={ICAIF 2024: Proceedings of the 5th ACM International Conference on AI in Finance},
  pages={538--546},
  year={2024}
}

免責聲明:此處提供的代碼和文檔根據 Apache-2.0 許可證發布。它們不應被解釋為財務建議或實時交易建議。在進行任何交易或投資行動之前,必須謹慎行事並諮詢合格的金融專業人士。

About

FinRobot:使用LLM進行財務分析的開源人工智慧代理平臺🚀 🚀 🚀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 95.7%
  • Python 4.3%