{"slug":"how-much-does-it-cost-to-trade-options","qid":"quote_quality","label":"SPY options quote quality: valid, one-sided, and locked/crossed records","post_title":"How Much Does It Cost to Trade Options?","post_url":"/blog/how-much-does-it-cost-to-trade-options#q-quote_quality","columns":["total_updates","valid_two_sided","valid_pct","one_sided","one_sided_pct","locked_or_crossed","locked_or_crossed_pct"],"rows":[{"total_updates":463195128,"valid_two_sided":462934241,"valid_pct":99.94,"one_sided":260716,"one_sided_pct":0.06,"locked_or_crossed":171,"locked_or_crossed_pct":0}],"shape":"scalar","sql":"WITH opts AS (\n    SELECT\n        bid_price,\n        ask_price\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)\nSELECT\n    count() AS total_updates,\n    countIf(bid_price > 0 AND ask_price > 0 AND ask_price > bid_price) AS valid_two_sided,\n    round(100.0 * countIf(bid_price > 0 AND ask_price > 0 AND ask_price > bid_price) / count(), 2) AS valid_pct,\n    countIf(bid_price = 0 OR ask_price = 0) AS one_sided,\n    round(100.0 * countIf(bid_price = 0 OR ask_price = 0) / count(), 2) AS one_sided_pct,\n    countIf(bid_price > 0 AND ask_price > 0 AND ask_price <= bid_price) AS locked_or_crossed,\n    round(100.0 * countIf(bid_price > 0 AND ask_price > 0 AND ask_price <= bid_price) / count(), 2) AS locked_or_crossed_pct\nFROM opts","computed_at":"2026-08-14T14:21:37.205999+00:00","elapsed":0.00373208}