Skip to content

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.

quickstart.sh
# 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 lab

02Environment

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.

ah-env.yml
name: ah-env
channels:
  - conda-forge
dependencies:
  - python=3.12
  - pandas
  - numpy
  - jupyterlab
  - pip
  - pip:
      - web3
      - httpx
      # official MCP client of your choice

03Variables

.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
# .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-chain

04Broker 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.txt
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.

risk.yml
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.