FinRobot
Multi-agent financial research with code-calculated valuations and traceable reports.
The evidence shows that the system uses OpenAI, FMP, Finnhub, SEC API, and optional Adanos credentials and communicates with market-data, filing, news, and social-sentiment services. Configuration examples keep credentials in dedicated files, and a test checks that an API key is sent in a request header. The README describes providers, failover, numeric provenance, report evidence links, and a financial-advice disclaimer. Deductions apply because no credential encryption, log redaction, scope restriction, retention policy, or rotation process is shown; no per-action confirmation mechanism is documented for high-impact actions such as trading, portfolio adjustment, or alerts; and per-provider data flows are incomplete. Numerous dependencies are unpinned, with no lockfile, vulnerability scanning, update policy, or supply-chain verification. Start/stop/restart commands offer limited recovery, but transaction rollback, output retraction, and compensation for external actions are absent. Project, paper-author, and data-source attribution are comparatively clear. Unknown publisher identity was not treated as adverse evidence.
The supplied tests cover imports, valuation, sensitivity, news, charts, report structure, and graceful degradation when a sentiment source fails, while scripts emit understandable success, skip, and exception messages. This supports a solid failure-messaging score. Deductions apply because several tests merely print outcomes or check method presence, use few strong assertions, and include no recorded execution results. Dependencies appear obtainable from common package indexes and external APIs, but requirements.txt combines duplicate packages, broad constraints, and fixed older versions without a lockfile or offline path. Self-consistency is reduced by simultaneous references to Python 3.6, 3.8, and 3.10 and by interleaving legacy framework, Pro, Web, and Desktop architecture descriptions.
The README thoroughly identifies investment research, valuation, risk analysis, report generation, trading strategy, beginner and advanced development, Web, CLI, and Apple Silicon Desktop scenarios. It distinguishes code-calculated numbers from LLM narration and identifies providers, agent roles, pipelines, platform limits, and the non-advisory boundary. Deductions apply because tool triggers, conflict resolution, approval points, and routing rules between agents remain conceptual rather than precise operational contracts. Environment coverage includes Conda, pip, source installation, Web, CLI, and macOS instructions, but Desktop is Apple-Silicon-only and not notarized, while Python-version guidance conflicts.
The README supplies layered architecture, an agent workflow, repository tree, installation and configuration steps, CLI examples, tutorials, example reports, citations, a disclaimer, and a Desktop release section. The complete Apache-2.0 text agrees with the license metadata, justifying full license credit. Deductions apply because one README blends the core FinRobot framework, FinRobot Pro, the equity subsystem, and Desktop, leaving product boundaries and naming less stable; badges and Python requirements also conflict. Apple Silicon, notarization, and financial-advice limitations are disclosed, but there is no systematic known-issues list or FAQ. Only a Desktop v0.1.0 announcement is shown, without a full changelog, migration notes, or unified repository versioning policy. The organization repository, issue/PR indicators, and Discord suggest maintenance paths, but named maintainers, support commitments, and a security-reporting channel are absent.
The material presents directly usable multi-section HTML/PDF research reports, charts, valuations, risk sections, source annotations, and CLI and Web workflows. Test fixtures concretely demonstrate report fields and sentiment presentation, supporting full output-usability credit. Multi-agent orchestration, deterministic valuation, and integrated report production offer identifiable marginal value over unstructured LLM prose. Deductions apply because strong benefit claims are mainly self-reported in the README, with no benchmarks, user studies, or quality comparisons. Operation depends on several potentially paid or rate-limited APIs, LLM calls, and a complex dependency stack, yet no cost estimates, latency data, resource requirements, or scaling tradeoffs are provided.
The README expressly separates computed numbers, LLM narration, and provenance, and supplies paper citations, example reports, named providers, and quantitative architecture claims. The test sources cross-support parts of the report structure, source annotation, valuation, charting, and sentiment-source degradation story. Deductions apply because the supplied evidence omits the core implementations needed to inspect claims such as approximately 184k lines, nine agents, seven pipelines, 30 compute operators, automatic failover, and universal provenance. Much financial content in tests is clearly labeled mock data, which helps separate examples from facts, but promotional claims and implementation facts remain partly blended, with no independent corroboration or execution records.
- Before connecting brokerage accounts or real capital, verify that trading, portfolio-adjustment, and alert actions are disabled by default and add explicit approval, limits, audit logs, and recovery for every high-impact action.
- API keys are entered in configuration files. Confirm that these files are excluded from version control and add least-scope credentials, rotation, encryption at rest, and log redaction.
- requirements.txt contains many unpinned or duplicate dependencies and no lockfile or security-scan evidence. Produce a reproducible lock set and complete vulnerability and license reviews before deployment.
- Do not treat printed PASSED messages or README architecture counts as verified results. This assessment did not execute the code, and most core implementations were not included in the evidence.
- Python-version guidance and product variants conflict in the README. Confirm the intended subsystem, supported runtime, external API costs, and platform requirements before installation.
- Reports may combine LLM-generated investment narratives with third-party data. Even where numbers are claimed to be code-calculated, independently verify inputs, assumptions, timestamps, and sources.
What does this agent do, and when should you use it?
FinRobot is an open-source agent platform for financial research, quantitative analysis, valuation, risk assessment, and trading-strategy experiments. Its desktop research system uses a Lead Agent to coordinate data, analysis, modeling, synthesis, and reporting agents, followed by Bull, Bear, and Judge agents for investment debate. DCF, DDM, LBO, WACC, comparable-company analysis, and Monte Carlo outputs are calculated by pure-Python operators, while language models handle reasoning, synthesis, explanation, and report writing. The system can consume market data, financial statements, SEC filings, and news, then produce structured equity research with evidence links and numeric provenance. Delivery options include a Python package and notebooks, command-line pipelines, a self-hosted web interface, and FinRobot Desktop v0.1.0 for Apple Silicon Macs.
The workflow begins by retrieving market and company information through providers including FMP, Finnhub, yfinance, SEC EDGAR, Adanos, NewsAggregator, and FX. A Lead Agent routes work through Data Agent, Analysis Agent, Modeling Agent, Synthesis Agent, and Report Agent roles; Bull Agent, Bear Agent, and Judge Agent then develop and evaluate opposing investment cases. Thirty pure-Python operators and seven coordinators calculate DCF, DDM, LBO, WACC, comparable-company, and Monte Carlo results rather than asking the language model to supply financial numbers. The library also exposes finrobot.agents, data_source, functional, toolkits.py, and utils.py, with notebooks for annual-report analysis, FinGPT forecasting, trading strategy, and mplfinance workflows. In the FinRobot Pro pipeline, generate_financial_analysis.py retrieves and forecasts financial data, while create_equity_report.py turns the resulting CSV files into chart-rich HTML/PDF equity reports; run_web_app.py serves the local interface at http://127.0.0.1:8001.
- An equity analyst needs to turn market data, SEC filings, and company statements into a traceable, multi-chapter research report.
- A valuation team wants code-calculated DCF, DDM, LBO, WACC, comparable-company, or Monte Carlo results with LLM-assisted explanations.
- An investment committee needs an IC memo that incorporates bull, bear, and judge-style reasoning while preserving evidence links and numeric provenance.
- A researcher or developer wants notebooks for experimenting with annual-report analysis, FinGPT forecasting, trading strategies, or multimodal financial charts.
- An Apple Silicon Mac user wants a native workspace spanning data retrieval, valuation, investment debate, and report generation.
- A self-hosting team wants to generate equity analysis and HTML/PDF reports through either a FastAPI web interface or command-line pipeline.
What are this agent's strengths and limitations?
- It explicitly separates deterministic financial computation from LLM narration: valuation numbers come from pure-Python operators and carry provenance.
- Its role-based architecture covers data, analysis, modeling, synthesis, reporting, and adversarial investment debate instead of offering only a single chat agent.
- The data layer identifies seven providers with failover across market data, SEC EDGAR, news, sentiment, and foreign exchange.
- Python, notebook, CLI, self-hosted web, and Apple Silicon desktop delivery modes support several research workflows.
- Outputs include chapter-based research, IC memos, evidence links, numeric provenance, and chart-rich HTML/PDF reports.
- Initial setup can involve separate OpenAI, Finnhub, FMP, and SEC credentials, with possible access limits or costs from each provider.
- FinRobot Desktop v0.1.0 supports only Apple Silicon Macs, has no Intel Mac build, and is not yet Apple-notarized.
- Web and CLI deployment require a local Python environment, dependency installation, filesystem access, and network connectivity.
- The repository describes general FinRobot, FinRobot Pro, finrobot_equity, and the newer desktop architecture, so adopters must choose the appropriate implementation path.
- The project expressly states that its code and documents are not financial advice or recommendations for live trading.
How do you install or deploy this agent?
For the general Python package:
conda create --name finrobot python=3.10
conda activate finrobot
git clone https://github.com/AI4Finance-Foundation/FinRobot.git
cd FinRobotpip install -e .
The PyPI alternative is:
pip install -U finrobotRename OAI_CONFIG_LIST_sample to OAI_CONFIG_LIST, remove its four comment lines, and add an OpenAI API key. Rename config_api_keys_sample to config_api_keys, remove the comment, and add a Finnhub key; financial report generation also requires FMP and SEC API keys.
For the FinRobot Pro web application:
cp finrobot_equity/core/config/config.ini.example finrobot_equity/core/config/config.iniSet fmp_api_key and openai_api_key under [API_KEYS]; adanos_api_key is optional. Then run:
chmod +x deploy.sh
./deploy.sh startIf the deployment script does not work:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-equity.txt
python run_web_app.pyFinRobot Desktop v0.1.0 is available only for Apple Silicon macOS. Download FinRobot_0.1.0_aarch64.dmg and move the app into Applications. Because the release is not Apple-notarized, a first-launch “damaged” warning may require:
xattr -cr /Applications/FinRobot.appHow do you use this agent?
After web deployment, open http://127.0.0.1:8001. The deployment helper supports ./deploy.sh start, stop, restart, and status.
For a command-line run, first generate the 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-sectionsThen create the 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.iniLibrary users can start with agent_annual_report.ipynb, agent_fingpt_forecaster.ipynb, agent_trade_strategist.ipynb, lmm_agent_mplfinance.ipynb, or lmm_agent_opt_smacross.ipynb under tutorials_beginner and tutorials_advanced.
How does this agent compare with similar options?
FinRobot presents itself as broader than FinGPT's single-model approach by combining language models, reinforcement learning, and quantitative analytics in a multi-agent platform. Its distinguishing design is specialized agent collaboration plus a separation between code-calculated valuation results and LLM-assisted narrative.