06Docs
Setup, connection, limits.
The environment file builds as written. Connection values come from the official Robinhood documentation; anything marked TBD is a value you read there, not one you guess.
01Quickstart
Four commands.
Steps one and four need nothing but Miniconda. Steps two and three need the values from your .env.
# 1. create and activate the environment
conda env create -f ah-env.yml
conda activate ah-env
# 2. copy the placeholder env file and fill it in
cp .env.example .env
# 3. start read-only on both rails
ah connect broker --mode paper
ah connect chain --watch-only
# 4. open the notebook
jupyter lab02Environment
ah-env.yml
Pinned Python, conda-forge channel, pip for the two packages that need it. No unofficial Robinhood login libraries; they do not belong in a recommended stack.
name: ah-env
channels:
- conda-forge
dependencies:
- python=3.12
- pandas
- numpy
- jupyterlab
- pip
- pip:
- web3
- httpx
# official MCP client of your choice03Variables
.env.example
Placeholders only. A private key never goes in a dotenv file. Point at an external signer and let the OS or the hardware hold the secret.
# .env.example — placeholders only. Never commit real values.
# Broker rail (official MCP surface)
AH_MCP_SERVER_URL=<from official Robinhood MCP docs>
AH_MCP_TOKEN=<issued to you, scoped to the agentic sub-account>
AH_BROKER_ACCOUNT=<agentic sub-account id>
# Chain rail (Robinhood Chain)
AH_CHAIN_RPC=<official RPC endpoint from the chain docs>
AH_CHAIN_ID=<chainId from the official docs>
AH_AGENT_ADDRESS=0x<watch-only address to start>
# Signing key: do NOT put a private key here.
# Use an external signer, a hardware wallet, or an OS keychain entry.
AH_SIGNER=keychain://ah-agent-chain04Broker rail
MCP connection.
- a
Use the official server
The broker rail speaks to Robinhood's own MCP surface. Configure it in your MCP client the same way as any other server: URL plus a scoped token.
- b
Scope it to a sub-account
The token should reach one funded agentic sub-account and nothing else. If it can reach your primary account, the scope is wrong.
- c
Paper before live
Run the whole loop in paper mode until the proposals stop surprising you. Going live is editing one line and meaning it.
- d
Notifications on
Every order produces a push notification on a device you carry. An agent that can trade silently is an agent you cannot supervise.
05Chain rail
Network settings.
Read the official chain documentation for the RPC URL and chain ID. A guessed chain ID is how funds end up on the wrong network.
Network name: Robinhood Chain
Network type: Arbitrum Orbit L2
RPC URL: <read the official docs>
Chain ID: TBD — read the official docs, do not guess
Currency symbol: ETH
Block explorer: <read the official docs>Wallet
Use the official Robinhood Wallet or your own EVM wallet with an external signer. Anaconda Hood has no wallet-connect flow, no seed phrase field and no key import. Any site that asks you to paste a seed phrase is stealing from you.
06Guardrails
risk.yml
The file that matters. Versioned next to the strategy and checked before routing. If it is missing, the desk refuses to run rather than defaulting to permissive.
mode: paper
broker:
enabled: true
max_order_usd: 250
daily_loss_usd: 500
allow: [AAPL, MSFT, NVDA, HOOD]
chain:
enabled: true
max_tx_usd: 100
allow_tokens: [USDG]
require_approve_over_usd: 200- mode
- paper or live. Paper is the default.
- max_order_usd / max_tx_usd
- Per-order and per-transaction ceilings, enforced per rail.
- daily_loss_usd
- A hard stop for the session. Hitting it halts routing until a human resets it.
- allow / allow_tokens
- Explicit allowlists. Anything not listed is untradable by the agent.
- require_approve_over_usd
- Above this size, a human approves or nothing happens.