Demo
What ai-stock-agent does (and doesn't)
A multi-agent LLM trading research tool focused on Mag7 + AI pure-play US equities. This page summarizes what ships today and links to the deeper surfaces.

What it does
- Runs a multi-agent LLM debate (Bull / Bear / Technical / Fundamental / Risk Manager / Trader) over Mag7 + AI pure-play US equities every trading day.
- Pulls free market data (OHLCV via yfinance), basic fundamentals, and news via a pluggable composite source (yfinance + Yahoo Finance RSS + optional local fixtures).
- Computes technical signals (RSI / MACD / Bollinger / ATR / optional Ichimoku / ADX / OBV / Stochastic) and feeds the snapshot to the agents.
- Clips every agent decision through Kelly sizing and hard caps (per-symbol, per-sector, gross exposure, minimum cash buffer).
- Enforces a kill switch (daily loss limit) and a drawdown halt that cancel further orders for the day, before they reach the broker.
- Records every decision and order as a paper trade and writes a Markdown + JSON tear sheet for every backtest.
What it does NOT do
- Does not place real trades by default. Switching to live trading requires explicit env flags and real broker credentials, neither of which is set.
- Does not recommend that you buy or sell any particular ticker. The agent decisions are research artifacts, not personalized advice.
- Does not promise future returns. Past backtest performance is historical only and can change with any strategy or universe edit.
- Does not collect or share personal data beyond what an optional subscribe form receives (and even that is disabled in production today — see /subscribe).
Demo flow
1. Data + news ingest
Per symbol, the pipeline pulls OHLCV from yfinance and fans out to every enabled news source (yfinance, Yahoo Finance RSS, optional JSONL fixtures). Failures of any one source do not stop the debate.
src/ai_stock_agent/data/news →
2. Multi-agent debate
Bull / Bear / Technical / Fundamental analysts emit briefs grounded in the snapshot. Risk Manager critiques them. Trader synthesizes the result into strict JSON: action, conviction, target weight, rationale.
src/ai_stock_agent/agents →
3. Risk guardrails
Kelly sizing shrinks the trader's target. Position cap, sector cap, gross exposure cap, and minimum cash buffer re-clip whatever Kelly produced. Kill switch and drawdown halt run before any order is submitted.
src/ai_stock_agent/risk/guardrails.py →
4. Paper execution + run report
Orders go through the Broker abstraction. Default mode is paper — either in-process or Alpaca paper. Every run writes a JSON report that this dashboard ingests at build time.
5. Backtest tear sheet
ai-stock-agent backtest --report writes a Markdown summary plus a JSON sidecar (vol / VaR / monthly heatmap / yearly returns / trade stats / per-symbol). The dashboard renders any archived tear sheet under /backtest/<id>.
6. Follow updates
Four pull-based broadcast channels are wired: GitHub Releases, GitHub Discussions Announcements, the /feed.xml RSS feed (live on this site), and an optional email subscribe form (disabled in production today; can switch to Buttondown without code changes).
Latest research run
Generated 6/26/2026, 7:00:26 PM · not halted · full debate transcript →
No-token paper demo status
The dashboard reads these fields straight from the runtime block written by the Python pipeline for every run. They confirm that the most recent run went through the deterministic demo provider — no paid LLM API call, no live broker order.
- Latest run id
- 20260626-190026
- Generated
- 6/26/2026, 7:00:26 PM
- LLM provider
- demo
- Broker
- in-process-paper
- Live trading
- false (paper only)
- Mode
- paper
- Decisions
- 15
- Paper orders
- 0
- Latest paper orders
- no orders submitted this run
Update cadence
Hourly local demo run (no paid LLM call, no real broker order). Daily Vercel deploy from this repo. The latest run shown above is whichever hourly job finished most recently.
Every value here comes from the runtime block in the run JSON — not inferred from environment, not guessed from headers. If the block is missing, the dashboard shows "unrecorded" rather than fabricating posture.
Run cadence
The demo lane records no-token paper runs over time.
Hourly local run, daily production deploy.
Legend
- demo + paper + orders
- demo + paper + cash kept
- halted
- live trading
- unrecorded (legacy run)
Last 24 hours
One cell per hour, oldest on the left. Color reflects the dominant posture for any run that landed in that hour; cells with no run stay muted. Same demo + paper + no paid LLM contract as the strip above.
Recent backtests
Each card below comes from a tear sheet committed to the repo. Methodology can change between runs — comparing two periods is only meaningful when the underlying strategy is the same.
6mo
15 symbols
No closed trades in this window — the strategy held cash. Zeros here mean inactivity, not loss.
Generated 2026-05-25 · open tear sheet →
1y
15 symbols
- Total
- +2.25%
- Sharpe
- 2.35
- Max DD
- -0.33%
Generated 2026-05-25 · open tear sheet →
2y
15 symbols
- Total
- +3.76%
- Sharpe
- 1.16
- Max DD
- -1.26%
Generated 2026-05-25 · open tear sheet →
Read deeper
- Q&A — explainer in plain language →
- Latest tear sheet (full view) →
- All recorded research runs →
- RSS feed (research updates) →
- Repo on GitHub →
- Full DISCLAIMER →