Starr Quant Lab Desk Research

US · Recap

US Market Recap | 2026-08-27 (ET) Thursday

Thu US Recap · 17 tables America/New_York

Machine-translated from the Chinese original. In case of any discrepancy, the Chinese version prevails.

Single-name entries

This is a reconciliation report — it carries no single-name score table. Recaps are structured around hit-rate reconciliation, theme verification and next-day outlook.

Quote read time: 2026-08-27 17:06 ET (regular session closed at 16:00 ET, after-hours trading in progress). Source for closing prices and percentage changes: CNBC restQuote API, independently cross-validated for key names via stockanalysis.com (NVDA/CRM/DG/P compared field by field, all consistent). After-hours prices are 17:06 ET readings; after-hours trading is still in progress, these are not final values. Reconciliation baseline: the 2026-08-27 pre-market list (reports/us/2026-08-27.md, pre-market quote read time 08:00–08:08 ET). All "price + change + percentage change" triplets have been reverse-computed row by row; discrepancies are listed on the methodology page at the end.


0. One-Sentence Recap

  1. Today was risk-on, but risk appetite landed in exactly one sector. S&P +0.72%, Nasdaq +1.57%, while only 1 of the 11 SPDR sector ETFs closed higher (XLK +3.16%); the other 10 all fell, with defensives (XLP −1.38%), healthcare (XLV −1.13%) and consumer discretionary (XLY −1.09%) leading the declines. This was not a broad rally, it was an extremely narrow sector-level repricing.
  2. The strongest theme of the day was software, and far stronger than the pre-market call. IGV +7.74% vs SMH +3.10% — the pre-market §8⑤ entry "if the main-line call holds, IGV should be materially stronger than SMH" was cleanly confirmed. But the pre-market characterized it as "three earnings reports + two coattail names"; in reality the entire software complex repriced: OKTA +28.63%, CRM +22.58%, CRWD +20.50%, VEEV +15.20%, PANW +12.83%, TEAM +10.18%, NOW +10.04%, ZS +9.98%, PATH +9.37%, MDB +8.49%, GTLB +8.47%, NET +8.19%, HUBS +7.91%… 23-plus names moving together, and not one of them rose on its own earnings.
  3. The pre-market list got direction beautifully right and ranking expensively wrong. Of the 8 names given an explicit direction (5 long + 3 short), 7 were directionally correct; but the 12 names judged "watch only" averaged +6.36%, with 10 beating the S&P — among them CRM +22.58%, the second strongest on the entire list. The pre-market spent a full section arguing that "CRM's beat is fake", which was completely correct on the facts, yet it was used as a same-day ranker.
  4. The pre-market's first main line (profit redistribution from memory price hikes) was falsified on the spot by the very test it registered. Pre-market §8⑦, in black and white: "MU up AND HPQ/BBY down, both sides must hold simultaneously". Actual: MU −0.32%, STX +0.10%, WDC −1.47%, SNDK −0.96%, P −8.87%, the rent-collecting side did not rise at all; while the rent-paying side HPQ narrowed all the way from −11.83% pre-market to −2.92%. By the pre-market's own standard, this main line did not hold today.
  5. The after-hours tone is the opposite of the intraday tone, and that is the single most important thing for tomorrow. The software names reporting tonight all beat and all fell after hours: RBRK −10.72% (non-GAAP EPS $0.20 vs consensus $0.04 and full-year guidance raised), ADSK −6.87%, S −5.04%, WDAY −3.19%. The intraday repricing of software is being tested one by one after hours by these companies' own earnings, and so far it is 0 for 4.
  6. Macro: VIX 14.51 (−4.60%), 10Y 4.678% (+1.4bp, intraday high 4.682%, did not break 4.70%), 2Y 4.236%, dollar 99.135 (−0.03%). Brent $89.59 (+1.99%), ending its losing streak and reversing higher, but XLE −0.22% did not follow. Tomorrow 10:00 ET brings Warsh's first Jackson Hole keynote, colliding with the final UMich reading.

1. Market Overview

Index / Instrument Close Chg% Prev Close Intraday High Intraday Low Read Time
S&P 500 (.SPX) 7,730.99 +0.72% 7,675.70 7,741.27 7,689.89 16:58 ET
Dow Jones (.DJI) 53,569.44 +0.20% 53,463.88 53,707.62 53,345.62 16:58 ET
Nasdaq Composite (.IXIC) 26,541.35 +1.57% 26,130.20 26,553.90 26,273.87 17:01 ET
Russell 2000 (.RUT) 3,014.34 +0.28% 3,005.90 3,019.40 3,000.91 16:30 ET
SPY 771.10 +0.66% 766.08 772.36 767.16 16:00 ET
QQQ 721.11 +1.37% 711.37 721.35 714.53 16:15 ET
IWM 299.81 +0.29% 298.93 300.32 298.14 16:10 ET
VIX 14.51 −4.60% 15.21 15.13 14.42 16:15 ET
10Y Treasury 4.678% +1.4bp 4.664% 4.682% 4.641% 16:59 ET
2Y Treasury 4.236% +1.2bp 4.224% 4.238% 4.207% 17:00 ET
Dollar Index (.DXY) 99.135 −0.03% 99.165 99.26 99.07 17:00 ET
WTI Crude $83.48 +1.52% $82.23 16:51 ET
Brent Crude $89.59 +1.99% $87.84 16:15 ET

Market Breadth: The Most Important Table in This Report

Of the 11 SPDR sector ETFs, only 1 closed higher.

Sector ETF Close Chg%
XLK Technology 188.61 +3.16%
XLE Energy 62.29 −0.22%
XLF Financials 57.88 −0.65%
XLU Utilities 43.18 −0.76%
XLB Materials 53.23 −0.82%
XLI Industrials 178.80 −0.85%
XLRE Real Estate 44.66 −0.95%
XLC Communication Services 111.41 −1.07%
XLY Consumer Discretionary 115.88 −1.09%
XLV Healthcare 171.58 −1.13%
XLP Consumer Staples 85.08 −1.38%

Sector ETFs (non-SPDR basis): IGV Software +7.74%, SMH Semiconductors +3.10%.

How to read it: the S&P's +0.72% was almost entirely contributed by XLK alone; the Dow was up only +0.20% and the Russell only +0.28%, meaning the vast majority of stocks outside the index fell today. At the same time VIX fell 4.60% to 14.51indices up, volatility down, and 10 sectors down — the textbook "narrow risk-on": risk appetite did not broaden, it concentrated.

⚠️ Items not obtained (the honesty cost): NYSE / Nasdaq per-stock advance/decline counts and new-high/new-low counts were not obtained in this report; repeated searching and scraping failed to retrieve market diary data for 8/27. The "1/11 sector ETFs higher" figure above is the sector-level breadth actually measured in this report; it is a proxy for breadth, not equivalent to per-stock advance/decline counts, and should not be cited as the latter.

Mega-Cap Divergence: Today Was Not a "Broad Tech Rally"

Name Chg%
NVDA +8.74%
MSFT +1.75%
AAPL +0.36%
GOOGL −0.39%
META −0.87%
AMZN −1.54%

Three of the Magnificent Seven closed lower. What rose today was "software + NVDA", not "tech", and certainly not "the whole AI chain" — AMD −0.89%, MRVL −1.49%, MU −0.32%, three core AI names, all fell.


2. Pre-Market List Reconciliation

Baseline note: "Daily Chg%" = close vs 8/26 close; "vs Pre-Mkt Price%" = close vs the pre-market price recorded on the pre-market list. The latter is the true result of "executing the list as written" — on a day when everything gapped, looking only at the former systematically overstates the hit rate.

2.1 Long-Biased Direction

Ticker Pre-Market Call Pre-Mkt Price Open Close Daily Chg% vs Pre-Mkt Price% Delivered? Comment
NVDA priority deep-dive $222.38 $222.86 $227.98 +8.74% +2.52% delivered gap-and-go. Session low $220.90, never came close to the $212 fill line set pre-market; intraday high $230.47
CRWD priority deep-dive $207.23 $208.25 $227.96 +20.50% +10.00% strongly delivered Pre-market judged "cleanest fundamentals but price already stretched"; the price turned out to be no resistance at all, closing above the 52-week high of $227.50
OKTA watch closely $158.21 $166.15 $172.91 +28.63% +9.29% strongly delivered Pre-market judged "the least favorable position on the list". The registered verification point was "reclaim and hold $157" — after a brief break of the intraday low $156.50 it never looked back, closing 10.1% above the prior high
DG watch closely $131.00–135.30 $127.84 $125.89 +2.53% −6.95% (vs $135.30) ⚠️ nominally delivered, execution loss Opened 5.5% below the pre-market price, and weakened one-way after the intraday high of $132.50. The pre-market warning that it had "already exceeded the sell-side average target of $132.31" played out the same day
MU watch closely $975.69 $967.01 $935.39 −0.32% −4.13% not delivered Opened +3.05% then weakened all day, intraday low $906.89. The long side of theme one failed outright on the day
CRM watch only $227.24 $230.05 $252.05 +22.58% +10.92% the most expensive call The fundamental teardown was entirely right, the ranking entirely wrong. Second strongest on the whole list, see §2.4
PANW watch only $356.50 $358.56 $382.85 +12.83% +7.39% not delivered Pre-market excluded it from the evidence because "notional was only $16.6 million"; it turned out to be the strongest of the pure sympathy names
S watch only $21.38 $21.80 $22.71 +10.73% +6.22% not delivered Pre-market said "notional only about $1.3 million, extremely thin". Turned lower after earnings post-close, −5.04%, see §4
NOW watch only $129.07 $130.48 $138.43 +10.04% +7.25% not delivered No news of its own, pure sector repricing
CRDO watch only $238.00 $239.15 $240.24 +6.07% +0.94% ❌ not delivered (small magnitude) Closed well below the intraday high of $244.46
ALAB watch only $299.65 $297.16 $304.09 +4.75% +1.48% ❌ not delivered (small magnitude)
AVGO watch only $359.82 $361.79 $371.54 +4.49% +3.26% ❌ not delivered Pre-market judged "a big NVDA win is pressure on ASICs"; in fact AVGO closed near its intraday high
SMCI watch only $38.72 $38.69 $38.46 +2.86% −0.67% ✅ broadly correct Negative versus the pre-market price, avoiding it was right
TSM watch only $423.14 $423.02 $427.30 +2.30% +0.98% ~ neutral
VRT watch only $273.23 $273.00 $269.28 +2.07% −1.45% ✅ broadly correct
AMD watch only $486.50 $481.50 $476.67 −0.89% −2.02% correct "The stronger NVDA, the more pressure on GPU competitors" held on the day
MRVL watch only $254.75 $253.44 $241.45 −1.49% −5.22% correct "No directional call ahead of earnings" was right; fell further after hours, see §4
P (Everpure) pending verification · unscored $111.07 $110.66 $99.24 −8.87% −10.65% leaving it unscored was right Intraday high $112.70 → low $95.02, a 18.6% range. "Full-year guidance raised 13%, the largest on the list" did not deliver at all

2.2 Short-Biased / Avoid Direction

Ticker Pre-Market Call Pre-Mkt Price Open Close Daily Chg% vs Pre-Mkt Price% Delivered? Comment
WEN avoid / short watch $7.71 $7.87 $7.82 −13.55% +1.43% direction right, no profit in chasing the short Already gapped −14.71% pre-market, chopped above the pre-market price all day; the pre-market judgment "bad location for chasing a short" held
HPQ avoid $26.91 $27.86 $29.63 −2.92% +10.11% ⚠️ direction right, magnitude wildly wrong From −11.83% pre-market it narrowed to −2.92%, recovering nearly 3/4 of the decline. Any short executed at the pre-market price was a heavy loss
BBY avoid $82.94 $80.60 $83.56 −4.44% +0.75% ✅ direction right Intraday low $76.70 (−12.3%) then a large recovery
DLTR adversely affected side ~$122.5 $120.00 $127.00 −3.92% about +3.7% ⚠️ direction right, magnitude wrong The −9.2% open was the low of the day, one-way recovery afterwards

2.3 Theme-Breadth Names (listed pre-market as "evidence, not entries")

Ticker Pre-Market Role Open Close Daily Chg% vs Open% Comment
STX theme breadth evidence $875.75 $847.20 +0.10% −3.26% Opened at the high of the day, one-way weakness
WDC theme breadth evidence $477.79 $462.00 −1.47% −3.30% Same as above
SNDK (not listed) $1,549.42 $1,484.95 −0.96% −4.16% The third name on the storage side, also closed lower
DELL excluded from the short side $466.68 $472.26 +1.82% +1.20% the pre-market re-check and reversal were correct, DELL indeed does not belong on the short side

The pre-market labeled STX/WDC "breadth evidence, but up 6–8x, not tradable entries" — that restraint paid off the same day: both fell more than 3% from the open across the session.

2.4 Hit Rate

Measured on the 8 names given an explicit direction (5 long-biased + 3 avoid/short):

Basis Result
Directional accuracy (close vs prev close) 7 / 8 = 87.5% (only MU wrong)
Directional accuracy (close vs pre-market price, i.e. executing the list) 4 / 8 = 50.0% (NVDA, CRWD, OKTA right; DG, MU turned negative; HPQ, BBY, WEN, all three avoid names, rose relative to the pre-market price)

Group average performance:

Group n Avg Daily Chg% Avg vs Pre-Mkt Price%
priority deep-dive 2 +14.62% +6.26%
watch closely 3 +10.28% −0.60%
watch only 12 +6.36% +2.42%
avoid 2 (HPQ/BBY) −3.68% +5.43%
avoid / short 1 (WEN) −13.55% +1.43%

Benchmarks for the same period: S&P +0.72%, Nasdaq +1.57%.

A Short Self-Critique (three points, ordered by cost)

First, the most expensive one: "fundamental quality" was used as a "same-day ranker". The pre-market used a full section and three independent tests to prove that CRM's "80% beat" was manufactured by a $2.613 billion revaluation of its Anthropic stake, with the real beat only +3.1% — that conclusion remains correct as of today, not a single number has been overturned. But it was used to do something it cannot do: decide whether to buy today. CRM closed +22.58%, the second strongest on the whole list. Likewise, the 12 "watch only" names averaged +6.36%, with 10 beating the S&P. The real same-day ranker was "the breadth of the sector repricing", and the pre-market happened to measure it and then downgrade it with its own hands — §9② reads "PANW notional is only $16.6 million, below the self-imposed $20 million threshold, not to be used as evidence of sector repricing". PANW was +12.83% today. That liquidity threshold rule exists to avoid being misled by thin quotes; today it filtered out the one correct signal.

Second, "direction right" on the avoid list masked "execution loss". HPQ / BBY / WEN all closed lower, which looks like 3 for 3; but all three rose relative to the pre-market price, averaging +4.10%. HPQ was the extreme case: −11.83% pre-market, −2.92% at the close, nearly three quarters of the decline recovered. The pre-market did write "already gapped, bad location for chasing a short" — that sentence was right, but it was written at the end of the conclusion rather than as the conclusion itself. "Direction right" and "this trade made money" are two different things; reconciliation must show both columns.

Third, the only thing falsified on the spot by its own test was the first main line, and the test itself was accurate. Pre-market §8⑦ registered: "MU up AND HPQ/BBY down, both sides must hold simultaneously; if MU falls too, then today is merely 'earnings losers being sold'". MU −0.32%, test triggered, main line falsified. This, like yesterday's CRWD "net new ARR $284–286 million", is a good test: written down in advance, impossible to argue away after the fact. Third consecutive day validating the same thing: write the verification point first and derive the conclusion from it, rather than writing the conclusion first.


3. Theme Verification for Today

Theme Pre-Market Strength/Rank Actual Today Leaders / Laggards Stage Conclusion
Software / cybersecurity repricing No. 3, "medium" persistence, described as severely tiered in quality IGV +7.74%, strongest of the day, and breadth at the whole-complex level Leaders: OKTA +28.63%, CRM +22.58%, CRWD +20.50%, VEEV +15.20%, PANW +12.83%; laggards: INTU +0.61%, WDAY +1.48% Day 1, breakout phase Pre-market got the direction right and badly underestimated the strength and breadth. Downgrading it to "theme No. 3" was the biggest ranking error of the day
AI compute (NVDA ecosystem) No. 2, "strong" Extreme divergence: NVDA +8.74% alone strong, SMH +3.10% Leaders: NVDA +8.74%, CRDO +6.07%, ALAB +4.75%, AVGO +4.49%; laggards: MU −0.32%, AMD −0.89%, MRVL −1.49% Continuing, but spillover narrowing ⚠️ "Highly selective spillover" was right, but the selected direction was wrong: pre-market expected MU to catch the flow and AVGO/AMD to be pressured, in fact AVGO +4.49% while both MU and AMD closed lower
Profit redistribution from memory price hikes No. 1, "very strong", described as the hardest logic Long side failed across the board Long (rent collectors): MU −0.32%, STX +0.10%, WDC −1.47%, SNDK −0.96%, P −8.87%; short (rent payers): HPQ −2.92%, BBY −4.44%, but both recovered substantially from deep pre-market declines Not started / falsified on the day By the pre-market's own registered two-sided test, it does not hold today. The industrial logic (two statutory disclosures) is still hard, but it is not a same-day tradable event
K-shaped consumer divergence No. 4, "medium-strong" ⚠️ Direction of the controlled experiment right, magnitudes all compressed DG +2.53% (but −6.95% versus the pre-market price); DLTR −3.92% (recovered after a −9.2% open); BURL −7.64% Fading ⚠️ The "traffic vs ticket size" framework was not priced by the market with the force the pre-market assumed. XLY −1.09% and XLP −1.38% were among the worst decliners of the day, with money pulled out of the entire consumer sector
Macro: inflation stickiness and the hiking tail No. 5, "bearish for long-duration growth" Did not deliver at all 10Y rose to 4.678%, while the longest-duration IGV +7.74% was the strongest of the day Invalidated See the dedicated section below; this is the falsification most worth remembering today
Crude pullback (Hormuz de-escalation) No. 6, "bearish for energy" Direction reversed Brent +1.99% to $89.59, ending the losing streak; but XLE still −0.22% Reversal ❌ Pre-market judged "three straight down days, bearish for energy"; oil rebounded today, while energy equities did not follow oil and instead fell with the broader sector rotation out

The Surprise Theme the Pre-Market Missed: the Breadth of Software

The pre-market characterized software as "three earnings reports + two coattail names", and predicted that "5–6 names' gains today come entirely from someone else's earnings; such coattail names often rise on day one of a theme, and are the first to give it back on day two when there is no data of their own to take the baton".

What actually happened was an event of an entirely different magnitude — at least 23 software names rose today, the vast majority with no business connection whatsoever to CRM/CRWD/OKTA:

Ticker Chg% Ticker Chg% Ticker Chg%
OKTA +28.63% PATH +9.37% ESTC +5.67%
CRM +22.58% MDB +8.49% SNOW +4.36%
CRWD +20.50% GTLB +8.47% ORCL +2.06%
VEEV +15.20% NCNO +8.41% WDAY +1.48%
PANW +12.83% NET +8.19% INTU +0.61%
S +10.73% HUBS +7.91%
TEAM +10.18% DDOG +6.70%
NOW +10.04% ADSK +6.21%
ZS +9.98% ADBE +5.73%

ZS +9.98% deserves a special note: pre-market §7 theme three contained a dedicated paragraph — "ZS is −49.5% from its 52-week high, while revenue is +25.4% and FCF margin 30.4%, not very different from CRWD, yet PS is only 8.68x vs CRWD's 35.7x; this divergence deserves its own study, but characterizing it requires its 9/3 earnings data, so no conclusion is drawn here". Spotted it, wrote it down, then gave no conclusion because of "wait for earnings" — and today it rose 9.98%.

The correct characterization of this theme is "sector-level valuation repricing", not "three isolated earnings events". The test was in fact already registered pre-market (§8⑥: "whether the names that did not report can hold their gains is what decides whether this is a sector repricing or three isolated events") — the answer is that they not only held, they substantially extended their gains.

Dedicated Section: Today Falsified the "Rate-Driven" Attribution

This report considers this the most valuable observation, because it can be cleanly falsified:

  • The 10Y yield rose today (4.664% → 4.678%, intraday high 4.682%), with the 2Y rising in step (4.224% → 4.236%).
  • By the reasoning in pre-market §8②, rising rates should hit the longest-duration, highest-valuation assets first — the pre-market named exactly "the most-appreciated, high-valuation software names (CRWD forward PE 150, OKTA 34) will bear the brunt".
  • Actual result: IGV +7.74%, strongest of the day; CRWD +20.50%, OKTA +28.63% — precisely the two names called out.

Conclusion: today's software move was a bottom-up earnings/valuation event, unrelated to rates; any explanation via "rate-cut expectations" or "because of rates" conflicts directly with the day's data. There is a second piece of corroboration: rate-sensitive utilities XLU −0.76% and real estate XLRE −0.95% both fell today, in the same direction as the 10Y's rise — showing the rates leg was working normally, it simply did not transmit to software today.


4. After-Hours Earnings Moves (Tomorrow's Catalysts)

⚠️ Read time 17:06 ET, after-hours trading still in progress; the percentage changes below are not final values. The post-close window today held the densest batch of earnings this week (65 companies on 8/27, only 13 on 8/28).

4.1 The Core Fact: Tonight's Software Earnings All Beat, and All Fell After Hours

Ticker Close% After-Hours% After-Hours Volume Earnings Highlights Characterization
RBRK (Rubrik) +11.33% −10.72% 1.687 million shares non-GAAP EPS $0.20 vs consensus $0.04 (5x beat); revenue $427.3 million; full-year revenue guidance raised to about $1.69 billion beat + raise → big drop. The most textbook sell-the-news of the day
ADSK (Autodesk) +6.21% −6.87% 309,000 shares Revenue $2.05 billion (+16% y/y, +14% constant currency), above consensus of $2.01 billion and the top of company guidance at $2.015 billion beat → drop. The entire +6.21% intraday gain given back and turned negative
S (SentinelOne) +10.73% −5.04% 1.550 million shares Revenue $292 million (+21%); ARR $1.218 billion (+22%); non-GAAP EPS $0.08 (vs $0.04 a year ago); non-GAAP operating margin 10% (vs 2% a year ago); Q3 guidance $309–311 million, FY27 $1.202–1.207 billion Four beats → drop. The "watch only" pre-market conclusion was confirmed after hours rather than intraday
WDAY (Workday) +1.48% −3.19% 933,000 shares Adjusted EPS $2.75, revenue $2.65 billion, both above expectations; but Q3 subscription revenue guidance of $2.515 billion (+12%) implies sequential deceleration The only one with a clear negative: guidance deceleration
MRVL (Marvell) −1.49% −2.88% 6.429 million shares See dedicated section below beat + raise → drop
ULTA (Ulta Beauty) −0.57% −2.50% 144,000 shares Adjusted EPS $6.55 vs consensus $6.17; revenue $3.04 billion (+8.9%) vs consensus $2.98 billion beat → drop

What these six have in common: not one of them fell because its earnings were bad (WDAY's guidance deceleration is the only substantive negative). They fell because they had already risen during the day — ADSK +6.21%, RBRK +11.33%, S +10.73% intraday, and those gains were not earned by themselves, they were carried up by that wave of IGV sector repricing, and handed straight back once earnings hit.

This is the mirror image of the remembered "pre-disclosed ≠ repriced": today it is "repriced ≠ realized"the sector repricing happened ahead of the individual earnings, so even a beat can only trigger profit-taking.

4.2 MRVL Dedicated Section: The Verification Point Registered Pre-Market Was Not Resolved Tonight

Pre-market §5⑩ wrote MRVL's test very specifically:

"What really needs checking tonight is: where the warrants sit in the income statement — whether they are netted against revenue, and how much is recognized this quarter. That determines whether this Google agreement is revenue or cost."

Check result (full-text search of the press release):

Item Actual
Q2 FY27 revenue $2.739 billion (+37% y/y), $39 million above the midpoint of guidance
GAAP diluted EPS $0.33
non-GAAP diluted EPS $0.94 (consensus registered pre-market was $0.93)
GAAP / non-GAAP gross margin 53.1% / 58.9%
Data center revenue $2.1715 billion, +46% y/y, 79% of total revenue
Q3 FY27 guidance: revenue $3.150 billion ±5%
Q3 guidance: non-GAAP gross margin 57.5%–58.5% (below this quarter's 58.9%)
Q3 guidance: non-GAAP EPS $1.10 ±$0.05
FY27 / FY28 outlook Company says both were raised, but the press release gives no specific figures
Warrants / Google / netted against revenue ⚠️ No related statement appears anywhere in the full press release

This is an "empty result after checking", not "did not check": the company disclosed neither the accounting treatment of the warrants nor the counterparty in the press release. The verification point registered pre-market therefore cannot be settled tonight, and must wait for the 10-Q.

But there is one quantifiable substitute clue: GAAP EPS $0.33 vs non-GAAP EPS $0.94, a $0.61 gap. Stock compensation and intangible amortization are the usual large items, and customer warrant costs tied to purchases (if recognized) would also land in that gap. Until the reconciliation detail is disclosed in the 10-Q, that $0.61 is the only number that can bound the magnitude of this issue.

Another fact that should not be buried by the +37%: gross margin is heading down. non-GAAP gross margin was 58.9% this quarter, Q3 guidance 57.5–58.5%, a midpoint of 58.0%, about 90bp lower sequentially. Revenue growth accelerating, gross margin declining — the same shape as NVDA last night (revenue +106%, gross margin 75.0% → 74.0% → 71–72%).

4.3 Non-Software After-Hours Moves

Ticker Close% After-Hours% After-Hours Volume Note
GAP (Gap Inc.) −1.70% +14.72% 4.103 million shares The strongest after hours tonight. Volume among the highest after hours, and the only positive catalyst for tomorrow's consumer sector
AFRM (Affirm) +1.35% +8.01% 1.866 million shares Second strongest after hours
HPE −1.48% −0.20% 1.019 million shares No clear direction
VEEV (Veeva) +15.20% UNCH The +15.20% intraday move came from its own earnings after the close on 8/26, not from tonight's events; it was the 4th strongest software name today

⚠️ This report did not obtain the earnings detail figures for GAP and AFRM (EPS / revenue / guidance), only the after-hours price reaction, so no fundamental characterization is made for these two.


5. Flows and Sentiment

5.1 Sector Rotation: A "Siphoning" Rotation, Not a Broadening

Today's flows were zero-sum: XLK +3.16% was the only sector up, while money was clearly pulled out of defensives (XLP −1.38%, XLV −1.13%, XLU −0.76%), consumer (XLY −1.09%) and financials (XLF −0.65%).

Three cross-verifiable pieces of evidence that this was "siphoning" rather than "broadening":

  1. Dow +0.20% vs Nasdaq +1.57%, a gap of 1.37pp. The hypothesis registered in pre-market §8⑨ was "if after the open the Dow turns positive and the Nasdaq weakens, that signals money rotating from growth into value" — the actual direction was exactly the opposite: money rotated from value into growth.
  2. Russell 2000 only +0.28%, versus the S&P's +0.72%. Small caps did not keep up, indicating this was not a broad recovery in risk appetite.
  3. Defensives and rate-sensitive sectors fell together (XLP −1.38%, XLU −0.76%, XLRE −0.95%), while the 10Y rose — the rates leg was working normally, it simply did not transmit to software at all today.

5.2 Volatility and the Bond Market

Indicator Today Prior Change Interpretation
VIX 14.51 15.21 −4.60% Broke below 15, in a low-volatility regime. But tomorrow 10:00 ET brings an event that cannot be priced in advance; cheap protection and event risk coexist
10Y 4.678% 4.664% +1.4bp Third straight rise; intraday high 4.682%, the 4.70% level set pre-market was not breached
2Y 4.236% 4.224% +1.2bp In step with the 10Y, curve shape unchanged
10Y−2Y spread +44.2bp +44.0bp +0.2bp Essentially flat, the bond market conveyed no new information today
Dollar Index 99.135 99.165 −0.03% Barely moved

The bond market's information content today was close to zero — a 1.4bp rise in the 10Y is noise-level, and it did not break the 4.70% trigger line set pre-market. This in turn reinforces the conclusion of the §3 dedicated section: today's software move had nothing to do with macro.

5.3 Risk-On / Risk-Off Characterization

Characterization: narrow risk-on, and of low quality.

  • Supporting risk-on: all three major indices up, VIX −4.60%, growth beating value, both software and semis strong.
  • Against a "healthy risk-on": only 1 of 11 sector ETFs rose; the Russell only +0.28%; three of the Magnificent Seven — GOOGL / META / AMZN — closed lower; defensives leading the declines indicates they were bled out rather than actively reduced.
  • The most critical counter-evidence is after hours: all 6 earnings reports tonight (RBRK / ADSK / S / WDAY / MRVL / ULTA) beat, and all fell after hours. This shows the daytime buying had already fully priced in expectations, and a beat is no longer enough to push prices higher. That is a classic feature of a sentiment peak, not of a trend beginning.

6. Next-Day Outlook (2026-08-28, Friday)

① Theme Persistence

Theme Today Tomorrow's Call Reasoning
Software repricing +7.74% (IGV) ⚠️ High risk, the first falsification window is already open 4 software names tonight (RBRK/ADSK/S/WDAY) beat yet fell sharply after hours, with combined after-hours volume above 4.6 million shares. At tomorrow's open IGV faces negative gaps in its own constituents, not continuation
AI compute / NVDA NVDA +8.74% Neutral to positive, but spillover has narrowed NVDA itself is holding ($227.98, only −3.6% from the 52-week high of $236.54); but MRVL is −2.88% after hours, and the AI chain provided no new positive catalyst tonight
Memory / storage ❌ Falsified on the day Not to be traded as a theme for now All five rent collectors (MU/STX/WDC/SNDK/P) failed to rise. The industrial logic is unchanged, but it lacks an event that can restart the pricing; MU's next earnings is 9/30
Consumer XLY −1.09% / XLP −1.38% Bearish, but GAP +14.72% after hours is the one contrary variable DG, DLTR and BURL, the three earnings names, all closed near their intraday lows
Energy Oil up, equities not Watch which way the divergence resolves Brent +1.99% while XLE −0.22%; one of the two has to correct

② Tomorrow's Earnings and Macro Calendar (all times Eastern)

Time Event Importance Note
09:45 Chicago PMI Medium
10:00 🔴 Chair Warsh's Jackson Hole keynote S (highest of all) His first keynote as Fed Chair, at Jackson Lake Lodge. He explicitly does not use traditional forward guidance, so this is a variance event rather than a directional event
10:00 University of Michigan consumer sentiment, final (August) Medium Collides with the Warsh speech; the preliminary reading showed August sentiment falling about 8%, ending two consecutive months of improvement
All day Earnings Low Only 13 companies report on 8/28 (versus 65 today), a clear ebb in earnings-driven action

⚠️ Two 10:00 ET events happen simultaneously; if the final UMich reading and Warsh's wording point in opposite directions, the price signal in the first hour after the open will be very noisy, and the first 30 minutes of intraday action should not be used to characterize the day.

③ Names to Watch (Ticker + falsifiable verification point)

Ticker Reason to Watch Verification Point (falsifiable)
IGV (software ETF) The single most important object of observation tomorrow. 4 constituents beat tonight yet fell sharply after hours Whether IGV can hold $107.0 (the midpoint zone between today's open of $105.69 and close of $110.32). If it gaps lower and cannot reclaim today's open all session, today's sector repricing was a one-day move; if it still closes higher despite negative gaps in its constituents, the repricing is real
RBRK −10.72% after hours, the largest beat+raise magnitude of the group Whether it can reclaim $96.13 (today's prev close) at tomorrow's close. Failure to reclaim = confirmation that "a beat is no longer a reason to buy"
MRVL −2.88% after hours, the accounting treatment of the warrants was not disclosed tonight ① Whether the composition detail of the $0.61 GAAP-to-non-GAAP gap in the 10-Q includes purchase-linked warrant costs; ② whether the Q3 non-GAAP gross margin guidance midpoint of 58.0% is sequentially below this quarter's 58.9% (the decline is already confirmed; watch whether it continues next quarter)
NVDA The deepest liquidity of any name, +8.74% today and closed near the intraday high Whether it can hold $222.86 (today's open). A break below means last night's earnings gap is starting to fill; a break above $230.47 (today's high) puts the 52-week high of $236.54 in play
MU The test stock for the long side of theme one, today's −0.32% already triggered the falsification condition registered pre-market Whether it can reclaim $967.01 (today's open). A second consecutive day of failing to reclaim means "memory profit redistribution" should not be written into the list as a trading theme again before the next earnings (9/30)
XLE / Brent Oil +1.99% while energy equities −0.22%, a clear divergence Which one converges to the other tomorrow. If oil holds above $89 while XLE keeps falling, energy equities' pricing anchor is no longer the spot oil price

④ What to Avoid

  1. The six that beat yet fell sharply after hours tonight (RBRK / ADSK / S / WDAY / MRVL / ULTA) — do not catch the falling knife at tomorrow's open. After-hours gaps of −3% to −11% often see a second leg down within 30 minutes of the open, and these six did not earn their daytime gains in the first place.
  2. Names already heavily stretched relative to their pre-market price today — CRM (+10.92%), CRWD (+10.00%), OKTA (+9.29%). The three were +22.58% / +20.50% / +28.63% on the day respectively, and both CRWD and OKTA are already at 52-week highs with no reference points above.
  3. The "yesterday's earnings losers have already recovered most of the decline" category — HPQ narrowed from −11.83% to −2.92%, BBY probed to −12.3% from −5.15% and closed at −4.44%. The bad news is mostly digested and the odds on staying short have deteriorated markedly.
  4. Chasing the memory / storage chain — MU / STX / WDC / SNDK / P all failed to rise today, and P in particular was −8.87% on the day with an 18.6% range. Do not participate until evidence of a theme restart appears.
  5. All overnight concentrated positionstomorrow's 10:00 ET Warsh keynote is the only event this week that cannot be priced in advance, and it collides with the final UMich reading. VIX at 14.51 means protection is cheap; that is an objective description of the volatility environment, not a trading recommendation.
  6. Using "sector ETFs" as a substitute for stock picking — only 1 of 11 sector ETFs rose today, and the dispersion within a sector (AVGO +4.49% vs AMD −0.89% vs MRVL −1.49%, all semiconductors) is far greater than the dispersion between sectors.

⑤ Inputs for Tomorrow's Pre-Market List

  1. The first task is to characterize the software sector, not to keep scoring individual names. Tomorrow's pre-market should first answer one question: is IGV in "day 2 of a repricing" or was it "a one-day move". The test is already available — tonight's negative gaps in 4 constituents are a natural stress test. Until that question has an answer, no directional call should be given on any individual software name.
  2. Make "vs pre-market price" a fixed column in reconciliation, and write it into the conclusion rather than a footnote. Today's avoid list was "3/3 correct on direction" but "3/3 losing versus the pre-market price"; reporting only the former makes the list look more useful than it was. By the same token, the long list should register both "pre-market price" and "what the cost is if you can only buy after the open".
  3. Revisit that $20 million pre-market notional threshold. Today it excluded PANW (+12.83%) from the evidence, and PANW happened to be the key witness for judging "sector repricing vs isolated events". Suggested revision: keep the notional threshold for "can this quote serve as an entry price", but stop using it for "can this stock serve as evidence of sector breadth"breadth is about consistency of direction, not the executability of a single name.
  4. Three items that must be checked tomorrow and were not obtained today: ① the earnings detail for GAP and AFRM (the two strongest after hours tonight, +14.72% / +8.01%, but this report has only prices and no fundamentals); ② NYSE / Nasdaq per-stock advance/decline counts — this report's breadth conclusion rests on a sector-ETF proxy; ③ the non-GAAP reconciliation table in MRVL's 10-Q, with the warrant question left hanging for a second consecutive day.
  5. A methodological reminder, written for tomorrow's self: today's 12 "watch only" names averaged +6.36% with 10 beating the S&P, and not one line of the fundamental analysis on those 12 has been overturned. Fundamental quality determines "whether this gain can persist to the next earnings report", not "whether it goes up today". When the two conflict, the list should give both conclusions ("today's direction: long-biased / holding value: low") rather than letting the latter override the former — today the latter overrode the former, at the cost of missing CRM, the second strongest name on the whole list.

⚠️ Risk disclaimer: this recap is only a post-close review of information and observations, and does not constitute investment advice. Data may differ in timeliness or definition; please refer to company disclosures / SEC filings, and do not use this directly as a basis for trading.


Data Sourcing and Items Not Obtained (Client Disclosure)

  • Closing prices and percentage changes: read time 2026-08-27 17:06 ET, source CNBC restQuote API; NVDA / CRM / DG / P were independently cross-validated via stockanalysis.com, consistent field by field. The last_time of each name was checked one by one as 2026-08-27, with no stale data.
  • After-hours prices are 17:06 ET readings; after-hours trading is still in progress, these are not final values. All after-hours percentage changes in this report must be discounted accordingly.
  • Triplet reverse computation: this report performed the row-by-row reverse computation "close − prev close = change, ÷ prev close = percentage change" for all 24 names in the tables, and all results were self-consistent. The one boundary case is WEN: the API gives −13.55%, while reverse-computing from the displayed prices $7.82 / $9.04 yields −13.50%; the 0.05pp difference comes from rounding in the displayed price (the true close implied by −13.55% is about $7.8151), and this report uses the API value of −13.55%.
  • ⚠️ A correction to one data point on the pre-market list: the pre-market list recorded P (Everpure)'s 8/26 close as $102.81. Today both independent sources, CNBC and stockanalysis, show its prev close as $108.90, so this report uses $108.90 and derives today's −8.87% from it. The pre-market list had marked this stock "pending verification · unscored", and that treatment was correct in hindsight.
  • Market breadth basis: this report's breadth conclusion is based on the 11 SPDR sector ETFs actually measured (1 up, 10 down). NYSE / Nasdaq per-stock advance/decline counts and new-high/new-low counts were not obtained in this report; repeated searches failed to retrieve 8/27 data. Sector-ETF breadth is a proxy for per-stock breadth, not equivalent to it.
  • Index levels: the S&P, Dow, Nasdaq and Russell are all taken from CNBC; read times are in the last column of the §1 table. The Nasdaq Composite uses .IXIC; the .COMP symbol returned null in this call and was not used.
  • Earnings data sources: MRVL is taken from the full press release text on the company's investor relations page (excerpted field by field); SentinelOne from the SEC 8-K / EX-99.1; ADSK, WDAY, RBRK and ULTA from a combination of media accounts and company press releases, not compared line by line against the original 8-K, marked pending verification.
  • Items not obtained: ① the earnings detail for GAP and AFRM (only the after-hours price reaction is available, so this report makes no fundamental characterization of them); ② the specific figures for MRVL's FY27 / FY28 full-year revenue outlook (the company says they were raised but the press release gives no numbers); ③ the accounting treatment of MRVL's warrants — no statement about warrants / Google / netting against revenue appears anywhere in the press release, so the verification point registered pre-market could not be settled tonight and must wait for the 10-Q; ④ the complete 8/28 earnings roster (only about 13 companies confirmed).
  • Consensus values: the consensus numbers cited in this report (ADSK $3.12 / $2.01 billion, ULTA $6.17 / $2.98 billion, RBRK $0.04, MRVL $0.93) are all media-reported values; the provider and snapshot time were not obtained, so all are marked pending verification. Judging beat/miss should use the pre-release consensus, and this report cannot confirm whether the above numbers have already been revised upward after the reports.
  • The "vs Pre-Mkt Price%" column is computed in this report as = today's close ÷ the pre-market price recorded on the pre-market list − 1, to measure the true result of "executing the list as written". DG's pre-market price on the pre-market list is a range ($131.00–$135.30), and this report uniformly uses the upper bound of $135.30; using the lower bound of $131.00 would give −3.90%.
  • This report provides no price targets and gives no buy or sell recommendation on any name.

Data Retrieval and Quality Log (Internal)

Data retrieval failures in this run

  • yfinance rate-limited across the board again: the first call threw YFRateLimitError (at the _get_crumb_basic stage), so this report used no yfinance numbers at all, switching entirely to CNBC restQuote + stockanalysis __data.json. Consistent with memory [[yfinance-rate-limit-root-cause]], this is now the norm; recommend the skill make CNBC the first choice rather than a fallback.
  • CNBC restQuote returns 403 without a UA: the first bare call returned an Akamai "Access Denied". Adding a User-Agent restored it immediately, with 56 symbols succeeding in one go. This was the fastest failure recovery of this run, and should be hard-coded into the script template.
  • Some CNBC symbols returned empty: .COMP (Nasdaq), SPY, XLP, XLU, XLB, five in total, returned None in the batch call. .IXIC can substitute for .COMP; SPY/XLP/XLU/XLB were obtained via stockanalysis __data.json instead. Note this is not rate limiting — other symbols in the same request were fine.
  • The field names in stockanalysis __data.json are scrambled: the four keys c / cl / cp / p mean the opposite of what intuition suggests — measured, c = change, cl = prev close, cp = percentage change, p = close. Reading them literally the first time produces absurd values like "SPY close 5.02". It was only through reverse computation (771.10 − 766.08 = 5.02, ÷ 766.08 = 0.66%) that the correct mapping was pinned down. Without reverse computation, the XLP/XLU/XLB sector data would all have been wrong, and §1's "1/11 sectors up" — the single most important conclusion in this report — rests on exactly that.
  • WSJ marketsdiary could not be scraped (refused at the tool layer), and stockanalysis /markets/ returned 404 — that is the direct reason the per-stock advance/decline counts were not obtained, the same batch of dead paths the pre-market list ran into.

⚠️ A mistake I made myself in this run (script layer, caught on the spot) The reconciliation script had sign = -1 if str(d['pct']).startswith('-') else 1 followed by pct = pct * sign, while f() only stripped + and not - when parsing, so the minus sign had already been parsed correctly — the result was that the percentage change of every declining name was negated a second time, printing MU as +0.32%, HPQ as +2.92% and WEN as +13.55%. In the first round of output the sign was wrong for 8 names. It was caught by the triplet reverse-computation check I had added myself: the check line printed "!! triplet mismatch, computed −0.32" while the displayed value was +0.32; the two numbers had opposite signs and identical absolute values, which is obviously a sign-flip bug rather than a data problem. Without that reverse-computation line, this report would have concluded "MU up, HPQ up, WEN up" — the exact opposite — and would have been internally consistent throughout, unable to expose itself — precisely the shape of error in memory [[listing-status-must-be-queried]]. Lesson: the value of reverse-computation checks lies not only in catching errors in the data source, but even more in catching errors in your own processing pipeline. This time it caught the latter.

Instances of search summaries giving wrong numbers (overturned with primary sources)

  1. SentinelOne guidance: one summary claimed "Q4 2026 revenue guidance of $271 million vs consensus $273.5 million, below expectations". Both the quarter label and the order of magnitude are wrong — the SEC 8-K text gives Q3 FY27 guidance of $309–311 million, and full-year FY27 of $1.202–1.207 billion. Taking it at face value would have turned "revenue/ARR/EPS/margin, all four beating" into "guidance below expectations".
  2. ULTA's after-hours direction: one summary said "shares gained 2% in after-hours". This report read −2.50% directly at 17:06 ET. The summary was most likely taken from an instantaneous reading right after the release, whereas after-hours action is cumulative — the same family as memory [[premarket-quotes-accumulate-snapshot-is-not-fact.md]], only this time it occurred on the after-hours side. The reading with our own timestamp was used, with the read time noted in the body.
  3. Characterization of the 8/27 tape: one summary said "US equity markets ended the session slightly lower on August 27... investors prepared for key tech earnings" — that describes 8/26 (before NVDA's earnings), taken as 8/27. Measured, all three indices rose on 8/27. Same family as memory [[recurring-column-headlines-hide-date]]: financial sites' "daily close" columns have a fixed headline structure, and the date is very easily off by one day.

The four most valuable cross-validations of this run

  1. IGV +7.74% vs SMH +3.10% + a rising 10Y: three independent readings jointly falsified the "rate-driven" attribution. Same shape as memory [[software-vs-hardware-falsifies-rate-attribution]], but in the opposite direction — last time it was "duration de-leveraging does not hold on the spot", this time it is "the longest-duration assets were the strongest of the day on a day when rates rose". The corroboration is XLU −0.76% / XLRE −0.95%: the rates leg was working normally, it just did not transmit to software. This is harder than any narrative.
  2. All 11 sector ETFs measured one by one: no reliance on any second-hand "the market rose/fell broadly" account, the 1 up / 10 down was measured firsthand. This directly overturned the first instinct that "today was a broad risk-on rally".
  3. Settling MU with the two-sided test registered pre-market: pre-market §8⑦ hard-coded "MU up AND HPQ/BBY down, both sides must hold simultaneously". MU −0.32% triggered falsification directly, with no interpretive argument required. Third consecutive day validating [[verification-point-beats-headline-conclusion]].
  4. Full-text search of MRVL's press release for warrants = empty result: this is an "empty result after checking", not "did not check", and the two are written completely differently in a report. Following the lesson of [[no-news-found-is-not-no-news]], it is explicitly marked as "could not be settled, must wait for the 10-Q", with the $0.61 GAAP/non-GAAP gap given as a magnitude proxy, rather than glossed over.

The three things from this recap most worth writing into long-term memory

  1. [Most important] "Fundamental quality" is not a same-day ranker, and yesterday's list used exactly that for ranking. CRM was judged "watch only", and the reasoning (the beat was manufactured by a $2.613 billion Anthropic revaluation, the real figure only +3.1%, zero growth in GAAP operating profit) has not had a single line overturned to date, yet it was +22.58%, the second strongest on the whole list; the 12 "watch only" names averaged +6.36% with 10 beating the S&P. This is the same as memory [[financial-quality-is-not-a-short-term-ranker]], but today exposes a new, finer mechanism: last time it was "look at the set of fund flows first, then rank within the set"; this time the lesson is that "direction" and "holding value" are two orthogonal conclusions, and the list should give both rather than letting the latter override the former. Yesterday the latter did override the former.

  2. A self-imposed liquidity threshold filtered out the one correct signal — because the threshold was applied to the wrong question. The pre-market's $20 million pre-market notional threshold removed PANW ($16.6 million) from "evidence of sector repricing". PANW was +12.83% today, and it was precisely the key witness for answering "sector repricing vs three isolated events". Root cause: the notional threshold answers "can this quote serve as an entry price", but it was used to answer "can this stock serve as breadth evidence". Breadth is about consistency of direction, not the executability of a single name — a thinly traded but directionally clear stock is unqualified as an entry candidate and fully qualified as evidence. Adjacent to but different from memory [[volume-threshold-must-be-notional-not-shares]]: that one is about how the threshold should be computed, this one is about which question the threshold should be applied to.

  3. "Repriced ≠ realized": when a sector-level repricing happens ahead of individual earnings, a beat only triggers profit-taking. Tonight's 6 earnings reports (RBRK/ADSK/S/WDAY/MRVL/ULTA) all beat and all fell after hours, and RBRK, a beat+raise with non-GAAP EPS $0.20 vs consensus $0.04, was −10.72% after hours. Their daytime gains (ADSK +6.21%, RBRK +11.33%, S +10.73%) were not earned by themselves, they were carried up by that wave of IGV sector repricing. This is the mirror image of memory [[predisclosed-is-not-repriced]]: that one says "pre-disclosed does not mean repriced, which is why SMCI could still rise 19%"; this one says "repriced does not mean realized, which is why a beat can fall instead". Only together are the two complete — the question to ask is always "what is already in the current price", not "is the news good or bad".

Not covered / known gaps

  • NYSE / Nasdaq per-stock advance/decline counts not obtained (WSJ scrape refused, stockanalysis /markets/ 404). The breadth conclusion rests on the 11-sector-ETF proxy, explicitly flagged on the client-visible methodology page. Next time try the market breadth pages at barchart / finviz.
  • GAP (after hours +14.72%) and AFRM (after hours +8.01%) have prices but no fundamentals, and they are the two strongest after hours tonight, so they must be filled in at tomorrow's pre-market.
  • The MRVL warrant question has been hanging for a second consecutive day — no disclosure in the press release, the non-GAAP reconciliation table in the 10-Q is needed; the substitute clue has been identified as the $0.61 gap between GAAP $0.33 and non-GAAP $0.94.
  • The original 8-K was not read for ADSK / WDAY / RBRK / ULTA; the numbers come from press releases and media accounts, already marked pending verification. Given that tonight's shape was the anomaly of "all beat yet all fell", the guidance details for these four (especially WDAY's Q3 subscription revenue +12%) are worth re-checking against primary sources tomorrow — an anomalous shape often means some number has been misread.
  • A volume comparison between 8/26 and 8/27 was not obtained, so it is impossible to judge whether today's software rally came with expanding volume, which could have provided a second independent piece of evidence for judging "one-day move vs repricing".
  • VEEV's +15.20% earnings detail was not obtained (its report came after the close on 8/26, outside this report's window), but it was the 4th strongest software name today, so if software is to be characterized again tomorrow, VEEV's guidance is worth reviewing.