A multi-agent AI investing model.
The platform runs five specialized AI agents in parallel for every stock. Each agent collects raw financial data, computes quantitative scores, then hands the numbers to OpenAI (gpt-4o-mini) to synthesize a human-readable rationale. Every agent returns a score from 0 to 100.
Data collection comes first
Before any agent runs, the system gathers fundamentals (P/E, earnings and revenue growth, FCF, margins, leverage, dividend yield) and price history per stock, plus shared macro signals — 10-year yield, yield curve slope, VIX, and SPY at 1-month and 12-month lookbacks. Free data sources are tried first; paid sources are only escalated when needed. Any missing field falls back to a Perplexity lookup so no agent runs on null inputs.
Two AI roles, clearly split
Perplexity is the real-time retrieval layer — it fills missing financial fields and pulls grounded, citation-backed articles for every agent's domain. OpenAI is the reasoning layer — it turns each agent's metrics and sources into a written rationale, and applies portfolio policy at the end.
Each agent owns one lens on the stock.
Value Agent
Scores how cheaply a stock is priced. Computes rate-adjusted P/E (normalized to the current interest rate environment), EV/EBITDA, FCF yield, and shareholder yield, then hands the metrics to OpenAI for a one-line valuation summary.
Growth & Momentum Agent
Scores earnings trajectory and price momentum. Feeds EPS growth, revenue growth, and 4-week / 3-month / 6-month price momentum into OpenAI for a narrative on accelerating or decelerating fundamentals.
Macro Regime Agent
Scores the broad market environment rather than the individual stock — SPY 12-month return, SPY 4-week return, VIX, and yield curve slope. Every stock in a run shares this score, so it acts as a market-wide tailwind or headwind.
Quality / Risk Agent
Originally scored volatility and beta — until backtests showed that penalized high-beta winners in bull markets. It was redesigned to score business quality instead: profit margins, FCF yield, balance-sheet leverage, and revenue consistency. OpenAI frames the result as a quality assessment.
Sentiment Agent
The most AI-heavy agent. Pulls headlines from NewsAPI and yfinance, calls Perplexity (sonar) for real-time grounding, then asks OpenAI to return a structured sentiment score covering earnings surprises, analyst revisions, and major news events.
Perplexity for article sourcing.
Every agent — not just Sentiment — calls Perplexity to fetch two to three domain-specific supporting articles. Perplexity returns native grounded citations, which the system validates with live HTTP HEAD requests and ranks by source credibility (Bloomberg / Reuters above CNBC / Yahoo above SeekingAlpha) before showing them in the UI.
Validated citations
Every URL Perplexity returns is verified with a live HEAD request, then sorted by publisher credibility before it reaches the UI. Broken or low-trust sources never make it into the rationale.
Concurrency control
A shared threading.Semaphore(2) caps concurrent Perplexity calls across all five parallel agents, preventing rate-limiting when a full run fires at once.
From candidate to portfolio position.
Every recommendation moves through the same structured pipeline. Agent scores are blended using configurable weights, then screened against the client's investment policy and portfolio-level constraints before anything is added.
Tuned to the investor, not just the market.
Agent weights are configurable per client profile. For a long-horizon, lower-volatility mandate, Risk and Value are upweighted, Growth and Macro are moderated, and Sentiment is dialed down so short-term headlines can't override fundamentals. The same five agents produce a different portfolio for a different investor.
Profile presets
Equal weights, custom weights, or saved client profiles. Switching the profile reblends every score and reranks the candidate set without rerunning the agents.
IPS gating
A client-fit layer sits on top of the agent scores. Names that pass the blend still have to clear the investment policy — sector caps, concentration limits, and risk tolerances — before they become positions.
Every recommendation is logged and re-evaluated.
The system treats each analysis as an experiment. Inputs, agent scores, and assumptions are logged with a snapshot, performance is monitored over time, and capped, auditable adjustments feed back into calibration so the model improves without drifting.
Snapshot logging
Each run writes inputs, agent scores, weights, and rationales to a Sheets-backed log so any past recommendation can be reconstructed.
Outcome monitoring
Performance is tracked against the original thesis to surface missed signals and miscalibrated agents instead of relying on hindsight narratives.
Capped adjustments
Calibration changes are bounded and audit-trailed so the model can adapt over time without silently rewriting itself between runs.
Run the model from the site.
The full Streamlit app is embedded below. Enter a ticker to watch the five agents score, cite, and blend in real time.
Waking up the model…
Streamlit apps can take a few seconds to spin up.
Trouble loading? Open the model in a new tab.