SPY Monitor · Guide
How to use this system
A complete guide to the data, the pages, and how to put it all together in a real trade.

What is this system?

This is a real-time options market intelligence tool built specifically for trading SPY intraday. It combines two data streams that most retail traders watch separately:

Options Flow (live options feed)
What money is actually doing — call vs put premium, who's buying and who's selling, net gamma, IV direction. Updated every 5 minutes from the live options feed.
Price Action + Volume (from Yahoo Finance)
What price is actually doing — EMAs, MACD, VWAP, Bollinger Bands, OBV, MFI, Volume Ratio. Updated every 1 second (tick) and re-charted every bar.

Most tools give you one or the other. The edge here is cross-referencing them: when options flow says bearish AND price confirms it on the chart, that's a much higher-conviction trade than either signal alone.

The core idea: Market makers (MMs) hedge their options exposure by buying and selling the underlying. This creates mechanical price pressure at specific strikes — the gamma exposure levels. By knowing where this pressure is concentrated, you know where price is likely to be attracted to or repelled from. The system maps this in real time.

How the data flows

Understanding the data pipeline helps you know how fresh each number is:

StepWhat happensFrequency
1. Poller runsPython script on your PC queries a private options-flow API for all SPY options tradesEvery 5 min
2. GEX computedGamma × size × 100 aggregated per strike per expiry (0DTE through 6DTE)Every poll
3. Outliers detectedStrikes where |GEX| > 2× the local median of ±5 neighbours are flaggedEvery poll
4. Files uploadedhistory.json, gex_heatmap.json, markers.json, accuracy.json pushed to your server via FTPEvery poll
5. Pages self-updateEach page checks every 30 seconds if the data timestamp changed — re-renders instantly when a new poll lands30s check
6. Live price tickYahoo Finance quote endpoint polled every second for the current SPY price, flashes green/red on changeEvery 1s
7. Chart barsYahoo Finance OHLCV bars fetched on timeframe switch or page load (5m, 15m, 30m, 1h)On demand
Important: The poller must be running on your PC during market hours. Nothing updates automatically without it. Start it at 9:25 AM ET (5 min before open) so you have a baseline snapshot before the first trades.

Your trading workflow

Here's how to use the pages in sequence during a trading session:

Pre-market · 9:00–9:30 AM ET Set your bias
1
Open GEX Heatmap
Look at the 0DTE column. The largest negative (red) values below current spot = put walls = support zones. Largest positive (green) values above = call walls = resistance. These are your key levels for the day before a single trade prints.
2
Check Net Gamma sign on Flow Dashboard
Negative net gamma = MMs are short gamma = they amplify moves (sell into weakness, buy into strength). Positive net gamma = MMs are long gamma = they dampen moves and price pins to large strikes. This sets the character of the day — trending (negative) vs mean-reverting/pinning (positive).
3
Note the VWAP on the Chart page
VWAP is the institutional reference price. Price above VWAP = buyers in control. Below = sellers. Many of your best entries will be at VWAP retests that coincide with a GEX level.
Market hours · 9:30 AM – 4:00 PM ET Monitor + execute
4
Watch the Signal Panel on the Chart
The panel rescores every 10 seconds using a three-bucket model (state, momentum, flow). Confidence ≥ 65% with a clear direction = high-quality window. Below 50% confidence or NEUTRAL = no trade.
5
Check Conviction & Targets page
The Primary Thesis panel shows your directional conviction score. The Timeframe table shows how many timeframes confirm it — Session, 1h, 30m, 15m, and finally the 5m Entry Gate. Only act when 3+ timeframes confirm. The target levels panel shows where the thesis points — labelled FLOOR, CEILING, TARGET, or SESSION TARGET.
6
Switch to 15m or 30m chart for context
If the 5m signal is bearish but the 30m MACD is still rising, the larger trend is still up — the 5m move may be a pullback, not a reversal. Use multi-timeframe confluence before sizing up.

Flow Dashboard

The most important numbers from the options flow, updated every poll. Think of this as your market sentiment gauge.

The 6 KPI numbers

MetricWhat it meansBearish signalBullish signal
Net Gamma Sum of (gamma × contracts × 100) for all calls minus puts. Shows MM hedging direction. Negative — MMs amplify, moves can trend hard Positive — MMs dampen, price pins to strikes
C/P Ratio Number of put trades ÷ call trades. Rising ratio = more put buying = hedging/fear. >1.2 — heavy put activity <0.8 — call heavy, risk-on
Avg IV Volume-weighted implied volatility across all trades. Rising IV = fear/hedging building. Rising IV + bearish flow = real fear Falling IV = complacency, range-bound
Call Premium Total dollar value of call options traded this session. Call premium collapsing vs prior polls Call premium growing, buyers aggressive
Put Premium Total dollar value of put options traded this session. Put premium spiking — large hedges placed Put premium low relative to calls
Data Quality % of institutional trades this poll where NBBO data was usable for direction classification. Drives confidence in the institutional bias. Green ≥ 95% (healthy) · Amber 80–95% (caution) · Red < 80% (institutional read unreliable, ignore it)

If Data Quality goes red, treat the institutional bias as missing for that poll and rely on the passive (C/P) read alone. The dashboard auto-degrades the combined bias to half-strength in that case.

Bias pill in the navbar — four states

The big bias pill at the top of every page is the combined bias — passive C/P skew AND institutional flow, fused into one verdict. It has four possible states:

PillMeaningWhat to do
BULLISH Both passive C/P AND institutional flow point up. High conviction. Bullish setups have flow tailwind. Look for entries.
BEARISH Both passive AND institutional point down. High conviction. Bearish setups have flow tailwind. Look for entries.
MIXED Passive and institutional disagree. Smart money is fading the broader chain. Stand down. Transitional regime. Wait for the two signals to align.
NEUTRAL Neither signal is strongly directional. Quiet tape. No edge from flow. Don't force a trade.

Hover over the bias pill to see both underlying signals in the tooltip — e.g. "Passive (C/P): BULLISH | Institutional: BEARISH" tells you exactly why the combined pill shows MIXED.

Flow Bias Streak

The coloured dots show the last 7 polls of combined bias. Green = BULLISH, red = BEARISH, amber = MIXED, muted = NEUTRAL. When the same colour appears 3+ times in a row, the bias has been sustained for 15+ minutes — that's meaningful. A streak only counts when BULLISH or BEARISH; the streak counter does not count MIXED or NEUTRAL polls, because those aren't directional reads.

Signal Confluence panel

The confluence panel now shows the full picture in seven rows:

RowWhat it shows
RegimeTREND DAY (7d net GEX < −$5M, MMs amplify), RANGE DAY (> +$5M, MMs dampen), or TRANSITION (within ±$5M). White, neutral border — it's regime info, not directional bias. This is the broad 7-day read; the Magnets/Flow Map regime is a separate per-poll structural read.
Net γWhether MMs are net long or short gamma. Local read from the current poll's flow.
C/PPut/call trade-count ratio with put-heavy/call-heavy/neutral label.
IVWhether implied volatility is rising, falling, or stable poll-to-poll.
Inst flowInstitutional bias signal — BLOCK/SPLIT trades plus SWEEPs over $25K premium, classified by NBBO-midpoint. Also shows strength and trade count (n=148).
PassivePassive bias signal — call-vs-put premium ratio across all trades.
CombinedThe verdict. BULLISH/BEARISH when Inst and Passive agree, MIXED when they disagree, NEUTRAL when neither is directional. The streak counter is shown here.

Border colour: green = bullish, red = bearish, amber = MIXED/NEUTRAL. When Inst and Passive both show the same colour border, conviction is high. When one is amber and the other green/red, that's the moment to be cautious — the system itself is undecided.

Flow Map

A dedicated observation surface for watching options flow concentrate and migrate across the session. Time runs left → right (one column per 5-min poll), strike runs top → bottom, and each cell is coloured by that strike's flow at that poll. It answers one question: where is flow building, and is that band moving toward or away from price?

This page fires nothing. No signals, no alerts, no conviction score, no buy/sell. It is a study lens only. The idea that "building flow precedes price reaching that strike" is still unconfirmed on a small sample — this tab exists so you can watch it and judge for yourself, not act on it automatically.

Hero — the Build Map

The heatmap grid. A white line traces spot through it; a blue line marks the cursor's poll. Brighter cell = more concentrated flow at that strike. Cells flagged as peaks get an amber outline. The toggle (top-right) switches what the colour means:

ToggleWhat the colour shows
Net flowThe strike's cumulative flow-GEX. Teal = call-side, rose = put-side. Shows where flow lives and how the concentration migrates over the day.
Building ΔThe per-poll change in flow-GEX. Shows only what is moving this window — the freshest read, where a shift appears before the cumulative totals catch up.

Companion — Building Now

Below the map, for the cursor's poll: one horizontal bar per strike showing the flow change (Δ) this 5-min window — gaining to the right/teal, bleeding to the left/rose. The spot strike row is highlighted and flagged peaks are marked. This is the de-diluted "what's accumulating right now" read — the antidote to the cumulative bias drifting to neutral.

Scrub & live

The page defaults to live — the cursor is pinned to the latest poll and a new column appears at the right each cycle. Drag the slider (or click the map) to scrub back through the session; the Building-Now panel follows the cursor. The ● live button re-pins to the latest poll. Hover any cell for strike, flow, Δ, share % and momentum.

Read flow in regime context: the per-poll regime label tells you whether "building" means a likely pin (RANGE) or fuel for a move (TREND). The same bright band means different things on a TREND day vs a RANGE day.

GEX Heatmap

This is the structural map of the options market. It shows where market makers have the most hedging pressure concentrated, across 7 expiry dates and every relevant strike.

Reading the colours

Deep Red (negative GEX)
Put wall. MMs bought puts and must sell the underlying when price falls here — creating buying pressure. Acts as a floor or support. The deeper the red, the stronger the magnetic pull.
Deep Green (positive GEX)
Call wall. MMs sold calls and must sell the underlying when price rises here — creating selling pressure. Acts as a ceiling or resistance. The deeper the green, the harder it is to break through.

The Δ (delta) column

The column next to each GEX value shows the change since the last poll. ▲ +2.1B means $2.1 billion of additional put GEX built at that strike in the last 5 minutes. This is the velocity signal — not where the wall is, but how fast it's growing. A strike that goes from -$500M to -$2.5B in 10 minutes is a major positioning event.

The purple outlier highlight

Cells with a purple border contain GEX values more than 2× the local median of the 5 nearest strikes. These are the statistically significant levels — where positioning is unusually concentrated. These are also the strikes that appear as arrows on the Chart page.

Controls

  • Strikes ± slider: Default ±10 around spot. Widen to ±25 to see the full structure, narrow to ±5 to focus on the immediate range.
  • Min |GEX| filter: Use $5M+ to cut noise, $50M+ to see only the dominant walls.
  • Outlier threshold: 2× is the default. Set to 1.5× to catch more, 3× to see only the truly dominant levels.

Chart + Signal Panel

Timeframe buttons (5m / 15m / 30m / 1h)

Switching timeframes reloads all indicators and rescores the signal panel. The power is in multi-timeframe confluence:

Example: 5m signal is BEARISH 72%. Switch to 15m — also BEARISH. Switch to 30m — BEARISH. All three timeframes agree. This is the highest quality entry window. If any timeframe disagrees, reduce size or wait.

GEX markers on the chart

The red arrows mark moments when a put-heavy outlier strike was detected. The green arrows mark call-heavy outliers. When price is approaching a red arrow level and a new red arrow fires just below — that's the put wall asserting itself in real time. Watch for price to bounce or find support there.

Indicator reference

IndicatorPaneKey signals
EMA 9 (yellow)PriceFast momentum. Price below = short-term bearish. Cross below EMA 21 = trend change.
EMA 21 (blue)PriceMedium trend. The most important EMA for intraday SPY. Acts as dynamic support/resistance.
EMA 50 (purple)PriceStructural trend. Price below on 15m+ = sellers in structural control.
VWAP (orange)PriceInstitutional reference. Retest of VWAP from below = bearish. From above = bullish. Most powerful on 5m and 15m.
Bollinger Bands (blue dashed)PricePrice touching upper band = extended. Lower band = oversold. Squeeze (bands narrowing) = big move coming.
MACD 12/26/9Pane 2Histogram turning negative = bearish momentum. Crossover = trend change. Use as confirmation, not entry signal alone.
OBV (orange line)Pane 3Rising price + falling OBV = bearish divergence (buyers not supporting the move). Most useful for spotting distribution.
Vol Ratio (orange bars)Pane 3Bright orange = 2.5× average volume bar. A GEX marker firing on a 2.5× volume bar = high conviction move.
MFI 14 (purple)Pane 4Above 80 = overbought, below 20 = oversold. Better than RSI for SPY because it requires volume agreement. Divergence from price = coming reversal.

Magnets & Signals

This page has three tabs — Magnets, Signals, and Log. Magnets are structural GEX levels that update every poll. Signals are triggered events with a full lifecycle. The log is your permanent weekly audit trail stored in browser localStorage.

Key distinction: A magnet exists regardless of what you do — it reflects where MMs have hedging pressure. A signal fires when the system detects enough conviction to act on a magnet. Magnets update continuously. Signals fire once, persist, and resolve.

Two scenario columns

The page now displays only directional scenarios (Bearish and Bullish). The third Gamma Neutral / Pin column was removed after backtest data showed neutral signals hit only 27% vs 69%+ for directional setups — pin theory simply does not predict 5-60 minute moves reliably in this market structure.

ColumnWhat it showsHow to use it
Bearish casePut walls below spot — targets if price dropsDownside targets. Top strike = session target for bearish thesis.
Bullish caseCall walls above spot — targets if price risesUpside targets. Top call wall = ceiling or target depending on bias.

On range-bound days (a range regime badge here, or RANGE DAY on the dashboard), don't disable the system — read both columns and expect price to oscillate between the top bearish and bullish strikes. The pinning behavior is now visible on the chart rather than as a separate signal column.

Each strike box shows

  • Strike + spot distance — how many points from current spot
  • GEX + delta▲ building $120M = new positioning added. ▼ unwinding = positioning leaving.
  • Momentum dot — building (strong), unwinding (weakening), stable
  • Role badge — TARGET, FLOOR, CEILING, or PIN
On each 5-min poll: Same strike boxes update in place — no duplicates. A new entry only appears if a different strike moves to the top position.

Signal lifecycle

Signals are directional only (bearish or bullish). Neutral/pin scenarios were removed after the 2026-05-19 backtest showed only 27% hit rate vs 69%+ for directional. The lifecycle is:

StatusMeaningAction
ACTIVEConviction ≥ 50% (fire threshold). Distance to target ≥ 1.3pt for directional signals. Not fired before 9:35 ET (open gate).Signal live. Check Chart entry gate.
STRENGTHENINGConviction +8% this pollConsider sizing up.
WEAKENINGConviction −8% but still ≥ 40% (collapse threshold)Tighten stop.
RESOLVED HITPrice touched target ±$0.50 within 30-min watch window. A signal can still be upgraded to HIT after expiring/collapsing if price reaches target inside the watch window.Take profit.
RESOLVED EXPIREDSignal aged out (hit its max-age) while conviction was still healthy (≥ 60%). The thesis was intact — the clock just ran out. Excluded from hit-rate.Re-evaluate. The thesis may still be valid; the signal can re-fire after the 15-min cooldown.
RESOLVED COLLAPSEDConviction dropped below 40%, OR aged out with weak conviction (< 60%). The thesis broke.Exit if in trade.

Hysteresis: A signal fires at 50% but only collapses below 40%. This prevents churn when a borderline signal oscillates around the threshold.

Dynamic max-age: A signal's lifespan scales with target distance and regime, rather than a flat cap. Base 90 min + 45 min per point of distance, multiplied ×1.3 on a RANGE day (moves are slow) or ×0.8 on a TREND day (moves are fast), capped at 240 min. So a 1.7pt target on a RANGE day gets ~190 min, while a 0.5pt target on a TREND day gets ~108 min. This fixed two real cases (2026-05-20 $742 and 2026-05-21 $745) where correct signals with 1.4–1.7pt targets aged out at the old flat 120-min cap and were mislabeled as failures — even though price reached target shortly after.

EXPIRED vs COLLAPSED: These look similar but mean opposite things. EXPIRED = "thesis was still good, we just stopped watching" (conviction ≥ 60% at age-out). COLLAPSED = "thesis broke" (conviction fell below 40%, or aged out weak). Only COLLAPSED counts against your accuracy stats. EXPIRED is excluded entirely — it's neither a win nor a loss. On the Accuracy page, expired signals show an amber ⏱ EXPIRED badge and are removed from the hit-rate denominator.

Refire cooldown: After any resolution (HIT, EXPIRED, or COLLAPSED), the same (scenario, target) pair is locked out for 15 minutes. This prevents the duplicate-firing bug seen on 2026-05-19 where bearish $733 fired three times in the same 5-minute move because the resolved signal was deleted between polls. Different scenarios or different targets are unaffected — only the exact same setup is suppressed.

Open gate: No signal fires before 9:35 ET. The first few minutes after the 9:30 open, the upstream price feed can still serve the prior session's close, which would compute spot/distance/VWAP against a stale number and fire a bogus signal (observed 2026-05-21). The gate suppresses fires until the feed settles.

Signal accordion — expanded view

Click any signal card to expand and see the full reasoning:

  • Why it fired — each factor scored individually: flow bias streak, C/P ratio, net gamma, IV level, GEX momentum, VWAP position. = bearish, = bullish, · = neutral.
  • GEX context — the specific wall, distance from spot, momentum at fire, VWAP at the moment it fired
  • Conviction history — mini chart showing conviction evolution across the last 8 polls

Log tab — weekly storage

Stored in browser localStorage keyed by ISO week: spy_log_week_2026-W20. On Monday morning the poller detects your IP, writes an export trigger, and the browser automatically POSTs the previous week's log to the local bridge server — saved to F: rading iles\logs\spy_log_YYYY-WNN.json.

EventWhen it fires
MAGNET_APPEAREDNew strike moves to top of a scenario column
MAGNET_UPDATEDSame strike, GEX changed >10% vs last poll
SIGNAL_FIREDConviction crossed 50%
SIGNAL_UPDATEDConviction changed ≥5%
SIGNAL_RESOLVEDPrice hit target OR conviction collapsed below 30%

Accuracy

The scoreboard. It takes every signal the Magnets page fired (from your browser log) and checks, against Yahoo 1-minute bars, whether price actually reached the target — within 5, 15, 30, and 60 minutes. This is where you find out whether the signals are worth trading.

What counts, and what doesn't

  • HIT — price touched the target (±$0.50) inside the window. Counts as a win.
  • MISS — the window expired without a touch. Counts as a loss.
  • EXPIRED — the signal aged out while conviction was still healthy. Thesis intact, clock ran out. Excluded from the hit-rate denominator entirely — neither win nor loss.
  • pending — the windows haven't all elapsed yet. Doesn't affect the numbers until it resolves.

Only fully-resolved signals are scored. This page is the empirical proof behind the entry rules — MIXED-bias and low-conviction setups should show a visibly lower hit rate here, which is exactly what justifies skipping them.

How the page is broken down

SectionWhat it shows
Headline statsOverall hit rate (any window), direction-correct rate (did price move the predicted way over 30m), and signal totals.
By scenarioBearish vs Bullish hit rates (and legacy Neutral, for old logs), split into conviction buckets — <50% / 50–70% / 70%+ — so you can see whether higher conviction actually hits more.
By time windowHow many signals hit within 5m / 15m / 30m / 60m, and the directional accuracy at each.
By momentumHit rate split by GEX momentum at fire time — building / unwinding / stable.
Signal tableEvery signal: fire time, scenario, target, conviction %, momentum, entry spot, the four window result chips, the direction result, and the overall outcome badge.

Use the Date dropdown to load a prior log week. ↓ Export all logs downloads the raw signal log as JSON.

Login & Legal

Every new browser session redirects to the login page before any content is accessible. Three mandatory checkboxes must be ticked:

  • Terms of Use — informational only, not financial advice, sole responsibility for trading decisions
  • Privacy Policy — no personal data collected server-side; localStorage used only for signal log
  • Risk disclosure — options trading carries substantial risk; past signal performance does not guarantee future results

Agreement uses sessionStorage — resets when the browser tab is closed. Every new trading session requires fresh agreement. This is intentional.

For testers: This tool is in active beta. Signal logic, conviction thresholds, and GEX calculations are experimental. Nothing displayed constitutes financial advice. All trading decisions are your sole responsibility.

Gamma Exposure — deep dive

GEX is the most important concept in this system. Here's the full picture:

What gamma means

Every option has a delta — how much the option moves per $1 move in SPY. Gamma is how fast that delta changes. When SPY moves, delta shifts, and dealers who sold those options must buy or sell SPY to stay delta-neutral. That forced hedging is mechanical, predictable, and large enough to move price. GEX measures the size and direction of that pressure across the whole chain.

GEX formula

GEX per strike = γ (gamma) × contracts × 100 × sign
sign = +1 for calls, −1 for puts
Net GEX = sum of all strikes

What the sign tells you

The sign of net GEX tells you how price will behave today — not which direction it will go, but whether moves will trend or chop. This is the single most important regime read in the system.

Negative GEX — dealers are short gamma
Dealer hedging is pro-cyclical — they hedge in the same direction price is moving:
• Price up → dealers must buy SPY → adds fuel to the rally
• Price down → dealers must sell SPY → adds fuel to the selloff

This is why negative gamma days trend. Once a direction is established with conviction, dealer hedging compounds it. Pullbacks are shallower, breakouts extend further. Squeezes and flush days happen here.
Positive GEX — dealers are long gamma
Dealer hedging is counter-cyclical — they hedge against the move:
• Price up → dealers must sell SPY → caps the rally
• Price down → dealers must buy SPY → cushions the drop

This is the pin effect. Price gets magnetized to large-gamma strikes and chops in a range. Signals resolve as partials. Breakouts fail. Mean-reversion wins until a news catalyst overrides the hedging.
Critical: GEX sign is not a directional signal. Negative GEX doesn't mean "bearish" — it means whatever direction wins, wins bigger. Positive GEX doesn't mean "bullish" — it means whatever happens gets dampened. Use GEX as a regime filter on top of your directional read from flow and price action:

• Bearish flow + negative GEX → trend day setup, size up, give more room
• Bearish flow + positive GEX → expect chop around magnets, smaller targets, faster exits
• No directional signal + negative GEX → wait, but be ready — the next direction that establishes will run
• No directional signal + positive GEX → range-trade the magnets, fade extremes

Gamma walls in practice

Individual strikes with large GEX values act as magnets. A strike with -$4.4B GEX (like $738 in your data) means that $4.4 billion in MM hedging pressure is anchored at that strike. When price approaches, the mechanical hedging creates a gravitational pull. Price doesn't always reach the wall — but the probability is higher than random.

The interaction between regime and walls is what makes this useful:

  • In positive GEX regimes, walls act as pins — price oscillates around them and gets stuck. Trade fades and mean-reversion into the wall.
  • In negative GEX regimes, walls act as acceleration points — once price breaches a wall, dealer rehedging cascades and the move extends. Trade the breakout, not the fade.
  • The largest opposite-sign wall above/below spot is your most likely magnet for the session. Map it before the open and treat it as your primary target.
What "strong" GEX means: The absolute dollar value isn't meaningful without a baseline. A $40M reading sounds large but is structurally tiny for SPY. What matters is where today's reading sits relative to recent sessions — top/bottom 20% of the last 20-60 days is where regime really asserts itself. Until that baseline exists, watch for sign flips and rapid changes rather than absolute thresholds.

Options Flow — what it tells you

Call premium vs put premium

The raw dollar value of options traded matters more than the number of contracts. A single $50M put sweep tells you more than 500 small call trades. Watch for premium imbalances — when put premium exceeds call premium by 2× or more, large players are paying up for downside protection.

C/P ratio interpretation

C/P RatioMarket reading
> 1.5Heavy put activity — fear or directional bearish bets. Often precedes or accompanies a move down.
1.2 – 1.5Elevated put activity — hedging building, market cautious.
0.8 – 1.2Neutral. Normal market conditions.
< 0.8Call heavy — risk-on, bullish positioning, or short-covering in puts.

IV (Implied Volatility) trend

Rising IV means options buyers are paying more — they're scared or positioning for a big move. Falling IV means complacency. The most powerful setup is rising IV alongside rising put premium alongside bearish flow bias — all three together mean real institutional hedging, not noise.

Two-signal Bias Model

The bias displayed across the system (the navbar pill, the confluence panel, the magnets signals) is not one indicator — it's a combination of two independent readings. Understanding what each one measures, and what their agreement or disagreement means, is the most important concept in this system.

Why two signals instead of one

Earlier versions of this tool used a single bias derived from the call-vs-put premium ratio. That worked, but it produced false confidence: the C/P ratio drifts slowly (it was 0.93 ± 0.01 for an entire 65-minute session on 2026-05-19) and the system would call that "BULLISH × 13 polls" — confident, persistent, and not actually reflecting anything new happening in the tape.

The new model adds a second, independent signal that watches what institutions are actually doing right now, not what the chain looks like in aggregate. When the two signals agree, that's real conviction. When they disagree, the system flags it as MIXED — and that's the most useful new information, because it tells you when not to trade.

Signal 1 — Passive premium skew (flow_bias_premium)

Just the ratio of put premium to call premium across all trades in the last 5-minute poll. This is the "broader chain" view — every trade counts, retail and institutional, hedges and directional, mid-fills and aggressive sweeps. It changes slowly and reflects the overall state of the option chain.

cp_ratio (pp / cp)Passive bias
≤ 0.95BULLISH
0.95 – 1.10NEUTRAL
≥ 1.10BEARISH

The bearish threshold is asymmetric (1.10 vs 0.95) because put protection is structurally bid at all times — institutional hedges are continuously bought even on quiet rallies. It takes a stronger put skew to indicate genuine bearish demand.

Signal 2 — Institutional aggression (flow_bias_institutional)

This is the new signal that reflects what large players are doing right now. It works in two steps:

Step A — filter to institutional trades. Each flow record has an orderType field from the data provider:

orderTypeClassificationWhy
BLOCKAlways institutionalNegotiated single-venue fills, minimum size too large for retail.
SPLITAlways institutionalSingle intent broken into pieces — execution algos.
SWEEP ≥ $25K premiumInstitutionalAggressive multi-exchange fills with meaningful size.
SWEEP < $25K premiumExcluded as retail noiseSmall urgent fills, mostly retail momentum chasers.

Step B — Lee-Ready NBBO classification. For each institutional trade, compare the executed price to the NBBO midpoint:

  • Price above midpoint (+ 5% spread tolerance) → buyer-initiated (paid up to be filled)
  • Price below midpoint (− 5%) → seller-initiated (gave size, wanted out)
  • Price within tolerance → mid-fill, not classifiable as either side

Then map to underlying direction:

TradeDirection
Call bought aggressively (above mid)Bullish
Put sold aggressively (below mid)Bullish (someone wanted out of puts cheap)
Put bought aggressively (above mid)Bearish
Call sold aggressively (below mid)Bearish (or hedged write)

If fewer than 5 institutional trades qualify in a poll (slow market, lunchtime), the institutional bias is reported as NO_DATA rather than guessing from a tiny sample. The combined bias falls back to passive-only at reduced strength.

The agreement matrix

The combined bias (flow_bias_combined, aliased as net_flow_bias) is computed by comparing the two signals:

PassiveInstitutionalCombinedStrength
BULLISHBULLISHBULLISHFull (average of both)
BEARISHBEARISHBEARISHFull
NEUTRALBULLISH/BEARISHInstitutional wins×0.7
BULLISH/BEARISHNEUTRALPassive wins×0.7
BULLISHBEARISH (or vice versa)MIXED×0.3 (heavily reduced)
AnythingNO_DATAFalls back to passive×0.5

Reading the MIXED state — what it actually means

MIXED is the system telling you: "Smart money is doing something different from what the broader chain looks like." A few common patterns:

  • Passive BULLISH, Inst BEARISH — the chain skews call-heavy (often because of retail call buying or covered-call writing), but institutions are aggressively buying puts. Classic distribution / institutional hedging on a rally. Don't chase the upside.
  • Passive BEARISH, Inst BULLISH — put premium is elevated (broad hedging), but institutions are aggressively selling those puts to retail and buying calls. Could be a bottom forming, or smart money fading a fear spike. Don't short.
  • Either MIXED state during a fast move — typically transitional. The "winner" of the disagreement usually leads the next direction. Watch the institutional bias closely; it tends to lead.

The simple rule: do not enter new trades when the combined bias is MIXED. Wait for the two signals to align. Existing positions can stay but treat MIXED as a tightening-stops signal, not a "load up" signal.

The "buyer interpretation" caveat

Lee-Ready classifies based on who paid up. A call buyer is classified as bullish — but the other side of every trade is someone selling that call. Are they bearish? Not necessarily. Market makers sell calls to delta-hedge with stock; that's mechanically neutral on the underlying. So the institutional signal really measures aggressive intent on contracts, not pure long/short conviction. For most setups this is the signal you want, but be aware: a session with heavy MM call-writing (and corresponding stock buying for hedge) can read BEARISH on institutional flow while stock grinds up. That's actually a useful signal — it tells you "MMs are absorbing this rally."

Regime — TREND DAY vs RANGE DAY

The Regime label sits at the top of the Signal Confluence panel and answers one question: "Will dealers absorb moves today, or amplify them?"

The system reads regime two ways — don't confuse them

"Regime" appears in two places, computed differently. Both answer "will dealers absorb moves or amplify them?", but one is a broad daily posture and the other is a live, structural read around spot.

Where you see itWhat it measuresHow it's computed
Flow Dashboard → Signal Confluence "Regime" row Broad dealer posture for the day. 7-day net GEX — the sum of GEX across all strikes and all expiries in the heatmap. A ±$5M dead-band reads as TRANSITION so a microscopic reading doesn't flicker into a full TREND/RANGE stamp.
Magnets & Flow Map "regime" (range / trend / transition) Where spot sits in the live gamma structure right now. Per-poll structural classifier over the ±5-strike window (see below). Not a 7-day figure.

1 · Dashboard regime — 7-day net GEX

Broader and steadier than the per-poll net_gamma in the Net Gamma KPI box (which only reflects what just traded).

7-day net GEXRegimeWhat dealers doImplication
> +$5M RANGE DAY Dealers are net long gamma. They sell strength, buy weakness to delta-hedge. Moves get dampened. Price tends to pin to high-GEX strikes. Range-bound, mean-reverting.
< −$5M TREND DAY Dealers are net short gamma. They buy strength, sell weakness, amplifying moves. Moves accelerate once started. Trends sustain longer. Breakouts have follow-through.
within ±$5M TRANSITION No decisive posture either way. Undecided. Don't lean on regime; wait for it to resolve.

2 · Magnets & Flow Map regime — per-poll structural classifier

Computed each poll from the ±5-strike GEX ladder (OI-GEX when fresh, otherwise flow-GEX). It asks two questions about where spot sits in the gamma structure, not what the broad daily total is:

  • Is GEX at the spot strike positive or negative? Positive = dealers long gamma at spot (damping). Negative = a short-gamma "pit" (amplifying).
  • Is spot above or at/below the zero-gamma flip? The flip is the highest strike where the cumulative stack turns net-negative. Above it = damping territory; at/below = amplifying territory.
Structural readRegimeMeaning
Long-gamma at spot and above the fliprangeDealers damp moves here — range/pin logic is trusted.
Short-gamma at spot and at/below the fliptrendDealers amplify — breaches accelerate.
Mixed (one condition each way)transitionAmbiguous — range logic is not trusted this poll.

This is why a day can read RANGE DAY on the dashboard (positive 7-day posture) while a given poll shows trend on the Magnets page — spot has dropped into a local short-gamma pit even though the broad book is long gamma. They answer different questions.

Why the label is white, not red/green

Regime is not directional. A TREND DAY can trend up or down; a RANGE DAY can pin above or below your position. Colouring it green/red would conflate regime with bias. The label is intentionally white so it reads as context, alongside the directional bias which has its own colours.

How to use regime in decisions

  • TREND DAY + clear bias — best setup for directional trades. Use wider targets, let winners run, expect follow-through.
  • RANGE DAY + clear bias — fade extensions toward the bias. Tight targets at GEX walls. Don't expect breakouts to stick.
  • TREND DAY + MIXED bias — high risk. The market can move violently, but the system can't tell you which way. Stay out.
  • RANGE DAY + MIXED bias — chop. Expect range-bound noise. Easy day to overtrade and bleed.

Chart Indicators — how they interact

EMA stack hierarchy

The three EMAs form a stack. When EMA 9 > EMA 21 > EMA 50, price is in a bullish alignment. Reverse stack = bearish. The crossovers (EMA 9 crossing EMA 21) are the trigger signals — but only act on them when the larger context (flow, GEX) agrees.

OBV divergence — the key volume signal

On-Balance Volume is the cumulative flow of money in and out of SPY. It rises on up-volume bars, falls on down-volume bars. The signal that matters most:

Bearish OBV divergence: Price makes a higher high, but OBV makes a lower high. This means the new price high was made on lower volume — buyers aren't committing. This is distribution. When this happens at a GEX call wall, the probability of reversal is very high.

MFI vs RSI

MFI (Money Flow Index) is RSI weighted by volume. The key difference: RSI can signal overbought even if the move was on massive volume (which is sustainable). MFI won't signal overbought unless the volume confirms the overextension. For SPY — a heavily traded instrument — MFI gives fewer false signals.

Volume Ratio spikes

When a bar prints at 2.5× average volume, something significant happened. Combined with a GEX marker firing at the same time, you know: (1) a major level was being tested, and (2) it happened with real conviction. A 2.5× volume bar at a put wall bounce = high probability support holding.

Signal Scoring — how the panel works

The signal panel scores a three-bucket model. Each bucket is independently normalised to [−1, +1], then blended into a final score. Confidence = abs(final score) × 100%. Direction is NEUTRAL if confidence < 25%.

−100% (full bear)
(full bull) +100%

Final = stateScore × TBD + momentumScore × TBD + flowScore × TBD

BucketFactorWeight in bucketHow it scores
State ×TBDEMA stackTBDFull stack ±1.0, short-bias ±0.4, mixed 0
Price vs VWAPTBDContinuous tanh(diff%) — 0.5% above → +0.46, 1% → +0.76
Net gammaTBD±0.5 (positive = dampening = bullish for pins)
Flow bias streakTBDtanh(streak / 5) × sign — saturates at 1 after ~10 polls
Momentum ×TBDMACD histogramTBDCross ±1.0, building ±0.7, fading positive −0.3 (key: shrinking histogram = slightly bearish)
MFITBDContinuous (MFI − 50) / 50; OB (≥80) → −1.0 override, OS (≤20) → +1.0
OBV slopeTBD5-bar slope normalised by avg volume via tanh — continuous, not 3-bar discrete
Volume spikeTBDOnly fires when ≥1.5× avg AND aligned with price direction
Flow ×TBDFlow bias streakTBDSame tanh(streak/5) × sign (bias appears in both state and flow — by design)
C/P ratioTBDContinuous −tanh((cp − 1) × 2); cp=0.88 → +0.24, cp=1.5 → −0.83
IV trendTBD±0.5 (rising >0.5% = fear = −0.5)

Multi-timeframe overlay

After computing the base score, the panel reads the Ice Cold Read (ICR) panel's 15m / 30m / 1h per-timeframe bias and adjusts confidence:

MTF agreement with current scoreConfidence multiplier
All three higher TFs agree×1.15 (capped at 100%)
Mixed (some agree, some don't)×0.85
All three higher TFs disagree×0.60 — major downgrade
Confidence threshold: Below 25% = forced NEUTRAL regardless of sign. The practical entry sweet spot is 50–75% with MTF agreement — high conviction, not exhaustion.

On-screen terms — glossary

Every label, badge, abbreviation and status word that appears on the live pages, grouped by page. If you spot a term on screen and want the one-line meaning, it's here.

Symbols shared across all pages: bullish / up / building · bearish / down / unwinding · · neutral / flat · γ gamma · Δ change since last poll · refresh (with countdown to next) · STALE = data older than the freshness limit · = no data yet. Money is abbreviated K thousand · M million · B billion. The big bias pill (BULLISH / BEARISH / MIXED / NEUTRAL) is the same on every page — see the Two-signal Bias Model.

Glossary · Flow Dashboard

TermMeaning
Net GammaSum of (gamma × contracts × 100), calls minus puts, this poll. Green positive / red negative. Sublabel shows the Δ vs last poll.
C/P RatioPut-trade ÷ call-trade premium ratio. Labelled call-heavy (≤0.95), neutral, or put-heavy ⚠ (≥1.10).
Avg IVVolume-weighted implied volatility. ▲ rising / ▼ falling with the % change.
Call Prem / Put PremTotal dollar premium of calls / puts traded this session, with the trade count.
Data Quality% of institutional trades this poll where NBBO was usable to classify direction. Green ≥95% · amber 80–95% · red <80% (institutional read unreliable).
Bias streakColoured dots for recent polls — green BULLISH, red BEARISH, amber MIXED, grey NEUTRAL. Text reads e.g. "BULLISH for 4 polls = 20min".
RegimeTREND DAY / RANGE DAY / TRANSITION from 7-day net GEX. White = context, not direction. Broad daily posture — distinct from the per-poll structural regime on Magnets/Flow Map.
Net γPOSITIVE — MMs absorbing, or NEGATIVE — MMs amplifying (local, this poll).
Inst flowInstitutional-only bias (BLOCK/SPLIT + SWEEP ≥ $25K, NBBO-classified). Shows strength (str) and sample size (n=148).
PassiveThe C/P premium-skew bias across all trades, with its strength.
CombinedThe fused verdict and its streak — e.g. "BULLISH × 4 polls". BULLISH/BEARISH when Inst and Passive agree, MIXED when they disagree.
NO_DATAFewer than 5 qualifying institutional trades this poll — the institutional read is withheld rather than guessed.
Premium balancePer-poll stacked bars, call% (green) vs put% (red), with a ▲/▼/· bias arrow per row.

Glossary · Flow Map

TermMeaning
Net flowMap toggle — colour each cell by cumulative flow-GEX (where flow lives).
Building ΔMap toggle — colour each cell by the per-poll change in flow-GEX (what's moving now).
call-side / buildingTeal cells — call-side flow, growing. The legend's teal swatch.
put-side / fadingRose cells — put-side flow, or flow bleeding off. The legend's rose swatch.
peak (flagged magnet)Amber outline / ◆ — a strike the magnet detector flagged as a local |GEX| peak or support-band member.
spotThe white line tracing SPY price across the polls.
brighter = more concentratedCell opacity scales with |flow| vs the session max — brighter means more flow piled at that strike.
BUILDING NOWThe companion panel — per-strike Δ bars for the cursor's poll (gaining right/teal, bleeding left/rose).
● liveCursor pinned to the latest poll. Click to re-pin after scrubbing back.
share %(tooltip) this strike's share of the detection window's total |flow|.
building / unwinding / stable(tooltip) momentum — flow growing in the same direction / shrinking / unchanged poll-to-poll.

Glossary · GEX Heatmap

TermMeaning
Put wall (deep red)Large negative GEX below spot — acts as a floor / support. Deeper red = stronger pull.
Call wall (deep green)Large positive GEX above spot — acts as a ceiling / resistance. Deeper green = harder to break.
put-heavy / call-heavyThe two ends of the colour gradient legend (negative ↔ positive GEX).
Δ columnChange since last poll. ▲ +2.1B = GEX building, = unwinding, · = change under $500K.
Outlier (purple border)|GEX| more than 2× the local median of the 5 nearest strikes — a statistically concentrated level. These also drive the Chart arrows.
Strikes ±Slider — how many strikes around spot to display (default ±10).
Min |GEX|Filter — hide strikes below a $ threshold (All / $1M+ / $5M+ / $10M+).
Outlier thresholdSensitivity for the purple highlight — Off / 1.5× / 2× / 3× median.
DTE column coloursExpiry coding: blue 0DTE · amber 1DTE · green 2DTE · grey 3–7DTE.
Net 7-day GEXAggregate GEX across all strikes and expiries — drives the dashboard's 7-day Regime label.
Highlighted rowThe strike nearest current spot.

Glossary · Chart + Signals

TermMeaning
5m / 15m / 30m / 1hBar timeframe. Switching reloads indicators and rescores the panel.
Line / Candles / BarsPrice chart style toggle.
EMA 9 / 21 / 50Exponential moving averages — gold / blue / purple. Stack order = trend alignment.
VWAPVolume-weighted average price (orange) — the institutional reference level.
BBBollinger Bands — extension / squeeze.
MACD 12/26/9Momentum pane — histogram sign and crossovers.
OBV · Vol RatioOn-Balance Volume (accumulation/distribution) with volume-spike bars (bright ≥2.5×).
MFI 14 · OB / OSMoney Flow Index; OB = overbought ≥80, OS = oversold ≤20.
▲ / ▼ chart markersGreen ▲ = call-heavy GEX outlier detected; red ▼ = put-heavy outlier.
Signal markersOn-bar: ▲/▼ signal fired · ✓ hit target · ✗ expired/missed · ↻ updated.
% confSignal confidence 0–100% beside the BULLISH/BEARISH/NEUTRAL badge.
EMA stack / vs VWAP / MACD / MFI / OBV / Vol spikeThe per-factor rows of the Chart-signals bucket, each with a plain-English state (e.g. "Bullish stack", "Crossed ↓ bearish", "OB ⚠", "Rising (accumulation)", "× conviction buy").
Ice Cold Read (ICR)Higher-timeframe panel: ✓/✗ agreement vs the dashboard signal, a 0–10 conviction pip scale, a TL;DR, per-TF cards (15m/30m/1h), key levels (R resistance / S support), a ↻ "what would flip it" line, and a Risks / caveats toggle. STALE if >10 min old.
Signal Events — TodayBottom log: FIRED / RESOLVED / HIT rows with Time, Event, Scenario, Target, Conv%, Spot.
live · 1s / 30sPrice tick rate — 1s during market hours, 30s when closed.

Glossary · Magnets & Signals

Signal lifecycle states (ACTIVE, STRENGTHENING, WEAKENING, RESOLVED HIT/EXPIRED/COLLAPSED) are covered in full in the Magnets page section above.

TermMeaning
🧲 Magnets / 📋 LogThe two tabs — live magnet ladder vs the event log.
Bearish Case / Bullish CaseThe two scenario columns — "where price goes if it drops / rises".
Npt above / below · spot $Distance of the strike from current spot.
↓/↑ TARGETRole badge — a directional target magnet below / above spot.
🛡 SUPPORT / ⛔ RESISTANCERole badge — a floor / ceiling level.
● AT SPOTRole badge — magnet sitting at the current price.
⚡ ACCEL / AMPLIFIES ABOVE / BELOWRole badge on a TREND-regime level where dealer hedging accelerates a breach.
OI / flow / OI+flowSource badge — which layer detected the magnet (open interest, live flow, or both agreeing).
▲ building / ▼ unwinding / · flatFlow-GEX momentum vs last poll, with the Δ amount.
▲ peak / support bandMarker — the strike is a detected |GEX| peak / sits in the support band.
⚡ divergenceFlow and OI point opposite ways at this strike.
N% of windowThis strike's share of the detection window's total GEX.
~N% touchEmpirical touch probability for flagged magnets (reference class only).
full / stale · range / trend · flip $Context badges — data confidence, the per-poll structural regime (range/trend/transition, not 7-day), and the zero-gamma flip strike.
Copy GEX levels to TradingViewExports the levels as Pine Script (PUT WALL / CALL WALL lines).
MAGNET_APPEARED / _RESOLVEDLog event types — magnet first detected / final outcome recorded.
✓ HIT / ≈ CAME CLOSE / ✗ no reachLog outcome — price reached (≤0.50pt) / near-miss (0.50–1.00pt) / never approached (>1.00pt).
max toward / max awayClosest favourable run / worst adverse run while the magnet was tracked.

Glossary · Accuracy

TermMeaning
Overall hit rate% of resolved signals that touched target in any window.
Direction correct% where price moved the predicted way over 30m (regardless of touching the exact target).
any windowHit measured across all four timeframes (5/15/30/60m).
✓ HIT / ✗ MISSTarget touched within ±$0.50 / window expired without a touch.
⏱ EXPIREDAged out with conviction still healthy — excluded from the hit-rate denominator.
pending / …Windows not all elapsed yet — not scored.
Conviction buckets<50% / 50–70% / 70%+ — hit rate split by conviction at fire time.
By time window5m / 15m / 30m / 60m — hits and directional accuracy at each horizon.
By momentumbuilding / unwinding / stable — hit rate split by GEX momentum at fire.
Table columnsFired · Scenario · Target · Conv% · Momentum · Entry $ · 5m/15m/30m/60m chips · Dir (point move) · Result.
Hit tolerance ±$0.50How close price must come to the target to count as a hit.
Date · ↓ Export all logsPick a prior log week / download the raw signal log as JSON.

How to read the Magnets page in a trade

The page has three tabs. Here's the read sequence every time you open it:

The read sequence — Magnets → Signals → Chart
1
Magnets tab — which scenario has conviction?
Look at all three columns. Which has the highest conviction %? Is the top strike building or unwinding? This tells you the structural lean of the session. You're not picking a direction — you're reading which scenario the GEX structure supports most.
2
Signals tab — has a signal fired?
If a signal is ACTIVE or STRENGTHENING in the same direction as the highest-conviction magnet column, the system has detected alignment. Check its conviction % and status. STRENGTHENING = thesis gaining — consider acting. WEAKENING = wait for stabilisation.
3
Chart page — 5m entry gate
Switch to the Chart page. Check the Signal Panel — is the 5m reading confirming the same direction as the magnet signal? If yes, all three layers align: GEX structure → signal conviction → 5m timing. That's your entry.
4
Target and stop from the Magnets tab
Your target is the top strike in the winning scenario column. Your stop is the nearest opposing wall — the top strike in the opposing column, or VWAP if that's closer. The Log tab will record this automatically.

Trading Example — Bearish Setup

Based on the May 15, 2025 data — SPY near $738 with dominant put positioning building over 5 polls.

10:45 AM ET Bearish Put — SPY toward $736 BEARISH
1
Primary Thesis: BEARISH 72%
Chart signal panel shows BEARISH 72% confidence. State bucket: full bearish EMA stack, price 0.9% below VWAP, negative gamma. Momentum bucket: MACD building down, MFI 38, OBV falling slope. Flow bucket: BEARISH ×4 polls, C/P 2.55, IV rising +0.8%. MTF overlay: 15m/30m/1h all bearish → ×1.15 boost applied before the 72% read.
BEARISH 72% Bias ×4 polls C/P: 2.55 IV: +0.8% rising
2
Session row: Confirms — structural bearish day
Session conviction 72%. The −$4.4B put wall at $738 is the session anchor. Below spot, $736 and $735 are additional put walls. The structural read is: this is a bearish session, trade puts on bounces.
Session: ✓ Confirms 72% $738 SESSION TARGET −$4.4B
3
1h + 30m: Both confirm — momentum building
1h: BEARISH flow sustained, EMA 50 still above price but declining. 30m: MACD histogram turned negative this bar, OBV declining for 3 bars. Both timeframes confirm. The move has structural and momentum backing.
1h: ✓ Confirms 30m: ✓ Confirms — MACD crossing ↓
4
Target levels: $736 TARGET, $738 CEILING
The target panel shows $736 as ↓ TARGET (put wall below, bearish thesis points here) and $738 as CEILING (dominant wall, any bounce likely stops here). Your trade: short from $738, target $736. Stop above $738.50 (if ceiling breaks, thesis failed).
TARGET: $736 (put wall) CEILING: $738 (−$4.4B) Stop: $738.60 R:R ≈ 1:3
5
5m Entry Gate: Confirms — enter now
5m signal: BEARISH 74%. EMA 9 just crossed below EMA 21. Price below VWAP. Volume ratio 2.1× on a down close. Gate is open. Enter SPY 0DTE put, strike $737 or $736, debit paid.
5m Gate: ✓ Confirms 74% EMA cross ↓ confirmed Vol 2.1× conviction
✓ 5/5 timeframes confirm Session + 1h + 30m + 15m + 5m all BEARISH. This is maximum conviction — size up. The thesis, the timing, and the targets are all aligned.

Trading Example — Bullish Setup (partial conviction)

1:30 PM ET Bullish Call — SPY bounce from put wall BULLISH
1
Primary Thesis: BULLISH 51% — partial conviction
Chart signal panel shows BULLISH 51%. State bucket leans bullish (price above VWAP, EMA short-bias up). Momentum bucket is mixed (MACD positive but fading → −0.3, which pulls the bucket negative). MTF overlay: 30m neutral → ×0.85 applied — this is what kept confidence from reaching 65%+. Not a full-conviction setup; size will be smaller.
BULLISH 51% Partial — not full session conviction
2
Session row: Neutral — mean-reversion day
Session is NEUTRAL. This means the day is ranging between the put wall floor ($735) and call wall ceiling ($740). This is a mean-reversion day, not a trend day. The trade: bounce from the floor back to VWAP. Do not hold for a breakout.
Session: ~ Neutral FLOOR: $735 (−$425M put wall) CEILING: $740 (call wall)
3
Target: $737 (VWAP) — not $740
Because the session is neutral, the target is not the call wall — it's VWAP ($737). In a mean-reversion day, price bounces from wall to VWAP, not wall to wall. Targeting $740 would require a full bullish session thesis, which we don't have.
TARGET: $737 (VWAP) Not $740 — session not bullish enough
4
5m Entry Gate: Confirms — oversold + floor = entry
MFI dropped to 19 (oversold). OBV stabilised. Volume on the down move only 0.8× — weak selloff. Price sitting on $735 put wall. 5m gate BULLISH 58%. Enter call debit. Stop below $734.70 (floor broken = thesis failed).
5m Gate: ✓ Confirms 58% MFI 19 — oversold ⚠ Vol 0.8× weak selloff Stop: $734.70
✓ 3/5 timeframes confirm — half size Session neutral, 1h neutral, 30m neutral, 15m confirms, 5m confirms. Only 2 active timeframes agree — this is a half-size trade. Take profit quickly at VWAP. Do not hold hoping for $740.

Trading Example — Conflicted Setup (stay flat)

11:15 AM ET Mixed signals — no trade CONFLICT
1
The conflict
Flow Dashboard shows BULLISH bias (call premium leading), but the Chart shows price below VWAP with a bearish MACD crossover. Signal panel says NEUTRAL 18% — state bucket is positive, momentum bucket is negative, and they cancel out. MTF overlay is mixed (×0.85), pulling confidence below 25% which forces NEUTRAL.
Flow: BULLISH Chart: below VWAP MACD: crossing ↓ Signal: NEUTRAL 48%
2
Magnets cross-check
The magnets page shows CONFLICT on all top strikes. Bullish flow but chart says down. The system is telling you it cannot reliably predict direction. This is noise.
3
Decision
Stay flat. This is not a setup failure — this is the system working correctly. There is no edge in a conflicted environment. Wait for the 5m MACD to resolve, or for the next poll to shift flow bias. Do not force a trade.
⚠ No trade The most profitable thing you can do in a CONFLICT reading is nothing. Preserve capital for the next CONFIRMED setup. Over time, CONFLICT setups will show a lower hit rate in your Accuracy page — this is the empirical proof that skipping them was right.

Entry Rules — the checklist

Apply this in order before every trade. Stop as soon as one required condition fails.

Required (all must be true)

  • Combined bias is NOT MIXED. When passive and institutional flow disagree, the system itself is undecided — wait for them to align before risking capital.
  • Data Quality ≥ 80% (the box on the dashboard signal strip). Below 80%, the institutional bias is unreliable and you're effectively trading on one signal.
  • Chart signal confidence ≥ 50%. Below 50% or NEUTRAL = structural ambiguity, no trade.
  • Session row confirms the thesis. If session denies, the day's structure is against you — stop here.
  • At least 2 of 3 middle timeframes (1h / 30m / 15m) confirm. Momentum must be building in your direction.
  • A clear TARGET or SESSION TARGET exists within $5 of spot. No target = no trade.
  • 5m Entry Gate confirms. Wait for it even if everything else is green. The gate controls timing.
  • You have a defined stop. VWAP breach, EMA reclaim, or FLOOR/CEILING break — one of these must be your stop.

Size by timeframe agreement

TFs confirmingSizeNote
Session + 1h + 30m + 15m + 5mFull sizeMaximum conviction — all five agree
Session + 1h + 30m + 5mNormal size4/5 — strong, 15m may be lagging
Session + 30m + 5mHalf size3/5 — decent, watch for 1h to confirm
Session + 5m onlyQuarter sizeMean-reversion only, tight stop
5m only / Session deniesNo tradeTrading against the structure

Size up further (add to full size)

  • +Chart signal confidence ≥ 75%
  • +GEX outlier marker just fired at or near the target strike
  • +Volume Ratio >2× on the entry bar in the direction of the trade
  • +MTF overlay confirms (all 3 higher TFs agree → ×1.15 confidence multiplier)

Stay flat (any of these = no trade regardless of signals)

  • Combined bias is MIXED. Passive and institutional disagree — wait for alignment.
  • Data Quality < 80% (red box). NBBO data is broken or thin; the institutional read can't be trusted.
  • Within 30 minutes of a major release (FOMC, CPI, NFP, earnings)
  • IV spiked >2% in one poll (unknown catalyst — options are pricing in something you don't know)
  • Flow bias flipped direction in the last poll (unstable — wait for a new streak to form)
  • Session row denies the thesis
  • No clear FLOOR or CEILING to define your stop
The single most important rule: The 5m signal opens the gate. The Session + timeframe table builds the thesis. Never reverse these. A strong 5m signal with a neutral or denying Session row is not a trade — it's a scalp at best and a trap at worst. Build conviction top-down, confirm entry bottom-up.