# FinRobot

> Multi-agent equity research where the numbers are code-calculated and the narrative is LLM-written

- Category: Agents & Automation / Finance & Market Agents
- Language: Python
- Licence: Apache-2.0
- Repository: https://github.com/AI4Finance-Foundation/FinRobot
- Website: https://finrobot.ai/
- Canonical page: https://ai-tldr.dev/tools/finrobot/

## In short

FinRobot is Multi-agent equity research where the numbers are code-calculated and the narrative is LLM-written. It sits in the Finance & Market Agents category of the Agents & Automation tools and is open-source, written in Python and licensed Apache-2.0. To get started: configure API keys.

## Overview

FinRobot is an open-source AI agent platform for financial applications from the AI4Finance Foundation, the same group behind FinGPT. Where FinGPT centred on a single fine-tuned model, FinRobot unifies several techniques — large language models, reinforcement learning and quantitative analytics — behind an agent layer aimed at investment research automation, trading strategies and risk assessment.

Its defining design choice is the split between computation and narration. Every financial figure is produced by pure-Python compute operators — DCF, DDM, LBO, WACC, comparable-company analysis and Monte Carlo simulation all run through deterministic code paths with full provenance — while the language model is used only for reasoning, synthesis, explanation and report writing. The project states the rule plainly: numbers are code-calculated, narratives are LLM-assisted, and every output is provenance-tracked.

The architecture is a Lead Agent orchestrating a pipeline of specialists: five role-based sub-agents for data, analysis, modelling, synthesis and report generation, plus three debate agents that argue the bull case, the bear case and a judge-style verdict. FinRobot is deliberately not bound to one agent stack — the original open-source framework (V0) is built on AutoGen, the open-source `finrobot_equity` project (V1) on the OpenAI Agents SDK, and later generations move to PydanticAI and DeepSeek-Harness while keeping the financial domain layer constant.

## What it does

- Lead Agent orchestrating five role-based sub-agents (data, analysis, modelling, synthesis, reporting) plus bull, bear and judge debate agents
- 30 pure-Python compute operators and 7 coordinators covering DCF, DDM, LBO, comps, WACC and Monte Carlo valuation
- Seven data providers with failover — FMP, Finnhub, yfinance, SEC EDGAR, Adanos, NewsAggregator and FX
- Analyst-style output: 13-chapter research reports, IC memos, evidence links and numeric provenance for every figure
- A web interface plus a scriptable CLI path, and a native macOS desktop build (FinRobot Desktop, Apple Silicon only)
- Framework-agnostic by design: AutoGen, the OpenAI Agents SDK and PydanticAI generations all share the same financial domain layer

## Getting started

FinRobot's open-source equity-research stack lives in the finrobot_equity directory. You supply API keys for a market-data provider and a model provider, then start either the web app or the command-line pipeline.

1. Configure API keys

   Copy the example config and fill in your keys. FMP supplies the financial statements; the model key drives the agents.

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

2. Start the web interface

   The deploy script installs dependencies and starts the app on http://127.0.0.1:8001. It also takes stop, restart and status.

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

3. Or run it manually

   If deploy.sh does not work on your machine, create a virtualenv and start the web app directly.

```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-equity.txt
python run_web_app.py
```

4. Generate a report from the command line

   Two steps: run the financial analysis for a ticker and its peers, then turn the resulting CSVs into an equity report.

```bash
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
```

## When to use it

- Reach for it when you want an equity-research report where every valuation number can be traced back to deterministic code rather than model output
- Reach for it to automate the grind of a coverage workflow — statements, three-year forecasts, DCF and peer comparison — before an analyst reviews it
- Reach for it when you want bull-case and bear-case arguments generated and adjudicated rather than a single one-sided thesis
- Reach for it as a reference architecture for splitting deterministic financial computation from LLM narration in your own agent system
