gexbot docs
tools & utilities

gbR discord commands

Full command reference for gbR, the gexbot Research Discord bot — exposure shortcuts, greek families, implied volatility, levels, every option and filter, and the deprecated legacy commands.

gbR — short for gexbot Research — is the Discord bot that renders gexbot Research charts in your server. It runs on slash commands. Type / in any channel the bot can post in, and Discord shows the command list.

`/help` answers from inside Discord

The bot builds /help from the same catalog that registers its commands with Discord, so /help can never fall behind the bot. Use /help for the start page, /help topic:greeks for one page, or /help command:gex for one command. The reply is private to you, it works in a DM, and it does not spend your command allowance.


How a command reads

Every chart command takes a required symbol, then optional filters:

/gex symbol:SPX
/iv mid symbol:SPY end_dte:30
/oi symbol:QQQ strikes:40

Commands come in two shapes:

  • A family parent plus a subcommand — /gamma exposure, /iv mid, /delta ask. The parent groups a greek and names the axis.
  • A command on its own — /gex, /oi, /flip. These name a thing rather than a point on an axis, so they are top-level commands. Discord's picker matches on the top-level name, which is why /oi has to be /oi.

The symbol option is autocompleted. An option you leave out takes its default.


1. Exposure shortcuts

Four commands chart the exposure most people want, with the opinionated view the legacy !gex always drew.

CommandMetric familyCharts
/gexGEXGamma exposure
/dexDEXDelta exposure
/texTEXTheta exposure
/vexVEXVega exposure

All four preset the same three options:

PresetValueEffect
end_dte0The nearest expiration only
contract_aggtrueCalls and puts netted into one series
expiry_aggtrueEvery selected expiration collapsed into one series

A preset is a starting point, not a fixed value

A preset fills only an option you left out. /gex symbol:SPX end_dte:7 charts seven days, not zero. To start from nothing preset, use the family subcommand instead: /gamma exposure is the same metric with no presets.

Invoked with no weighting, a shortcut charts all three weightings at once and returns them as one three-up card. Add weighting: to get a single chart:

/gex symbol:SPX                    → open interest, volume and both, in one card
/gex symbol:SPX weighting:volume   → one chart, weighted by volume
/gamma exposure symbol:SPX end_dte:98   → the unopinionated twin

2. Greek families

Thirteen parent commands group a greek family. Each charts the greek at ask, bid or mid, and carries its exposure subcommand.

ParentSubcommandsExposure metric
/gammaask bid mid exposure flip wall wall_absGEX_OI GEX_VOL GEX_BOTH
/deltaask bid mid exposureDEX_OI DEX_VOL DEX_BOTH
/thetaask bid mid exposureTEX_OI TEX_VOL TEX_BOTH
/vegaask bid mid exposureVEX_OI VEX_VOL VEX_BOTH
/vannaask bid mid exposureVANNA_EX_OI VANNA_EX_VOL VANNA_EX_BOTH
/charmask bid mid exposureCHARM_EX_OI CHARM_EX_VOL CHARM_EX_BOTH
/colorask bid mid exposureCOLOR_EX_OI COLOR_EX_VOL COLOR_EX_BOTH
/speedask bid mid exposureSPEED_EX_OI SPEED_EX_VOL SPEED_EX_BOTH
/vommaask bid mid exposureVOMMA_EX_OI VOMMA_EX_VOL VOMMA_EX_BOTH
/zommaask bid mid exposureZOMMA_EX_OI ZOMMA_EX_VOL ZOMMA_EX_BOTH
/ultimaask bid mid exposureULTIMA_EX_OI ULTIMA_EX_VOL ULTIMA_EX_BOTH
/rhoask bid mid exposureRHO_EX_OI RHO_EX_VOL RHO_EX_BOTH
/ivask bid midnone — there are no IV exposure metrics

Notes:

  • exposure is one subcommand per greek, never one per weighting. Select the weighting with the weighting option.
  • Gamma, delta, theta and vega name their exposure with a short prefix. Gamma exposure is GEX, not GAMMA_EX. That is why the four shortcuts above exist.
  • /iv is the only family that offers view. See the next section.

3. Implied volatility

CommandCharts
/iv ask / /iv bid / /iv midImplied volatility at the ask, the bid or the mid
/skewThe mid smile over the default window — the same chart as /iv mid
/smileThe mid smile, preset to a year of monthlies with 10-delta wings

/smile presets start_dte:0, end_dte:365, expiration_filter:m and moneyness_filter:d10, so it shows the term structure of the skew rather than the near-dated smile. Every preset stays yours to override.

Chart layouts (view)

Only the /iv subcommands offer view, because the volatility family is the only one built for every layout.

viewLayout
skewThe default. Strike on one axis, the metric on the other.
mirrorStrike up the y axis, volatility across the x axis. Calls sit right of zero, puts left.
termExpirations on the x axis.
surfaceStrikes, the metric and expirations — the 3D surface.
/iv mid symbol:SPX view:mirror
/iv mid symbol:SPX view:surface end_dte:180

`view` is scoped on purpose

Any other metric falls back to skew without an error. Offering view elsewhere would draw a different chart under the label you picked, with nothing to tell you.


4. Levels and market data

CommandChartsDefault window
/oiTotal call and put open interest0–98 DTE, 50 strikes
/volumeDaily option trading volume0–98 DTE, 50 strikes
/parityPut/call parity0–98 DTE
/maxThe max pain strike0–98 DTE
/flipGamma flip levels and the gamma walls0–98 DTE
  • /flip is also /gamma flip. /gamma wall and /gamma wall_abs draw the same chart — a gamma wall is a level of the flip chart, not a chart of its own. The card carries a table with one row per expiration, and attaches every row as a document.
  • /max states its caveats on the card. Read them: max pain is easy to act on and easy to misread. The slash command presets nothing, so it uses the default 0–98 window. The legacy !max presets end_dte=64.
  • /volume is refused before the open, because the day's volume is still zero. The same applies to weighting:volume and weighting:both on any exposure command.

Three metrics are deliberately absent from Discord. VOL_TRIGGER is absent because /flip already charts GAMMA_FLIP. INTRINSIC and EXTRINSIC are withheld for compliance. All three stay reachable through the research API.


5. Options and filters

Every chart command takes symbol, then any of these.

OptionTypeValuesDefaultScope
symbolstringA ticker, 16 characters or fewerrequiredall
weightingchoiceoi, volume, bothoiEvery exposure subcommand and the four shortcuts
strikesintegerHow many strikes to draw50 for /oi and /volume, 30 for exposures, 15 otherwiseall
start_dteintegerStart days-to-expiration, inclusive0all
end_dteintegerEnd days-to-expiration, inclusive98all
expiration_filterchoicem monthlies, w weeklies, q quarterliesall expirationsall
contract_filterchoiceall, calls, putsallall
moneyness_filterchoiceatm, itm, ntm, otm, d10, d15, d20, d25no filterall
contract_aggbooleantrue nets calls minus puts. false splits calls positive, puts negative.trueall
expiry_aggbooleantrue sums every selected expiration into one series. false draws one series per expiration.falseall
formatchoicewebp, png, jpegwebpall
themechoicedark, lightdarkall
viewchoiceskew, mirror, term, surfaceskew/iv subcommands only
skew_adjbooleanUse the skew-adjusted variant of the metricfalseExposure metrics only

A few things worth knowing:

  • weighting selects the metric, it does not filter the chart. GEX_OI, GEX_VOL and GEX_BOTH are three different metrics. That is why it is offered only where a weighted family sits behind the command.
  • Discord offers three formats. The research API also emits svg, pdf, html, plotly, csv and json, but none of those render in a Discord message.
  • A window with no expirations does not fail. The bot moves to the first expiration at or after start_dte, and says so on the card.
  • The strike count decides how tall the card is. A large strikes gives a tall image.

6. Account and setup

CommandWhat it does
/watch ticker:SPXJoins this server's watchlist thread for a ticker, and creates the thread when it does not exist.
/config format: theme:Saves your default chart format and theme. Invoke it bare to read back what you have saved.
/help topic: command:Explains the command surface from inside Discord.

/config needs a gexbot account linked to your Discord account. Sign up free at gexbot.com, then link Discord from the portal.

/config and /help are the two commands that work in a DM. Every other command needs a server and a channel the server owner has authorized for the bot.


7. Limits

LimitWho it applies toReset
Short-term burstYouSeconds
Daily allowanceYouMidnight ET
Monthly allowanceYouThe 1st
Server daily allowanceEveryone in the server, togetherMidnight UTC

Link your Discord account to a gexbot account for a larger personal allowance. The research addon raises it again, and lifts the server cap. /help is exempt from all of them — the bot will always explain itself, even to somebody it has just rate limited.


8. Symbols

Type the ticker of the underlying. The bot accepts several option-market and futures spellings and resolves each to the chain that exists.

You typeIt chartsWhy
SPXW, SPXQSPXExpiration-specific listings carry no chain of their own
RUTW, RUTQ, /RUTRUTSame
ES, /ES, ES_SPXSPXFutures notation for the index
NQ, NQ_NDXNDXSame
CLUSOThe crude future maps to the ETF that has options
/SOXSOXSemiconductor index
BRKBBRK.BThe share class Polygon lists
GOLGGOOGLRename
NYSE:ESES (Eversource)Escape form — ES alone charts SPX
NYSE:CLCL (Colgate)Escape form — CL alone charts USO

An expiration suffix maps the symbol only. SPXW does not set expiration_filter for you.


9. Legacy ! commands

The `!` commands are deprecated

They still run, and they are scheduled for removal. Every ! reply names its slash equivalent in a subtext line. Move to the slash commands: they autocomplete, they validate your options before the bot works, and they are the only surface that offers weighting.

!help, !commands and !h answer with one line that points at /help. No help content is served from this surface.

The grammar

!command SYMBOL [positional ...] [key=value ...]
  • A key=value token is accepted anywhere in the line. The key must be one of format, view, chart_type, theme, type, strikes, start_dte, end_dte, expiration_filter, contract_filter, moneyness_filter, series, model, contract_agg, expiry_agg, skew_adj or limit_y.
  • A boolean token anywhere in the tail — yes, no, true, false, on, off, 1, 0 — sets contract_agg.
  • Every other bare token fills the command's own positional slots, in order.
  • A bare token the command cannot place is an error. It is not read as a view name or a filter name. Select a layout with view=surface, a filter with moneyness_filter=otm, and a draw style with type=histogram.
  • strikes clamps to 5–250. Days-to-expiration clamps to 0–1000.
  • weighting does not exist on this surface. Name the metric directly on the API route, or use a slash command.

The commands

Positional slots are listed in the order the parser fills them.

CommandSynonymsMetricPresetsPositional slots
!gex—GEX_OIend_dte=0 contract_agg=true expiry_agg=truestrikes, net
!gexn!ngex !netgexGEX_OIcontract_agg=truestrikes, dte, expiration filter
!gexm—GEX_OIexpiration_filter=m contract_agg=truestrikes, dte
!gexw—GEX_OIstart_dte=1 end_dte=15 expiration_filter=wstrikes, dte
!gexq—GEX_OIexpiration_filter=qstrikes, dte
!gexr—GEX_OIcontract_agg=falsestrikes, dte, expiration filter
!gexs!sgex !sagexGEX_OIskew_adj=truestrikes, dte, expiration filter
!gext!gextotal !totalgexGEX_OIend_dte=98 contract_agg=true expiry_agg=truestrikes, dte, expiration filter
!0dte!gex0GEX_OIend_dte=0 expiry_agg=true—
!dex—DEX_OI—strikes, dte, expiration filter
!dexn!ndex !netdexDEX_OIcontract_agg=truestrikes, dte, expiration filter
!tex—TEX_OI—strikes, dte, expiration filter
!vex—VEX_OI—strikes, dte, expiration filter
!vexn—VEX_OIcontract_agg=true expiry_agg=truestrikes, dte, expiration filter
!rho—RHO_EX_OI—strikes, dte
!vanna—VANNA_EX_OI—strikes, dte
!iv!volIV_MIDstart_dte=0 end_dte=98dte
!term!tsIV_MIDview=term start_dte=0 end_dte=365dte
!surface!surfIV_MIDview=surface start_dte=0 end_dte=98dte
!mirror!ivmirrorIV_MIDview=mirror start_dte=0 end_dte=98dte
!smile!skewIV_MIDview=skew start_dte=0 end_dte=98dte
!smilem—IV_MIDexpiration_filter=m view=skew start_dte=0 end_dte=98dte
!smilew—IV_MIDexpiration_filter=w view=skew start_dte=0 end_dte=98dte
!smileq—IV_MIDexpiration_filter=q view=skew start_dte=0 end_dte=98dte
!triggers!trigger !triggeredGAMMA_FLIPstart_dte=0 end_dte=98dte
!max!maxpainMAX_PAINend_dte=64dte
!parity—PARITY—dte
!oi!openinterest !openOI—strikes, dte, expiration filter
!oim—OIexpiration_filter=mstrikes, dte
!oiw—OIexpiration_filter=wstrikes, dte
!oiq—OIexpiration_filter=qstrikes, dte
!oin!noi !netoi !oinetOIcontract_agg=truestrikes, dte, expiration filter
!volume—VOLUME—strikes, dte
!volumen!volumenet !nvolumeVOLUMEcontract_agg=truestrikes, dte
!regsho—Reg SHO threshold list—takes no symbol

Examples:

!gexn SPX end_dte=98        the netted chart over 98 days
!iv SPX view=term           the term structure from the legacy surface
!oi SPX 40 30 m             40 strikes, 30 DTE, monthlies

!gexn SPX 98 is not the same request. A bare 98 fills the first positional slot, which for !gexn is the strike count. Use end_dte=98 when you mean the window.

Retired and deprecated tokens

TokenAnswer
!gex1 – !gex7Deprecated. The reply names the replacement. !gex1 becomes !gex TICKER end_dte=1; !gex2 through !gex7 become !gex TICKER start_dte=N end_dte=N. Note the change in meaning: the legacy command showed the Nth expiration, the replacement shows contracts exactly N days out.
!top !chain !model !spaghextti !watchRetired. Use /help, the slash commands, or the research app.
!animate !animater !animator !stitchRetired.
!surfacev !surfvRetired. Use /iv mid view:surface.
!help !commands !hRedirected to /help.

See also

On this page