{"slug":"when-do-index-funds-trade","qid":"intraday_path","label":"intraday_path","post_title":"when-do-index-funds-trade","post_url":"/blog/when-do-index-funds-trade#q-intraday_path","columns":["et_time","voo_change_pct","qqq_change_pct"],"rows":[{"et_time":"04:00","voo_change_pct":-0.02,"qqq_change_pct":-0.02},{"et_time":"04:30","voo_change_pct":-0.05,"qqq_change_pct":-0.04},{"et_time":"05:00","voo_change_pct":-0.09,"qqq_change_pct":-0.07},{"et_time":"05:30","voo_change_pct":0.15,"qqq_change_pct":0.17},{"et_time":"06:00","voo_change_pct":0.17,"qqq_change_pct":0.24},{"et_time":"06:30","voo_change_pct":0.28,"qqq_change_pct":0.37},{"et_time":"07:00","voo_change_pct":0.31,"qqq_change_pct":0.41},{"et_time":"07:30","voo_change_pct":0.35,"qqq_change_pct":0.45},{"et_time":"08:00","voo_change_pct":0.37,"qqq_change_pct":0.45},{"et_time":"08:30","voo_change_pct":0.44,"qqq_change_pct":0.5},{"et_time":"09:00","voo_change_pct":0.4,"qqq_change_pct":0.45},{"et_time":"09:30","voo_change_pct":0.32,"qqq_change_pct":0.49},{"et_time":"10:00","voo_change_pct":0.05,"qqq_change_pct":0.15},{"et_time":"10:30","voo_change_pct":-0.1,"qqq_change_pct":-0.15},{"et_time":"11:00","voo_change_pct":0.04,"qqq_change_pct":0.02},{"et_time":"11:30","voo_change_pct":0,"qqq_change_pct":-0.03},{"et_time":"12:00","voo_change_pct":0.06,"qqq_change_pct":0},{"et_time":"12:30","voo_change_pct":0.07,"qqq_change_pct":-0.01},{"et_time":"13:00","voo_change_pct":-0.04,"qqq_change_pct":-0.1},{"et_time":"13:30","voo_change_pct":0.02,"qqq_change_pct":-0.07},{"et_time":"14:00","voo_change_pct":0.07,"qqq_change_pct":-0.02},{"et_time":"14:30","voo_change_pct":0.05,"qqq_change_pct":-0.11},{"et_time":"15:00","voo_change_pct":-0.02,"qqq_change_pct":-0.16},{"et_time":"15:30","voo_change_pct":0.03,"qqq_change_pct":-0.13},{"et_time":"16:00","voo_change_pct":0.12,"qqq_change_pct":-0.05},{"et_time":"16:30","voo_change_pct":0.12,"qqq_change_pct":-0.02},{"et_time":"17:00","voo_change_pct":0.13,"qqq_change_pct":-0.08},{"et_time":"17:30","voo_change_pct":0.09,"qqq_change_pct":-0.1},{"et_time":"18:00","voo_change_pct":0.11,"qqq_change_pct":-0.08},{"et_time":"18:30","voo_change_pct":0.16,"qqq_change_pct":-0.02},{"et_time":"19:00","voo_change_pct":0.12,"qqq_change_pct":-0.06},{"et_time":"19:30","voo_change_pct":0.14,"qqq_change_pct":-0.04}],"shape":"series","sql":"WITH\n    bars AS\n    (\n        SELECT\n            ticker,\n            toTimeZone(window_start, 'America/New_York') AS et,\n            toFloat64(close)                             AS px\n        FROM global_markets.delayed_stocks_minute_aggs\n        WHERE ticker IN ('VOO', 'QQQ')\n          AND window_start >= toDateTime('2026-09-15 04:00:00')\n          AND window_start <  toDateTime('2026-09-16 04:00:00')\n    ),\n    firsts AS\n    (\n        SELECT\n            ticker,\n            argMin(px, et) AS open_px\n        FROM bars\n        GROUP BY ticker\n    )\nSELECT\n    formatDateTime(toStartOfInterval(b.et, INTERVAL 30 MINUTE), '%H:%i')                                  AS et_time,\n    round(100 * (argMaxIf(b.px, b.et, b.ticker = 'VOO') / anyIf(f.open_px, f.ticker = 'VOO') - 1), 2)     AS voo_change_pct,\n    round(100 * (argMaxIf(b.px, b.et, b.ticker = 'QQQ') / anyIf(f.open_px, f.ticker = 'QQQ') - 1), 2)     AS qqq_change_pct\nFROM bars AS b\nINNER JOIN firsts AS f ON f.ticker = b.ticker\nGROUP BY et_time\nHAVING countIf(b.ticker = 'VOO') > 0\n   AND countIf(b.ticker = 'QQQ') > 0\nORDER BY et_time","computed_at":"2026-09-26T15:12:28.687545+00:00","elapsed":0.006035694}