Quorum v0.1, phase 1

a risk-guardrailed agent runner for Robinhood's Agentic Trading MCP

The order should get blocked sometimes. That's the product.

Robinhood's MCP will execute whatever order an agent proposes. Quorum sits in front of it: hard caps on size and daily exposure, checked in plain code before anything reaches your account, plus a log of every decision that can't be quietly edited after the fact.

Below is an actual run from a test account. Not a mockup — the second order really did clear because it was under the cap, and the first one really didn't.

agent proposes → place_equity_order { symbol: "ROAR", notional_usd: 800 } checking against MAX_ORDER_USD ($250)… BLOCKED — exceeds cap by $550 agent: understood, standing down agent proposes → place_equity_order { symbol: "ROAR", notional_usd: 150 } checking against MAX_ORDER_USD ($250)… approved → forwarded to Robinhood MCP order filled · logged to audit chain · seq 0045

Full trace, including the hash chain, lives in ./data/audit.log.jsonl.

Robinhood didn't ship a trading brain. It shipped an execution API and called it agentic trading — which is a fair thing to build, honestly. The tool surface stops at the order. Everything upstream of that, whether the trade should happen at all, is left entirely to the model.

What the MCP gives you

  • place_equity_order
  • get_portfolio
  • get_equity_quotes
  • single-leg option orders
  • watchlists and scans
  • crypto orders, via Robinhood Chain

What's missing

  • walk-forward backtesting
  • caps that hold even if the model gets talked into ignoring them
  • unattended scheduled runs
  • a record you can hand to someone else and have them actually verify

Five stages. One of them can say no.

input
News, sentiment, on-chain dataFeeds the research stage. Nothing here can move money.
agent
ResearchTurns raw signal into a proposal — symbol, direction, and a stated reason, not just a vibe.
agent
Backtest / optimizerWalk-forward validation against historical data. No backtest, no next stage.
gate
Risk guardrailOrder size, symbol allowlist, daily count, cumulative notional — checked in a function, not a prompt.
execution
Robinhood MCP → your accountOnly what passed the gate gets here. Isolated from your primary account by Robinhood's own design.
The check isn't a suggestion the model can be talked out of. It's an if statement.

Longer term, strategies get published as configs — entry rules, exit rules, sizing — not code. Subscribing deploys the strategy into your own dedicated Robinhood account, not a pooled fund. Nothing here custodies anyone's money but your own broker.

These three are what that page is designed to look like, shown with representative numbers — the subscribe flow isn't built yet, so nothing below can be deployed to an account today.

Mean-reversion, large-cap equitieswalk-forward tested against 3 years of daily bars
Sharpe 1.31
Base ecosystem momentumvolume + social-velocity thresholds, Robinhood Chain
max DD 18.4%
Weekly rebalance, 60/40 crypto tiltlow-frequency, rules-based
2.1 orders/wk

Phase 1 is the part that's actually done.

The agent runner and the guardrail exist and run against a real Robinhood agentic account today. Everything below it is what's shipped, what it needs, and what's coming next — not a feature list, just where things actually stand.

What's in the scaffold

  • Risk guardrail — order size, symbol allowlist, daily count, cumulative notional caps
  • Client-side MCP connection to Robinhood, not the auto-executing server connector
  • Hash-chained audit log with a verify-log command
  • Cron scheduler for unattended runs
  • CLI: run once, schedule, or verify the log

What it needs

  • Node 18+
  • An Anthropic API key
  • A Robinhood agentic account and MCP access token
  • Your own risk caps set in .env before first run

Roadmap

v0.1 · shipped

Agent runner + risk guardrail

Running against a live Robinhood agentic account. Notional-based caps only — no real P&L tracking yet.

next

Backtest / optimizer agent

Walk-forward validation and parameter search, as a standalone service the runner calls before proposing a trade.

after that

Strategy config DSL

Entry/exit rules and sizing as JSON, not natural-language prompts — the step that makes a strategy shareable without handing over code execution.

later

Marketplace

Publish, verify, subscribe. Deploys into the subscriber's own account — nothing pools.