{"slug":"paper-trading-before-real-money","qid":"fill_cost_ladder","label":"What a real fill costs: median quoted spread in bps of the midpoint, regular hours, recent completed sessions","post_title":"Paper Trading Before Real Money","post_url":"/blog/paper-trading-before-real-money#q-fill_cost_ladder","columns":["ticker","typical_spread_bps","typical_spread_cents","quote_updates_m"],"rows":[{"ticker":"SPY","typical_spread_bps":0.26,"typical_spread_cents":2,"quote_updates_m":9.3},{"ticker":"NVDA","typical_spread_bps":0.89,"typical_spread_cents":2,"quote_updates_m":7.6},{"ticker":"AAPL","typical_spread_bps":0.98,"typical_spread_cents":3,"quote_updates_m":3.9},{"ticker":"MSFT","typical_spread_bps":1.8,"typical_spread_cents":9,"quote_updates_m":1.4},{"ticker":"TSLA","typical_spread_bps":1.99,"typical_spread_cents":7,"quote_updates_m":2.9},{"ticker":"F","typical_spread_bps":7.16,"typical_spread_cents":1,"quote_updates_m":0.5}],"shape":"ranking","sql":"SELECT ticker,\n       round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS typical_spread_bps,\n       round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price), bid_price > 0 AND ask_price > bid_price) * 100, 1) AS typical_spread_cents,\n       round(count() / 1e6, 1) AS quote_updates_m\nFROM global_markets.cache_stocks_quotes\nWHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'F')\n  AND sip_timestamp >= toDateTime(today() - 10)\n  AND sip_timestamp < toDateTime(today() - 3)\n  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199\nGROUP BY ticker\nORDER BY typical_spread_bps","computed_at":"2026-08-22T04:18:08.114692+00:00","elapsed":11.414247739}