One ticker. Twelve specialists. Four phases.
A Diligence is not one prompt answered by one model. It is a structured sequence of independent agents — each with their own role, their own facts to look at first, and their own instruction to disagree with the others when it matters.
The result is a transcript you can read, audit, and learn from — not a black-box score. Below is the full pipeline as it ships in the codebase today.
Analysts
- market_analystprice action · volume
- news_analystrecent headlines
- fundamental_analystmetrics · context
- sentiment_analystsocial signal
Researchers
- bull_researcherthesis for
- bear_researcherthesis against
- research_managerarbitrates
Trader
- traderproposes position
Risk
- risk_aggressiveupside view
- risk_conservativedownside view
- risk_neutralmiddle path
- portfolio_managerfinal call
Analysts
Each analyst pulls live data from a single domain and writes what they see.
- market_analyst
Reads last price, multi-day price action, volume vs the 60-day average, and the recent range. Pulls from yfinance by default, or from Alpaca when keys are configured.
- news_analyst
Surfaces recent headlines about the ticker. Headlines flow into the transcript with source attribution so the reader can verify upstream.
- fundamental_analyst
Asset-class-aware context — equities get earnings/valuation framing, crypto gets supply/macro framing. Never asserts numbers it cannot ground.
- sentiment_analyst
Aggregates retail sentiment from StockTwits + the relevant subreddit (asset-class routed). Quantifies bullish vs bearish lean and notes message volume vs baseline.
Researchers
Two researchers argue against each other; a manager arbitrates.
- bull_researcher
Builds the strongest case to own the ticker. Synthesises the analysts, surfaces catalysts, and addresses the most likely counter-arguments before they are raised.
- bear_researcher
Builds the strongest case against. Looks for confirmation bias in the bull thesis. Will name specific things that would falsify the trade.
- research_manager
Reads both, weighs the evidence, and writes a synthesis that names which arguments are load-bearing and which are noise.
Trader
A single agent proposes a specific position — not just a direction.
- trader
Takes the research synthesis and writes a concrete proposal: action (BUY/SELL/HOLD), conviction, target sizing as a percentage of a hypothetical portfolio, and an entry plan. This is the only phase that proposes a number.
Risk
Three risk seats stress-test the proposal from opposing angles, and a portfolio manager makes the final call.
- risk_aggressive
Argues the proposed sizing is too small for the asymmetry on offer. Bias: upside under-pricing.
- risk_conservative
Argues the position assumes the thesis is right and ignores tail risk. Bias: downside under-pricing.
- risk_neutral
Holds the line between the two. Bias: the median path is most likely.
- portfolio_manager
Reads all three risk seats plus the trader proposal and makes the final call. The decision card the user sees comes from this agent and carries a confidence score (0.0–1.0).
A streaming transcript, not a popup.
Each agent renders into the UI the moment they finish writing. You watch the debate build. A phase progress strip shows which phase is running and how many agents have spoken. A running cost meter shows token spend tick up.
When the portfolio manager writes the final call, a decision card materialises beneath the transcript with the action, the confidence, and a one-paragraph rationale. You can copy the entire transcript as Markdown, or replay it later from the History page.
If you've configured webhooks, the decision is also pushed to your endpoint of choice (Telegram, Slack, Discord, or your own JSON receiver with HMAC verification) the moment it lands.
What the system cannot do — by design.
A Diligence does not predict the market. It does not guarantee outcomes. It is not investment advice. Agents are LLMs and can be confidently wrong; the entire point of running twelve of them is to make the disagreement visible to you, the reader.
Trading Agents Lab will not place a trade for you. It does not ship broker integrations. If you decide to act on the analysis, you do so on your own authorised brokerage account, via your own credentials, with your own responsibility. Read our positioning →