{"slug":"what-it-costs-to-trade-a-stock","qid":"cost_ladder","label":"The cost-to-trade ladder: median quoted spread in bps of the midpoint, regular hours, recent completed sessions","post_title":"What It Costs to Trade a Stock, Measured","post_url":"/blog/what-it-costs-to-trade-a-stock#q-cost_ladder","columns":["ticker","typical_spread_bps","typical_spread_cents","quote_updates_m","pct_updates_excluded"],"rows":[{"ticker":"SPY","typical_spread_bps":0.26,"typical_spread_cents":2,"quote_updates_m":9.3,"pct_updates_excluded":0.64},{"ticker":"QQQ","typical_spread_bps":0.28,"typical_spread_cents":2,"quote_updates_m":15.7,"pct_updates_excluded":0.43},{"ticker":"IWM","typical_spread_bps":0.33,"typical_spread_cents":1,"quote_updates_m":9.2,"pct_updates_excluded":1.49},{"ticker":"NVDA","typical_spread_bps":0.89,"typical_spread_cents":2,"quote_updates_m":7.6,"pct_updates_excluded":0.74},{"ticker":"AAPL","typical_spread_bps":0.98,"typical_spread_cents":3,"quote_updates_m":3.9,"pct_updates_excluded":0.52},{"ticker":"KO","typical_spread_bps":1.15,"typical_spread_cents":1,"quote_updates_m":1.7,"pct_updates_excluded":1.55},{"ticker":"MSFT","typical_spread_bps":1.8,"typical_spread_cents":9,"quote_updates_m":1.4,"pct_updates_excluded":0.18},{"ticker":"DIS","typical_spread_bps":1.92,"typical_spread_cents":2,"quote_updates_m":0.9,"pct_updates_excluded":0.66},{"ticker":"TSLA","typical_spread_bps":1.99,"typical_spread_cents":7,"quote_updates_m":2.9,"pct_updates_excluded":0.38},{"ticker":"SOXS","typical_spread_bps":2.55,"typical_spread_cents":1,"quote_updates_m":9.4,"pct_updates_excluded":2.38},{"ticker":"AMD","typical_spread_bps":4.7,"typical_spread_cents":23,"quote_updates_m":1.7,"pct_updates_excluded":0.1},{"ticker":"F","typical_spread_bps":7.16,"typical_spread_cents":1,"quote_updates_m":0.5,"pct_updates_excluded":4.56}],"shape":"table","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,\n       round(100 * countIf(bid_price <= 0 OR ask_price <= 0 OR ask_price <= bid_price) / count(), 2) AS pct_updates_excluded\nFROM global_markets.cache_stocks_quotes\nWHERE ticker IN ('SPY', 'QQQ', 'IWM', 'AAPL', 'MSFT', 'NVDA', 'AMD', 'TSLA', 'KO', 'DIS', 'F', 'SOXS')\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:35:27.289686+00:00","elapsed":23.595472045}