{"slug":"open-source-trading-terminal-for-python","qid":"spread_compare","label":"spread_compare","post_title":"open-source-trading-terminal-for-python","post_url":"/blog/open-source-trading-terminal-for-python#q-spread_compare","columns":["symbol","median_spread_bps","p90_spread_bps","quote_millions"],"rows":[{"symbol":"SPY","median_spread_bps":0.27,"p90_spread_bps":0.4,"quote_millions":0.44},{"symbol":"KO","median_spread_bps":1.23,"p90_spread_bps":2.47,"quote_millions":0.04},{"symbol":"AAPL","median_spread_bps":1.35,"p90_spread_bps":2.03,"quote_millions":0.14},{"symbol":"NVDA","median_spread_bps":1.43,"p90_spread_bps":1.44,"quote_millions":0.3},{"symbol":"MSFT","median_spread_bps":1.76,"p90_spread_bps":3.26,"quote_millions":0.05},{"symbol":"NVR","median_spread_bps":75.75,"p90_spread_bps":92.25,"quote_millions":0}],"shape":"ranking","sql":"SELECT\n    ticker AS symbol,\n    round(quantileDeterministic(0.5)(spread_bps, toUInt64(sequence_number)), 2) AS median_spread_bps,\n    round(quantileDeterministic(0.9)(spread_bps, toUInt64(sequence_number)), 2) AS p90_spread_bps,\n    round(count() / 1e6, 2)                                           AS quote_millions\nFROM\n(\n    SELECT\n        ticker,\n        sequence_number,\n        (toFloat64(ask_price) - toFloat64(bid_price))\n            / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps\n    FROM global_markets.cache_stocks_quotes\n    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'NVR')\n      AND sip_timestamp >= '2026-06-15 14:00:00'\n      AND sip_timestamp <  '2026-06-15 14:30:00'\n      AND bid_price > 0\n      AND ask_price > bid_price\n)\nGROUP BY ticker\nORDER BY median_spread_bps","computed_at":"2026-10-03T16:02:48.194558+00:00","elapsed":0.002972265}