Skip to content

AI4Finance-Foundation/FinRobot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

305 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FinRobot: An Open-Source AI Agent Platform for Financial Analysis using Large Language Models

Downloads Downloads Join Discord Python 3.8 PyPI License

FinRobot is an AI Agent platform tailored for financial applications, surpassing FinGPT's single-model approach. It unifies multiple AI technologiesβ€”including LLMs, reinforcement learning, and quantitative analyticsβ€”to power investment research automation, algorithmic trading strategies, and risk assessment, delivering a full-stack intelligent solution for the financial industry.

Concept of AI Agent: an AI Agent is an intelligent entity that uses large language models as its brain to perceive its environment, make decisions, and execute actions. Unlike traditional artificial intelligence, AI Agents possess the ability to independently think and utilize tools to progressively achieve given objectives.

Whitepaper of FinRobot

Visitors Discord

🎬 FinRobot Pro β€” Your Personal AI-Powered Equity Research Assistant

🌐 https://finrobot.ai/

▢️ Click the image above to watch the demo video, or see the short preview below.

A locally-deployed AI assistant that fetches financial data, runs multi-agent LLM analysis, and generates professional equity research reports.

1. Configure API Keys

cp finrobot_equity/core/config/config.ini.example finrobot_equity/core/config/config.ini

Edit config.ini with your keys:

[API_KEYS]
fmp_api_key = YOUR_FMP_API_KEY          # https://financialmodelingprep.com/developer
openai_api_key = YOUR_OPENAI_API_KEY    # https://platform.openai.com/account/api-keys

2. One-Command Deploy (Web Interface)

chmod +x deploy.sh
./deploy.sh start

#if deploy.sh not working then
python3 -m venv venv                                                                                                                                           
source venv/bin/activate
pip install -r requirements-equity.txt                                                                                                                         
python run_web_app.py  

Access at http://127.0.0.1:8001

Command Description
./deploy.sh start Start the web app (auto-installs dependencies)
./deploy.sh stop Stop the application
./deploy.sh restart Restart the application
./deploy.sh status Check running status

3. Or Run via Command Line

# Step 1: Financial analysis
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

# Step 2: Generate report
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

Pipeline:

  1. Fetch Financial Data: income statements, balance sheets, cash flows via FMP API
  2. Process & Forecast: 3-year financial projections, DCF valuation, peer comparison
  3. AI Agent Analysis: 8 specialized agents generate investment thesis, risk assessment, valuation overview, etc.
  4. Report Generation: professional multi-page HTML/PDF with 15+ chart types

For full documentation, see finrobot_equity/README.md.

What is FinRobot Pro?

FinRobot-Intro.mp4

FinRobot Pro is an AI-powered equity research platform that automates professional stock analysis using Large Language Models (LLMs) and AI Agents.

Key Features:

  • Automated Report Generation – Generate professional equity research reports instantly
  • Financial Analysis – Deep dive into income statements, balance sheets, and cash flows
  • Valuation Analysis – P/E ratio, EV/EBITDA multiples, and peer comparison
  • Risk Assessment – Comprehensive investment risk evaluation

FinRobot Ecosystem

The overall framework of FinRobot is organized into four distinct layers, each designed to address specific aspects of financial AI processing and application:

  1. Financial AI Agents Layer: The Financial AI Agents Layer now includes Financial Chain-of-Thought (CoT) prompting, enhancing complex analysis and decision-making capacity. Market Forecasting Agents, Document Analysis Agents, and Trading Strategies Agents utilize CoT to dissect financial challenges into logical steps, aligning their advanced algorithms and domain expertise with the evolving dynamics of financial markets for precise, actionable insights.
  2. Financial LLMs Algorithms Layer: The Financial LLMs Algorithms Layer configures and utilizes specially tuned models tailored to specific domains and global market analysis.
  3. LLMOps and DataOps Layers: The LLMOps layer implements a multi-source integration strategy that selects the most suitable LLMs for specific financial tasks, utilizing a range of state-of-the-art models.
  4. Multi-source LLM Foundation Models Layer: This foundational layer supports the plug-and-play functionality of various general and specialized LLMs.

FinRobot: Agent Workflow

  1. Perception: This module captures and interprets multimodal financial data from market feeds, news, and economic indicators, using sophisticated techniques to structure the data for thorough analysis.

  2. Brain: Acting as the core processing unit, this module perceives data from the Perception module with LLMs and utilizes Financial Chain-of-Thought (CoT) processes to generate structured instructions.

  3. Action: This module executes instructions from the Brain module, applying tools to translate analytical insights into actionable outcomes. Actions include trading, portfolio adjustments, generating reports, or sending alerts, thereby actively influencing the financial environment.

FinRobot: Smart Scheduler

The Smart Scheduler is central to ensuring model diversity and optimizing the integration and selection of the most appropriate LLM for each task.

  • Director Agent: This component orchestrates the task assignment process, ensuring that tasks are allocated to agents based on their performance metrics and suitability for specific tasks.
  • Agent Registration: Manages the registration and tracks the availability of agents within the system, facilitating an efficient task allocation process.
  • Agent Adaptor: Tailor agent functionalities to specific tasks, enhancing their performance and integration within the overall system.
  • Task Manager: Manages and stores different general and fine-tuned LLMs-based agents tailored for various financial tasks, updated periodically to ensure relevance and efficacy.

File Structure

The main folder finrobot has three subfolders agents, data_source, functional.

FinRobot
β”œβ”€β”€ finrobot (main folder)
β”‚   β”œβ”€β”€ 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 (hands-on tutorial)
β”‚   β”œβ”€β”€ agent_fingpt_forecaster.ipynb
β”‚   └── agent_annual_report.ipynb 
β”œβ”€β”€ tutorials_advanced (advanced tutorials for potential finrobot developers)
β”‚   β”œβ”€β”€ 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

Installation:

1. (Recommended) Create a new virtual environment

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

2. download the FinRobot repo use terminal or download it manually

git clone https://github.com/AI4Finance-Foundation/FinRobot.git
cd FinRobot

3. install finrobot & dependencies from source or pypi

get our latest release from pypi

pip install -U finrobot

or install from this repo directly

pip install -e .

4. modify OAI_CONFIG_LIST_sample file

1) rename OAI_CONFIG_LIST_sample to OAI_CONFIG_LIST
2) remove the four lines of comment within the OAI_CONFIG_LIST file
3) add your own openai api-key <your OpenAI API key here>

5. modify config_api_keys_sample file

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. start navigating the tutorials or the demos below:

# find these notebooks in tutorials
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

Demos

1. Market Forecaster Agent (Predict Stock Movements Direction)

Takes a company's ticker symbol, recent basic financials, and market news as input and predicts its stock movements.

  1. Import
import autogen
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.agents.workflow import SingleAssistant
  1. Config
# Read OpenAI API keys from a JSON file
llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={"model": ["gpt-4-0125-preview"]},
    ),
    "timeout": 120,
    "temperature": 0,
}

# Register FINNHUB API keys
register_keys_from_json("../config_api_keys")
  1. Run
company = "NVDA"

assitant = SingleAssistant(
    "Market_Analyst",
    llm_config,
    # set to "ALWAYS" if you want to chat instead of simply receiving the prediciton
    human_input_mode="NEVER",
)
assitant.chat(
    f"Use all the tools provided to retrieve information available for {company} upon {get_current_date()}. Analyze the positive developments and potential concerns of {company} "
    "with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. "
    f"Then make a rough prediction (e.g. up/down by 2-3%) of the {company} stock price movement for next week. Provide a summary analysis to support your prediction."
)

2. Personal AI Equity Research Assistant (Equity Research Report)

3. Trade Strategist Agent with multimodal capabilities

AI Agent Papers

AI Agent Open-Source Frameworks & Tools

Citing 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}
}

Disclaimer: The codes and documents provided herein are released under the Apache-2.0 license. They should not be construed as financial counsel or recommendations for live trading. It is imperative to exercise caution and consult with qualified financial professionals prior to any trading or investment actions.

image

About

FinRobot: An Open-Source AI Agent Platform for Financial Analysis using LLMs πŸš€ πŸš€ πŸš€

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors