{"slug":"locked-and-crossed-markets","qid":"clock_buckets","label":"Locked-or-crossed records per 10,000 updates by 30-minute ET bucket, checked set, extended hours included","post_title":"Locked and Crossed Markets, Explained With Data","post_url":"/blog/locked-and-crossed-markets#q-clock_buckets","columns":["et_time","locked_or_crossed_per_10k","updates_m"],"rows":[{"et_time":"04:00","locked_or_crossed_per_10k":14.5,"updates_m":0.47},{"et_time":"04:30","locked_or_crossed_per_10k":5.7,"updates_m":0.29},{"et_time":"05:00","locked_or_crossed_per_10k":8.4,"updates_m":0.32},{"et_time":"05:30","locked_or_crossed_per_10k":8.9,"updates_m":0.28},{"et_time":"06:00","locked_or_crossed_per_10k":8.8,"updates_m":0.25},{"et_time":"06:30","locked_or_crossed_per_10k":17.6,"updates_m":0.26},{"et_time":"07:00","locked_or_crossed_per_10k":38.6,"updates_m":0.26},{"et_time":"07:30","locked_or_crossed_per_10k":40.2,"updates_m":0.25},{"et_time":"08:00","locked_or_crossed_per_10k":45.5,"updates_m":0.42},{"et_time":"08:30","locked_or_crossed_per_10k":21.6,"updates_m":0.64},{"et_time":"09:00","locked_or_crossed_per_10k":54.8,"updates_m":0.49},{"et_time":"09:30","locked_or_crossed_per_10k":36.9,"updates_m":8.66},{"et_time":"10:00","locked_or_crossed_per_10k":42.9,"updates_m":6.25},{"et_time":"10:30","locked_or_crossed_per_10k":47.9,"updates_m":4.67},{"et_time":"11:00","locked_or_crossed_per_10k":48.3,"updates_m":3.98},{"et_time":"11:30","locked_or_crossed_per_10k":46.7,"updates_m":3.32},{"et_time":"12:00","locked_or_crossed_per_10k":51.6,"updates_m":2.36},{"et_time":"12:30","locked_or_crossed_per_10k":57.8,"updates_m":2.01},{"et_time":"13:00","locked_or_crossed_per_10k":64,"updates_m":2},{"et_time":"13:30","locked_or_crossed_per_10k":66.6,"updates_m":1.83},{"et_time":"14:00","locked_or_crossed_per_10k":63.2,"updates_m":1.9},{"et_time":"14:30","locked_or_crossed_per_10k":77.1,"updates_m":1.7},{"et_time":"15:00","locked_or_crossed_per_10k":89.4,"updates_m":1.92},{"et_time":"15:30","locked_or_crossed_per_10k":103.1,"updates_m":3.61},{"et_time":"16:00","locked_or_crossed_per_10k":170.1,"updates_m":0.39},{"et_time":"16:30","locked_or_crossed_per_10k":148.1,"updates_m":0.13},{"et_time":"17:00","locked_or_crossed_per_10k":76.7,"updates_m":0.01},{"et_time":"17:30","locked_or_crossed_per_10k":113.8,"updates_m":0.01},{"et_time":"18:00","locked_or_crossed_per_10k":50.2,"updates_m":0.08},{"et_time":"18:30","locked_or_crossed_per_10k":27.4,"updates_m":0.05},{"et_time":"19:00","locked_or_crossed_per_10k":29,"updates_m":0.05},{"et_time":"19:30","locked_or_crossed_per_10k":37.6,"updates_m":0.08}],"shape":"series","sql":"SELECT formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,\n       round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,\n       round(count() / 1e6, 2) AS updates_m\nFROM global_markets.cache_stocks_quotes\nWHERE ticker IN ('SPY', 'QQQ', 'AAPL', 'NVDA', 'MSFT', 'TSLA', 'KO', 'AMD', 'NATH', 'SENEA')\n  AND sip_timestamp >= toDateTime(today() - 10)\n  AND sip_timestamp < toDateTime(today() - 3)\nGROUP BY et_time\nHAVING et_time >= '04:00' AND et_time < '20:00'\nORDER BY et_time","computed_at":"2026-08-22T04:15:49.505450+00:00","elapsed":11.606853272}