{"slug":"market-recap-2026-07-29","qid":"baseline_trailing_rank","label":"SPY day move in trailing context (open-to-close, June 29 through July 29)","post_title":"Market Recap: July 29, 2026, The Day in Numbers","post_url":"/blog/market-recap-2026-07-29#q-baseline_trailing_rank","columns":["spy_open_to_close_pct","spy_abs_move_rank","spy_sessions_compared","first_session"],"rows":[{"spy_open_to_close_pct":-1.41,"spy_abs_move_rank":1,"spy_sessions_compared":22,"first_session":"2026-06-29"}],"shape":"scalar","sql":"SELECT\n    round(anyIf(oc_pct, d = toDate('2026-07-29')), 2) AS spy_open_to_close_pct,\n    arrayCount(x -> x > abs(anyIf(oc_pct, d = toDate('2026-07-29'))), groupArrayIf(abs(oc_pct), d != toDate('2026-07-29'))) + 1 AS spy_abs_move_rank,\n    count() AS spy_sessions_compared,\n    toString(min(d)) AS first_session\nFROM (\n    SELECT 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    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= toDateTime('2026-06-29 13:30:00')\n      AND window_start < toDateTime('2026-07-30 00:00:00')\n      AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199\n    GROUP BY d\n)","computed_at":"2026-08-01T22:47:33.221595+00:00","elapsed":0.002743615}