πŸ‚ SPY Bull / Bear Tracker 🐻

Which side is winning today β€” bulls or bears β€” and how strong. Simple version up top, every number sourced below.
BULL Β· 0 OF 5 BARS BEAR Β· 3 OF 5 BARS
BEARISH
-2.75 on a βˆ’5 (max bear) to +5 (max bull) scale Β· bear meter: 3 of 5 bars

Bears are in control today. An oil shock β€” Brent above $113 after strikes on Saudi energy sites β€” and heavy selling after Meta's and Tesla's earnings pushed SPY down 1.17% to 764.02. Price closed between the two lines that matter: bears own it below 762, bulls above 770. One thing did not confirm the selloff: credit stayed calm, with HYG finishing higher on the day.

⚠ Shock override ON β€” Energy & geopolitics scored βˆ’2 (oil shock: WTI ~$99, Brent >$110 on Gulf supply risk). Shock weights are in force: energy weight rises 15 β†’ 30 until the factor comes off Β±2.
Edition: Fri, Oct 23, 2026 Β· 2:10 AM ET Β· Overnight / pre-market Β· Hourly on weekdays Β· next run β‰ˆ 3:10 AM ET Β· Scoring ruleset v1

πŸ—ΊοΈ The map β€” two lines that matter

762 770 SPY close 764.02 bear zone contested bull zone

Bears own it below 762 Β· Bulls own it above 770 Β· in between (762–770) is contested. Bulls must reclaim the rejected 769–770 ceiling; the prior close at 773.09 is the next gate above. Bears own the tape only on a sustained break of the 762 floor β€” Thursday's 761.16 probe did not close through it, and SPY closed the session inside the contested zone at 764.02. Levels unchanged for Friday: the floor was defended on closes all day Thursday, the ceiling was never retested.

πŸ“Š Today's numbers

SPY close
764.02 (-1.17%)
Day low 761.16 Β· prior close 773.09
50-day / 200-day
768.29 / 726.29
Price is under the 50-day, well above the 200-day
VIX
~19.1
close range 19.03–19.14 across closing sources β€” flagged, headline ~19.1
10-year yield
4.953%
close 4.953%, βˆ’19.3bp (post-close brief; WSJ corroborates sub-5% close)
WTI crude
$99.47
Dec settle $99.47, +2.39% (DTN; high $100.17)
Brent crude
$113.17
Dec settle $113.17, +4.00% (DTN 3:00 PM CDT; high $113.47)
Dollar (DXY)
101.43
101.43 at 2:30 PM EDT (DTN, single-source) β€” slid on the day; supersedes the 101.79 9:31 AM pulse
Jobless claims
194K (consensus ~200K)
Continuing claims 1.728M

πŸ“Ό The tape β€” momentum & reversals

β–² REVERSAL WATCH β€” UP
As of the 3:55 PM ET bar (the session's final bar) Β· key level: the 762 floor Β· probe: low 761.16 at 3:00 PM
Price 764.02VWAP 763.7114 EMA 762.7050 SMA 763.11200 SMA 768.18RSI-14 62.4
Signal β€” REVERSAL WATCH Β· UP, fired 3:15 PM and re-fired 3:50 PM at the 762 floor on the 3:00 PM probe (low 761.16): session βˆ’1.55% at the probe, no close through the level, EMA + VWAP reclaimed, volume dried into the probe and expanded on the turn. Its 2-hour grading window runs past the close, so it is ungraded here and left for the post-close backfill (best travel so far +0.38% from the probe). Replay on revised bars this edition: the morning watches at 11:20 AM and 11:50 AM (same 10:35 AM probe, 762.10) both grade HIT (+0.50% by 12:00 PM); the 1:30 PM / 1:40 PM watches on the 1:10 PM probe (762.16) grade MISS (+0.24% / +0.21%); the 2:15 PM watch (2:00 PM probe, 761.41) is ungraded (best +0.35%, window incomplete). Correction (from the 5:10 PM edition): the 4:10 PM edition listed the early-afternoon fire at 1:25 PM on a 12:50 probe β€” on Twelve Data's revised bars it fired at 1:30 PM on a 1:10 PM probe; verdict unchanged (MISS). Bar revisions also nudged the close (764.03 β†’ 764.02) and probe (761.17 β†’ 761.16). 2:10 AM re-run: engine current + replay (on Thursday's bars) returned identical state, signals, fires and grades β€” no new fire; Friday replay returns no fires (no session bars yet).
Market is closed overnight; the Thu 15:55 ET bar is Thursday's final bar, re-fetched and re-computed this run at 02:10 ET Friday β€” identical values to the 1:10 AM run, not a carried-forward intraday read. Friday has no bars yet.
Technical momentum + reversal module β€” separate from the factor composite above. Computed by the momentum engine from verified Twelve Data 5-min bars (VWAP Β· 14 EMA / 50 / 200 SMA Β· structure Β· RSI-14 Β· volume at the levels). Refreshed hourly, not a live stream. If the bars go stale, this panel shows STALE / NO CALL rather than a guess. Rules: MOMENTUM-RULES v1 in RULES.md; every state is archived in spy-bias-history.jsonl and reversal calls are graded after the close.
Source: momentum_engine.py current + replay on verified Twelve Data 5-min bars (final bar 15:55 ET, market closed; engine re-run at 02:10 ET Friday β€” state, signals, fires and grades all identical to the 1:10 AM edition); hourly refresh, not streaming; STALE / NO CALL if bars stale

Why β€” the seven factors

Each factor is scored βˆ’2 to +2 from evidence. The full evidence, sources, and checks are kept β€” nothing is trimmed.

Technical structure

-1 Β· Mildly bearishweight 20 of 100

SPY closed at 764.02 (βˆ’1.17% on the day; S&P 500 βˆ’1.21%, Nasdaq βˆ’2.6% β€” its worst day since June), under the 50-day (768.29) but well above the 200-day (726.29). The session's last act was absorption: a 3:00 PM probe printed 761.16 β€” 0.11% through the 762 floor β€” with no 5-min close through it, and price reclaimed VWAP (763.71) and the 14 EMA into the close, finishing +0.27% above the floor. The 769–770 ceiling was never retested. A violent session inside a still-intact long-term uptrend caps at βˆ’1, not βˆ’2.

Source: Twelve Data 5-min bars via momentum_engine.py (15:55 ET final bar, close 764.02, market closed); WSJ market wrap, Oct 22, 2026 (S&P βˆ’1.2%, Nasdaq βˆ’2.6%); MarketBeat SPY snapshot (50-day); TrendEdge (200-day); CNBC live updates, Thu evening Oct 22, 2026 (overnight futures); TradingView News, Oct 23, 2026 00:08 UTC (U.S. futures little changed Friday after Thursday's rout) β†—

No change since the 1:10 AM edition β€” market closed overnight; final bars unchanged on this run's engine re-fetch at 02:10 ET Friday (close 764.02, VWAP 763.71, RSI 62.4 all identical). βœ“ βˆ’1.17% day change; S&P 500 βˆ’1.21% close corroborates Β· βœ“ Floor held on closes (probe through 762, no close through) Β· ⚠ 200-day single-source (TrendEdge). Overnight futures UPGRADED from flagged to cross-checked this edition: CNBC's Thursday-evening live updates put Dow futures +52 pts (+0.1%), S&P 500 futures +0.06% and Nasdaq-100 futures βˆ’0.1% β€” matching the earlier low-tier ScanX/LiveSquawk read (S&P flat, Nasdaq βˆ’0.1%); a later TradingView/Stocktwits note (10:36 PM ET) had Nasdaq futures +0.18%, S&P flat, Dow βˆ’0.16%. Every read agrees: futures are essentially flat/mixed, stabilizing after the rout β€” not a new leg in either direction, not scored. 02:10 scan adds TradingView's Friday note (published 00:08 UTC) that U.S. futures were little changed after Thursday's rout (Nasdaq βˆ’2.6%, S&P 500 βˆ’1.21%, Dow +0.02%) β€” consistent with the cross-checked flat/mixed picture, not scored.

Earnings

-1 Β· Mildly bearishweight 15 of 100

Final after-hours update β€” WDC's slide deepened into the extended-hours close: StockAnalysis put the final after-hours print at $331.19, βˆ’6.49% as of 7:59 PM ET (single-source late print), below the $335–$337 evening band (a later Investing.com snapshot via ABC Money put it at $337.01, βˆ’4.85%) β€” the beat was sold all evening, and the earnings call added a capex flag: CNBC reported WDC fell ~6% in early after-hours trading after management flagged higher capital spending (4–6% of sales for five years, higher in the first two) and rising input costs, despite strong internals (revenue $4.38B vs ~$4.14B consensus, adj. EPS $4.64 vs $4.11, Q2 guide $5.0–5.2B / $5.60–6.00 well above consensus, adj. gross margin 58.1% vs 54.4% last quarter, dividend +17%, $1.0B buyback) and after closing βˆ’6.43% at 354.19. Evening snapshots of the same slide: Barron's βˆ’4.4% to $338.66, MarketBeat $335.28 (βˆ’5.34% extended at 7:07 PM ET), Morningstar/Dow Jones (7:12 PM ET) βˆ’5% to $336.50 β€” even a clean beat is being sold in this tape, which keeps WDC from offsetting the day. The day's index-weight internals story is unchanged: META closed βˆ’6.98% (648.85) on its $34.9B Q3 capex / βˆ’$2.1B FCF deficit / ~$825B commitments / new nonvoting share class despite the +26% revenue beat; TSLA closed βˆ’3.08% (374.58) on weak internals (net income βˆ’43%, operating income βˆ’56%, capex guide cut to ~$20B). Chips were the epicenter (chip index βˆ’6.7%; INTC βˆ’8.04% in-session β€” INTC reports Oct 29, not tonight). PG (this morning) beat on core EPS ($2.00 vs $1.89) with organic sales +4% and closed +5.58%, though gross margin fell ~150bp. Other after-hours movers tonight β€” Deckers βˆ’7% on a cut outlook, Sallie Mae βˆ’5%, Bloom Energy βˆ’5% (Morningstar/Dow Jones) β€” are not index-weight names. The +29.0% blended Q3 backdrop (FactSet) caps this at βˆ’1. Tomorrow pre-market: AXP and SLB β€” neither is a mega-cap tech weight.

Source: CNBC via SourceFirst, Oct 22, 2026 (WDC fell ~6% in early after-hours; capex 4–6% of sales flagged, rising input costs; revenue $4.38B, adj. EPS $4.64 vs $4.09 LSEG); Morningstar / Dow Jones Stocks to Watch, Oct 22, 2026 19:12 ET (WDC βˆ’5% to $336.50 after hours; Deckers βˆ’7%, Sallie Mae βˆ’5%, Bloom Energy βˆ’5%); Barron's, Oct 22, 2026 (WDC βˆ’4.4% after hours to $338.66); MarketBeat WDC earnings page, Oct 22, 2026 (extended trading $335.28, βˆ’5.34% as of 7:07 PM ET); Finnhub (WDC regular close 354.19, βˆ’6.43%; META βˆ’6.98%, TSLA βˆ’3.08%, PG +5.58%); Morningstar / Dow Jones, Oct 22, 16:30 ET (WDC internals); FactSet Earnings Insight, Oct 16, 2026; StockAnalysis WDC statistics page, Oct 22, 2026 (after-hours $331.19, βˆ’6.49% as of 7:59 PM ET) β†—

Cross-checked: WDC's after-hours slide is now confirmed across four evening sources β€” Barron's (βˆ’4.4% to $338.66), MarketBeat ($335.28, βˆ’5.34% at 7:07 PM ET), Morningstar/Dow Jones (βˆ’5% to $336.50 at 7:12 PM ET) and CNBC (~βˆ’6% in early after-hours) and a later Investing.com snapshot ($337.01, βˆ’4.85%) β€” a $335–$337 evening band; the snapshots differ by time and venue, not direction, so they are flagged as a band rather than asserted as one exact price. The capex/input-cost flag is CNBC single-source reporting of the call β€” noted, scored mildly. WDC internals cross-checked Morningstar-Dow Jones vs Shacknews vs 8-K summary and Barron's (58.1% adj. gross margin, Q2 revenue guide $5.0–5.2B). META/TSLA/PG closes are Finnhub regular-session closes carried from the 17:10 edition. No score change at 02:10: the late slide to $331.19 at 7:59 PM ET (StockAnalysis, single-source) extends the evening band down to $331–$337; the sustained negative reaction and capex flag reinforce, but do not deepen, the βˆ’1 (FactSet backdrop cap). No new index-weight earnings verified overnight (02:10 scan of Reuters/AP/CNBC/MarketWatch headlines found none; Seeking Alpha's Friday calendar confirms AXP and SLB report before the open β€” previews only, not yet printed); AXP and SLB report pre-market Friday (~7:00 AM ET) and have not printed yet.

Macro & the Fed

-1 Β· Mildly bearishweight 10 of 100

No new macro prints overnight. Initial claims 194K vs ~200K consensus β€” a genuine beat the market ignored all day. LEI unchanged in September. Friday brings flash PMIs and consumer sentiment (the next test). FOMC lands Wed Oct 28 with the Fed in blackout: markets price ~89% hold next week with December hike odds ~76% (TradingView) β€” no dovish relief in the path while the oil shock feeds inflation.

Source: Verified session tape (main-chat market log); Federal Reserve FOMC calendar; Friday data calendar via post-close market briefs

Cross-checked: claims Reuters + DOL via TheStreet; LEI via CAMS (Reuters-sourced); rate pricing single-source (TradingView) β€” flagged, scored mildly. No fresh print this hour β€” carried from the verified midday record; Friday's PMI/sentiment are scheduled, not yet printed.

Rates / dollar / liquidity

-1 Β· Mildly bearishweight 10 of 100

Closing prints replace the 1:08 PM carries: the 10-year settled at 4.953% (βˆ’19.3bp on the day) β€” the WSJ notes it dropped below 5% for the first time in nearly a month, with the sharpest one-day fall in more than three years, on a flight-to-safety bid that did NOT support equities. The level (~4.95%) is still restrictive, which keeps this factor negative, but the direction cushions multiples instead of tightening them. DXY slid to 101.43 by 2:30 PM EDT (DTN, single-source) β€” softer dollar, consistent with UUP's βˆ’0.10% close at 28.89.

Source: Post-close market brief, Oct 22, 2026 (10Y 4.953%, βˆ’19.3bp); WSJ market wrap, Oct 22, 2026; DTN Oil Update, Oct 22, 2026 (DXY 101.430 at 2:30 PM EDT); Twelve Data (UUP close)

10Y close cross-checked: 4.953% (post-close brief) vs WSJ ('below 5%, ~0.2pp fall, sharpest in >3 years') vs the 1:08 PM 4.97% print β€” a consistent progression, not a conflict. Overnight the 10-year was quoted at 4.966% (TradingView/Stocktwits overnight note) β€” essentially flat vs the close, flagged single-source, not scored. DXY 101.43 is SINGLE-SOURCE (DTN) β€” flagged; it supersedes the stale 101.79 9:31 AM pulse. The superseded 5.15% tape value from the 13:05 edition remains logged in the archive.

Energy & geopolitics β€” OVERRIDE

-2 Β· Strongly bearishweight 30 of 100

Settlements still confirm the shock β€” and evening futures are holding it: WTI (Dec) settled $99.47, +2.39% (session high $100.17 β€” third straight touch of triple digits) and Brent (Dec) settled $113.17, +4.00% (high $113.47, a peak since late April), after Houthi strikes on Saudi energy infrastructure (Shaybah field, Dammam airport), IRGC claims of tanker strikes near Hormuz, a U.S. diplomatic drawdown from Saudi Arabia, and reported U.S./Israeli planning for post-midterm strikes on Iran. Overnight futures are holding the settlements essentially flat (Reuters early-Asia: Brent $112.96, βˆ’0.2%). The same Reuters piece adds two Thursday supply items inside the same escalation complex: Saudi Aramco ordered the evacuation of its Dhahran headquarters, and a Libyan pipeline valve shutdown (Hamada/Tahara fields to Zawiya port) cut production there. A later Asia print ticks oil slightly HIGHER, not lower: the Hindu BusinessLine live blog at 9:31 AM IST Friday (12:01 AM ET) put December Brent at $113.64, +0.42%, and December WTI at $100.06, +0.59% β€” single-source and ~3Β½ hours after the Reuters 00:30 GMT read, so the two do not conflict; Livemint's Friday read (Brent near $113, WTI held above $99) is consistent. Livemint also carried President Trump's Thursday White House remarks that the U.S. has 'knocked out' Iran and threatened to go 'a little bit further' β€” Thursday comments inside the same escalation complex. No new post-midnight escalation or de-escalation verified. Reuters' early-Asia Friday read (00:30 GMT) has Brent at $112.96, βˆ’0.2% β€” flat against the settle; its WTI figure ($98.12 on a stated βˆ’0.3% move) does not reconcile with the $99.47 settle and is flagged in the data notes, not used. An oil shock at these levels is simultaneously an inflation impulse and a consumer tax β€” still the dominant driver, override stays on.

Source: DTN Oil Update, Oct 22, 2026, 3:00 PM CDT (settlements: WTI $99.47 +2.39%, Brent $113.17 +4.00%); Bloomberg via RigZone, Oct 22, 2026 (Brent settled ~$113, +4%; WTI closed above $99); NY Post market wrap (Brent $113.17, WTI $99.47) β†—

Cross-checked settlements: DTN ($99.47 / $113.17) = NY Post ($99.47 / $113.17) exactly, Bloomberg/RigZone consistent (~$113 / above $99). Evening futures (After Market Brief, Oct 22: WTI 99.29 / Brent 112.99) sit slightly below settlements β€” flagged as a post-close futures wiggle, settlements remain the headline values. Overnight: Reuters early-Asia Friday (00:30 GMT) Brent $112.96 (βˆ’0.2%) reconciles with the settle β€” flat, not a reversal; CNBC TV18's early-Friday note (Brent above $113 / WTI near $99) is consistent. Aramco Dhahran evacuation and the Libya valve shutdown are Reuters single-wire items from Thursday, inside the already-scored escalation complex β€” noted, no score change. Late-Asia uptick (Hindu BusinessLine 9:31 AM IST Fri: Brent $113.64 +0.42%, WTI $100.06 +0.59%) is SINGLE-SOURCE β€” flagged, not blended; settlements remain the headline values and the βˆ’2 / override is unchanged either way. Flagged conflict: that Reuters piece prints WTI at $98.12 while describing a βˆ’0.3% move β€” off the cross-checked $99.47 settle, βˆ’0.3% implies ~$99.20, and $98.12 matches Thursday's early-session level; treated as an apparent reporting error in that source, settlements remain the headline values. 02:10 scan: the Reuters early-Asia piece (00:30 GMT) is still the latest Reuters oil read β€” no newer Reuters/AP oil headline verified. Trump's Truth Social post accusing Iran of making up 'fake hits, mines, and everything else' to lift oil prices was posted Thursday (~1:01 PM ET, Stocktwits) β€” a Thursday item inside the already-scored escalation complex, surfaced in this scan; noted, no score change.

Positioning & sentiment

-1 Β· Mildly bearishweight 5 of 100

No change post-close: VIX closed ~19.1 (19.03–19.14 across closing sources; +14–15% on the day from a 16.64 prior close) β€” high-teens and elevated, hedges paid for, but not capitulation pricing (mid-20s). VIX futures products confirm the bid (VIXY +6.31% at the close). The day's tape was violent in both directions (probe through the floor, then a VWAP reclaim into the close) β€” size for the range.

Source: Closing VIX prints: post-close market brief (19.08, +14.39%), Sigmanomics Cboe close summary (19.14, +15.02% from 16.64), Portfolio Terminal Cboe close (19.05); Finnhub (VIXY close +6.31%)

VIX close cross-checked as a range with a small flagged conflict: 19.03–19.14 across four closing sources (brief 19.08, Sigmanomics 19.14, Portfolio Terminal 19.05, futures dashboard 19.03) β€” headline uses ~19.1; no single value is asserted as exact. This replaces the 13:08 latest-print carry (19.1) β€” same level, now a verified close. Put/call UNVERIFIED β€” recorded as missing and not scored.

Credit & breadth (lie detectors)

+1 Β· Mildly bullishweight 10 of 100

Non-confirmation of the bear case held at the close and is unchanged this edition: HYG closed at 77.09, +0.14% (Twelve Data closing print) while SPY fell 1.17%, so credit never broke. The index-level picture agrees: the Dow finished flat (+0.02–0.03%) while the Nasdaq fell 2.6% and the chip index 6.7% β€” damage concentrated in mega-cap growth/tech, defensives bid (PG +5.58% after its beat; staples led at midday). Breadth's last full sector read remains 1:08 PM (6 of 11 sectors higher) β€” not refreshed post-close and labeled as such.

Source: Twelve Data (HYG close 77.09, +0.14%); WSJ + NY Post closing wraps, Oct 22, 2026 (Dow flat, Nasdaq βˆ’2.6%, chips βˆ’6.7%); CAMS Midday Market Check, Oct 22, 2026 (sector breadth) β†—

HYG closing print carried from the 16:10 edition's fresh Twelve Data quote, re-confirmed unchanged at 02:10 β€” unchanged because it is Thursday's close itself. Index-divergence cross-checked WSJ vs NY Post vs post-close briefs (Dow +0.02–0.03%, S&P βˆ’1.21%, Nasdaq βˆ’2.59/βˆ’2.6%). Breadth sector detail NOT refreshed post-close (13:08 read carried and labeled); RSP close not verified this run β€” recorded missing, not filled in.

✏️ Corrections & data notes