{"slug":"the-10-am-rule-in-stocks","qid":"open_spread_trace","label":"open_spread_trace","post_title":"the-10-am-rule-in-stocks","post_url":"/blog/the-10-am-rule-in-stocks#q-open_spread_trace","columns":["et_time","spy_spread_bps","aapl_spread_bps"],"rows":[{"et_time":"09:30","spy_spread_bps":0.44,"aapl_spread_bps":2.71},{"et_time":"09:35","spy_spread_bps":0.44,"aapl_spread_bps":2.31},{"et_time":"09:40","spy_spread_bps":0.44,"aapl_spread_bps":2.32},{"et_time":"09:45","spy_spread_bps":0.44,"aapl_spread_bps":2.71},{"et_time":"09:50","spy_spread_bps":0.44,"aapl_spread_bps":2.32},{"et_time":"09:55","spy_spread_bps":0.3,"aapl_spread_bps":2.32},{"et_time":"10:00","spy_spread_bps":0.44,"aapl_spread_bps":1.94},{"et_time":"10:05","spy_spread_bps":0.44,"aapl_spread_bps":1.93},{"et_time":"10:10","spy_spread_bps":0.3,"aapl_spread_bps":1.54},{"et_time":"10:15","spy_spread_bps":0.3,"aapl_spread_bps":1.54},{"et_time":"10:20","spy_spread_bps":0.3,"aapl_spread_bps":1.54},{"et_time":"10:25","spy_spread_bps":0.3,"aapl_spread_bps":1.15}],"shape":"series","sql":"SELECT\n    formatDateTime(toStartOfFiveMinutes(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,\n    round(quantileDeterministicIf(0.5)(\n        10000 * (toFloat64(ask_price) - toFloat64(bid_price))\n              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),\n        toUInt64(sequence_number),\n        ticker = 'SPY'), 2)  AS spy_spread_bps,\n    round(quantileDeterministicIf(0.5)(\n        10000 * (toFloat64(ask_price) - toFloat64(bid_price))\n              / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2),\n        toUInt64(sequence_number),\n        ticker = 'AAPL'), 2) AS aapl_spread_bps\nFROM global_markets.cache_stocks_quotes\nWHERE ticker IN ('SPY', 'AAPL')\n  AND sip_timestamp >= '2026-03-10 13:29:00'\n  AND sip_timestamp <  '2026-03-10 14:31:00'\n  AND bid_price > 0\n  AND ask_price > bid_price\n  AND sequence_number >= 0\n  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60\n       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) >= 570\n  AND (toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60\n       + toMinute(toTimeZone(sip_timestamp, 'America/New_York'))) < 630\nGROUP BY et_time\nHAVING countIf(ticker = 'SPY') > 0\n   AND countIf(ticker = 'AAPL') > 0\nORDER BY et_time","computed_at":"2026-09-26T15:10:54.235212+00:00","elapsed":0.004103897}