SP500ReviewCautious

SP500 July 31 Review: A Whipsaw Through Both Invalidations Undersold by the

Digestion Call, but the Level Map Held

SP500 opened Friday essentially flat to Thursday's 7,450.19 close (7,439.89) rather than the modest gap-up implied by stale premarket commentary, then round-tripped through both of the prep's confirmed invalidation levels intraday — a wick down to 7,396.94 that breached the 7,406.56 support pivot, then a reversal spike to 7,510.19 that cleared the entire 7,467-7,490 resistance zone and the 7,509.20 objective beyond it — before settling back to close at 7,486.89 (+0.49%), just inside the resistance zone and short of a confirmed H1 close beyond either level. The prep's Range/digestion day-type call and Neutral/Wait lean badly undersold the session's volatility, and its 42%-weighted lead scenario (a gap that never existed, fading into the 7,406-7,467 corridor) never happened, but the underlying key-level map and its confirmed-close invalidation discipline held up cleanly through the whipsaw.

Prep outcomepartial
Lead scenario42% · missed
Leanneutral · incorrect
Day typerange → whipsaw
Surprisehigh
Grade card6 of 11 correct
Session chart
SP500 — session vs prep levelsH1
Shaded band: the reviewed session. Price lines: the preparation's key levels — see which held and which broke.
Powered by Cortiq

Graded against live session data from Cortiq

Every call in this review is checked against the session data captured in Cortiq — the AI trading workspace that powers our daily preparation, review, and calibration loop.

See how Cortiq works
Session
SP500 Month-End Session Review — ECI/Chicago PMI/Michigan Sentiment Cluster and the Amazon/Apple Earnings Split (July 31, 2026)
Symbol
SP500
Window
00:00 – 23:59 UTC
Day type called
Range (digestion)
Day type actual
Whipsaw
Lean outcome
Incorrect (neutral-incorrect)
Regime
Whipsaw — both invalidations wicked through intraday, neither confirmed; closed inside the resistance zone, +0.49%
Preparation
Partially accurate
Surprises
High

Grade card

6 of 11 correct
  1. Day-type callIncorrect
    Called
    Range (digestion) — no tier-1 event, the day after a near-2x-ATR trend day that had already tagged its resistance target
    Actual
    A two-sided whipsaw: price wicked below the 7,406.56 support invalidation (low 7,396.94) and above the 7,490.60 resistance invalidation (high 7,510.19) intraday, inside a ~113-point (~1.28x ATR) session — wider and far more violent than a typical digestion day
  2. LeanIncorrect · neutral-incorrect
    Called
    Neutral/Wait — no scenario cleared the 55% combined-weight bar
    Actual
    Session closed at 7,486.89, +36.70 (+0.49%) above the anchor and parked inside the resistance zone, after round-tripping through both invalidations — a directional (bullish) resolution once the whipsaw settled
  3. Lead scenario — gap partially fades into the 7,406-7,467 corridor (42%)Incorrect
    Called
    Trigger: opening hour fails to clear 7,490 convincingly. Path: gap gives back toward 7,406-7,467, range oscillation into the afternoon
    Actual
    No gap existed to fade — the open (7,439.89) was essentially flat to the 7,450.19 anchor. Price never settled into the 7,406-7,467 corridor; it round-tripped well outside both edges and closed inside the resistance zone instead
  4. Key level 7,589.26 (resistance, 20-day high)Correct
    Called
    Distant; only in play on a clean, sustained break of 7,490
    Actual
    Untouched all session (day high 7,510.19)
  5. Key level 7,509.20 (resistance, July 21 breakout close)Partial
    Called
    Next objective only after 7,490 clears on a confirmed basis
    Actual
    Briefly exceeded intraday (high 7,510.19 at 22:00 UTC) without 7,490 ever confirming first — the prep's own sequencing didn't hold, though the level was also never confirmed reached on a close basis (close 7,486.89)
  6. Key level 7,467.56-7,490.60 (resistance zone)Partial
    Called
    The session's decisive test — a further rejection strengthens the supply case; a clean confirmed break argues genuine follow-through
    Actual
    Neither: price wicked above the zone's ceiling intraday (7,510.19) without confirming a close beyond it, then settled back to close inside the zone (7,486.89) — an inconclusive draw rather than a clean rejection or a clean breakout
  7. Key level 7,406.56 (support, flip pivot)Correct · held on close, wicked intraday
    Called
    First level that needs to hold for the digestion read to stay intact
    Actual
    Wicked below intraday (low 7,396.94 at 17:00 UTC, within the same hour that opened at 7,439.06 and closed back at 7,446.19) but no H1 candle closed beneath it — held on the confirmed-close basis the prep itself required
  8. Key levels 7,382.60-7,384.44 (support, flip zone)Correct
    Called
    Secondary defense inside the reclaimed corridor
    Actual
    Never reached (session low 7,396.94 stayed above this zone)
  9. Key level 7,375.13 (support, flip)Correct
    Called
    A loss here would be the first sign of a meaningful unwind of Thursday's gains
    Actual
    Never reached
  10. Key level 7,292.00-7,306.56 (support zone, cycle floor)Correct
    Called
    The cycle's defining downside test
    Actual
    Never reached (session low 7,396.94, well above the zone)
  11. Driver stack — mega-cap leadership vs. prior-day structureCorrect · the disagreement itself was the story
    Called
    Partial disagreement: Amazon's AWS beat argues for continuation into the resistance zone; Apple's miss and Thursday's already-large range argue for digestion
    Actual
    A genuine tug-of-war exactly as flagged — prior-day structure and the confirmed-close discipline held the level map together, while mega-cap leadership eventually pushed price to retest and briefly clear the top of the resistance zone late in the session

The tape

  1. Open (00:00-07:00 UTC)

    SP500 opened at 7,439.89 — essentially flat to, and if anything slightly below, Thursday's 7,450.19 close, not the modest gap-up (implied cash-equivalent roughly 7,466-7,492) that late-Thursday public futures commentary had suggested. The overnight book ground quietly higher through the first six hours, reclaiming the mid-7,450s and mid-7,460s without any single decisive push.

  2. Mid-session (07:00-17:00 UTC)

    The European morning carried price into the lower edge of the 7,467-7,490 resistance zone by 07:00-09:00 UTC (touching 7,478-7,480), where it stalled through the Employment Cost Index (12:30 UTC), Chicago PMI (13:45 UTC) and Michigan Sentiment (14:00 UTC) cluster — the 12:00-14:00 UTC hours held a tight 7,471-7,487 band, a muted reaction consistent with tier-2 data. The 14:00-15:00 UTC "opening hour" the prep flagged as the session's highest-information window did not deliver a decisive breakout in either direction — it closed down 7.25 points, well under the 0.8x-ATR trigger the lead breakout scenario needed. At 16:00 UTC price spiked to 7,484.45, a direct tag of the resistance zone, then reversed hard: the 16:00-17:00 UTC window broke 87.5 points, printing a session low of 7,396.94 at 17:00 UTC — a clean intra-hour breach of the 7,406.56 support pivot the prep had flagged as the level that needed to hold. No H1 candle closed below it; the 17:00 UTC hour itself closed back at 7,446.19.

  3. Late / close (18:00-23:59 UTC)

    From 18:00 UTC the session reversed into a steady climb through the New York afternoon and power hour, reclaiming the 7,450s by 19:00 UTC and pushing through the 7,470s and 7,480s by 21:00 UTC. The 22:00 UTC hour delivered the session's decisive spike — from 7,481.94 to a high of 7,510.19, clearing the entire 7,467-7,490 resistance zone and briefly trading above the 7,509.20 next-objective level named in the prep — before fading back to close the hour at 7,486.94. The final hour held that ground, closing the session at 7,486.89 (+36.70 / +0.49% versus Thursday's anchor), inside the resistance zone but short of a confirmed H1 close above its 7,490.60 ceiling.

What we learned

The prep's structural map — every graded key level and both directional invalidations — held up on a confirmed-close basis through a session that tested it about as hard as a single day can. The framing calls that sit above that map are where the real gap sits.

  1. Surprise: the assumed gap never existed

    The prep was explicit that its ~7,466-7,492 implied open came from stale, unconfirmed public futures commentary, not a live print — and that caveat turned out to matter. The actual open (7,439.89) was essentially flat to Thursday's close. This was flagged honestly as a risk rather than presented as fact, so it is a data-availability gap rather than a systematic misread; no routing action needed beyond continuing to caveat premarket reads this explicitly when live candles are unreachable.

  2. Systematic issue: the day-type call landed on Range despite the driver stack meeting this framework's own whipsaw precondition almost word for word

    The session-analysis framework defines WHIPSAW preconditions as "genuinely contradictory drivers (e.g., bearish structure + fresh bullish catalyst)" — and the prep's own driver stack described exactly that (Amazon's beat versus Apple's miss within the same mega-cap complex) while still calling Range as the day type and folding whipsaw into a 25%-weighted third scenario. Routing: driver-stack mis-ordering. When the driver stack's own "partial disagreement" verdict cites a genuine single-complex earnings bifurcation as its evidence, that should trigger explicit whipsaw weighting per the framework's Section 1 preconditions rather than defaulting to Range as the base case.

  3. Confirmation, not a miss: the confirmed-H1-close invalidation discipline worked exactly as designed

    Both the 7,406.56 support and the 7,490.60 resistance were breached on an intra-hour wick basis (7,396.94 and 7,510.19 respectively) without a single H1 candle closing beyond either. The map never generated a false signal despite the whipsaw. No action needed — continue grading confirmed closes, not touches, and continue treating that discipline as this instrument's most reliable structural tool.

  4. Right scenario, wrong scope: the whipsaw branch existed but was scoped too narrowly

    The 25%-weighted whipsaw scenario described oscillation strictly inside the 7,406-7,467 corridor with "neither edge holding a confirmed break" — directionally the closest description of what happened, but its stated bounds were breached by roughly 10 points on the downside and over 40 points on the upside. Routing: driver-stack mis-ordering. When a whipsaw scenario follows a session that already ran near 2x its ATR, its bounds should be set at the invalidation levels themselves (7,406.56 / 7,490.60) rather than at the tighter reclaimed corridor, since an already-stretched prior session raises the odds the whipsaw tests the wider levels, not the inner ones. --- Reviewed prep: 2026-07-31-sp500-session-preparation.