{"slug":"sector-scorecard-2026-h1","qid":"sector_breadth","label":"Five-name baskets per sector: members up vs down, median, best and worst, H1 2026","post_title":"Sector Scorecard H1 2026: Winners and Losers","post_url":"/blog/sector-scorecard-2026-h1#q-sector_breadth","columns":["sector","members","members_up","members_down","median_member_pct","best_member","best_member_pct","worst_member","worst_member_pct"],"rows":[{"sector":"health care (XLV)","members":5,"members_up":5,"members_down":0,"median_member_pct":21.7,"best_member":"UNH","best_member_pct":25.5,"worst_member":"ABBV","worst_member_pct":9.9},{"sector":"real estate (XLRE)","members":5,"members_up":4,"members_down":1,"median_member_pct":21.3,"best_member":"EQIX","best_member_pct":36.1,"worst_member":"AMT","worst_member_pct":-6.7},{"sector":"materials (XLB)","members":5,"members_up":5,"members_down":0,"median_member_pct":19.5,"best_member":"LIN","best_member_pct":21.7,"worst_member":"SHW","worst_member_pct":6.4},{"sector":"industrials (XLI)","members":5,"members_up":5,"members_down":0,"median_member_pct":17.5,"best_member":"CAT","best_member_pct":84.3,"worst_member":"RTX","worst_member_pct":3.4},{"sector":"energy (XLE)","members":5,"members_up":5,"members_down":0,"median_member_pct":13.6,"best_member":"EOG","best_member_pct":23.5,"worst_member":"CVX","worst_member_pct":9},{"sector":"utilities (XLU)","members":5,"members_up":4,"members_down":1,"median_member_pct":9.1,"best_member":"AEP","best_member_pct":18.5,"worst_member":"CEG","worst_member_pct":-30.6},{"sector":"technology (XLK)","members":5,"members_up":3,"members_down":2,"median_member_pct":5.2,"best_member":"AVGO","best_member_pct":6.9,"worst_member":"ORCL","worst_member_pct":-25.7},{"sector":"financials (XLF)","members":5,"members_up":4,"members_down":1,"median_member_pct":3.5,"best_member":"MS","best_member_pct":17.1,"worst_member":"WFC","worst_member_pct":-11.4},{"sector":"consumer staples (XLP)","members":5,"members_up":4,"members_down":1,"median_member_pct":2.4,"best_member":"KO","best_member_pct":16.3,"worst_member":"PEP","worst_member_pct":-5.5},{"sector":"consumer discretionary (XLY)","members":5,"members_up":2,"members_down":3,"median_member_pct":-8.2,"best_member":"AMZN","best_member_pct":3,"worst_member":"NKE","worst_member_pct":-35.9},{"sector":"communication services (XLC)","members":5,"members_up":1,"members_down":4,"median_member_pct":-15.2,"best_member":"GOOGL","best_member_pct":12.7,"worst_member":"NFLX","worst_member_pct":-24.2}],"shape":"table","sql":"SELECT sector,\n       count() AS members,\n       countIf(ret_pct > 0) AS members_up,\n       countIf(ret_pct <= 0) AS members_down,\n       round(quantileDeterministic(0.5)(ret_pct, cityHash64(ticker)), 1) AS median_member_pct,\n       argMax(ticker, (ret_pct, ticker)) AS best_member,\n       round(max(ret_pct), 1) AS best_member_pct,\n       argMin(ticker, (ret_pct, ticker)) AS worst_member,\n       round(min(ret_pct), 1) AS worst_member_pct\nFROM (\n    SELECT ticker,\n           multiIf(ticker IN ('AAPL','MSFT','NVDA','AVGO','ORCL'), 'technology (XLK)',\n                   ticker IN ('META','GOOGL','NFLX','DIS','TMUS'), 'communication services (XLC)',\n                   ticker IN ('XOM','CVX','COP','EOG','SLB'), 'energy (XLE)',\n                   ticker IN ('JPM','BAC','WFC','GS','MS'), 'financials (XLF)',\n                   ticker IN ('GE','CAT','RTX','UNP','UPS'), 'industrials (XLI)',\n                   ticker IN ('LLY','UNH','JNJ','ABBV','MRK'), 'health care (XLV)',\n                   ticker IN ('AMZN','TSLA','HD','MCD','NKE'), 'consumer discretionary (XLY)',\n                   ticker IN ('PG','COST','WMT','KO','PEP'), 'consumer staples (XLP)',\n                   ticker IN ('NEE','SO','DUK','CEG','AEP'), 'utilities (XLU)',\n                   ticker IN ('PLD','AMT','EQIX','WELL','SPG'), 'real estate (XLRE)',\n                   'materials (XLB)') AS sector,\n           (argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)\n            / argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100 AS ret_pct\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('AAPL','MSFT','NVDA','AVGO','ORCL','META','GOOGL','NFLX','DIS','TMUS','XOM','CVX','COP','EOG','SLB','JPM','BAC','WFC','GS','MS','GE','CAT','RTX','UNP','UPS','LLY','UNH','JNJ','ABBV','MRK','AMZN','TSLA','HD','MCD','NKE','PG','COST','WMT','KO','PEP','NEE','SO','DUK','CEG','AEP','PLD','AMT','EQIX','WELL','SPG','LIN','SHW','APD','FCX','ECL')\n      AND window_start >= toDateTime('2026-01-01 00:00:00') AND window_start < toDateTime('2026-07-01 00:00:00')\n    GROUP BY ticker\n)\nGROUP BY sector\nORDER BY median_member_pct DESC, sector","computed_at":"2026-07-26T06:12:55.774630+00:00","elapsed":8.946517828}