{"slug":"macro-picture-entering-h2-2026","qid":"spy_monthly","label":"SPY month by month in H1 2026: regular-hours open-to-close return per month","post_title":"Macro Picture Entering H2 2026, With Receipts","post_url":"/blog/macro-picture-entering-h2-2026#q-spy_monthly","columns":["period_start","month_open","month_close","spy_return_pct"],"rows":[{"period_start":"2026-01-01","month_open":685.71,"month_close":691.85,"spy_return_pct":0.9},{"period_start":"2026-02-01","month_open":689.58,"month_close":686.23,"spy_return_pct":-0.49},{"period_start":"2026-03-01","month_open":678.7,"month_close":650.24,"spy_return_pct":-4.19},{"period_start":"2026-04-01","month_open":653.9,"month_close":718.43,"spy_return_pct":9.87},{"period_start":"2026-05-01","month_open":721.25,"month_close":756.4,"spy_return_pct":4.87},{"period_start":"2026-06-01","month_open":755.36,"month_close":746.32,"spy_return_pct":-1.2}],"shape":"ranking","sql":"WITH bars AS (\n    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS m,\n           window_start, open, close\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND window_start >= toDateTime('2026-01-01 00:00:00')\n      AND window_start < toDateTime('2026-07-01 00:00:00')\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n)\nSELECT toString(m) AS period_start,\n       round(argMin(toFloat64(open), window_start), 2) AS month_open,\n       round(argMax(toFloat64(close), window_start), 2) AS month_close,\n       round((argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100, 2) AS spy_return_pct\nFROM bars\nGROUP BY m\nORDER BY m","computed_at":"2026-08-11T14:23:39.496015+00:00","elapsed":0.002951615}