Breadth beneath the surface
Headline indices closed within a hair of unchanged, but the participation read was warmer than the print suggested. Advancers led decliners across the broad universe and the equal-weight composite outpaced the cap-weighted version into the close. That's the kind of divergence that tends to precede a leg rather than cap one — when the average stock is firming while the index sits still, the index is usually the lagging measurement, not the leading one. Worth flagging without overweighting it; one session doesn't make a trend, but the texture is constructive.
Risk appetite, gently
Cyclicals carried a small bid through the afternoon while defensives lagged, and the leadership profile leaned toward higher-beta corners of the tape rather than the safety complex. Credit-sensitive proxies firmed alongside small caps, and the volatility curve eased a touch at the front end. None of these moves were large enough to call a regime shift, but they rhyme with each other in a way that suggests the marginal flow was leaning offensive rather than defensive into the bell.
Setup into next session
Realized volatility kept compressing through the day, with the gap between short- and longer-window measurements narrowing. Compressed ranges that resolve in the direction breadth was already leaning are the textbook bullish-continuation setup; the same compression resolving against breadth is how reversals get built. Today gave the bullish read a small structural tailwind, which means a clean upside resolution of this range is the cleaner reading of the chart heading in. Watch the prior pivot for confirmation rather than chasing the first probe.