Skip to main content

Multi-Agent Investment Analysis System powered by CrewAI and Claude

Project description

ProspectAI - Multi-Agent Investment Analysis System

๐Ÿš€ Try It Now

Try the ProspectAI Web Demo โ€” Experience the agentic system in action!

Overview

ProspectAI is a multi-agent investment analysis system built on the CrewAI framework. It leverages four specialized AI agents to provide comprehensive investment recommendations through a systematic analysis workflow. The system supports Anthropic Claude models (default) and local Ollama models.

Current release: v1.0.1

โš ๏ธ Important Disclaimer

ProspectAI is built for educational purposes to help developers get initiated in Agentic AI development.

๐Ÿšจ INVESTMENT WARNING: This tool should NOT be used as an investment tool without proper knowledge of the investment domain. The analysis provided is for educational demonstration of AI capabilities and should not be considered as financial advice. Always consult with qualified financial professionals before making investment decisions.

Features

  • Multi-Agent System: Four specialized AI agents for different aspects of investment analysis
  • Anthropic Claude: Powered by Claude models (Sonnet, Opus) by default
  • Ollama Support: Run fully locally with Ollama models
  • Real Reddit Integration: Live Reddit sentiment analysis using public JSON endpoints โ€” no credentials required
  • Sector Analysis: Analyze 5 major sectors (Technology, Healthcare, Finance, Energy, Consumer)
  • Command-Line Interface: Easy-to-use CLI with flexible configuration
  • Environment-Based Config: Secure .env-based configuration with startup validation
  • Structured Output: Consistent, machine-readable JSON analysis results
  • CrewAI Framework: Professional multi-agent orchestration via LiteLLM

Architecture

The system consists of four specialized agents working in sequence:

MarketAnalystAgent โ†’ TechnicalAnalystAgent โ†’ FundamentalAnalystAgent โ†’ InvestorStrategicAgent

Each agent receives the full output of all prior agents as context.

Market Analyst Agent

  • Purpose: Entry point of the investment pipeline
  • Function: Analyzes Reddit discussions to identify trending stocks at the current moment in time, incorporating macro/geopolitical context
  • Data Sources: Reddit public JSON API with Serper web search as fallback
  • Output: Top 5 candidate stocks with sentiment scores and relevance metrics

Technical Analyst Agent

  • Purpose: Quantitative technical analysis
  • Function: Runs 13+ technical indicators per ticker using yfinance + ta library
  • Indicators: RSI, MACD, Bollinger Bands, ATR, SMA, EMA, VWAP, ADX, and more
  • Output: Per-stock signals, momentum scores (1โ€“10), risk levels, entry zones, stop-loss levels

Fundamental Analyst Agent

  • Purpose: Financial statement and valuation analysis
  • Function: Fetches real P/E, margins, debt ratios, FCF, and growth rates via yfinance
  • Output: Valuation grades (CHEAP/FAIR/EXPENSIVE), financial health ratings, growth outlook

Investor Strategic Agent

  • Purpose: Final synthesis and portfolio construction
  • Function: Applies the composite score formula and builds portfolio allocations
  • Composite Score: 30 pts sentiment + 40 pts momentum + 30 pts fundamentals (max 100)
  • Recommendations: STRONG_BUY / BUY / HOLD / REDUCE / AVOID
  • Output: Machine-readable JSON with allocation percentages summing to 100%

Installation

Prerequisites

  • Python 3.9+
  • An Anthropic API key or a local Ollama installation

Install via pip

pip install prospectai

That's it. All dependencies (CrewAI, yfinance, ta, requests, etc.) are installed automatically.

Configure Environment

Create a .env file in the directory where you'll run prospectai (see env.example for the full template):

# LLM backend: anthropic | ollama
MODEL_PROVIDER=anthropic

# Global default model id for all agents (raw id, no provider prefix)
MODEL=claude-sonnet-4-6

# Required when MODEL_PROVIDER=anthropic
ANTHROPIC_API_KEY=your_key_here

# Optional: override MODEL for a specific agent only
# AGENT_MARKET_ANALYST_MODEL=claude-3-5-haiku-20241022
# AGENT_TECHNICAL_ANALYST_MODEL=
# AGENT_FUNDAMENTAL_ANALYST_MODEL=
# AGENT_INVESTOR_STRATEGIC_MODEL=

# Market data โ€” Reddit and/or Serper (at least one source required by the app)
# SERPER_API_KEY=your_key_here

# When MODEL_PROVIDER=ollama
# OLLAMA_BASE_URL=http://localhost:11434

Model resolution (simple rule): AGENT_*_MODEL (if set for that agent) โ†’ MODEL โ†’ legacy ANTHROPIC_MODEL / OLLAMA_MODEL if you still use older .env files. MODEL_PROVIDER selects Anthropic vs Ollama routing.

When you run the CLI, MODEL is also set to provider/model_id for CrewAIโ€™s environment fallback; the app still resolves raw ids for each agent from the variables above.

Getting your API keys

Ollama setup (optional โ€” local models)

# Install Ollama
# https://ollama.com/download

ollama serve
ollama pull qwen3.5:9b

Usage

# Analyze Technology sector (default)
prospectai

# Analyze a specific sector
prospectai --sector Healthcare
prospectai --sector Finance
prospectai --sector Energy
prospectai --sector Consumer

# Override the global MODEL for a single run
prospectai --model claude-opus-4-6 --sector Technology

# Use a local Ollama model
prospectai --ollama --sector Technology
prospectai --ollama --model llama3.2:8b --sector Healthcare
prospectai --ollama --url http://192.168.1.100:11434 --sector Finance

CLI Reference

Flag Description
--sector Sector to analyze: Technology, Healthcare, Finance, Energy, Consumer (default: Technology)
--model Override global MODEL for this run (raw model id)
--ollama Use local Ollama instead of Anthropic
--url Ollama server URL (overrides OLLAMA_BASE_URL)

Configuration

LLM environment variables

Variable Required Description
MODEL_PROVIDER Yes anthropic or ollama (CLI --ollama sets ollama)
MODEL Yes* Global default model id for all agents (raw id, e.g. claude-sonnet-4-6 or qwen3.5:9b)
ANTHROPIC_API_KEY If MODEL_PROVIDER=anthropic Anthropic API key
OLLAMA_BASE_URL If MODEL_PROVIDER=ollama Ollama server URL
AGENT_MARKET_ANALYST_MODEL No Overrides MODEL for the Market Analyst agent only
AGENT_TECHNICAL_ANALYST_MODEL No Overrides MODEL for the Technical Analyst agent only
AGENT_FUNDAMENTAL_ANALYST_MODEL No Overrides MODEL for the Fundamental Analyst agent only
AGENT_INVESTOR_STRATEGIC_MODEL No Overrides MODEL for the Investor Strategic agent only
ANTHROPIC_MODEL No Legacy fallback if MODEL is unset (Anthropic path)
OLLAMA_MODEL No Legacy fallback if MODEL is unset (Ollama path)

*Or set a legacy model var above instead of MODEL.

Other environment variables

Variable Required Description
REDDIT_CLIENT_ID + REDDIT_CLIENT_SECRET One source* Reddit API (preferred for sentiment)
SERPER_API_KEY One source* Web search fallback when Reddit is unavailable

*The app requires at least one of: Reddit credentials or Serper.

Anthropic Claude Models

Model Use Case
claude-sonnet-4-6 Best balance of quality and speed (default)
claude-opus-4-6 Highest quality, deeper reasoning
claude-haiku-4-5-20251001 Fastest, lowest cost

Ollama Models

Model Notes
qwen3.5:9b Good reasoning, recommended for analysis
llama3.2:8b General purpose
llama3.2:3b Lightweight, fast
mistral:7b Good for analytical tasks

Per-agent model overrides

Preferred: set optional AGENT_*_MODEL variables in .env or your host secrets (e.g. Modal). Each variable overrides the global MODEL for that agent only.

Fallback: you can still set llm.model per agent in config/agents.yaml if no env-based id is resolved for that agent.

See AGENT_LLM_CONFIGURATION.md for additional notes on agent LLM configuration.

Development

To contribute or run from source:

git clone https://github.com/moisesprat/ProspectAI.git
cd ProspectAI
python -m venv .venv
source .venv/bin/activate       # Windows: .venv\Scripts\activate
pip install -e .

After installing in editable mode the prospectai command is available and picks up any local changes immediately.

Project Structure

ProspectAI/
โ”œโ”€โ”€ agents/                          # AI agent implementations
โ”‚   โ”œโ”€โ”€ base_agent.py
โ”‚   โ”œโ”€โ”€ market_analyst_agent.py
โ”‚   โ”œโ”€โ”€ technical_analyst_agent.py
โ”‚   โ”œโ”€โ”€ fundamental_analyst_agent.py
โ”‚   โ””โ”€โ”€ investor_strategic_agent.py
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ agents.yaml                  # Agent behavior (role, goal, model, temperature)
โ”‚   โ”œโ”€โ”€ tasks.yaml                   # Task definitions (descriptions, output schemas)
โ”‚   โ”œโ”€โ”€ agent_config_loader.py
โ”‚   โ”œโ”€โ”€ task_config_loader.py
โ”‚   โ””โ”€โ”€ config.py
โ”œโ”€โ”€ utils/
โ”‚   โ”œโ”€โ”€ reddit_sentiment_tool.py     # Reddit public JSON sentiment tool
โ”‚   โ”œโ”€โ”€ technical_analysis_tool.py
โ”‚   โ””โ”€โ”€ fundamental_data_tool.py
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ main.py                          # CLI entry point (prospectai command)
โ”œโ”€โ”€ prospect_ai_crew.py              # CrewAI orchestration
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

Running Tests

python tests/test_skeleton.py
python tests/test_reddit_output.py Technology
python tests/test_technical_analyst.py
python tests/test_market_analyst_llm.py

Building and Publishing

pip install build twine
python -m build
twine upload dist/*

Troubleshooting

Issue Fix
prospectai: command not found Run pip install prospectai or activate the venv where it's installed
.env file not found Create a .env file in your current working directory
Missing keys error at startup Check the listed keys against your .env (especially MODEL / MODEL_PROVIDER and market data keys)
ANTHROPIC_API_KEY invalid Verify key at console.anthropic.com
Ollama connection refused Run ollama serve and verify OLLAMA_BASE_URL
Ollama model not found Run ollama pull <model-name>
No stocks found from Reddit Reddit public API may be rate-limited; add SERPER_API_KEY as fallback

Roadmap

v1.1 - Enhanced Market Analysis

  • Integration with financial news APIs (Bloomberg, Reuters)
  • Real-time market sentiment from multiple sources
  • Enhanced sector rotation analysis

v1.2 - Agent Improvements

  • Enhanced financial modeling capabilities
  • More sophisticated valuation algorithms
  • Advanced portfolio optimization

v1.3 - Advanced Risk Management

  • Monte Carlo simulations for portfolio scenarios
  • Advanced risk metrics (VaR, CVaR, Sharpe ratios)
  • Dynamic risk adjustment based on market conditions

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes with tests where applicable
  4. Submit a pull request

License

MIT License โ€” see LICENSE for details.

Acknowledgments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prospectai-1.1.1.tar.gz (54.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prospectai-1.1.1-py3-none-any.whl (46.7 kB view details)

Uploaded Python 3

File details

Details for the file prospectai-1.1.1.tar.gz.

File metadata

  • Download URL: prospectai-1.1.1.tar.gz
  • Upload date:
  • Size: 54.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for prospectai-1.1.1.tar.gz
Algorithm Hash digest
SHA256 ab2c23e0934682c47a34983104634b3661606497a7ef2add27924ca1c7e550c5
MD5 5ab53d5b5ddaedc1c49cee88af272248
BLAKE2b-256 8ea79c94603b88caf0602986505482fd25be75b9b0f4c7d9d3442ca837246999

See more details on using hashes here.

File details

Details for the file prospectai-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: prospectai-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 46.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for prospectai-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5fd543b7437fb7b2d772ed66a3823b56fff31b8fac0fd5776aecf93ae05f8e5d
MD5 d719eaac1f393764619f329d8bcccb36
BLAKE2b-256 06c7ce81ce9d0fa2b7206d8c05f91abce72732e1db41bb83690290bb1c304f72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page