{"slug":"market-recap-week-2026-07-20","qid":"sessions_span","label":"Session verification: sessions, bars, holiday rows, up and down closes, next closure","post_title":"Market Recap: Week of July 20, 2026","post_url":"/blog/market-recap-week-2026-07-20#q-sessions_span","columns":["sessions_in_week","first_session","last_session","regular_bars_in_week","holiday_rows_in_week","up_sessions","down_sessions","next_closure_date","next_closure_name"],"rows":[{"sessions_in_week":5,"first_session":"2026-07-20","last_session":"2026-07-24","regular_bars_in_week":1950,"holiday_rows_in_week":0,"up_sessions":2,"down_sessions":3,"next_closure_date":"2026-09-07","next_closure_name":"Labor Day"}],"shape":"scalar","sql":"WITH spy AS (\n    SELECT d, c, lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS p\n    FROM (\n        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,\n               argMax(toFloat64(close), window_start) AS c\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker = 'SPY'\n          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')\n            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))\n          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199\n        GROUP BY d\n    )\n)\nSELECT\n    uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions_in_week,\n    toString(min(toDate(toTimeZone(window_start, 'America/New_York')))) AS first_session,\n    toString(max(toDate(toTimeZone(window_start, 'America/New_York')))) AS last_session,\n    count() AS regular_bars_in_week,\n    (SELECT count() FROM global_markets.stocks_market_holidays WHERE date >= '2026-07-20' AND date <= '2026-07-24') AS holiday_rows_in_week,\n    (SELECT countIf(c > p) FROM spy WHERE d >= '2026-07-20') AS up_sessions,\n    (SELECT countIf(c < p) FROM spy WHERE d >= '2026-07-20') AS down_sessions,\n    (SELECT toString(min(date)) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_date,\n    (SELECT argMin(name, date) FROM global_markets.stocks_market_holidays WHERE date > '2026-07-24' AND date <= '2026-12-31' AND status = 'closed') AS next_closure_name\nFROM global_markets.delayed_stocks_minute_aggs\nWHERE ticker = 'SPY'\n  AND window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'\n  AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199","computed_at":"2026-08-12T14:47:57.763281+00:00","elapsed":0.004676349}