Skip to main content
The Investment team is the most ambitious multi-agent demo in the repo. Seven specialist agents collaborate across four distinct team configurations to evaluate stocks, weigh risk, and produce investment memos. All seven share one knowledge base and one learnings store.
AgentRoleTools
Committee ChairFinal decision-maker, capital allocatornone directly
Financial AnalystFundamental valuation, balance sheet, earningsYFinanceTools
Market AnalystMacro context, sector trends, breaking newsYFinanceTools, Exa MCP, optional ParallelTools
Technical AnalystPrice action, momentum indicators, entry/exit timingYFinanceTools
Risk OfficerDownside scenarios, position sizing, mandate complianceYFinanceTools
Knowledge AgentResearch RAG and memo archive navigationFileTools (read-only)
Memo WriterSynthesizes analyst inputs into formal memosFileTools

Why a team for this

The single-agent failure mode for investment analysis is bullish bias: one model talks itself into a thesis. A multi-agent committee structurally avoids this. The Risk Officer is required to argue against, the Technical Analyst is required to look at chart-level evidence, and the Chair has to weigh both. This is “agents as roles” rather than “agents as task fanout”. Each member has a distinct charter that the Chair must consider.

Four team modes, one set of agents

The demo ships four distinct teams built from the same agent set. Each demonstrates a different multi-agent architecture:
TeamModeRight whenTry
Investment CoordinateTeamMode.coordinateOpen-ended question that benefits from multi-analyst discussion”Should we invest $2M in NVIDIA?”
Investment RouteTeamMode.routeSingle-specialist question that should land with exactly one agent”What’s AAPL’s P/E ratio?” (routes to Financial Analyst)
Investment BroadcastTeamMode.broadcastHigh-stakes decision where you want independent analyst opinions in parallel”Full committee review: evaluate Tesla for $2M.”
Investment TasksTeamMode.tasksMulti-step task that needs decomposition and parallel work”Deploy $10M across the top 5 AI stocks, no position over 30%.”
Pick the team in the AgentOS UI based on the shape of the request. See Team modes for the underlying mechanics.

Three-layer knowledge

Every agent on the team draws from the same three-layer context:
LayerWhat it holdsHow it’s accessed
Static contextFund mandate, risk policy, evaluation processInjected into every agent’s system prompt
Research libraryCompany profiles, sector analysesPgVector hybrid search (RAG)
Memo archivePast investment memos and decisionsFileTools over the memos directory
Same “context is everything” pattern Dash uses, applied to financial decision-making instead of SQL.

Shared learnings

Every agent writes to one investment_learnings knowledge store with namespace="global":
from agno.learn import LearnedKnowledgeConfig, LearningMachine, LearningMode

investment_learnings = create_knowledge("Investment Learnings", "investment_learnings")

_learning = LearningMachine(
    knowledge=investment_learnings,
    learned_knowledge=LearnedKnowledgeConfig(
        mode=LearningMode.AGENTIC,
        namespace="global",
    ),
)
After a few decisions the store accumulates patterns like:
  • “Tech stocks with negative free cash flow get downgraded”
  • “Avoid recommending positions during earnings week”
  • “Risk Officer’s concerns weighted 1.5x for crypto exposure”
The Chair retrieves these on every new evaluation. The committee gets sharper over time without anyone manually building the framework.

File output

The Memo Writer uses FileTools to produce a markdown memo per evaluation:
teams/investment/memos/
├── 2026-04-22_TSLA.md
├── 2026-04-23_NVDA.md
└── 2026-04-24_META.md
Each memo captures the committee’s full reasoning, the dissents, and the final recommendation. Useful for retrospective analysis: which calls were right, which were wrong, and what the committee learned from each.

Mixing models

The demo runs every agent on the same default model (gpt-5.4 via OpenAIResponses). For real workloads, mixing models per role is a one-line change:
from agno.models.anthropic import Claude
from agno.models.google import Gemini

committee_chair = Agent(
    model=Claude(id="claude-opus-4-6"),   # Strong synthesis for the final decision
    ...
)

market_analyst = Agent(
    model=Gemini(id="gemini-2.5-pro"),    # Long context for filings
    ...
)
The team coordinates regardless of which model each member uses. The standalone investment-committee repo runs Claude Sonnet 4.6 across the analysts and Claude Opus 4.6 on the Chair, which is the production-grade configuration.

See it in action

Try one prompt against each team:
# Route: single specialist
@InvestmentRoute What's NVDA's current trend?

# Coordinate: open-ended discussion
@InvestmentCoordinate Should we invest $2M in NVIDIA?

# Broadcast: parallel independent opinions
@InvestmentBroadcast Full committee review: evaluate Tesla for $2M.

# Tasks: multi-step decomposition
@InvestmentTasks Deploy $10M across the top 5 AI stocks, no position over 30%.
Each prompt triggers the right shape of work. Expect 30-60 seconds for the parallel analyst teams, faster for route, longer for tasks. Source: teams/investment/. For a standalone version with Claude across the team and a deterministic 5-step pipeline workflow, see the investment-committee repo.