{"slug":"market-recap-2026-07-02","qid":"baseline_trailing_rank","label":"SPY and QQQ ranked against the trailing month of sessions (rank 1 = biggest absolute move)","post_title":"Market Recap: July 2, 2026, The Day in Numbers","post_url":"/blog/market-recap-2026-07-02#q-baseline_trailing_rank","columns":["spy_open_to_close_pct","spy_abs_move_rank","spy_sessions_compared","qqq_close_over_close_pct","qqq_abs_move_rank","qqq_sessions_compared","first_session"],"rows":[{"spy_open_to_close_pct":-0.35,"spy_abs_move_rank":15,"spy_sessions_compared":22,"qqq_close_over_close_pct":-1.71,"qqq_abs_move_rank":9,"qqq_sessions_compared":21,"first_session":"2026-06-02"}],"shape":"scalar","sql":"WITH per_day AS (\n    SELECT ticker,\n           toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n           (argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS oc_pct,\n           argMax(toFloat64(close), window_start) AS rth_close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'QQQ')\n      AND window_start >= toDateTime('2026-06-02 00:00:00')\n      AND window_start < toDateTime('2026-07-03 00:00:00')\n      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199\n    GROUP BY ticker, d\n),\nwith_prev AS (\n    SELECT ticker, d, oc_pct,\n           lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) AS prev_close,\n           (rth_close / lagInFrame(rth_close) OVER (PARTITION BY ticker ORDER BY d) - 1) * 100 AS cc_pct\n    FROM per_day\n)\nSELECT\n    round(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02')), 2) AS spy_open_to_close_pct,\n    arrayCount(x -> x > abs(anyIf(oc_pct, ticker = 'SPY' AND d = toDate('2026-07-02'))),\n               groupArrayIf(abs(oc_pct), ticker = 'SPY' AND d != toDate('2026-07-02'))) + 1 AS spy_abs_move_rank,\n    countIf(ticker = 'SPY') AS spy_sessions_compared,\n    round(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02')), 2) AS qqq_close_over_close_pct,\n    arrayCount(x -> x > abs(anyIf(cc_pct, ticker = 'QQQ' AND d = toDate('2026-07-02'))),\n               groupArrayIf(abs(cc_pct), ticker = 'QQQ' AND d != toDate('2026-07-02') AND isFinite(cc_pct) AND prev_close > 0)) + 1 AS qqq_abs_move_rank,\n    countIf(ticker = 'QQQ' AND isFinite(cc_pct) AND prev_close > 0) AS qqq_sessions_compared,\n    toString(minIf(d, ticker = 'SPY')) AS first_session\nFROM with_prev","computed_at":"2026-07-26T05:44:43.560764+00:00","elapsed":0.193396886}