Starr Quant Lab Desk Research

US · Recap

US Market Recap | 2026-09-16 (ET) Wednesday

Wed US Recap · 24 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.

Coverage window: 2026-09-16 09:30–16:00 ET regular session + 16:00–17:05 ET after-hours. Methodology notes:

  • Single-stock and ETF prev close / open / high / low / close / volume / volume ratio / after-hours price are taken from the CNBC quote API (regular-session close basis, read at 17:00–17:05 ET). The three major index closes were independently cross-checked against third-party closing write-ups (Dow −631.21 points / −1.21% to 51,461.90; S&P −0.45% to 7,551.81; Nasdaq Composite −0.01% to 25,978.42).
  • Treasury yields always use the official US Treasury curve (daily_treasury_yield_curve, 15:00 ET fixing); the data vendor's change fields are not used. The reason is in the methodology note at the end — CNBC's 2-year change_pct broke in the same place for the Nth time today.
  • Crude inventories use the EIA primary data table (ir.eia.gov/wpsr/table1.csv, weekly 9/11 vs 9/4). This one is extremely important today: the widely circulated "crude build of 7.14 million barrels" is Tuesday night's API number, not the EIA number, and the two point in opposite directions.
  • All pre-market reconciliation uses the pre-market piece's own readings (Nasdaq official endpoint, 07:35–08:06 ET), and additionally provides a "vs pre-market price" column — reconciling on the day's percentage change alone systematically overstates the hit rate.
  • Baskets are computed in-house, equal-weighted, quote-by-quote; constituents are listed in the body. The single-stock breadth sample is the 536 names with complete closing data today out of the pre-market piece's 575 full-market large caps (ETFs and funds excluded).

0. One-sentence recap

  1. The hike itself was fully expected; what knocked the market down was the dot plot and the language — the pre-market piece got "the real variable is not this 25bp but the dot plot and Warsh's language" right, but placed no bet on that variable. The FOMC at 14:00 ET hiked 25bp to 3.75%–4.00%, the first since 2023; the dot-plot median rose to 4.1%, i.e. one more hike this year (12 members favor one more, 4 favor two more). Versus the June dot plot's implied "only this one," that is a genuine upward shift, precisely the "scenario completely different from current pricing" the pre-market piece listed. Warsh said "we must be confident that underlying inflation is returning to target clearly and at a sufficient pace; today the FOMC judges that this standard has not yet been met". All three major indexes were positive before 14:00 and turned during the press conference.

  2. Today was an "open is the high" tape: the full-market average gap-up was +0.27%, the average open→close was −0.88%. Of 536 names, 189 up / 340 down (equal-weighted −0.61%), versus 425 up / 148 down in this morning's pre-market — breadth flipped entirely. 72.6% (389/536) closed below their own pre-market price.

  3. But the relative ordering in that pre-market table survived, and this must be discussed separately from direction. corr(this morning's pre-market % change, today's close % change) = +0.374 (n=536), the highest across recent pieces; while corr(this morning's pre-market % change, open→close) = −0.040, essentially zero. Put together, the two numbers mean something very specific: the pre-market ordering was fully realized in that one jump at the open, and after the open every name fell back almost in parallel. So pre-market stock selection was right, pre-market timing was wrong — the same shape as yesterday's "100% realized before the open," except today there was no reversal, only a parallel shift.

  4. Today's genuinely strongest theme was AI hardware / optical modules, and it ranked only 3rd pre-market. AI hardware, 18 names equal-weighted +3.18% (17 up 1 down); neocloud compute, 8 names +4.50% (8/8 up)both lines were stronger than their pre-market readings (+1.84% / +2.23% respectively pre-market). Meanwhile precious metals, ranked 4th pre-market, flipped from long to short across the board: the 15 gold/silver miners went from +2.08% pre-market to −1.77% at the close (only 1 of 15 still up), a reversal of 3.85pp.

  5. The "avoid" call on energy was right, but the criterion behind it was falsified — this is the single thing most worth remembering in this piece. The pre-market piece built the entire bearish energy case on "the API build of 7.14 million barrels," and explicitly wrote down the falsification condition: "if the EIA comes in materially below API or turns to a draw, this morning's decline will be reversed". 🔴 EIA official data at 10:30 ET: commercial crude (ex-SPR) fell from 424.069 to 423.429 million barrels — a draw of 640,000 barrels, not only "materially below API" but in the opposite direction. The falsification condition was met, and energy was not reversed at all — it collapsed from −1.82% pre-market to −6.07% at the close (all 8 E&Ps down), XOP −3.96%, XLE −2.88%. The real driver was the reversal of the very leg the pre-market piece had listed as bullish: US Energy Secretary Chris Wright told CNBC the Saudi pipeline outage was "brief and temporary, measured in days," while Saudi Arabia simultaneously supplied Asian refiners via ship-to-ship transfers near Sohar, Oman — the supply risk premium was dismantled, rather than inventories deteriorating. WTI closed at $102.15 (−3.48%). Conclusion: the position was right, the mechanism was wrong. And a wrong mechanism means this criterion cannot be used again tomorrow.

  6. The line the pre-market piece did not cover at all is exactly the line that took down the Dow: financials. Seven large banks equal-weighted −2.48% (0/7 up), XLF −1.62%, KRE −1.77%. GS alone contributed 237 of the Dow's 631-point decline (37.5%); GS+AXP+IBM together 59.7%. The pre-market piece listed TLT, KRE, IWM, ITB under Theme 1 as "FOMC-sensitive instruments," but wrote only the ticker names — no direction, no analysis. And on a day of "front end +7bp, long end +1bp, curve bear-flattening 6bp," the direction for banks was derivable. This is the largest blind spot identified in this piece.

  7. Today's biggest single news item came after the close, has nothing to do with today's tape, and will dominate tomorrow: GNRC rose just +0.05% in the regular session and +42.20% after hours. The 8-K (Items 1.01/3.02) confirms Generac signed a long-term backup generator supply agreement with Amazon, serving Amazon data centers; initial deliveries in 2027–2028 of roughly $2.4 billion, plus warrants issued to Amazon for up to 1,693,745 shares at an exercise price of $200.9266, vesting in tranches with cumulative payments (up to $8.0 billion). This is by far the hardest cash-flow contract on the "data center power" line to date — not a rumor, not an index rebalance.

Closing tape at a glance (read 16:00–17:05 ET)

Instrument Close Change Note
Dow .DJI 51,461.90 −631.21 / −1.21% Weakest of the day, GS alone 37.5% of the decline
S&P 500 .SPX 7,551.81 −33.92 / −0.45% Positive before 14:00
Nasdaq Composite .IXIC 25,978.42 −3.15 / −0.01% Nearly flat, the only one of the three majors that didn't really fall
Russell 2000 .RUT 2,858.81 −11.48 / −0.40% Small caps not extra-penalized by the hike
VIX 17.71 +2.97% (prev close 17.20) Versus this morning's 08:15 print of 16.77 that's +5.6%; absolute level still below 18
2-year Treasury 4.74% +7bp Treasury official, 9/15 was 4.67%
5-year Treasury 4.86% +3bp
10-year Treasury 5.01% +1bp 9/15 was 5.00%
30-year Treasury 5.35% −1bp The long end actually fell
2s10s spread 27bp narrowed 6bp from 33bp Bear flattening, the exact opposite of this morning's "mild bull steepening"
2s30s spread 61bp narrowed 8bp from 69bp
WTI crude @CL.1 $102.15 −3.48% Read at 16:52 ET (post-settlement electronic session); intraday settlement roughly $102.43
Gold spot XAU= $4,263.63 −0.68% Versus this morning's 08:23 print of $4,339.41 that's −1.75%
Silver spot XAG= $62.96 −1.08% Versus this morning's $64.55 that's −2.47%
Euro EUR= 1.1462 Versus this morning's 08:20 print of 1.1535, the dollar strengthened 0.64%
USD/JPY JPY= 156.24 Versus this morning's 155.05, the dollar strengthened 0.77%; BoJ decision Friday

⚠️ For those two FX rows I used the level difference "this morning's reading → closing reading," not the change field. The reason is that CNBC's FX previous_day_closing rolled after this morning's piece finished running (EUR's prev close went from 1.1543 to 1.1464), so quoting the change field directly would produce the wrong conclusion that "the dollar barely moved", whereas on a level-difference basis the dollar strengthened 0.6–0.8% against both the euro and the yen, which is what is consistent with a "hawkish hike."


1. Market overview

1.1 Indexes and breadth

Metric Today This morning's pre-market comparison
Dow −1.21% Dow futures +0.32%
S&P 500 −0.45% S&P futures +0.33%
Nasdaq Composite −0.01% (Nasdaq futures +0.59%, different underlying, not directly comparable)
Russell 2000 −0.40%
Single-stock breadth (536 names) 189 up / 340 down / 7 flat 425 up / 148 down (575 names)
Equal-weighted mean −0.61% +0.44%
Median −0.59%
Average gap-up +0.27%
Average open→close −0.88%
Closed below pre-market price 389 / 536 = 72.6%

This table says only one thing: all of today's positive returns happened in that one jump at 09:30, and everything after was a one-way giveback. Average gap-up +0.27% plus average open→close −0.88% roughly equals today's equal-weighted −0.61%.

1.2 Rates: today's master variable, and its shape matters more than its size

Tenor 9/15 official 9/16 official Change
2-year 4.67% 4.74% +7bp
5-year 4.83% 4.86% +3bp
10-year 5.00% 5.01% +1bp
30-year 5.36% 5.35% −1bp

Front end sharply up, long end unchanged or even slightly down = bear flattening. This is a curve that says "the central bank is pushing short rates up, and the market does not believe long-run growth/inflation improves as a result". It directly explains three things today:

  • Bank stocks collapsed (net interest margin and the term spread move together; a flatter curve directly compresses banks);
  • Long-duration tech did not collapse (10Y only +1bp, Nasdaq −0.01%);
  • Gold fell (real yields up, while gold had been pricing an easing path).

⚠️ Today's 2-year must use Treasury data, not the vendor field. CNBC's US2Y reports change_pct = −0.1484%, while within the same record last (4.742) is clearly higher than prev (4.663). Taking that field at face value would turn "front end +7bp, bear flattening" into "front end down," the entire rates narrative today would be reversed, and all three causal links above in §1.2 would be void. The 5Y/10Y/30Y fields from the same endpoint are fine today — what's broken is symbol-level, not endpoint-level.

1.3 Sentiment read: risk-off, but a "targeted rate strike" risk-off, not a broad flight to safety

Evidence supporting risk-off: breadth 189/340, equal-weighted −0.61%, VIX +2.97%, a stronger dollar, Dow −1.21%. But three pieces of hard evidence show this was not indiscriminate selling:

  1. Nasdaq Composite −0.01%, SMH +0.64%, XLK +0.10% — long-duration growth was not sold at all;
  2. TLT +0.21% — long bonds rose, counter to the intuition that "a hike = sell all bonds," because what was hiked is the front end;
  3. AI hardware 18 names equal-weighted +3.18%, neocloud 8/8 upthere was a genuine leading line today, and it ran against the broad market.

So the correct characterization is: today was a targeted liquidation along the single axis of "rate sensitivity" (banks, energy, precious metals, homebuilders, commercial real estate were sold), not a broad contraction in risk appetite.


2. Pre-market list reconciliation

Reconciliation basis: "Today %" is measured against the 9/15 close; "vs pre-market price" is measured against the pre-market price recorded in the pre-market pieceonly this column answers "if you bought off that table pre-market, did you make or lose money today". The S&P was −0.45% on the day, and "delivered?" is judged on outperforming/underperforming the S&P.

2.1 Recommendations (Top 5)

Ticker Pre-market call Pre-mkt % Open Close Today % vs pre-mkt price Vol ratio Delivered? Comment
INTC Rec #1 priority deep-dive +2.93% 101.37 101.05 +4.03% +1.06% 1.29 delivered Session high $104.42. But open→close was −0.32%; 100% of the gain came from the gap — the pre-market call that "the variable that loses money is a gap fill" was very accurate, only the fill never happened
LITE Rec #2 watch closely +2.27% 856.00 919.40 +9.59% +7.16% 1.59 best of the day The opening price was exactly the criterion price of $856.00, closing at $919.40. Open→close +7.41%, the only name on the entire list where the money was made intraday
TCOM Rec #3 watch closely +4.59% 40.93 40.43 +3.01% −1.51% 1.69 ⚠️ half-delivered Outperformed the S&P, but closed below its pre-market price. The pre-market worry that "$4.97 million of volume means no real absorption" — a volume ratio of 1.69 shows the absorption was there; the criterion itself passed, the price just didn't follow
DELL Rec #4 watch closely +2.66% 553.63 563.29 +3.64% +0.95% 0.94 delivered Intraday high $576.75, so it did break $568.67 and set a 52-week high, but closed at $563.29, back below — the criterion was "cleared intraday, not held at the close," rejected in the same zone for the third day running
ASML Rec #5 watch closely +2.95% 1629.85 1602.22 +0.67% −2.21% 1.06 ⚠️ weakest of the five The open was the high of the day, followed by a one-way slide. The criterion given pre-market was "watch SMH, not the single stock"; SMH closed +0.64% so the criterion passed, but the stock was −2.21% versus its pre-market price

The 5 recommendations: 5/5 beat the S&P, 5/5 closed higher, equal-weighted +4.19%; but on a "vs pre-market price" basis only 3/5 were positive, equal-weighted +1.09%.

2.2 The remaining "watch closely" names

Ticker Pre-market call Pre-mkt % Today % vs pre-mkt price Delivered? Comment
AMAT watch closely +2.09% −1.37% −3.40% wrong call The pre-market piece itself wrote "equipment is a supply-side indicator, not demand strength," yet still put it in the watch bucket. Today only 3 of the 6 equipment names closed higher
GDX watch closely (preferred expression) +1.87% −1.41% −3.22% wrong call The pre-market piece described the risk perfectly — "purely event-dependent, reverses if the FOMC is hawkish" — and then still gave it a recommendation slot. The hawkish outcome came, and it reversed.
EWY watch closely (used as evidence) +1.78% −0.54% −2.28% The pre-market piece already stated "used as evidence, not as a position"; recorded here only

2.3 The "watch only" bucket (excluded from the hit rate, but must be listed separately)

Ticker Pre-mkt % Today % vs pre-mkt price vs S&P
COHR +2.93% +6.92% +3.87% outperformed
MRVL +2.12% +3.61% +1.46% outperformed
CRWV +2.45% +3.00% +0.54% outperformed
AMD +1.67% +1.65% −0.02% outperformed
STX +1.44% +1.47% +0.03% outperformed
WDC +1.60% +1.22% −0.38% outperformed
NBIS +2.40% +0.96% −1.40% outperformed
NVDA +0.81% +0.82% +0.01% outperformed
MU +1.01% −0.11% −1.12% outperformed

🔴 The 9 "watch only" names went 9/9 beating the S&P today, equal-weighted +2.17%; among them COHR at +6.92% was the 2nd best on the entire list, behind only LITE.

This has to be said out loud — it is the most important methodological result in this piece. The pre-market piece cut COHR from 4th place down to "watch only" on fundamental grounds (net income-to-cash conversion 10%, FCF −$1.023 billion, inventory days 133→187, ROIC 6.74% < WACC 15.14%). Not one of those reasons was refuted today, and the stock rose 6.92%. The pre-market piece had in fact already written the right sentence itself — "'the fundamentals don't support today's move' is an attribution of the move, not a prediction of subsequent price direction" — today validated it precisely: direction and holding value are two orthogonal conclusions, and the list used an orthogonal dimension as a ranker.

2.4 Avoid / bearish bucket

Ticker Pre-market call Pre-mkt % Today % vs pre-mkt price Vol ratio Delivered? Comment
JBHT avoid (explicitly not a short) −10.64% −13.30% −2.98% 5.69 delivered The decline kept widening. The "avoid but don't short" distinction was neutral today: open→close −2.54%, so a short would also have made money, but the pre-market rationale (a cost problem, not a demand problem) still holds
FANG avoid (cause unidentified) −5.24% −8.03% −2.95% 8.10 delivered See Box A below — new facts surfaced today, and they reverse the pre-market conclusion
COP avoid −2.00% −6.15% −4.23% 1.56 delivered
APA avoid −1.94% −5.53% −3.66% 1.82 delivered
MPC avoid (grouped with COP/APA) −1.57% +0.75% +2.35% 1.20 wrong call 🔴 MPC is a refiner; crude is a cost line for it, not a revenue line. See Box B below
CRWD avoid (short watch permitted) −1.08% −0.47% +0.62% 1.00 ⚠️ technically correct Underperformed the S&P by 0.02pp, essentially the S&P itself. And open→close was +1.87%, i.e. it rose intraday; the pre-market suggestion to "short only after 14:00," if executed, lost money today
WING avoid (+5.84% already voided) (voided) +0.22% −5.31% 1.28 delivered Voiding that number pre-market was entirely correct: the close was $101.06 while the pre-market price was $106.73, so buying at the pre-market price loses 5.31%. That page of Box B was the most valuable page this week
LEN avoid (double event day) +0.19% −2.14% −2.32% 1.72 delivered Fell a further 3.02% after hours on earnings, see §4
BE avoid (catalysts all old news) +3.50% +4.11% +0.59% 0.93 wrong call See Box C below — the pre-market facts were all right, the inference was wrong

The 9 names in the avoid bucket: 6/9 delivered (underperformed the S&P), 3 wrong calls (MPC, BE, and WING — WING was actually delivered on a "vs pre-market price" basis; here it is scored as a wrong call on the beat-the-S&P standard).

2.5 Hit rate and post-mortem

Group n Correct Hit rate Equal-weighted return
Top 5 recommendations 5 5 100% +4.19%
Remaining watch closely 3 0 0% −1.11%
All long expressions 8 5 62.5% +2.20%
Avoid bucket 9 6 66.7% −3.39% (direction correct)
All directional calls 17 11 64.7%
(reference) watch only 9 9/9 beat the S&P +2.17%

Four post-mortem points, ranked by importance:

  1. 🔴 The most serious issue is the blind spot, not the wrong calls. What took down the Dow today was financials, and the pre-market piece never analyzed banks at all. On a day of "hike + dot-plot shift up," the list gave 6 themes and 17 directional calls, and not one of them landed on the most direct transmission object of rates. The pre-market piece wrote the four tickers TLT, KRE, IWM, ITB under Theme 1, but that was only a list of names — no direction, no analysis, no verification point. Result: GS −3.96%, XLF −1.62%, KRE −1.77%, large banks 0/7 up. If 6 of the 17 names on that list had been financials, today's return profile would have been completely different. Listing tickers is not the same as covering the line.

  2. 🔴 Energy got the position right and the mechanism wrong, and the criterion was one the pre-market piece wrote itself. It wrote: "if the EIA comes in materially below API or turns to a draw, this morning's decline will be reversed." The EIA was a draw of 640,000 barrels, the opposite direction from API's build of 7.14 million barrels — the falsification condition triggered 100%, and yet the conclusion was not just unbroken, it got stronger (E&P −6.07%). A criterion that "triggers its own falsification condition while the conclusion becomes more valid" shows that it simply isn't measuring the variable that drives the trade. The real driver was "Saudi pipeline restart within days" dismantling the supply premium — and pre-market that leg was written up as bullish in news item #6. Inventory data can no longer be used to set direction for energy tomorrow.

  3. "Risk written correctly, position given anyway" occurred twice, and both lost money. GDX's risk column read "purely event-dependent: reverses if the FOMC is hawkish"; AMAT's risk column read "equipment is a supply-side indicator, not demand strength." Both were validated precisely today, and both names posted negative returns. When a name's risk description already reads "if X happens it reverses," and X is the biggest pending event of the day, it should not occupy a recommendation slot — it should wait for X to land.

  4. Relative ordering was strong, absolute timing was weak, and the list only expressed ordering. corr(pre-market, close) = +0.374 was the best in recent memory, and the 5 recommendations went 5/5 beating the S&P; but the average open→close was −0.88% and 72.6% of names closed below their pre-market price. The pre-market piece had already flagged this itself — "any price formed between the open and 2pm is a 'price in waiting' and has no property of being inheritable" — written in the last sentence of §9④, but never converted into any constraint on position sizing. A correct prediction that constrains no position is the same as no prediction.

📌 Box A: FANG — the pre-market piece's "known unknown" got an answer today, and the answer changes the conclusion

The pre-market piece spent an entire box on "cannot determine why FANG fell 3pp more than the sector," exhaustively listing the hypotheses already excluded. Today's data provides two new facts:

Fact Data
Volume 14.19 million shares, volume ratio 8.10 — the highest on the entire list, far above JBHT's 5.69
Open→close −1.26%
Peer E&P open→close EQT −4.18%, OXY −4.87%, COP −4.25%, EXE −4.78%, DVN −4.02%, EOG −3.37%, APA −3.55%

🔴 Put these two together and the pre-market conclusion has to be written in reverse: intraday today, FANG was the strongest name in the whole E&P group, not the weakest. All of its −8.03% excess decline was in that one jump at the open (gap −6.85%, peers −0.96% to −2.44%), and after the open it outperformed the group by roughly 2.1–3.6pp.

This shape plus 8.10x volume is highly consistent with "an agented block trade done overnight by an existing holder" — which is exactly the second item the pre-market piece listed under "not excluded but not confirmed." The block pushed out a discount pre-market, and the market absorbed it during the day. There is still no SEC filing today that can confirm it (an EDGAR search since 9/14 shows only 3 Form 144s and 3 Form 4s for FANG, no 8-K, no 424B, no S-3), so it remains "unconfirmed" — but the weight of evidence has clearly tilted to this side, rather than being "wholly indeterminable."

📌 Box B: MPC — putting a refiner and E&Ps in the same avoid frame is the cleanest classification error of the day

The pre-market piece wrote COP / APA / MPC on the same line in the avoid bucket, on a single shared rationale: "API build + all three just made 52-week highs yesterday." But these three do not move in the same direction when crude falls:

Role What crude is Today % Open→close
COP / APA / FANG / EOG / DVN / OXY E&P (upstream) revenue −5.53% ~ −8.03% −1.26% ~ −4.87%
MPC refining (downstream) cost +0.75% +2.12%
VLO refining cost +1.57% +2.96%
PBF refining cost +1.62% +3.99%
DK refining cost +1.31% +3.48%
PSX refining cost −0.11% +1.60%

🔴 All five refiners gapped down with the energy sector this morning (gap −1.35% to −2.28%), then were all bought back intraday (open→close +1.60% to +3.99%), without a single exception. MPC, PSX, VLO and DK all touched 52-week-high territory today.

What the market did in the six and a half hours after the open is exactly what that pre-market table failed to do: separate "crude is revenue" from "crude is cost." That classification takes one line of text, yet it determined the difference between +0.75% and −6.15%. The same family of error is known on the A-share side as "in a price-hike chain the upstream moves first and the downstream bears the cost"; today is its mirror image.

📌 Box C: BE — every fact correct, the inference wrong, and the pre-market piece itself wrote down the criterion that would have caught it

The pre-market piece moved BE from 17th in the bullish bucket into the avoid bucket; the three verified points that "today's catalysts are all old news" (Mizuho 9/13, S&P inclusion 9/4, Aligned 9/10) were not refuted today — all three are true. But BE closed +4.11%, beating the S&P by 4.56pp.

Why right facts still produced a wrong conclusion — the pre-market piece wrote down the correct criterion and then never measured it:

⚠️ By our own criterion, whether front-running is already priced is read off the volume ratio, not the percentage move

BE's volume ratio today was 0.93 — below its 10-day average volume. By the pre-market piece's own criterion, "volume ratio below 1 = no crowded front-running = not yet priced", the conclusion it should have reached was the run isn't over, rather than "front-run for nearly two weeks, therefore avoid." The pre-market piece cited the criterion and then substituted "the gain has accumulated over two weeks" to make the judgment in its place.

This does not contradict the 9/14 case of "pre-market −7.0%": being wrong-footed in both directions is exactly what shows that using the direction of the move to judge front-running is invalid, while the volume ratio is valid. Moreover, 9/18 (this Friday) at the close is the actual execution date for the passive buying, so execution is still two trading sessions away and the mechanical bid has not even begun.


3. Theme verification

# Theme Pre-market strength/rank Today actual (equal-weighted) Leaders / laggards Stage Conclusion
1 AI hardware / optical modules (18 names) A+, ranked 3rd +3.18% (17 up 1 down) LITE +9.59%, CRDO +7.38%, COHR +6.92%, ALAB +6.59% / APH −0.50%, AVGO +0.07% Day 4, accelerating today The pre-market piece underrated it. It was the true #1 theme today
2 neocloud compute (8 names) not broken out as a theme +4.50% (8/8 up) CIFR +10.80%, WULF +6.21%, CORZ +5.24% / NBIS +0.96% Day 2 ⚠️ Strongest basket today; pre-market only mentioned NBIS/CRWV at the single-stock level, never wrote it up as a theme
3 Tankers (7 names) not covered at all +2.06% (6/7) DHT +4.07%, FRO +4.03% / STNG −0.10% newly emerging ⚠️ The surprise theme the pre-market piece missed, detailed below
4 Refining (5 names) wrongly placed in the avoid bucket +1.03%, open→close 5/5 positive PBF +1.62%, VLO +1.57% / PSX −0.11% newly emerging Direction called backwards (see Box B)
5 Semicap equipment (6 names) B+, recommendation slots given to ASML/AMAT +0.20% (3 up 3 down) TER +2.49%, ASML +0.67% / AMAT −1.37%, LRCX −0.61% fading ⚠️ The "perfect breadth" of 6/6 up pre-market was cut in half intraday; average open→close −1.91%
6 Cybersecurity (7 names) bearish B+, avoid −0.74% (1 up 6 down) PANW +0.15% / S −1.32%, ZS −1.19% Day 4, rebounding intraday ⚠️ Direction right, magnitude small; average open→close +1.08%, all 7 of the 7 rose intraday
7 Precious metals miners (15 names) A, ranked 4th, recommendation slot given to GDX −1.77% (1 up 14 down) GOLD +0.47% / CDE −4.67%, HL −3.69% single-day reversal The whole line was a wrong call, a reversal of 3.85pp
8 Energy E&P (8 names) bearish A+, avoid −6.07% (0/8) — / FANG −8.03%, OXY −6.55% accelerating decline Position right, mechanism wrong (see §0 item 5)
9 Large banks (7 names) not covered −2.48% (0/7) — / GS −3.96%, WFC −2.98% newly emerging 🔴 Largest blind spot
10 Homebuilders (9 names) no direction given (volume threshold not met) −1.54% (0/9) — / MTH −2.77%, LEN −2.14% "No direction" was honest, but today the direction was very clear

3.1 Did the pre-market piece identify the strongest theme? — No, but the error was a valuable one

The pre-market piece ranked AI hardware 3rd, with "FOMC" and "Intel–SK Hynix" ahead of it. Today:

  • The FOMC was indeed the biggest variable (it defined the whole day), but it is not a tradable long theme;
  • The Intel line delivered (INTC +4.03%), but it is one stock, not a line — MU −0.11%, SNDK −0.71%, EWY −0.54%; the pre-market worry about "a lone name rising with no sector follow-through" was entirely borne out;
  • AI hardware was the only line with "good breadth + large magnitude + still strengthening intraday" (17/18, equal-weighted +3.18%, average open→close +1.21%, the only major basket that was positive intraday).

3.2 A pattern the pre-market piece retracted itself, and today proved the retraction right

An early draft of the pre-market piece wrote "AI hardware gains are highly correlated with distance from the 52-week high (the more oversold, the bigger the gain)," and then retracted it voluntarily after testing the full 18-name sample (corr −0.175, t=−0.71, not significant). Today's closing data proves the retraction right again, and the direction is even clearer:

Ticker Distance from 52-week high Today %
LITE −15.3% (the biggest gainer, and the closest to its high) +9.59%
CRDO −47.7% +7.38%
ALAB −46.1% +6.59%
AAOI −58.6% (most oversold in the group) +1.52% (and open→close −1.49%)
APH −13.4% −0.50%

If "oversold beta repair" held, AAOI should have been first and LITE last — the reality is exactly the opposite. Today's ordering looks much more like "who was bought with real money intraday": LITE, CRDO, ALAB and COHR all had open→close above +3.3%, while AAOI, CIEN and GLW gapped up and faded. This is selective buying, not a mechanical bounce.

3.3 The surprise theme: tankers — a line where "crude falls, the shippers of crude rise"

DHT +4.07%, FRO +4.03%, NAT +1.78%, ASC +1.71%, INSW +1.52%, TNK +1.39%; 6 of 7 rose, equal-weighted +2.06%, and FRO, DHT, STNG, TNK, NAT and INSW several of them touched 52-week-high territory.

The logic is internally consistent and comes directly from today's energy news itself: after the damage to the Saudi east-west pipeline, supply to Asia switched to ship-to-ship transfers near Sohar, Omanpipeline transport replaced by seaborne transport, so ton-mile demand rises; at the same time bunker (marine fuel) costs fall with crude. Rates up plus costs down is the textbook double-boost for tanker stocks.

🔴 What is worth recording is that the pre-market piece read the same news item (news item #6, "Saudi pipeline outage"), but mapped it only onto the "bullish for oil prices" transmission and never onto the shipping end. Same news item, and the pre-market piece used only one of its legs.


4. Earnings and after-hours movers (next-day catalysts)

4.1 🔴 GNRC — the biggest news of the day, and it happened entirely after the close

Item Data
Regular session closed $175.11, +0.05%; intraday range $173.25–$179.51; volume ratio 1.59
After hours $249.00, +42.20%, after-hours volume 597,743 shares

The source is the company's own primary disclosure: 8-K, filed 2026-09-16, Items 1.01 (material agreement) / 3.02 (unregistered equity sales) / 9.01.

Term Content
Counterparty Amazon.com, Inc. (warrant holder is Amazon.com NV Investment Holdings LLC)
Agreement Long-term backup generator supply agreement serving Amazon data centers
Initial delivery size Roughly $2.4 billion across 2027 and 2028 combined
Warrants Up to 1,693,745 shares at an exercise price of $200.9266, exercisable through 2033-09-16
Immediately vested 307,954 shares
Remaining vesting condition Vests in tranches with cumulative payments (net) from Amazon and its global affiliates, corresponding to a maximum of $8.0 billion

Why this is harder than every "data center power" headline of the past two weeks:

  • It is a signed supply agreement with specific amounts and years — not a price target, not an index rebalance, not a rumor;
  • The $2.4 billion of initial deliveries is itself an order-of-magnitude event (it needs to be assessed against GNRC's own annual revenue; this piece did not obtain that base, so no multiple is inferred);
  • The warrants are the consideration structure by which Amazon gets a discount and GNRC gets a long-term contract — meaning Amazon has an incentive to push payments toward the $8.0 billion cap, which gives "follow-on orders" a mechanical rationale rather than just a commercial hope.
  • ⚠️ Dilution must also be stated: full exercise of 1,693,745 shares is real dilution, and the exercise price of $200.9266 is below the after-hours price of $249.00, i.e. at this after-hours level the warrants are already in the money.

🔴 The implications for tomorrow have to be split into two layers and not conflated: GNRC itself is a "hard-contract repricing," while the rest of the data center power line (BE / VRT / GEV / PWR / ETN) is "sentiment spillover." The former has a cash-flow basis; the latter got no contract today.

4.2 LEN — earnings miss, still falling after hours

Released after 16:45 ET (8-K Item 2.02, EX-99.1 primary-verified):

Item Q3 FY2026 actual Consensus Gap
GAAP diluted EPS $1.19
EPS ex mark-to-market losses and one-time items $1.23 $1.30 −5.4%
Total revenue $8.0 billion $8.37 billion −4.4%
Net income $284 million
New orders 20,879 homes, −9% YoY
Deliveries 20,840 homes, −3% YoY
Homebuilding gross margin 15.8%
SG&A ratio 9.2%
Average selling price $372,000
Backlog 16,857 homes / $6.3 billion
Buybacks 3 million shares / $256 million
Cash / homebuilding debt $1.2 billion / $4.3 billion, debt to total capital 16.6%

Q4 FY2026 guidance (the company's own):

Metric Guidance
New orders 19,500–20,500 homes
Deliveries 22,000–23,000 homes
Average selling price $370,000–380,000
Homebuilding gross margin 15.5%–16.0%
SG&A ratio 8.7%–9.0%
Financial services operating income $90–95 million

After hours $75.99, −3.02% (already −2.14% in the regular session), roughly −5.1% for the two legs combined.

⚠️ Methodology discipline: the miss here is judged on $1.23 against $1.30, not on GAAP's $1.19 — third-party consensus is modeled on the adjusted basis. Even on the right basis, it is still a miss. 🔴 What deserves more attention in the guidance is not EPS but gross margin: Q4 guided gross margin of 15.5%–16.0%, midpoint 15.75%, below this quarter's already-low 15.8%the company itself does not expect improvement next quarter. And new orders at −9% are falling faster than deliveries at −3%, meaning backlog is being consumed.

4.3 Other after-hours movers (volumes all thin, for next-day observation only)

Ticker Close % After-hours % After-hours price After-hours volume Note
NBIS +0.96% +1.92% $213.40 621,656 After-hours volume among the largest in this group
ON −9.02% +1.68% $67.72 318,663 See below
SRPT −4.63% +2.07% $20.17 79,539 thin
SYK +1.16% +1.93% $290.25 39,530 thin
PNC −3.86% −1.13% $228.87 530,526 Banks still weak after hours
CFG −4.84% −1.18% $66.05 64,204 same as above

4.4 ON — 2nd biggest decliner today, and the cause was at 14:00, not in the morning

ON today: open $74.33 (gap +1.54%), session high $74.42, low $65.80, close $66.60 (−9.02%), volume ratio 1.89, volume 18.38 million shares.

The shape is very clean: the open was the high zone of the day, followed by a one-way collapse. Confirmed facts: ON held its Financial Analyst Day at 14:00 ET on 9/16, releasing an updated 2030 long-term model and a data center/AI roadmap; 14:00 also happens to be the FOMC moment. ON also filed a 425 (merger-related communication) with the SEC today.

⚠️ I did not obtain the specific 2030 targets announced at the analyst day (gross margin target, AI/data center scale figures), so I am not drawing an attribution conclusion for "why it fell." What can be confirmed is that it was not macro beta — SMH +0.64% and the semicap basket +0.20% the same day, ON went down independently of its sector. This is left as a to-verify item for tomorrow.


5. Flows and sentiment

5.1 Sector ETF rotation (descending)

ETF Today % Gap % Open→close % Read
SMH semis +0.64% +1.45% −0.80% The only sector ETF with a meaningful gain
TLT long bonds +0.21% +0.28% −0.07% Long bonds up on a hike day — the front end is what was hiked
XLK tech +0.10% +0.65% −0.54%
XBI biotech +0.10% +0.22% −0.12%
XLV healthcare +0.07% +0.05% +0.01% The only one in the field that didn't fall intraday
QQQ +0.03% +0.49% −0.46%
XLU utilities +0.00% +0.75% −0.74%
XLI industrials −0.08% +0.45% −0.53%
IWM small caps −0.43% +0.17% −0.60%
SPY −0.44% +0.28% −0.72%
XLP staples −0.48% −0.06% −0.42% Defensives underperformed the market
IGV software −0.56% −1.12% +0.57% The only major ETF today that gapped down and rallied
XLY discretionary −0.63% +0.20% −0.83%
GDX gold miners −1.41% +1.97% −3.31% Largest reversal of the day
XLC communications −0.90% +0.17% −1.07%
ITB homebuilders −1.12% +0.57% −1.68% Direct victim of rates
DIA Dow −1.15% +0.13% −1.28%
XLF financials −1.62% −0.05% −1.57% The direct object of bear flattening
KRE regional banks −1.77% −0.16% −1.61%
OIH oil services −2.83% −0.21% −2.63%
XLE energy −2.88% −1.08% −1.82%
XOP oil & gas E&P −3.96% −1.90% −2.10% Weakest in the field

5.2 Three structural points worth pulling out separately

① The SMH–IGV scissor gap did not converge, but one of its legs changed. The pre-market gap was 1.64pp (SMH +1.32% / IGV −0.32%); at the close it was 1.20pp (SMH +0.64% / IGV −0.56%)still open, so the pre-market judgment that "the AI capex narrative is repairing, unrelated to rates" holds. 🔴 But today's composition is completely different from this morning's: IGV gapped down −1.12% and then walked up +0.57% intraday, while SMH gapped up +1.45% and then walked down −0.80% intraday. In other words, intraday today (i.e. including all the time after the FOMC), software was stronger than semis. Software recovering lost ground on a day when the front end rose 7bp further refutes the "duration" explanation — if it were duration, software should have been killed the hardest today.

② Defensives did not defend, and that is precisely the signature of a "targeted rate strike." XLP −0.48%, XLU 0.00%, XLRE −0.60%, IYR −0.66% — staples, utilities and real estate, the three classic defensive slots, all underperformed or matched the market today; only XLV at +0.07% held up. In a genuine broad risk-off, utilities and staples should clearly outperform. They did not outperform today because they are themselves rate-sensitive assets (high dividend + high leverage). So there was no "safe haven" today — money was not rotating into defensives, it was reducing rate sensitivity.

③ The VIX reaction was disproportionately small, and this is the thing most worth watching tomorrow. The VIX closed at 17.71, +2.97%; versus this morning's 08:15 print of 16.77 that's only +5.6%. On a day of "first hike in three years + dot plot shifted up + the Dow down 631 points," the VIX closed below 18. The pre-market piece wrote: "a VIX below 17 and still falling means either the market is confident the outcome is known, or protection is being underbought; I lean toward reading the latter as the risk more worth watching." Today's result: the event landed, it was hawkish, stocks fell, and the VIX rose less than 3% — the first explanation (outcome known) is partly falsified, the second (protection underbought) has not been falsified. 🔴 And 9/18 (this Friday) is quarterly triple witching, where near-expiry gamma amplifies directional moves, and BE's S&P 500 inclusion rebalance also executes at that day's close. Low VIX + triple witching + an undigested hawkish dot plot is not a combination for sizing up.

5.3 Risk-appetite characterization

Risk-off, moderate in intensity, and highly structured.

  • What was sold: rate-sensitives (banks −2.48%, homebuilders −1.54%, REITs −0.66%, utilities 0.00%), commodity-linked (energy −6.07%, precious metals −1.77%, XME −0.61%).
  • What was not sold: long-duration growth (Nasdaq −0.01%, SMH +0.64%, AI hardware +3.18%, neocloud +4.50%).
  • Credit sent no warning: HYG +0.05%, LQD +0.16% — zero reaction in high yield, meaning the market did not read this hike as recession risk.

6. Next-day outlook (2026-09-17 Thursday)

① Theme continuity

Theme Today Continuity call Basis
AI hardware / optical modules +3.18%, 17/18 Lean continuation, but size down Still strengthening intraday (open→close +1.21%, the only major basket positive intraday), which is "someone is buying" rather than a mechanical bounce. ⚠️ But today is day 4, and chasing after LITE's single-day +9.59% carries significant risk
neocloud compute +4.50%, 8/8 Lean continuation 8/8 up and positive intraday (+1.63%). ⚠️ Extremely high pure-beta character; CIFR's single-day +10.80% is volatility, not trend
Data center power (GNRC/BE/VRT/GEV) GNRC +42% after hours Strong catalyst, but must be tiered Only GNRC got a contract. The rest is sentiment spillover; if they all gap up tomorrow, the spillover portion is the first to be given back
Refining / tankers +1.03% / +2.06% Lean continuation The drivers of both lines (falling crude cost, pipeline-to-seaborne switch) are still in place, and both were bought up intraday
Energy E&P −6.07% Uncertain, criterion needs replacing 🔴 Do not use inventory data again. The real variable is "the pace of the Saudi pipeline restart" — the Energy Secretary said "measured in days." If restart confirmation appears Thursday there is a second leg down; if there is a delay or another attack, the bounce will be violent
Precious metals −1.77% Lean weak, but the event has cleared The real-yield rise that suppressed it has already fully happened. It has gone from "purely event-dependent" to "can be viewed on fundamentals," and the risk/reward is actually better than yesterday
Semicap equipment +0.20%, 3/6 Fading Average open→close −1.91%, breadth fell from 6/6 to 3/6
Banks / financials −2.48%, 0/7 Must actively form a view (today's lesson) The pressure from bear flattening has not lifted. But note: a hike is positive for net interest margin and negative for the term spread — the two point in opposite directions and you cannot take only one side
Cybersecurity −0.74% The fade may be near its end All 7 names rose intraday (average +1.08%), and it is already day 4

② Tomorrow's earnings and macro calendar

🔴 First, a correction to a widely circulated piece of misinformation: several online "week ahead" pieces say FedEx reports on 9/17 — that is wrong. Per the terminal's company event data, FDX's next earnings date is 10/28 (estimated), DRI is 9/24, NKE is 10/01. There are no heavyweight S&P constituent earnings tomorrow.

Time (ET) Event Note
07:00 Bank of England (BoE) rate decision (12:00 London) Market expects a hold at 3.75% (5 consecutive holds). ⚠️ July was a 6–3 vote, with three members (including chief economist Huw Pill) arguing for an immediate 25bp hike; UK CPI went from 2.6% in June to 2.9% in July and is still rising. A surprise hike or a wider hawkish split would reinforce the "global central banks turning hawkish" narrative and act directly on today's bear-flattening curve
08:30 Initial jobless claims Continuing claims prior 1,774K, expected around 1,780K
08:30 August housing starts / building permits Starts expected 1.320M (prior 1.239M); permits expected 1.400M (prior 1.433M). LEN already delivered a weak print today plus non-improving margin guidance, ITB −1.12%; this data is the second reading on the same line
08:30 Philadelphia Fed manufacturing index Expected 31.3, prior 47.4 — the expectation itself is a sharp pullback; be careful not to read an "in-line decline" as bearish
After hours No heavyweight earnings
9/18 (Friday) Bank of Japan decision + quarterly triple witching + BE's S&P 500 inclusion executing at the close Three things stacked on the same day

⚠️ The 08:30 times above are the standard release times for US economic data. I was unable to obtain the confirmed per-item times for 9/17 from the official Census calendar page (the schedule table did not render), so if you need to size positions by the minute, defer to the official calendar.

③ Focus names (ticker + verification point)

Verification points in this section follow two disciplines: they must test the variable that loses money; and the base rate must be written before the criterion.

# Ticker Direction Rationale The variable that loses money Verification point (falsifiable)
1 GNRC watch, do not chase The only data center power name with a hard contract: a long-term Amazon agreement, 2027–28 initial deliveries of $2.4 billion, cumulative cap $8.0 billion (8-K Items 1.01/3.02, primary) 🔴 The +42% after hours has priced the "maximum $8.0 billion" in one shot, and $8.0 billion is a cap, not a committed amount; vesting depends on actual payments Use volume, not price: can tomorrow's full-day volume reach 3x the 10-day average? The 598,000 shares after hours are only a small fraction of average volume, so if volume doesn't follow after the open, the +42% gap is just overnight orders. Second criterion: whether the 1,693,745 shares of warrant dilution is included in per-share metrics in sell-side morning notes tomorrow
2 LITE watch, already delivered, do not add +9.59% today, first on the entire list, and +7.41% of it came intraday rather than from the gap; fundamentals were verified pre-market as the cleanest in the group (net income-to-cash conversion 96%, net cash +$1.101 billion, ROIC 16.0% > WACC 12.5%) 🔴 Diluted P/S is already at 28.1x, its own 5-year high, and after another 9.59% today it can only be higher; short interest 7.94% has most likely been partly squeezed out today, i.e. "the next rally has one buyer fewer" No company-side news with a confirmable publication date was found today (the pre-market piece had already scanned all SEC filings since 8/11; there were no new filings today either). Criterion: if it keeps rising on heavy volume tomorrow with no primary disclosure, treat it as the tail of a short squeeze rather than a confirmed trend. Specific threshold: can the close hold today's low of $855.09
3 MPC / VLO / PBF watch (corrected today) For refiners, crude is a cost line; all five refiners were 5/5 positive open→close today (+1.60% ~ +3.99%), and MPC/VLO/DK/PSX touched 52-week-high territory 🔴 A widening crack spread presupposes that crude falls faster than products. Today's EIA showed gasoline building 794,000 barrels and distillates building 1.585 million barrels — the product end is building too, and if product declines catch up to crude, the spread reverses The criterion must test the spread, not the oil price: if WTI keeps falling tomorrow and refiners do not rise, the market is already pricing a product-side glut and this item is void. Note refinery utilization is already at a high 96.1%, leaving limited room for further increase
4 XLF / KRE form a view (making up today's blind spot) Today 0/7 large banks rose, and GS alone accounted for 37.5% of the Dow's decline; the driver was 2s10s compressing from 33bp to 27bp 🔴 The two drivers of this line point in opposite directions: a hike lifts short rates, which is positive for net interest margin as assets reprice, while a flatter curve is negative for the term spread. Today the curve won, but that is not permanent The criterion tests the curve directly, not the share price: if 2s10s keeps narrowing tomorrow (<27bp), the pressure on banks has not lifted; if it re-steepens after the BoE, today's decline was event-driven. ⚠️ Do not use the intuition "a hike = good for banks"; it was already falsified once today
5 ON to be verified, no direction given −9.02% today (2nd biggest decliner), and unrelated to its sector (SMH +0.64% the same day) I did not obtain the specific 2030 targets published at the 9/16 analyst day, so I am giving no direction. The first task tomorrow is to obtain that material; until then ON is in the "cause unconfirmed" bucket, handled the way FANG was yesterday: don't touch it

④ Directions to avoid

Direction Reason
Energy E&P Still avoid, but for a different reason: not inventories (the EIA was a draw today), but the Saudi pipeline restart "measured in days" continuing to dismantle the supply premium. ⚠️ It must also be stated that this cuts both ways: the restart is known, and any delay or fresh attack would produce a violent bounce; after −6% today the risk/reward of chasing the short is already asymmetric
Chasing precious metals lower 14 of 15 names fell today, GDX −1.41% (−3.31% intraday). But the event that suppressed it has already landed, and shorting on the first day after an event clears is not advised — what is being avoided is "continuing to bottom-fish on yesterday's bullish logic," not "turning bearish"
Homebuilders LEN's earnings miss + Q4 gross margin guidance of 15.5%–16.0%, below this quarter's 15.8% (the company itself does not expect improvement) + new orders −9% falling faster than deliveries −3%; housing starts also come at 08:30 tomorrow. This time it isn't "no data," it's data that is complete and uniformly pointing down
Chasing "data center power" spillover names Only GNRC got a contract. If BE/VRT/GEV/PWR rally in sympathy tomorrow, you are buying sentiment, not cash flow; BE additionally has the mechanical bid at the 9/18 close and the 9/28 lead-plaintiff deadline for the class action tangled together
Semicap equipment Breadth fell from 6/6 to 3/6, average open→close −1.91%; and the discipline that "equipment is a supply-side indicator" got one more empirical confirmation today (AMAT −1.37% while SMH was +0.64% the same day)
Sizing up any directional position ahead of triple witching VIX at 17.71 is low + quarterly quadruple expiry on 9/18 + a dot-plot shift that has not been fully digested. A low VIX means protection is cheap, not that risk is small

⑤ Input notes for tomorrow's pre-market list

  1. 🔴 Coverage of financials must be established; this is today's biggest lesson. Tomorrow's pre-market piece must give XLF / KRE / GS / JPM either an explicit direction or an explicit "no direction + reason," and must not just list tickers again. Use the 2s10s spread as the criterion, not share prices.
  2. 🔴 The energy criterion must switch from "inventories" to "the pace of the Saudi pipeline restart." Today proved that inventory data triggered the falsification condition while the conclusion became more valid, which shows inventories are not measuring the driving variable.
  3. Add an "upstream/downstream" column to the list. MPC was today's only name called backwards because of a classification error. For any branch involving commodities, the name must be tagged as being on the revenue side or the cost side of the price.
  4. Names whose risk column reads "reverses if X happens" must not occupy a recommendation slot. GDX and AMAT each contributed a lesson today. If X is the day's major pending event, the correct approach is to wait for X to land before assigning a position.
  5. Track the "watch only" bucket's performance as a separate ledger on an ongoing basis. Today that group went 9/9 beating the S&P, equal-weighted +2.17%, with COHR the 2nd best in the field. This is now the same shape recurring repeatedly: what that group screens out is holding value, not same-day direction. Suggest that from tomorrow the list explicitly separate "I don't like its value" from "I predict it will fall."
  6. Preset a volume threshold for names like GNRC that gap +42% after hours. Apply the existing discipline: pre-market notional must be measured in dollars, not share counts, and whether something is already priced is read off the volume ratio, not the percentage move (BE is exactly what tripped on this today — a volume ratio of 0.93 was treated as "already front-run").
  7. To-verify list (must be completed tomorrow): ① ON's specific 2030 targets from the analyst day; ② GNRC's annual revenue base (to assess the relative scale of $2.4 billion / $8.0 billion, not obtained today, hence no multiple was inferred in this piece); ③ the FANG block-trade hypothesis — today's intraday action has pushed the weight of evidence to that side, but there is still no SEC filing.

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

🔧 Internal record: data-collection failures and channel status this session

1. yfinance was not used this session. Given that the prior session (09-16 pre-market) confirmed by test an IP/endpoint-level 429 block, this session went straight to the CNBC quote API as the primary channel, without retrying yfinance and without wasting retry time. CNBC worked throughout: a full pull of 575 names with 0 failures and 0 gaps (batches of 40, with 3 retries as backstop); an additional 70 index/ETF/futures symbols likewise had 0 failures. Conclusion: CNBC batch pulls are currently the most stable channel on this machine, especially in the after-hours window (extended-hours fields are available, the opposite of the silent-lag problem seen pre-market).

2. Broken quote fields — the same pothole, for the Nth time:

  • CNBC's US2Y change_pct returned −0.1484% while within the same record last (4.742) is clearly higher than prev (4.663). This session worked around it by back-computing from the official Treasury CSV.
  • A new observation worth recording: in the same request, the change fields for US5Y (+1.1604%), US10Y (+0.5805%) and US30Y (+0.0186%) matched self-computed values exactly, and only US2Y was broken. This shows the breakage is symbol-level, not endpoint-level — you cannot discard the whole Treasury channel because one symbol is broken, and you cannot trust a fourth symbol because three are fine.
  • FX previous_day_closing rolls intraday: EUR's prev close went from 1.1543 to 1.1464 after this morning's piece finished running. Quoting the FX change field directly produces the wrong conclusion that "the dollar barely moved." This session switched to the level difference "this morning's reading → closing reading." This pothole had not been recorded before; the recommendation is to permanently distrust FX change fields and always use level differences.

3. Fetch channels that failed by test this session:

Channel Result
cnbc.com/2026/09/16/oil-prices-today-... (article body) 403 (same as last session; CNBC article pages consistently 403 for this machine, but the quote API works)
ir.eia.gov/wpsr/wpsrsummary.pdf Downloadable, but this machine has no pdftotext / poppler-utils; the Read tool reports pdftoppm is not installed and the PDF cannot be parsed
census.gov/economic-indicators/calendar.html The schedule table is JS-rendered; the fetched HTML contains no date entries, so the 08:30 times in §6② could only be written as standard release times and this is flagged in the body
data.sec.gov / www.sec.gov/Archives/.../index.json Intermittent 503 (LEN's index.json failed repeatedly, GNRC's succeeded). Workaround: use WebSearch to get a direct link to EX-99.1 and then WebFetch it — this worked.

4. 🔴 The correct way to pull EIA data (the most valuable ops conclusion this session):

  • When the PDF is unusable, https://ir.eia.gov/wpsr/table1.csv is a directly parseable primary table, containing this week / last week / year-ago columns plus differences, with all inventory items in a single request. This session used it to obtain "commercial crude 423.429 vs 424.069 = −0.640".
  • ⚠️ And this one directly saved this piece's main conclusion: the media copy returned by search generally reports API's "+7.14 million barrel build" as the EIA number (CNBC / RTE / globalbanking and others, all relaying the same source), so copying it would have put "the EIA confirmed a build" into the body while the fact is exactly the opposite. The same search also produced two mutually contradictory totals, 423.4 and 411.7 — a classic signal of "self-contradictory search summaries," which requires going down to the primary table.

5. "Fake calendar / fake catalyst" items rejected this session (two, neither used):

Claim Reality How it was caught
"FedEx reports on 9/17" (written this way in several "week ahead" pieces) FDX's next earnings date is 10/28 (estimated); DRI 9/24, NKE 10/01 Cross-checked name by name using CNBC quote's EventData.next_earnings_date. Those preview pieces are reuses of the same column from the year-earlier period (the same source also mixes in "the Fed will cut rates," which is 2025 text)
LITE's "9/16 long-term guidance raise / DB $1,200, Evercore $1,100 initiations" Publication date cannot be confirmed; a content-farm site (stockstotrade) stitched multiple old items into a 9/16 page, and the "$40 EPS by FY2028" appears to come from the 8/11 earnings call Cross-checked against the full SEC scan already completed pre-market (no new disclosures since 8/11); this piece therefore states explicitly for LITE that "no company-side news with a confirmable publication date was found" and used none of those items

6. Third-party data errors (found and worked around):

  • 24/7wallst / AOL's "Coherent Jumps 6%, Lumentum Climbs 5%" is a 14:46 ET intraday snapshot presented as the day's performance. The actual closes were COHR +6.92% and LITE +9.59%. This piece used self-pulled closing prices throughout. This is another instance of "the search summary gave an intraday reading."
  • One search summary said GNRC "closed at $252.31, range $173.25–$254.70"it folded the after-hours price into the regular-session range. CNBC's regular-session basis is: open 177.16 / high 179.51 / low 173.25 / close 175.11, and the low matches exactly, proving that summary is a splice of "regular-session low + after-hours high." This piece reports +0.05% regular session and +42.20% after hours separately.
  • One summary said "Brent closed at $105.83" — $105.83 is the 9/15 WTI close, a case of crossed numbers; not used.

7. The Dow point-attribution divisor problem: an initial calculation with 0.10021 gave −1029 points, inconsistent with the actual −631.21 points. Switching to back-solving via "sum of the 30 components' price changes ÷ the index's actual point change" gave a divisor of 0.16332, from which each component's point contribution was computed (GS −237 points / 37.5%). Conclusion: the Dow divisor cannot be taken from memory and must be back-solved every session.

8. To-verify items (flagged in the body, collected here for tomorrow's reconciliation):

  • ON's specific 2030 target figures from the 9/16 analyst day (14:00 ET) — repeated searches produced only the event announcement and a Wells Fargo PT cut ($110→$95, date also unconfirmed), not the content presented at the event. ON's −9.02% on the day was left unattributed.
  • GNRC's annual revenue base was not obtained, so the body makes no multiple or share-of-revenue inference about $2.4 billion / $8.0 billion (avoiding a repeat of the "contract amount off by an order of magnitude" class of pothole).
  • FANG still has no SEC filing supporting the block-trade hypothesis, but today's "gap −6.85% while open→close was −1.26% (strongest in the group) + volume ratio 8.10" has pushed the weight of evidence to that side, as written into Box A in the body.
  • JBHT's "Q3 down −5%~−10% sequentially" still rests only on a relay of a CNBC broadcast; this session did not attempt to re-listen to the webcast.