{"slug":"nse-pre-open-session-explained","qid":"us_open_gap","label":"us_open_gap","post_title":"nse-pre-open-session-explained","post_url":"/blog/lang/mr/nse-pre-open-session-explained#q-us_open_gap","columns":["ticker","session_count","gap_over_0_5_pct","gap_over_1_pct","avg_gap_pct"],"rows":[{"ticker":"NVDA","session_count":500,"gap_over_0_5_pct":69.8,"gap_over_1_pct":47.4,"avg_gap_pct":1.22},{"ticker":"AMZN","session_count":500,"gap_over_0_5_pct":54.4,"gap_over_1_pct":30.2,"avg_gap_pct":0.93},{"ticker":"XOM","session_count":500,"gap_over_0_5_pct":49.4,"gap_over_1_pct":21.4,"avg_gap_pct":0.69},{"ticker":"MSFT","session_count":500,"gap_over_0_5_pct":48.4,"gap_over_1_pct":21.2,"avg_gap_pct":0.73},{"ticker":"AAPL","session_count":500,"gap_over_0_5_pct":39.6,"gap_over_1_pct":16.2,"avg_gap_pct":0.63},{"ticker":"JPM","session_count":500,"gap_over_0_5_pct":39.8,"gap_over_1_pct":14.8,"avg_gap_pct":0.57},{"ticker":"JNJ","session_count":500,"gap_over_0_5_pct":28.8,"gap_over_1_pct":9.2,"avg_gap_pct":0.44},{"ticker":"KO","session_count":500,"gap_over_0_5_pct":26.4,"gap_over_1_pct":8.4,"avg_gap_pct":0.43}],"shape":"table","sql":"WITH bars AS\n(\n    SELECT\n        ticker,\n        date,\n        argMax(toFloat64(open), _ingest_time)  AS open_px,\n        argMax(toFloat64(close), _ingest_time) AS close_px\n    FROM global_markets.stocks_daily_aggs\n    WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'AMZN', 'JPM', 'JNJ', 'KO', 'XOM')\n      AND date >= '2024-10-01'\n      AND date <  '2026-10-01'\n    GROUP BY ticker, date\n),\ngaps AS\n(\n    SELECT\n        ticker,\n        date,\n        open_px,\n        lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY date ASC\n            ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close\n    FROM bars\n)\nSELECT\n    ticker,\n    count()                                                                  AS session_count,\n    round(100 * countIf(abs(open_px / prev_close - 1) > 0.005) / count(), 1) AS gap_over_0_5_pct,\n    round(100 * countIf(abs(open_px / prev_close - 1) > 0.01) / count(), 1)  AS gap_over_1_pct,\n    round(100 * avg(abs(open_px / prev_close - 1)), 2)                       AS avg_gap_pct\nFROM gaps\nWHERE prev_close > 0\n  AND open_px > 0\nGROUP BY ticker\nORDER BY gap_over_1_pct DESC","computed_at":"2026-10-09T16:04:12.065490+00:00","elapsed":0.004223238}