{"slug":"locked-and-crossed-markets","qid":"session_receipt","label":"The receipts: locked vs crossed totals, and the rate by session stretch (premarket, open, noon, close, ET)","post_title":"Locked and Crossed Markets, Explained With Data","post_url":"/blog/locked-and-crossed-markets#q-session_receipt","columns":["locked_k","crossed_k","locked_per_crossed","premarket_per_10k","opening_half_hour_per_10k","midday_hour_per_10k","closing_half_hour_per_10k","close_to_open_ratio","close_to_midday_ratio","close_to_premarket_ratio"],"rows":[{"locked_k":246.9,"crossed_k":17,"locked_per_crossed":14.5,"premarket_per_10k":25.5,"opening_half_hour_per_10k":36.9,"midday_hour_per_10k":54.5,"closing_half_hour_per_10k":103.1,"close_to_open_ratio":2.8,"close_to_midday_ratio":1.9,"close_to_premarket_ratio":4}],"shape":"scalar","sql":"SELECT\n    round(countIf(is_locked) / 1e3, 1) AS locked_k,\n    round(countIf(is_crossed) / 1e3, 1) AS crossed_k,\n    round(countIf(is_locked) / toFloat64(greatest(countIf(is_crossed), 1)), 1) AS locked_per_crossed,\n    round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569)) * 1e4, 1) AS premarket_per_10k,\n    round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599)) * 1e4, 1) AS opening_half_hour_per_10k,\n    round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779)) * 1e4, 1) AS midday_hour_per_10k,\n    round(countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)) * 1e4, 1) AS closing_half_hour_per_10k,\n    round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))\n        / (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 570 AND 599) / toFloat64(countIf(et_minute BETWEEN 570 AND 599))), 1) AS close_to_open_ratio,\n    round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))\n        / (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 720 AND 779) / toFloat64(countIf(et_minute BETWEEN 720 AND 779))), 1) AS close_to_midday_ratio,\n    round((countIf((is_locked OR is_crossed) AND et_minute BETWEEN 930 AND 959) / toFloat64(countIf(et_minute BETWEEN 930 AND 959)))\n        / (countIf((is_locked OR is_crossed) AND et_minute BETWEEN 240 AND 569) / toFloat64(countIf(et_minute BETWEEN 240 AND 569))), 1) AS close_to_premarket_ratio\nFROM (\n    SELECT\n        bid_price = ask_price AND bid_price > 0 AS is_locked,\n        bid_price > ask_price AND ask_price > 0 AS is_crossed,\n        toHour(toTimeZone(sip_timestamp, 'America/New_York')) * 60 + toMinute(toTimeZone(sip_timestamp, 'America/New_York')) AS et_minute\n    FROM global_markets.cache_stocks_quotes\n    WHERE 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)\n)","computed_at":"2026-08-22T04:15:58.813090+00:00","elapsed":9.205724234}