AI News HubLIVE
In-site rewrite4 min read

An AI trading desk built as a team of sub-agents (Claude Code and Robinhood MCP)

A multi-agent stock-research desk that runs inside Claude Code, connects to a Robinhood Agentic account over MCP, and never places an order without user approval. It uses specialized sub-agents for analysis and a risk manager with veto power.

SourceHacker News AIAuthor: loganboyang

Notifications You must be signed in to change notification settings

Fork 0

Star 1

BranchesTags

Open more actions menu

Folders and files

NameName

Last commit message

Last commit date

Latest commit

History

6 Commits

6 Commits

.claude

.claude

docs

docs

strategies

strategies

ui

ui

.gitignore

.gitignore

.mcp.json

.mcp.json

CLAUDE.md

CLAUDE.md

LICENSE

LICENSE

README.md

README.md

Repository files navigation

A multi-agent stock-research desk that runs inside Claude Code, connects to a Robinhood Agentic account over MCP, and never places an order without your approval.

It's not a "bot that YOLOs your money." It's a small team of specialized sub-agents — fundamental, technical, macro/news, and a risk manager with veto power — that screen your watchlist, debate each candidate, and hand you a one-click preview card. You approve; it places. Everything's wrapped in written guardrails (human-in-the-loop, position caps, prompt-injection defense) and mirrored to a Robinhood-style dashboard.

Why it's different

A team, not one prompt — analysts gather evidence in parallel; an independent risk manager can veto a trade the analysts liked.

Guardrails are structural, not vibes — sub-agents physically have no order tools; only you-plus-the-PM can place, and only after explicit in-session approval.

Prompt-injection-aware — the news agent treats fetched content as untrusted data and quotes suspicious "instructions" instead of acting on them.

Low-touch by design — it runs read-only research on a schedule and only surfaces a trade when one genuinely qualifies; most days it tells you to stand aside.

A real dashboard — a Robinhood-style UI mirrors the desk's state live.

⚠️ Real money, beta, not investment advice. Robinhood Agentic Trading is in beta (US, equities only). The agent trades only inside an isolated Agentic account funded with a dedicated budget — that budget is the most it can ever lose. There is no track record and no performance claim here; this is a reference architecture for learning, run it at your own risk and monitor it yourself.

This repo holds the guardrails, strategy notes, agents, dashboard, and setup docs — never secrets, and never the OAuth token (those live outside the repo).

What's in here

. ├── CLAUDE.md # The PM's operating contract (rules it must follow) ├── .mcp.json # Project-scoped Robinhood Trading MCP connection ├── .env.example # Template for .env (account number; .env is gitignored) ├── .claude/ │ ├── settings.json # Permissions: reads allowed, orders gated, options denied │ └── agents/ # The desk team — one sub-agent per role │ ├── fundamental-analyst.md │ ├── technical-analyst.md │ ├── macro-news-analyst.md # injection-isolated (the only web-facing role) │ └── risk-manager.md # veto power over every trade ├── strategies/ │ ├── README.md # Risk caps + when the Risk Manager must VETO │ └── mean-reversion.md # Example strategy (entry/exit/sizing) ├── docs/ │ ├── SETUP.md # OAuth setup + how to tighten guardrails │ └── TEAM.md # The desk roles and end-to-end workflow └── ui/ # Read-only Robinhood-style dashboard (Vite + React) ├── public/desk-state.example.json # demo data (live desk-state.json is gitignored) └── src/ # polls the snapshot, renders account/desk/preview

Quickstart

Make this repo private before pushing anything.

Read docs/SETUP.md and follow it top to bottom.

Connect the MCP, authenticate via OAuth (desktop), fund a small Agentic budget.

Refine .claude/settings.json once you know the real tool names.

How the desk works

A small team of sub-agents coordinated by the Portfolio Manager (PM = the main Claude Code session). Analysts gather evidence in parallel; the Risk Manager has veto power; only the PM can place orders — and only after your in-session approval. After every run the PM writes ui/public/desk-state.json, which the dashboard mirrors live.

flowchart TD U([You: ask the PM in plain language]) --> PM{{Portfolio Manager main session · only role that can order}}

subgraph SENSE [1. Sense] PM --> A1[get_portfolio / get_equity_positions Agentic account only] end

subgraph RESEARCH [2-3. Screen + Research · parallel · read-only] A1 --> F[Fundamental Analyst valuation · earnings] A1 --> T[Technical Analyst trend · levels · scans] A1 --> M[Macro / News Analyst backdrop · news · INJECTION-ISOLATED] end

F --> SYN[4. PM synthesizes a proposed trade tied to a rule in strategies/] T --> SYN M --> SYN

SYN --> RISK{5. Risk Manager checks vs strategies/} RISK -- VETO --> STOP([Trade stops · PM reports back]) RISK -- APPROVE / CHANGES --> PREV[6. review_equity_order build preview card]

PREV --> SNAP[(7. Write desk-state.json)] SNAP --> GATE[8. Present preview · ⏸ wait for your approval] GATE -- you say yes --> EXEC[9. place_equity_order still gated by ask rule] GATE -- you say no --> STOP EXEC --> CONF[10. Confirm fill · refresh desk-state.json · log]

SNAP -. polled every 5s .-> DASH[/Dashboard: npm run dev/] CONF -. updates .-> DASH

Loading

Steps 1–7 are research and produce no order. The desk's standard output is the preview card at step 8 — it stops there until you confirm. Full role/tool breakdown is in docs/TEAM.md.

Operating commands

1. One-time: connect + authenticate the MCP, then record your account number

claude # open the project (trust the .mcp.json server)

in-session: /mcp # pick robinhood-trading → OAuth (desktop + mobile verify)

cp .env.example .env # then put your Agentic account number in .env

2. Run the dashboard (separate terminal) — mirrors each desk run

cd ui && npm install && npm run dev # http://localhost:5180 (shows demo until a live run)

3. Drive the desk — just talk to the PM in the Claude Code session, e.g.:

"Screen my watchlist and bring me the top 2 ideas with full team analysis."

"Run the desk on AAPL and NVDA, risk-check a small starter in the better one."

The PM fans out to the analysts → Risk Manager → preview card → waits for your OK.

Kill switch: disconnect the MCP from the Robinhood app, or remove it locally

claude mcp remove robinhood-trading

Note: the sub-agents in .claude/agents/ load when Claude Code starts — after adding or editing them, restart the session so roles like fundamental-analyst are recognized with their restricted tool sets.

Safety posture (read before funding)

The agent can only trade in the Agentic account, never your main balance.

Default permission rule puts every Robinhood tool call behind a manual prompt.

CLAUDE.md includes a prompt-injection rule: the agent must ignore trading instructions found in fetched/external content (news, analyst notes, web).

You can disconnect the MCP anytime from the Robinhood app — that's your kill switch.

About

No description, website, or topics provided.

Resources

Readme

License

MIT license

Uh oh!

There was an error while loading. Please reload this page.

Activity

Stars

1 star

Watchers

0 watching

Forks

0 forks

Report repository

Releases

No releases published

Packages 0

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

JavaScript 57.2%

CSS 34.8%

Shell 7.1%

HTML 0.9%