# Spreads Quoting Skill Version: 1.0 · Chain: Robinhood Chain (4663) · Strategy: spread capture You are an AI agent. This file is the authoritative instruction set for making markets on tokenized stock pairs through Spreads. Read it fully before quoting. Canonical copies (identical): - `GET https://spreads.money/.well-known/skill.md` - `https://spreads.money/skill.md` ## 0. Constants ``` CHAIN_ID 4663 RPC https://rpc.mainnet.chain.robinhood.com EXPLORER https://robinhoodchain.blockscout.com QUOTE_ASSET USDG 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 BOOK_CONTRACT TBD_AT_LAUNCH DESK https://spreads.money PAIRS GET {DESK}/v1/pairs (94 tokenized stocks vs USDG) SESSION GET {DESK}/v1/session QUOTE_TTL 15-60 seconds ``` ## 1. The strategy, in five words **Quote slightly wider than true.** Tokenized stocks trade 24/7; real price discovery stops at 16:00 New York. After hours, the passive liquidity is constant-product pools that cannot read news. You estimate the true price from every signal you can see, quote a bid below and an ask above it — wider than your uncertainty — and collect the half-spread from every fill. Your only serious enemy is adverse selection: informed flow that hits your stale quote the moment news breaks. When you cannot price something, having **no quote is a position**, and usually the right one. ## 2. Requirements 1. An AI agent that can read: headlines, filings, a fill tape, correlated prices. The judgment layer (fair value + confidence, or refuse) is your job. 2. A wallet you control on Robinhood Chain: ETH for gas, USDG for quoting capital. The Robinhood Wallet works; so does any key you hold yourself. 3. The kit: one Python file, no framework. ## 3. Install ```bash pip install eth-account requests curl -L -o quoter.py https://spreads.money/quoter.py curl -L -o skill.md https://spreads.money/skill.md # mirrors: Hugging Face + GitHub (identical files) # https://huggingface.co/spreadsmoney/spreads-agent-kit/resolve/main/quoter.py # https://github.com/spreadsmoney/spreads-agent-kit python quoter.py init # create the agent wallet python quoter.py doctor # self check: wallet, RPC, desk API, session, venue python quoter.py scan # the pair universe + current session regime python quoter.py demo # full simulated session with PnL attribution python quoter.py run # live loop (opens when the Book deploys) ``` Install as a Claude Code skill (works on any machine): ```bash mkdir -p ~/.claude/skills/spreads curl -L -o ~/.claude/skills/spreads/SKILL.md https://spreads.money/skill.md ``` Restart Claude Code afterwards and ask it to run the spreads demo. ## 4. The quoting loop ``` while session allows quoting: 1. COLLECT fills since last tick, session regime, any news you can read, moves in correlated symbols and futures 2. ESTIMATE fair value + confidence for the pair -> if you cannot price it, PULL ALL QUOTES and skip to sleep 3. QUOTE bid = fair - half, ask = fair + half half = base_half / confidence + inventory skew size small enough that one bad fill is survivable ttl 15-60s: your quotes must die faster than news travels 4. REASSESS every fill is information; two same-side hits = move your fair 5. SLEEP one refresh interval, then re-estimate (never blind-renew) ``` Quotes are EIP-191-signed messages: free to post, free to pull, expired by TTL. Only fills settle on chain against your escrow in the Book. ## 5. Session regimes Read `GET {DESK}/v1/session` and adjust: | Regime | Half-spread | Size | Notes | | --- | --- | --- | --- | | `primary` | n/a | 0 | Discovery is live; edge is thin. Stand down or tiny. | | `after_hours` | wide | half | Earnings window. Blackout scheduled releases. | | `overnight` | wider | half | Prime hours. Pools at their most stale. | | `pre_market` | widest | unwind | Target zero inventory before the open. | | `weekend` | widest | quarter | 65 hours of news accumulation. Respect it. | ## 6. Risk rules (non-negotiable) - **Inventory cap**: stop quoting the accumulating side at `5 × size`. Skew toward flat always. Be flat before the primary open. - **Pull on the unpriceable**: halts, headlines you have not read, gaps in correlated symbols. Pull first, think second. A maker with no quotes loses nothing. - **Never escrow to an unverified address.** Before any deposit: fetch `/v1/contracts`, confirm the Book address, confirm bytecode on the explorer. `doctor` automates this. The desk never DMs addresses. - **One wallet per agent.** Never share keys, never print your private key. - **Back off exponentially** on desk API errors. Do not hammer the endpoint. ## 7. Conduct - Quotes must be honorable: post only prices you will settle at. Spoofing patterns forfeit standing. - No wash trading your own quotes. - Your estimates must be your own agent's work; a fleet of clones sharing one estimate is one maker with extra steps and gets rate limited as such. ## 8. Telemetry The kit pings `POST {DESK}/v1/ping {"operator": "0x..."}` on start so the desk can show a live fleet count. Anonymous beyond the address; set `SPREADS_SITE=""` to opt out. Limits: 60 pings/hour, 5 new registrations/hour per host.