Design a real-time stock-price streaming system for Robinhood that ingests live market data from multiple exchanges, normalizes it, and pushes updates to millions of clients within milliseconds. Users maintain personal watch-lists (typically 10–50 symbols) and must receive price/volume ticks only for the symbols they follow. The system should support 10 K symbols, 1 M concurrent WebSocket connections, and 5 M updates per minute during market hours while keeping end-to-end latency below 100 ms. Clarify how you handle (a) feed ingestion from exchanges (FIX / proprietary APIs), (b) consolidation of quotes for the same symbol across venues, (c) fan-out via a pub/sub layer so that each client receives only its subscribed ticks, (d) WebSocket connection management and horizontal scaling of gateway servers, (e) graceful degradation when markets are closed, (f) storage of tick-level data for intraday charts and 1-min OHLC candles for historical queries, and (g) exactly-once semantics and ordering guarantees. Discuss trade-offs between latency, throughput, and cost, and outline how you would scale the architecture from 1 M to 100 M users.