US
SPY—VIX—S&P 500—Nasdaq—Russell—Gold—BTC—Crude—SPY—VIX—S&P 500—Nasdaq—Russell—Gold—BTC—Crude—
Free · for your own chart

NoVo Dealer Levels for TradingView

Traders keep asking for the same thing: the gamma flip and the walls drawn on the chart they already use, instead of a second dashboard to tab across to. This is that, free.

How it works

Four numbers, typed once. About fifteen seconds.

  1. Open SPY, QQQ or IWM and note the gamma flip, call wall, put wall and expected move.
  2. In TradingView open Pine Editor, paste the script below, and click Add to chart.
  3. Open the indicator's settings and type in those four numbers.

The levels on those pages are delayed. The live map, recomputed every 5 minutes with net GEX, gravity and the written read, is Trader.

The script

//@version=5
// NoVo Dealer Levels — free, from NoVo Options Trading (novo-options.trade)
//
// TradingView indicators cannot call the internet, so the levels are inputs.
// Grab today's on novo-options.trade/market-data/spy (or /qqq, /iwm), hit
// and type them into the settings below.
// The levels there are delayed; the live map is Trader.
indicator("NoVo Dealer Levels", overlay = true, max_labels_count = 100)

grp1 = "Dealer levels"
flip     = input.float(0.0, "Gamma flip",  group = grp1, tooltip = "Above it dealers damp moves, below it they amplify.")
callWall = input.float(0.0, "Call wall",   group = grp1, tooltip = "The largest call gamma strike — tends to cap.")
putWall  = input.float(0.0, "Put wall",    group = grp1, tooltip = "The largest put gamma strike — tends to support.")
spotRef  = input.float(0.0, "Spot at read", group = grp1, tooltip = "Optional. What price was when the levels were published.")

grp2 = "Expected move"
em       = input.float(0.0, "Expected move (+/- $)", group = grp2)
showEM   = input.bool(true, "Shade the expected-move band", group = grp2)

grp3 = "Display"
showLbl  = input.bool(true,  "Labels", group = grp3)
extendR  = input.bool(true,  "Extend right", group = grp3)

cFlip = #147bdf
cCall = #34d399
cPut  = #f87171
cSpot = #a8a8a8

f_on(v) => v > 0 ? v : na

pFlip = plot(f_on(flip),     "Gamma flip", color = cFlip, linewidth = 2)
pCall = plot(f_on(callWall), "Call wall",  color = cCall, linewidth = 2)
pPut  = plot(f_on(putWall),  "Put wall",   color = cPut,  linewidth = 2)
plot(f_on(spotRef), "Spot at read", color = cSpot, linewidth = 1, style = plot.style_cross)

emHi = (em > 0 and spotRef > 0) ? spotRef + em : na
emLo = (em > 0 and spotRef > 0) ? spotRef - em : na
pHi = plot(showEM ? emHi : na, "Expected move high", color = color.new(cSpot, 55), linewidth = 1)
pLo = plot(showEM ? emLo : na, "Expected move low",  color = color.new(cSpot, 55), linewidth = 1)
fill(pHi, pLo, color = color.new(cSpot, 92), title = "Expected move band")

f_lbl(price, txt, col) =>
    if showLbl and barstate.islast and price > 0
        label.new(bar_index + (extendR ? 6 : 0), price, txt + "  " + str.tostring(price, format.mintick),
             xloc = xloc.bar_index, yloc = yloc.price, style = label.style_label_left,
             color = color.new(col, 88), textcolor = col, size = size.small)

f_lbl(flip,     "Gamma flip", cFlip)
f_lbl(callWall, "Call wall",  cCall)
f_lbl(putWall,  "Put wall",   cPut)

// Regime tint: above the flip dealer hedging leans against the move, below it runs with it.
bgcolor(flip > 0 ? (close > flip ? color.new(cCall, 96) : color.new(cPut, 96)) : na, title = "Regime tint")

What it draws

The gamma flip, call wall and put wall as labelled lines; the expected-move band shaded around the spot price at the time of the read; and a faint background tint for which side of the flip price is on. Above it dealer hedging leans against the move; below it runs with it.

Free · Portal, Notes + Community
Create your free NoVo account

The member portal carries delayed dealer levels on SPY, QQQ and IWM: the gamma flip, the expected-move band, sectors, movers and the week’s catalysts. Dr. NoVo posts a Mid-Day Tape Review every trading day and the Week Ahead on Sundays, and his Market Insight sits at the top of the page: a few lines on whatever stands out across every market right now, read fresh as the tape moves. You also get the NoVo Discord: live discussion and Dr. NoVo’s daily dealer-map read.

Create your free account Join the new NoVo Discord →
Or just take the notes — The Week Ahead every Sunday and the Mid-Day Tape Review every trading day. Free, no account needed.
Also on Reddit & StockTwits · X — daily dealer-positioning reads.
Home · Trader · Crypto · AI · MCP & API · Plans · Market Data · SPY gamma · QQQ gamma · IWM gammaFutures positioningThe Daily StrikeCongress tradesVolatility record
Options 101 · 0DTE Guide · Basics & the Greeks · 0DTE options · Gamma & dealer positioning · Volatility & structure · Risk management · Stocks on-chain · Robinhood Chain & Wallet · AI agents & SI · The Journal · Glossary · TradingView script
Expected Move · Max Pain · Position Size · Options P&L · Greeks · Strategy · Economic Calendar · Market Holidays · Free API endpoints
Best 0DTE Tools · Best GEX Tools · vs SpotGamma · vs MenthorQ · vs Unusual Whales · vs Option Alpha · Best crypto gamma · Best MCP data · vs BackQuant · vs Laevitas · vs Coinglass · vs Amberdata · vs TipRanks
About · FAQ · Help · Getting Started · Security · Status · Data integrity · Error contract · Read Archive · Methodology · The Week Ahead · What’s new
Terms · Risk · Refunds · Privacy
Discord · Reddit · StockTwits · X · Contact

Market data on this page is delayed and provided for general information only. It is not financial advice or a recommendation to trade. VIX/VXN/RVX are ~15-minute delayed (CBOE); index values use E-mini futures. Options trading involves significant risk of loss. © 2026 NoVo Options Trading LLC, d.b.a. NoVo Crypto Trading.