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:40Commands 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/oihas 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.
| Command | Metric family | Charts |
|---|---|---|
/gex | GEX | Gamma exposure |
/dex | DEX | Delta exposure |
/tex | TEX | Theta exposure |
/vex | VEX | Vega exposure |
All four preset the same three options:
| Preset | Value | Effect |
|---|---|---|
end_dte | 0 | The nearest expiration only |
contract_agg | true | Calls and puts netted into one series |
expiry_agg | true | Every 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 twin2. Greek families
Thirteen parent commands group a greek family. Each charts the greek at ask, bid or mid, and carries
its exposure subcommand.
| Parent | Subcommands | Exposure metric |
|---|---|---|
/gamma | ask bid mid exposure flip wall wall_abs | GEX_OI GEX_VOL GEX_BOTH |
/delta | ask bid mid exposure | DEX_OI DEX_VOL DEX_BOTH |
/theta | ask bid mid exposure | TEX_OI TEX_VOL TEX_BOTH |
/vega | ask bid mid exposure | VEX_OI VEX_VOL VEX_BOTH |
/vanna | ask bid mid exposure | VANNA_EX_OI VANNA_EX_VOL VANNA_EX_BOTH |
/charm | ask bid mid exposure | CHARM_EX_OI CHARM_EX_VOL CHARM_EX_BOTH |
/color | ask bid mid exposure | COLOR_EX_OI COLOR_EX_VOL COLOR_EX_BOTH |
/speed | ask bid mid exposure | SPEED_EX_OI SPEED_EX_VOL SPEED_EX_BOTH |
/vomma | ask bid mid exposure | VOMMA_EX_OI VOMMA_EX_VOL VOMMA_EX_BOTH |
/zomma | ask bid mid exposure | ZOMMA_EX_OI ZOMMA_EX_VOL ZOMMA_EX_BOTH |
/ultima | ask bid mid exposure | ULTIMA_EX_OI ULTIMA_EX_VOL ULTIMA_EX_BOTH |
/rho | ask bid mid exposure | RHO_EX_OI RHO_EX_VOL RHO_EX_BOTH |
/iv | ask bid mid | none — there are no IV exposure metrics |
Notes:
exposureis one subcommand per greek, never one per weighting. Select the weighting with theweightingoption.- Gamma, delta, theta and vega name their exposure with a short prefix. Gamma exposure is
GEX, notGAMMA_EX. That is why the four shortcuts above exist. /ivis the only family that offersview. See the next section.
3. Implied volatility
| Command | Charts |
|---|---|
/iv ask / /iv bid / /iv mid | Implied volatility at the ask, the bid or the mid |
/skew | The mid smile over the default window — the same chart as /iv mid |
/smile | The 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.
view | Layout |
|---|---|
skew | The default. Strike on one axis, the metric on the other. |
mirror | Strike up the y axis, volatility across the x axis. Calls sit right of zero, puts left. |
term | Expirations on the x axis. |
surface | Strikes, 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
| Command | Charts | Default window |
|---|---|---|
/oi | Total call and put open interest | 0–98 DTE, 50 strikes |
/volume | Daily option trading volume | 0–98 DTE, 50 strikes |
/parity | Put/call parity | 0–98 DTE |
/max | The max pain strike | 0–98 DTE |
/flip | Gamma flip levels and the gamma walls | 0–98 DTE |
/flipis also/gamma flip./gamma walland/gamma wall_absdraw 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./maxstates 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!maxpresetsend_dte=64./volumeis refused before the open, because the day's volume is still zero. The same applies toweighting:volumeandweighting:bothon 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.
| Option | Type | Values | Default | Scope |
|---|---|---|---|---|
symbol | string | A ticker, 16 characters or fewer | required | all |
weighting | choice | oi, volume, both | oi | Every exposure subcommand and the four shortcuts |
strikes | integer | How many strikes to draw | 50 for /oi and /volume, 30 for exposures, 15 otherwise | all |
start_dte | integer | Start days-to-expiration, inclusive | 0 | all |
end_dte | integer | End days-to-expiration, inclusive | 98 | all |
expiration_filter | choice | m monthlies, w weeklies, q quarterlies | all expirations | all |
contract_filter | choice | all, calls, puts | all | all |
moneyness_filter | choice | atm, itm, ntm, otm, d10, d15, d20, d25 | no filter | all |
contract_agg | boolean | true nets calls minus puts. false splits calls positive, puts negative. | true | all |
expiry_agg | boolean | true sums every selected expiration into one series. false draws one series per expiration. | false | all |
format | choice | webp, png, jpeg | webp | all |
theme | choice | dark, light | dark | all |
view | choice | skew, mirror, term, surface | skew | /iv subcommands only |
skew_adj | boolean | Use the skew-adjusted variant of the metric | false | Exposure metrics only |
A few things worth knowing:
weightingselects the metric, it does not filter the chart.GEX_OI,GEX_VOLandGEX_BOTHare 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,csvandjson, 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
strikesgives a tall image.
6. Account and setup
| Command | What it does |
|---|---|
/watch ticker:SPX | Joins 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
| Limit | Who it applies to | Reset |
|---|---|---|
| Short-term burst | You | Seconds |
| Daily allowance | You | Midnight ET |
| Monthly allowance | You | The 1st |
| Server daily allowance | Everyone in the server, together | Midnight 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 type | It charts | Why |
|---|---|---|
SPXW, SPXQ | SPX | Expiration-specific listings carry no chain of their own |
RUTW, RUTQ, /RUT | RUT | Same |
ES, /ES, ES_SPX | SPX | Futures notation for the index |
NQ, NQ_NDX | NDX | Same |
CL | USO | The crude future maps to the ETF that has options |
/SOX | SOX | Semiconductor index |
BRKB | BRK.B | The share class Polygon lists |
GOLG | GOOGL | Rename |
NYSE:ES | ES (Eversource) | Escape form — ES alone charts SPX |
NYSE:CL | CL (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=valuetoken is accepted anywhere in the line. The key must be one offormat,view,chart_type,theme,type,strikes,start_dte,end_dte,expiration_filter,contract_filter,moneyness_filter,series,model,contract_agg,expiry_agg,skew_adjorlimit_y. - A boolean token anywhere in the tail —
yes,no,true,false,on,off,1,0— setscontract_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 withmoneyness_filter=otm, and a draw style withtype=histogram. strikesclamps to 5–250. Days-to-expiration clamps to 0–1000.weightingdoes 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.
| Command | Synonyms | Metric | Presets | Positional slots |
|---|---|---|---|---|
!gex | — | GEX_OI | end_dte=0 contract_agg=true expiry_agg=true | strikes, net |
!gexn | !ngex !netgex | GEX_OI | contract_agg=true | strikes, dte, expiration filter |
!gexm | — | GEX_OI | expiration_filter=m contract_agg=true | strikes, dte |
!gexw | — | GEX_OI | start_dte=1 end_dte=15 expiration_filter=w | strikes, dte |
!gexq | — | GEX_OI | expiration_filter=q | strikes, dte |
!gexr | — | GEX_OI | contract_agg=false | strikes, dte, expiration filter |
!gexs | !sgex !sagex | GEX_OI | skew_adj=true | strikes, dte, expiration filter |
!gext | !gextotal !totalgex | GEX_OI | end_dte=98 contract_agg=true expiry_agg=true | strikes, dte, expiration filter |
!0dte | !gex0 | GEX_OI | end_dte=0 expiry_agg=true | — |
!dex | — | DEX_OI | — | strikes, dte, expiration filter |
!dexn | !ndex !netdex | DEX_OI | contract_agg=true | strikes, dte, expiration filter |
!tex | — | TEX_OI | — | strikes, dte, expiration filter |
!vex | — | VEX_OI | — | strikes, dte, expiration filter |
!vexn | — | VEX_OI | contract_agg=true expiry_agg=true | strikes, dte, expiration filter |
!rho | — | RHO_EX_OI | — | strikes, dte |
!vanna | — | VANNA_EX_OI | — | strikes, dte |
!iv | !vol | IV_MID | start_dte=0 end_dte=98 | dte |
!term | !ts | IV_MID | view=term start_dte=0 end_dte=365 | dte |
!surface | !surf | IV_MID | view=surface start_dte=0 end_dte=98 | dte |
!mirror | !ivmirror | IV_MID | view=mirror start_dte=0 end_dte=98 | dte |
!smile | !skew | IV_MID | view=skew start_dte=0 end_dte=98 | dte |
!smilem | — | IV_MID | expiration_filter=m view=skew start_dte=0 end_dte=98 | dte |
!smilew | — | IV_MID | expiration_filter=w view=skew start_dte=0 end_dte=98 | dte |
!smileq | — | IV_MID | expiration_filter=q view=skew start_dte=0 end_dte=98 | dte |
!triggers | !trigger !triggered | GAMMA_FLIP | start_dte=0 end_dte=98 | dte |
!max | !maxpain | MAX_PAIN | end_dte=64 | dte |
!parity | — | PARITY | — | dte |
!oi | !openinterest !open | OI | — | strikes, dte, expiration filter |
!oim | — | OI | expiration_filter=m | strikes, dte |
!oiw | — | OI | expiration_filter=w | strikes, dte |
!oiq | — | OI | expiration_filter=q | strikes, dte |
!oin | !noi !netoi !oinet | OI | contract_agg=true | strikes, dte, expiration filter |
!volume | — | VOLUME | — | strikes, dte |
!volumen | !volumenet !nvolume | VOLUME | contract_agg=true | strikes, 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
| Token | Answer |
|---|---|
!gex1 – !gex7 | Deprecated. 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 !watch | Retired. Use /help, the slash commands, or the research app. |
!animate !animater !animator !stitch | Retired. |
!surfacev !surfv | Retired. Use /iv mid view:surface. |
!help !commands !h | Redirected to /help. |
See also
- research (gbR) — the web terminal, the AI assistant and the REST API.
- research API — the same metrics over HTTP.
- rate limits — how the allowances are counted.