Market scan
Aug 5, 2026
Tier mix
No calls cleared the board on this scan.
Directional book
Sizing is removed from every call by policy — see the disclaimer.
No call cleared HIGH/MEDIUM/ADVISORY tier in this scan — no new directional edge.
Vol book
Non-directional, delta-neutral, net-of-cost — advisory only, 0 directional points.
SPY
vol_0dtebuy premium- Vol state
- short_gamma_fair_vrp
Stand aside Worst configuration for a 0DTE premium seller. Dealers are net SHORT gamma (CLI regime NEGATIVE, spot 771.34 below the 775.97 flip), i.e. vol-acceleration-prone, while gross VRP is essentially FAIR (iv30d 13.46% vs realized 13.37%, +0.09pp). A fair gross VRP goes negative net of the half-spread (Vilkov, RESEARCH/30 sec 3.1) before any premium is charged for the short-gamma acceleration tail -- there is no edge available to pay for that tail. NOTE: scripts/zerodte_setup.py recommended GO_PREMIUM_SELL_INTRADAY here, labelling the book 'long-gamma: quieter, mean-reverting'; that is the known gamma-sign bug and the CLI overrides it.
QQQ
vol_0dtebuy premium- Vol state
- long_gamma_negative_vrp
Stand aside Gamma sign genuinely POSITIVE (long gamma, mean-reverting) and that part is fine, but VRP is NEGATIVE: iv30d 22.01% vs realized 25.68% = -3.67pp. IV is UNDERPRICING realized vol, so a premium seller is paid less than the vol that actually shows up -- before costs are charged at all. Stacked with confirmed front-end backwardation (0DTE IV 1.50x VIX) and NFP two trading days out on 08-07. Net-of-cost expectancy negative.
YELP
vol_earningsbuy premium- Vol state
- rich_front_confirmed_backwardation_but_illiquid
- Implied move
- 11.07%
Stand aside CUT BY THE ORCHESTRATOR after the lane proposed it as tonight's only live vol trade. The vol signal is real -- confirmed term-structure backwardation, front 76.9% (16dte) vs back 63.4% (44dte), ratio 1.212, into an 08-06 print with an 11.07% implied move. But it FAILS THE LIQUIDITY FLOOR, which is fail-closed: 20d $-ADV $24.7M against the $50M floor (price $25.69 clears), with only 192 contracts of front-month OI. A defined-risk iron fly on that chain pays the entire theoretical crush edge away in bid-ask. The lane raised the thin chain as a sizing caveat; it is a floor breach, not a caveat. Its earnings-gate BLOCK is explicitly NOT the reason -- an earnings-crush trade is deliberately into the print. ZTS, LEG, CECO and SGI were separately not actioned: the uw earnings-play iv_rank field returned a constant 100 across all 10 names tonight (non-discriminating, unusable as the richness filter) and none showed a confirming near/far IV spread (ratio 1.0).
Watch / stood-down
Nothing in this scan landed at WATCH, STOOD_DOWN or DROP.
Lane status
final_size=watch. 78-name basket cleared all gates. TWO INDEPENDENT BARS, both unchanged from prior sessions: (1) lane excess +0.23% is below the +0.30% starter bar AND its median is -0.91%, so the mean is tail-carried, not typical; (2) risk-sizer.md bars this lane from starter sizing outright until a DURABLE-N (>=30) forward window re-clears positive excess, re-enabled via a /calibration-audit recommendation rather than ad hoc. Basket-only, never per-name HIGH. Sector concentration OK at Industrials 23.1%, inside the 1/3 cap. MATERIAL INCOMPLETENESS: 207 of 285 raw candidates (73%) were dropped FAIL-CLOSED on the prices.parquet coverage gap -- build_prices.py reads a universe.json frozen at 785 symbols (783 written tonight) while features.parquet spans 2,466 tickers. Composition is clean but NOT complete, and the correlation/coverage check returns nothing for absentees, which looks like a pass.
final_size=watch. TRIPLY OUT: (1) s1_standdown fired on leg (a) with a +3.03pp margin, the most decisive of the streak; (2) invariant-#6 watch-only cap for new starters; (3) knowingly negative baseline (-0.0008). COHORT CORRECTED BY THE ORCHESTRATOR from 3 names to 2. The lane reported CCI, FLUT and XPEV with closes of $30.18, $18.65 and $20.13, marking all three 'Yahoo Verified'. Independent chart-API reads returned $73.84, $92.91 and $11.75 -- the verification column was not Yahoo data. On re-verification FLUT (pct_52w_range 1.4%) and XPEV (0.1%, low set 2026-08-05) ARE genuine near-52w-lows, but CCI sits 11.2% up its 52-week range and is a FALSE SHORT under the lane's own <=2% criterion. CCI CUT. This is the pct_52w_range failure mode in its in-range-but-wrong form. No live harm because the lane is stood down, but the lane's Yahoo-verification step is unreliable and needs hardening. 4 further names fail-closed on the prices.parquet coverage gap.
final_size=watch. SIXTH consecutive zero-starter session, but the FIRST blocked by REGIME rather than MECHANISM -- a meaningful change. For 07-29 through 08-04 every candidate died on a mechanism gate. Tonight EXLS and UCTT clear the entire mandatory stack, orchestrator-re-verified rather than taken on the lane's word: EXLS $33.68 / $88.8M ADV, reports 10-27, rel_build 1.344, persistence 0.833, catalyst LIVE (91.2% of build post the 07-28 print), issue_type Common Stock; UCTT $80.20 / $125.7M ADV, reports 10-27, rel_build 1.109, persistence 0.591, catalyst LIVE (36.1% post the 08-03 print), issue_type Common Stock. They are blocked ONLY by the lane's Hard Rule #2, which stands the lane down on a REBOUND-THRUST -- tonight's label is literally .../REBOUND-THRUST with s1_standdown TRUE on the widest margin of the streak. Under CHOP or PULLBACK either would be a legitimate starter at the lane baseline (+0.71% mean / +1.22% median, hit 0.56 vs 0.41, n=979). Both carry a long_caution flag: they remain top relative-build names, so they are not long candidates either. NEW FAILURE MODE FOUND AND CUT -- AZN: cleared liquidity ($161.50, $604M ADV), earnings (next print 11-05) and catalyst_split (LIVE), but 81% of the 5-day call-OI build (+21,964 of +27,148) landed on 08-04, the same day as Bristol-Myers deal-talk headlines, followed by -7.7% on the report and +6% today on a denial. That is binary M&A-headline risk driving the OI, not organic crowded conviction; cut under the merger-arb gate's spirit as a pre-announcement rumor rather than a signed deal. The standing 7-gate checklist does not currently catch this class. FORWARD-DECAY READ: tonight adds no resolvable data point (nothing sized), but the setup is consistent with the decay hypothesis rather than against it -- a crowded-call mean-reversion short forced into a broad, breadth-confirmed up-thrust is exactly where the -3.73% / hit-base -0.53 new-evidence miss would come from. The actual test remains the 08-03 -> 08-07 post-fix h10 cohort, unchanged.
Watchlist write-back
Carried forward to the next session's watchlist — not calls.
Lane glossary (5)
- vol_0dte
- Vol book — 0DTE variance-risk-premium premium-selling. Non-directional, delta-neutral, 0 directional points.
- vol_earnings
- Vol book — sells volatility into an earnings IV-crush. Non-directional, delta-neutral, 0 directional points.
- MOM_LONG
- Momentum, long leg — near-52w-high relative strength. Tail-driven; basket-only, never sized per-name (h10).
- MOM_SHORT
- Momentum, short leg — near-52w-low relative weakness. Regime-gated against momentum-crash/squeeze rebounds (h10).
- OI_FADE
- OI-flow fade — fades persistent multi-day net call-OI building; heavy call-OI build precedes underperformance. The most robust lane measured (short, h10).
Regime & Verdict#
- Regime: UPTREND/REBOUND-THRUST · ret5 +5.530% · ret10 +2.990% · dd15 −2.400%
- Vol-state: VOL-ACCELERATION-PRONE — the dealer book FLIPPED since last night. SPY GEX regime reads
NEGATIVE (dealers net short gamma), spot 771.34 vs zero-gamma flip 775.97 — spot now sits below
the flip. On 08-04 it was the reverse (spot 772.17 vs flip 767.91, long gamma). Spot barely moved; the
flip level rose 767.91 → 775.97 and crossed over it. QQQ GEX regime POSITIVE (long gamma) — sign
trusted, but its printed
zero_gamma_level249.5 is an implausible artifact against per-strike data clustering at 698–720, so the level is not. VIX 15.81, falling steadily through the thrust (20.66 → 17.09 → 15.99 → 15.86 → 16.50 → 15.81). - Breadth: 48.71% green on the day (245 adv / 257 dec), matching SPY's own −0.20% — no divergence. The 5-day thrust itself was BROAD, not junk-led: 08-04 71.4% green (359/141), 08-03 67.6% green.
directional_tradable= TRUE ·s1_standdown= TRUE (leg a, ret5 +5.530% vs the +2.5% trigger — a +3.03pp margin, the most decisive firing of this streak; 1.61pp on 08-04, 0.0139pp on 08-03)- Bottom line: no directional edge today — ZERO new starters across all five lanes, and the vol book is EMPTY too. Book was flat coming in and stays flat. This is the sixth consecutive zero-starter session — but tonight it is empty for a different reason than the previous five, which matters (below).
Directional Book (excess-scored)#
(empty — no name in any lane reached a sizeable tier)
| Ticker | Lane | Dir | Horizon | validated_excess | regime_fit | invalidation | gates |
|---|---|---|---|---|---|---|---|
| — | — | — | — | — | — | — | — |
What changed tonight: OI_FADE stopped failing on mechanism#
For five straight sessions (07-29 → 08-04) OI_FADE produced no starter because every candidate died on a
mechanism gate — single-day blocks, earnings, liquidity, ETPs. Tonight is the first session in the streak
where names clear the entire mechanical stack: EXLS and UCTT pass all seven mandatory gates plus the
catalyst-split check. Independently re-verified by the orchestrator rather than taken on the lane's word:
| Name | Liquidity | Earnings (h10) | rel_build | persistence | catalyst_split | issue_type |
|---|---|---|---|---|---|---|
| EXLS | PASS $33.68 / $88.8M ADV | PASS (reports 10-27) | 1.344 | 0.833 | LIVE — 91.2% of build post 07-28 print | Common Stock |
| UCTT | PASS $80.20 / $125.7M ADV | PASS (reports 10-27) | 1.109 | 0.591 | LIVE — 36.1% of build post 08-03 print | Common Stock |
They are still not sized. The block is now regime, not mechanism: the lane's Hard Rule #2 stands the
lane down on a REBOUND-THRUST, and tonight's label is literally .../REBOUND-THRUST with s1_standdown=TRUE
on the widest margin of the streak. Under a CHOP or PULLBACK tape either would be a legitimate starter at the
lane's baseline. Both go to watch, carrying a long_caution flag — they remain top relative-build names,
so they are not long candidates either.
Why each lane is out#
| Lane | Disposition | Binding reason (sourced) |
|---|---|---|
| MOM_LONG | BASKET_WATCH (78 names) | Two independent bars, unchanged. (1) Lane excess +0.23% < +0.30% starter bar, with median −0.91% — the mean is tail-carried. (2) risk-sizer.md bars this lane from starter sizing outright until a DURABLE-N (≥30) forward window re-clears positive excess via a /calibration-audit recommendation, not ad hoc. Sector concentration OK (Industrials 23.1%, inside the 1/3 cap). |
| MOM_SHORT | STOOD_DOWN | s1_standdown fired on a +3.03pp margin — the most decisive of the streak. Plus the invariant-#6 watch-only cap for new starters and a knowingly negative baseline (−0.0008). Triply out. Cohort corrected from 3 names to 2 (see data-quality note). |
| OI_FADE | NO_NAME_CLEARED | Sixth consecutive zero-starter, but first one blocked by regime rather than mechanism. EXLS + UCTT clean → watch. |
| S2_dp_revert | ADVISORY_WATCH (55 names) | Advisory lane → watch by the sizing map, regardless of measured excess. |
| S4_pcr_fade | ADVISORY_WATCH (57 names) | Advisory lane → watch. Still the only lane positive forward as well as historically (+0.51% hist). |
Sizing map (risk-sizer.md:45): ≥+1% & sign-stable → half · +0.3–1% → starter ·
< +0.3% **or advisory lane** → watch. An advisory lane never sizes regardless of measured excess.
Vol Book (non-directional)#
EMPTY tonight. Delta-neutral, advisory, quoted net of cost. All three candidates stand aside:
| Symbol | Verdict | Reason |
|---|---|---|
| SPY 0DTE | STAND ASIDE | Dealers short gamma (CLI-verified) + VRP essentially FAIR (iv30d 13.46% vs realized 13.37%, +0.09pp). Fair gross VRP goes negative net of the half-spread before any premium for the short-gamma acceleration tail. Worst configuration for a 0DTE seller: no edge to pay for the tail. |
| QQQ 0DTE | STAND ASIDE | Gamma sign genuinely positive, but VRP is NEGATIVE — iv30d 22.01% vs realized 25.68%, −3.67pp. IV is underpricing realized: sellers are paid less than the vol that shows up, before costs. Plus NFP two trading days out. |
| YELP earnings | CUT by orchestrator | The lane proposed it as the one live trade (confirmed backwardation, front 76.9% / back 63.4%, ratio 1.212, 11.07% implied move into an 08-06 print). It fails the liquidity floor: $-ADV $24.7M vs the $50M floor, fail-closed, with only 192 contracts front-month OI. A defined-risk iron fly there pays the entire theoretical crush edge away in spread. The lane flagged the thin chain as a caveat; it is a floor breach, not a caveat. |
zerodte_setup.py gamma-sign bug BIT tonight — fourth session, first actual miss#
The three prior sessions recorded "script and CLI agreed, the bug did not bite." Tonight they disagreed:
the script emitted SPY as GO_PREMIUM_SELL_INTRADAY labelled "long-gamma: quieter, mean-reverting" while
uw options-structure gex reads NEGATIVE / short gamma, "expect trend acceleration." Per the standing
rule the CLI wins. Absence of symptom was not a fix — the bug produced a live premium-sell recommendation
into a short-gamma tape, which is exactly the documented failure. This should now be fixed, not just noted.
Watch / Stood-down#
- OI_FADE watch: EXLS, UCTT (mechanically clean, regime-blocked,
long_caution) - MOM_SHORT watch (corrected): FLUT (pct_range 1.4%), XPEV (pct_range 0.1%, low set today) — both Yahoo-verified genuine. CCI CUT — false short.
- MOM_LONG basket watch (78): top by proximity to 52w-high incl. ETN, JCI, NUE, SWK, PH, ITW
- S2 advisory (55): largest DP prints VZ ($580M), NXPI ($407M), ABT ($342M), TER ($298M), TFC ($195M)
- S4 advisory (57): highest PCR HGV (417.0), ITRI (332.4), XPO (103.2), EXR (90.7), TYL (39.0)
- AZN — new failure mode, cut: cleared liquidity, earnings and catalyst_split, but 81% of the 5-day call-OI build (+21,964 of +27,148) landed on 08-04, the same day as Bristol-Myers deal-talk headlines — then −7.7% on the report and +6% today on a denial. That is binary M&A-headline risk driving the OI, not organic crowded conviction. Cut under the merger-arb gate's spirit (pre-announcement rumor, not a signed deal). The 7-gate checklist does not currently catch this class — worth adding.
Risk#
- Event calendar inside the horizon: NFP 2026-08-07 (2 trading days out), then CPI 08-12 and PPI 08-13 back-to-back. Nothing directional is open, so this binds only anything opened from here.
- Correlation clusters: not applicable — zero positions.
- Tail caps applied: none needed (nothing sized).
- Hedge note: flat book into a short-gamma index tape with Tier-1 macro in 2 sessions. Being flat is the hedge; no overlay warranted.
- Under-the-surface caution (advisory):
uw risk market-regimereads TRANSITIONAL — only 35.6% of optionable names carry bullish flow (2,234 bullish vs 4,046 bearish), with rotation out of Technology/Industrials/Consumer Cyclical and into Utilities/Consumer Defensive. Flow ≠ price and this does not override the price-based UPTREND label, but a defensive rotation under a broad up-tape is worth carrying into the next session.
Regression gate — GREEN (proved, not assumed)#
retro_harness.py --all on the freshly rebuilt 81-day panel shows every lane below its recorded baseline,
which reads as a five-lane simultaneous decay. It is not. Both invariant-#6 isolation checks pass:
| Lane | Baseline (08-01, 78d) | Pooled now (81d) | Baseline-maturity cohort |
|---|---|---|---|
| MOM_LONG | +0.0023 | +0.0013 | +0.0023 ✓ (n=483 ✓) |
| MOM_SHORT | −0.0008 | −0.0020 | −0.0008 ✓ (n=317 ✓) |
| OI_FADE | +0.0071 | +0.0063 | +0.0071 ✓ (n=979 ✓) |
| S2 | +0.0021 | +0.0008 | +0.0021 ✓ (n=523 ✓) |
| S4 | +0.0051 | +0.0044 | +0.0051 ✓ (n=370 ✓) |
- (a) old code, new data: stronger than the usual check this time —
retro_harness.py,_regime.pyand_calendar.pyare byte-identical to baseline commit374b20d(verified by diff). HEADde91fe9touched only agent/command markdown,CLAUDE.mdand the schema — no Python at all. The code that produced the baseline is the code that ran tonight. - (b) maturity-edge cohort split: rows matured at the 07-31 edge reproduce all five lanes and all five
n's exactly. Artifact:
analyses/audit/2026-08-05/harness_split.{py,out}. - The 109-row increment is ONE clustered event, not 109 independent observations. Its base-rate column
reads 1.00 for every long lane and 0.00 for every short lane — i.e. the conditional benchmark was up on
essentially every resolution window in the increment. That is a single homogeneous up-window: the same rip
that set
s1_standdowntonight. Reading it as five lanes decaying at once is precisely the clustering trap the calibration skill warns about.
Process findings#
- MOM_SHORT's "Yahoo Verified" column was not Yahoo data. The lane reported closes of CCI $30.18, FLUT $18.65, XPEV $20.13 and marked all three verified. Actual chart-API closes: $73.84, $92.91, $11.75. Re-verification changes the cohort: FLUT (pct_range 1.4%) and XPEV (0.1%) are genuine near-lows, but CCI sits 11.2% up its 52-week range — a false short that the lane's own ≤2% criterion excludes. Caught by the standing rule to re-run a lane's reported gate result rather than trust it. No live harm (lane is stood down), but the verification step itself is unreliable and needs hardening.
- S2's liquidity claim held up. It reported 0/99 failures against the $50M floor, which looked implausible; spot-checking its own micro-cap flags (TAL $12.09/$56.5M, NWL $6.17/$65.2M, plus DNTH, SPHR, GTES) confirmed all genuinely pass. Reported correctly.
prices.parquetcoverage gap unchanged and still material —build_prices.pywrote 783 of a universe frozen at 785 symbols whilefeatures.parquetspans 2,466 tickers. 211 screened names fail-closed tonight (207 of 285 MOM_LONG candidates = 73%, plus 4 MOM_SHORT). The correlation/coverage check returns nothing for absentees, which looks like a pass. Basket composition is clean but not complete.- Possible ETP leak in the harness universe:
SPCXappears in the MOM_SHORT increment rows and is its largest positive contributor (+0.0654, +0.0906). The screener classifies itCommon Stock, so theissue_typefilter passes it legitimately — but the name is a space/SPAC thematic vehicle. Worth checking whetherissue_typealone is sufficient hygiene for the harness universe. zerodte_setup.pybug is now demonstrated live, not theoretical (see vol book). Fix it.