Consolidated quote stream
Synthetic best bid and offer across every venue, with aggregate depth.
rhrpc.v1.Tape/StreamQuotesWhat it carries
When liquidity is split across an AMM, a propAMM and two perp venues, no single venue's quote is meaningful on its own. This stream publishes the best bid and offer across all of them, which venue holds each side, and aggregate size within 10, 50 and 100 basis points of the consolidated mid.
Key fields
Delivery semantics
Emitted on change. Supply min_move_bps to receive an update only when the consolidated mid moves by at least that much.
Volume: One message per consolidated quote change, per instrument. Every record carries a dedup_key and a monotonic sequence, so at-least-once delivery is deterministic to deduplicate.
Server-side filters
- token_symbols
- min_move_bps
Filters are evaluated before bytes leave us, so a narrow subscription costs you nothing in bandwidth or parse time.
Subscribe
import { RobinhoodRPC } from "@robinhoodrpc/sdk"; const client = new RobinhoodRPC({ apiKey: process.env.RHRPC_KEY! }); // Backfill then live: omit toBlock to tail indefinitely.for await (const msg of client.quotes.stream({ fromBlock: 4_200_000,})) { handle(msg);}Sample message
{ "token_symbol": "NVDA", "best_bid": "182.9100", "best_bid_venue": "VENUE_RIALTO", "best_ask": "183.0400", "best_ask_venue": "VENUE_UNISWAP", "mid": "182.9750", "spread_bps": "7.1", "depth_10bps": "412885.00", "session": "SESSION_REGULAR", "underlying_market_open": true}Correctness notes
Prices in this stream are already multiplier-adjusted where the field says so. Robinhood’s own REST endpoint returns raw underlying values and Chainlink’s feed returns multiplier-adjusted ones; mixing them without applying the multiplier — or applying it twice — is the most common source of silent error on this chain.
The full set of rules is published at /docs/equities/correctness-rules.