{"slug":"dse-last-trade-price-vs-closing-price","qid":"gap_distribution","label":"gap_distribution","post_title":"dse-last-trade-price-vs-closing-price","post_url":"/blog/lang/bn/dse-last-trade-price-vs-closing-price#q-gap_distribution","columns":["gap_bucket","ticker_sessions","share_of_sessions_pct"],"rows":[{"gap_bucket":"0.0 to 0.5 bps","ticker_sessions":107,"share_of_sessions_pct":27.9},{"gap_bucket":"0.5 to 2 bps","ticker_sessions":146,"share_of_sessions_pct":38},{"gap_bucket":"2 to 5 bps","ticker_sessions":90,"share_of_sessions_pct":23.4},{"gap_bucket":"5 to 10 bps","ticker_sessions":26,"share_of_sessions_pct":6.8},{"gap_bucket":"10 to 25 bps","ticker_sessions":14,"share_of_sessions_pct":3.6},{"gap_bucket":"25 bps and up","ticker_sessions":1,"share_of_sessions_pct":0.3}],"shape":"ranking","sql":"WITH\n    last_prints AS\n    (\n        SELECT\n            ticker,\n            toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,\n            argMax(close, window_start)                          AS last_regular_print\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')\n          AND window_start >= '2026-07-01 00:00:00'\n          AND window_start <  '2026-10-01 00:00:00'\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570\n          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n               + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960\n        GROUP BY ticker, session_date\n    ),\n    daily_bars AS\n    (\n        SELECT\n            ticker,\n            date       AS session_date,\n            any(close) AS daily_bar_close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')\n          AND date >= '2026-07-01'\n          AND date <  '2026-10-01'\n        GROUP BY ticker, session_date\n    ),\n    gaps AS\n    (\n        SELECT\n            l.session_date AS session_date,\n            abs(toFloat64(d.daily_bar_close) / toFloat64(l.last_regular_print) - 1) * 10000 AS gap_bps\n        FROM last_prints AS l\n        INNER JOIN daily_bars AS d\n            ON l.ticker = d.ticker AND l.session_date = d.session_date\n        WHERE toFloat64(l.last_regular_print) > 0\n    ),\n    totals AS\n    (\n        SELECT count() AS all_rows\n        FROM gaps\n    )\nSELECT\n    multiIf(g.gap_bps < 0.5, '0.0 to 0.5 bps',\n            g.gap_bps < 2,   '0.5 to 2 bps',\n            g.gap_bps < 5,   '2 to 5 bps',\n            g.gap_bps < 10,  '5 to 10 bps',\n            g.gap_bps < 25,  '10 to 25 bps',\n                             '25 bps and up') AS gap_bucket,\n    count()                                   AS ticker_sessions,\n    round(100 * count() / any(t.all_rows), 1) AS share_of_sessions_pct\nFROM gaps AS g\nCROSS JOIN totals AS t\nGROUP BY gap_bucket\nORDER BY min(g.gap_bps)","computed_at":"2026-10-08T15:36:53.575443+00:00","elapsed":0.005502691}