What Vespryx draws on your chart
Five objects and one card. Thicker and brighter means more open interest sits there: the glow is the ranking, not decoration, so you can read which level matters most without reading a single number.
The labels sit on the lines, not beside them. TradingView breaks a line to make room for its text, so the level and its name can never drift apart or cover a different level. Two labels can only overlap if two levels do.
The four colours, and only four
Each one means exactly one thing. Nothing else on the chart uses them.
A dotted purple line means the two gamma models disagree about
where the flip is, and the dotted one is the second opinion. It is labelled
GAMMA FLIP (gex model) so it cannot be mistaken for the real one.
The reaction row
The walls say where the levels are. This says what price did when it got there. It is one row in the regime card, and only ever reports the current bar or the last two.
Every one of these requires a level. That is what separates it from a candlestick pattern library, which fires everywhere because a hammer is a hammer wherever it forms. With no dealer level within reach, nothing is reported at all.
It reports what happened. It never says what to do.
Which expirations you are looking at
The single biggest thing the chart does not say out loud, so the card says it.
Pick a single date in Expiration and the levels are recomputed from that chain alone. It is a genuinely different reading, not a subset: on one measured day SPY's pin sat at 768 across the blend and at 750 on a single expiry. The card marks a chosen expiry so you can tell the two apart.
Every setting, and what it actually changes
The popup and the settings page write the same values. Use whichever is nearer: the popup for things you change while reading a chart, the settings page for everything.
The master switch. Off stops every overlay everywhere and stops all fetching with it.
It never deletes anything already drawn, because a deleted drawing cannot be recovered. Use Remove drawn walls for that, which only removes drawings Vespryx marked as its own.
The lines themselves. This is the product; leave it on.
How many walls to draw, strongest first. Six by default.
Past about six the chart stops being a read and becomes a wall of colour. This is a judgement about legibility, not a limit of the data.
Draw only levels scoring at or above a floor. Strength is 0 to 100: open interest at the strike, weighted by how near it is to price.
It needs a Vespryx session. Without one there are no scores to compare, only a placeholder, so the filter is skipped and the chart tells you rather than emptying itself. If no level reaches your floor, the chart says what the strongest actually was.
Words names the level: RESISTANCE 40k OI.
C1 / P1 names it by side and rank: C1 40k OI. Shorter, and it tells you both which side of price it is on and that it is the strongest there.
How far the glow blooms out from a level, and what makes a busy chart heavy. Thin gives the candles back; Thick makes the bloomed levels unmissable.
Which levels bloom is about DISTANCE, not rank: the nearest level above price, the nearest below, and the pin. The one price is actually between is the one worth the width, and the strongest level in the chain is often the one furthest from you. Strength shows in how solid a line is drawn rather than how wide it blooms.
Whatever you pick is a ceiling, not an override. Where strikes sit close enough that full-width glows would smear into each other, the chart still narrows them below your setting, because two levels you cannot tell apart are worse than one drawn thinner than you asked for.
What the words written on each line are drawn in. Automatic follows your chart's own foreground, which is what keeps them readable sitting inside the glow.
One setting reaches all of them, so the wall labels, the print chips and the expected-move lines cannot end up in three different colours. Pick anything that is not a plain colour and it falls back to Automatic rather than drawing a label with no text in it.
The indicator carries the same setting, where leaving it alone lets each level name itself in its own colour. That is the opposite default on purpose: those labels sit on the chart background rather than inside a glow, so the colour doubles as the key.
Blend every expiry the chain uses, or pick one. See above.
The list is the symbol's real chain, so it changes as you change symbol. A date left over from another ticker is dropped rather than sent, because the request would 404 and the chart would silently fall back to the blend.
Today's large option trades, shown against the standing positioning.
A print at a strike that already has a wall is written onto that wall's label (57k OI · $36M today), because "money traded where inventory already sits" is the informative case. Only a print with no wall behind it gets its own marker, capped at two.
The card in the top right: the regime in words, what each colour means on this symbol, how far price sits from the flip, the reaction row, and how old the data is.
It states an age and deliberately never judges it. After the close, a chain measured hours ago is perfectly legitimate.
Three steps, S / M / L. This is the one chart setting that costs no repaint, because it is CSS on an element already on the page.
You can also drag the bottom-right corner to fine-tune it, and double-click that corner to snap back to the preset. The floating HUD resizes the same way.
Paints your saved tickers on a schedule so they are ready when you open them. See Phone and desktop.
A Chrome notification when a new high-score unusual print lands on a ticker you follow. Checked every five minutes, in your browser, against your own session. Nothing is sent anywhere.
Badges $TICKER mentions with live dealer context across X, Reddit, StockTwits and the finance press, and paints wall levels onto Fidelity's option chain.
Both decorate a page as it loads, so switching them off wants a page reload to take full effect. The settings page says so when you toggle them.
Off by default. It bands the chart with the at-the-money straddle's implied move to expiry, which answers whether a level is even reachable today before you trade toward it.
Needs a Vespryx session and the entitlement behind /ticker/:symbol/tactical-grid. Switch it on without one and the rest of the chart still draws normally; a toast says the cone itself is on Vespryx Pro, rather than leaving you to guess why nothing changed.
Off by default. Max pain, the call wall and the put wall are the open-interest vocabulary rather than the gamma one, so they draw dotted to keep the two readings apart on sight.
Derived from the same gex.byStrike the walls already fetch, so it costs no extra request and works at whatever tier already drew the walls. Dealer walls, which you do have, are computed from gamma exposure and are a different claim: a call wall is where the most calls are, not where hedging pressure is strongest.
Controls which levels the chart draws. Full is the default: all dealer walls with the apex overlay. GEX only removes the apex overlay and draws from gamma exposure alone. Minimal draws the two strongest levels. Custom applies the strength floor and level cap you set in the wall settings.
Synced across devices through your Vespryx account. A change here applies the next time the chart repaints.
Up to three prices you want drawn as dashed lines on the chart, in slate grey. Enter a price and an optional label. They appear on every chart, on top of the dealer walls, and sync across devices.
Leave a price blank to skip that row. The lines are swept and repainted with the walls, so they stay clean when the chart reloads.
Your phone and the TradingView desktop app
Both work, and neither needs anything installed on them.
A Chrome extension cannot run inside those apps. Nothing can: an extension only runs in Chrome and those are separate programs. So Vespryx does not try. It makes this machine the painter and lets every other device be a viewer.
Switch on Keep tickers dressed and it repaints your saved tickers on a schedule, in a hidden background tab that closes itself, so the chart you are reading is never moved. Skipped outside 04:00–20:00 ET on weekdays, because dealer positioning barely moves overnight.
Sync is pull-on-load, so an app that was already open before the paint happened is showing what it had when it opened. Close and reopen it (or just switch symbol and back) to pull the current layout.
Levels on a chart the extension cannot reach
The extension paints TradingView in Chrome. Two charts sit outside that: a layout you are reading on a machine where you have installed nothing, and a chart you want to hand to somebody else. The Vespryx Overlay By TraderMatrix indicator covers both. You paste one line into it and it draws the same levels, in the same colours.
It is a Pine study, so it cannot fetch anything. Every number in it arrives because you carried it there, and that is the whole design: one field, one line, no key, no editor. Nothing here asks you to open the Pine Editor, and nothing here can overwrite a script you already have.
It is a public script on TradingView, so there is nothing to download and nothing to be granted. Open the Indicators dialog, search for Vespryx Overlay By TraderMatrix, click it and it is on the chart. Or open its TradingView page and press Add to chart.
A published script rather than a file you paste in, so you get every update instead of holding a copy that quietly falls behind. Anyone can add it; it only has levels to draw once you paste a line from your Vespryx session.
One or the other on a layout, not both. Where the extension already paints a symbol, its drawings are on that layout on every device. Pasting the same symbol into the indicator too draws every level a second time, with a second label on top of the first, on the phone as well. Use the indicator for charts the extension does not reach; where it does, leave the paste box empty.
Two places produce it, and they produce the same string from the same two calls, so they cannot disagree with each other or with your chart.
The Vespryx popup, Copy levels. It copies the levels for the symbol you are looking at.
Discord, /td vespryx SPY in
#vespryx-commands.
The reply previews the levels as a list and puts the line in a code block, which Discord gives its own copy button. No extension involved, so this is the path that works on a machine with nothing installed on it.
The button opens the server rather than the channel, because a channel link is a dead end for anyone not in it yet. Once you are in, #vespryx-commands is where the command lives.
The line looks like this, and it is meant to be unreadable. It carries the ticker, the flip, the pin, each wall with its open interest, and the moment it was taken.
VSPX|1|SPY|769.35|775|785.73|766.95|1786725376000|apex|1.15|785.73:57000:R,766.95:44000:S
Open the indicator's settings and put it in the field called Paste from Vespryx. That is the only field you need to touch; everything below it can stay where it is.
The numbered inputs under it are a manual fallback for typing four levels in by hand. If you pasted a line, they are ignored.
The line names its own ticker, so a line for the wrong symbol draws nothing at all rather than drawing SPY's levels on QQQ. This is the one real cost of the paste path, and it is most of the reason the extension exists.
It also stamps the moment it was taken, and the panel prints how old that is. A pasted level cannot refresh itself, so without an age a chart shows Tuesday's flip on Thursday with nothing on screen to disagree.
The levels, in the palette you already know: red resistance, green support, amber pin, purple flip. Then the read, which is the gamma regime and what it does to a move, and two rows the study works out from the bars in front of it rather than from anything you pasted, VOLUME and MOMENTUM.
There is no glow, and there cannot be. The bloom needs a drawing layer, which Pine has no way to make: hline clamps its width and a fill between two of them will not render. So the study draws the crisp core of each level in the same colours and the chart reads flatter. Same levels, thinner picture.
The regime card does not come with it either. On the web that card is a page element rather than a drawing, and elements do not travel.
The field is still empty. Nothing was pasted, or the paste landed in one of the numbered inputs below it.
The line was copied from a signed-out session. Sign in, copy it again, and the open interest comes with it.
The ticker in the line is not the ticker on the chart. It refuses rather than mispainting, which is the same rule the extension follows.
Working as intended. The study has no way to fetch. Copy a fresh line when the number stops being one you would trade on.
When the chart looks wrong
Four things that look like bugs and are not, in the order they actually happen.
Nothing happens when I change a setting
Reload the TradingView tab, not just the extension. Reloading an extension leaves every already-open tab running a dead copy of it that can never be reached again. The giveaway is walls on the chart with no regime card: the card is redrawn on every paint, so if it is missing, nothing is painting.
Every level says 0 OI, or has no open interest at all
You are signed out of Vespryx, or your plan does not include it. Open interest, the strength scores and the gamma flip all come from one premium endpoint. The walls still draw without it, which is deliberate, but they are unranked.
The levels moved, or there are more than I expect
Check the expiry line in the card. Blending four expirations and picking one give genuinely different levels, and the picker is per-symbol.
My futures chart says "no dealer data"
Correct, and deliberate. Vespryx reads equity and index option chains; futures have none here. Try SPX, XSP, SPY or QQQ for the same exposure.
It refuses rather than trying, because a futures root is often also a real
stock ticker: CL is crude on NYMEX and Colgate-Palmolive on
the NYSE, ES is the E-mini and also Eversource Energy. Fetching
blind would have drawn a different company's gamma walls on your
futures chart, with real open interest and real scores and nothing saying
otherwise. An honest refusal beats a convincing wrong answer.
Two labels are sitting on top of each other
Two strikes that close together really are that close. Vespryx used to drop a level when its label would not fit, which made the chart's contents depend on your zoom: the same chain drew four walls zoomed out and six zoomed in. A crowded chart is a problem you can zoom into; a chart that quietly hides a level tells you nothing is there.