{"slug":"how-much-does-it-cost-to-trade-options","qid":"spy_spread_distribution","label":"SPY options quoted-spread distribution: percentiles in basis points","post_title":"How Much Does It Cost to Trade Options?","post_url":"/blog/how-much-does-it-cost-to-trade-options#q-spy_spread_distribution","columns":["p10_bps","p25_bps","median_bps","p75_bps","p90_bps","valid_two_sided_quotes"],"rows":[{"p10_bps":35.51,"p25_bps":49.65,"median_bps":80.97,"p75_bps":147.12,"p90_bps":316.51,"valid_two_sided_quotes":462934241}],"shape":"scalar","sql":"WITH opts AS (\n    SELECT\n        (toFloat64(ask_price) - toFloat64(bid_price)) / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000 AS spread_bps,\n        cityHash64(ticker, sip_timestamp) AS det\n    FROM global_markets.cache_options_quotes\n    WHERE sip_timestamp >= '2026-07-02 13:30:00' AND sip_timestamp < '2026-07-02 20:00:00'\n      AND ticker >= 'O:SPY26' AND ticker < 'O:SPY27'\n      AND bid_price > 0 AND ask_price > 0 AND ask_price > bid_price\n)\nSELECT\n    round(quantileDeterministic(0.10)(spread_bps, det), 2) AS p10_bps,\n    round(quantileDeterministic(0.25)(spread_bps, det), 2) AS p25_bps,\n    round(quantileDeterministic(0.50)(spread_bps, det), 2) AS median_bps,\n    round(quantileDeterministic(0.75)(spread_bps, det), 2) AS p75_bps,\n    round(quantileDeterministic(0.90)(spread_bps, det), 2) AS p90_bps,\n    count() AS valid_two_sided_quotes\nFROM opts","computed_at":"2026-08-14T14:21:36.830992+00:00","elapsed":0.002670797}