{"slug":"sector-scorecard-2026-h1","qid":"dollar_migration","label":"Sector ETF dollar volume, Q1 vs Q2 2026: every fund traded less in the recovery quarter","post_title":"Sector Scorecard H1 2026: Winners and Losers","post_url":"/blog/sector-scorecard-2026-h1#q-dollar_migration","columns":["ticker","q1_dollar_bn","q2_dollar_bn","q2_vs_q1_pct"],"rows":[{"ticker":"XLK","q1_dollar_bn":161.2,"q2_dollar_bn":124.8,"q2_vs_q1_pct":-23},{"ticker":"XLE","q1_dollar_bn":184.2,"q2_dollar_bn":132,"q2_vs_q1_pct":-28},{"ticker":"XLU","q1_dollar_bn":74.7,"q2_dollar_bn":54,"q2_vs_q1_pct":-28},{"ticker":"XLC","q1_dollar_bn":53.7,"q2_dollar_bn":36.7,"q2_vs_q1_pct":-32},{"ticker":"XLY","q1_dollar_bn":78.7,"q2_dollar_bn":53.8,"q2_vs_q1_pct":-32},{"ticker":"XLB","q1_dollar_bn":52.3,"q2_dollar_bn":34.5,"q2_vs_q1_pct":-34},{"ticker":"XLV","q1_dollar_bn":133.2,"q2_dollar_bn":85.6,"q2_vs_q1_pct":-36},{"ticker":"XLF","q1_dollar_bn":166.8,"q2_dollar_bn":104.9,"q2_vs_q1_pct":-37},{"ticker":"XLI","q1_dollar_bn":136.5,"q2_dollar_bn":86.3,"q2_vs_q1_pct":-37},{"ticker":"XLP","q1_dollar_bn":104.1,"q2_dollar_bn":59.6,"q2_vs_q1_pct":-43},{"ticker":"XLRE","q1_dollar_bn":24.8,"q2_dollar_bn":13.6,"q2_vs_q1_pct":-45}],"shape":"ranking","sql":"SELECT ticker,\n    round(sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS q1_dollar_bn,\n    round(sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / 1e9, 1) AS q2_dollar_bn,\n    round((sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-04-01') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)\n         / sumIf(toFloat64(close) * toFloat64(volume), toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-03-31') AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 0) AS q2_vs_q1_pct\nFROM global_markets.delayed_stocks_minute_aggs\nWHERE ticker IN ('XLB', 'XLC', 'XLE', 'XLF', 'XLI', 'XLK', 'XLP', 'XLRE', 'XLU', 'XLV', 'XLY')\n  AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')\nGROUP BY ticker\nORDER BY q2_vs_q1_pct DESC, ticker","computed_at":"2026-07-26T06:12:58.541385+00:00","elapsed":0.448720374}