Reference · Bookmap add-ons

Seven ways to see
dealer gamma.

Each of these is a custom Bookmap indicator built on GEXbot's options-flow data — gamma, delta, vanna, and charm exposure by strike. They range from a single three-state oscillator to a six-component hedging composite. All seven now have Backtest Mode: point one at a downloaded GEXbot day-bundle and it replays in sync with a Bookmap replay session, instead of polling the live API.

Requirements. These are custom add-ons for Bookmap — they run inside Bookmap's own Simplified API, not as a standalone app. Live polling additionally requires an active GEXbot subscription, Classic or State tier depending on the indicator (see the tier chips throughout this page); Backtest Mode needs no live subscription, only a day-bundle downloaded from GEXbot's Historical Portal. No GEXbot account at all? The TEACH Demo build strips live polling out entirely and runs on downloaded historical data alone. Either way, Backtest Mode itself needs a Bookmap subscription tier that includes replay — the indicator draws from the historical file, but it's Bookmap's own replay session that scrubs/plays the clock they sync to.
7
indicators, backtest-ready
3
Classic-tier only
1
State-tier only
3
hybrid (Classic + State)

GEXbot tiers, in short

Classic

Gamma exposure by strike (open interest & volume), the zero-gamma level, and the biggest call-/put-side strikes. This is dealer gamma positioning — where hedging flow is tied to price level and realized volatility.

State

Adds delta (DEX), vanna, and charm exposure alongside gamma, split by 0DTE / next-expiry. This is the fuller options-Greeks picture — delta hedging flow that exists independent of a big vol move.

What Backtest Mode actually does

It is a replay-synced historical data feed, not a trade simulator. Turn on an indicator's [Backtest Mode] checkbox, paste the path to a downloaded GEXbot day-bundle into Historical Data File Path, and the indicator stops polling GEXbot's live API entirely. Instead it loads that file once, and as you scrub or play a Bookmap replay session, each indicator's lines redraw from whatever historical snapshot matches the replay clock's current position — the same way they'd update from a live poll.

There's no automated P&L or strategy-metrics layer here — it's purely "make the indicator historically accurate while I replay an old session," so you can see how a reading would have looked heading into a real move before trusting it live.

  1. Download a day's data from GEXbot's Historical Portal — it arrives as eod_report_<TICKER>.zip, one bundle per trading day. No unzipping needed, the indicators read the zip directly.
  2. Open the indicator's settings in Bookmap and check Enable Backtest Mode.
  3. Paste the absolute path to that .zip into Historical Data File Path (quotes picked up from dragging a file into Terminal are fine — they're stripped automatically).
  4. Open a Bookmap replay session for that same day and ticker, and scrub or play as normal — the indicator's lines track the replay clock.
One file, one day. A single downloaded bundle covers one trading day for one ticker. Testing several days means downloading and swapping in a new file for each.
Needs Bookmap replay. Backtest Mode syncs to Bookmap's own replay clock — opening a replay session at all requires a Bookmap subscription tier that includes replay. Without one, there's no clock for these indicators to sync to.

Where to start

A rough easy-to-advanced order if you're picking these up for the first time:

Level Ladder EOD— static reference lines, easiest to read at a glance
Classic Strike Heatmap— same gamma data, visual instead of line-based
Flow/Structure Divergence— one number, good as a secondary confirmation signal
Gamma Centroid— first State-tier tool, three centroid "modes" to compare
State Strike Heatmap— adds a DEX layer on top of the Classic heatmap you already know
Hedging Pressure Oscillator— six components blended into one composite, most settings to tune
Hedging Pressure Combo— the oscillator's composite plus concrete on-chart price levels together

All seven at a glance

01

Gamma Centroid

Weighted-average strike price(s) from net gamma exposure — dual wall, magnitude, and signed modes.

StateBacktest
02

Hedging Pressure Oscillator

GEX + DEX + Vanna + Charm + Gamma Flip + Risk Reversal blended into one bounded composite, plus momentum.

ClassicStateBacktest
03

Hedging Pressure Combo

The oscillator's composite lines plus on-chart Gamma Flip / GEX+ Wall / GEX- Wall price levels, together.

ClassicStateBacktest
04

Level Ladder EOD

Eleven static end-of-day reference levels — HVL, Call Resistance, Put Support, and five secondary GEX strikes.

ClassicBacktest-only
05

Flow/Structure Divergence

Three-state oscillator: do volume-weighted and open-interest-weighted net gamma agree in sign?

ClassicBacktest
06

Classic Strike Heatmap

Tagged long/short gamma majors plus a two-column OI/Volume background board of secondary strikes.

ClassicBacktest
07

State Strike Heatmap

Everything in Classic Strike Heatmap, plus an independent DEX (delta exposure) layer on the same chart.

ClassicStateBacktest
Internal reference · GammaCentroid / GEXBOT project · all seven indicators live at ~/Desktop/GammaCentroid/GEXBOT/

Gamma Centroid

Weighted-average strike price(s) computed from GEXbot's per-strike net gamma exposure — three independent "centroid" modes you can run at once.

State tierBacktest ModePRIMARY (on-chart)
gamma-centroid/
BookmapGexbotGammaCentroidIndicator.java

What it shows

Three ways of collapsing the full per-strike gamma exposure curve down to one or two price levels, each drawn directly on the price chart:

Dual Wall Centroids (on by default)

Two separate lines: a weighted-average strike across only positive-gamma strikes (GEX+ Wall) and one across only negative-gamma strikes (GEX- Wall) — the "center of mass" of the call-side wall and the put-side wall independently.

Magnitude Centroid (off by default)

One line: a single weighted-average strike across all strikes, weighted by |net gamma| with sign discarded — where the bulk of total gamma concentration sits, regardless of side.

Signed Centroid (off by default)

One line: a single weighted-average strike, sign kept in both the weight and the total — nets the whole curve into one number showing which side currently dominates. Can get noisy when positive and negative exposure roughly offset.

What it may imply

Large dealer gamma concentrations are commonly read as dynamic support/resistance: near a heavy positive-gamma (call-side) wall, dealers are theorized to sell into rallies and buy into dips to stay hedged — a dampening, pinning effect. Near a heavy negative-gamma (put-side) wall, the hedging flow runs the other way — buying into a rally, selling into a decline — which can accelerate a move once that level breaks rather than cushion it.

The magnitude centroid gives one "center of gravity" reading regardless of side; the signed centroid gives one directional lean. Running dual-wall alongside either single-line mode lets you see whether the single number is actually sitting between two real, separated walls, or whether one side has effectively vanished for the session.

Key settings

SettingDefaultWhat it does
GEXbot API KeyRequired for live mode; not needed in Backtest Mode.
Combine 0DTE + 1DTEOnMerges today's and tomorrow's expiry gamma into one all-near-term view.
Show Dual Wall Centroids / Show Magnitude Centroid / Show Signed CentroidOn / Off / OffIndependent toggles — any combination can run at once to compare modes against price together.
Per-line Color + Thicknesssee swatchesEach of the four lines has its own color picker and 1–10px width.
Use SPX / QQQ (auto or manual ratio)OffRescales GEXbot's strike prices onto an SPX or QQQ-denominated chart instead of the native ticker.
[Backtest Mode] Enable Backtest ModeOffSwitches from live polling to a loaded historical file.
[Backtest Mode] Historical Data File PathAbsolute path to a downloaded eod_report_*.zip day-bundle or an extracted folder.
GEX+ Wall · azure GEX- Wall · coral Magnitude Centroid · mint Signed Centroid · amber

First time using it

  1. Enter a GEXbot API key (State tier) for live use, or skip straight to Backtest Mode with a downloaded day-bundle.
  2. Leave Dual Wall Centroids on by default — it's the most directly interpretable mode and the one every other setting was tuned against.
  3. Add Magnitude or Signed Centroid one at a time once you're used to the dual-wall read, rather than turning all three on immediately.
  4. If you trade SPX or QQQ rather than the native futures ticker, turn on the matching ratio toggle so the lines land on the right price scale.

Good to know

The historical file's schema was confirmed against a real GEXbot day-bundle export, and Backtest Mode has been live-tested end to end in a Bookmap replay (scrubbing backward and restarting mid-session both draw correct history). Every parameter change (line show/hide, color, thickness) is re-applied immediately — nothing here needs a reload.

Hedging Pressure Oscillator

Six dealer-hedging signals — GEX, DEX, Vanna, Charm, Gamma Flip, and a Risk Reversal IV proxy — normalized and blended into one bounded composite, with a momentum read on top.

Classic tierState tierBacktest ModeBOTTOM pane + optional zones
hedging-pressure-oscillator/
BookmapHedgingPressureOscillatorIndicator.java

What it shows

Each of six raw components is independently rolling z-score normalized (over a configurable lookback) and squashed into [−1, +1], then combined into one weighted-average composite score, bounded to exactly [−1, +1] by construction. The composite is drawn as two lines — HP+ (the clamped positive part) and HP− (the clamped negative part) — so they visibly meet at zero on every crossing instead of leaving a gap. A third line, HP Momentum, tracks the composite's own slope (in composite-units/minute) over an adjustable window, on its own auto-ranged axis.

The six inputs: GEX and DEX (net gamma and delta exposure), Vanna and Charm (State tier), a computed Gamma Flip level (spot's signed distance from the flip), and Risk Reversal (Classic tier's delta_risk_reversal, used as the closest available proxy for implied volatility — GEXbot's API has no direct IV field).

What it may imply

Composite trending positive

Dealer hedging flow across gamma/delta/vanna/charm is net skewed toward a pattern that has historically correlated with upward price pressure or support.

Composite trending negative

The opposite skew — hedging flow net-aligned with downward pressure.

Momentum rising vs. falling

Shows whether the current pressure reading is building or fading — e.g. a positive composite with falling momentum can flag a bullish hedging tailwind that's losing steam before the composite itself turns.

Per-component sign, unverified

Whether DEX/Vanna/Charm/Risk Reversal genuinely move the same direction as GEX for a given ticker hasn't been independently confirmed — that's exactly what the per-component Invert checkboxes are for.

Key settings

SettingDefaultWhat it does
GEXbot API Key / Poll Interval (s)— / 12Live-mode polling; range 5–300s.
Combine 0DTE + 1DTEOnMerges today's and tomorrow's expiry into the State-tier reads.
Normalization Lookback (polls)30Window each component's rolling z-score is computed over. Requires a reload to change.
Momentum Window (minutes)15How far back the composite's slope looks; adjustable live, no reload.
GEX / DEX / Vanna / Charm / Gamma Flip / Risk Reversal Weight1.0 each0–5 per-component weight in the blend.
Invert GEX / DEX / Vanna / Charm / Gamma Flip / Risk ReversalOff eachFlips a component's sign before blending, for whichever ones don't move the "expected" direction on your instrument.
Use SPX / QQQ (auto or manual ratio)OffOnly affects the optional on-chart zones below — the composite oscillator itself needs no price-scale conversion.
Show Price-Following / Gamma-Flip Split / Per-Strike Heatmap ZoneOff (mutually exclusive)Three optional on-chart overlays painted from the same data; only one can be active at a time.
Zone Height / Flip Zone Fill / Heatmap Strikes Each Side / Heatmap Max Width / Zone Opacity40px / 800px / 15 / 50% / 100%Sizing for whichever zone mode is active.
[Backtest Mode] Enable / Historical Data File PathOff / —See Backtest Mode note below.
Backtest Mode caveat. GEXbot's day-bundle export has no delta_risk_reversal series, so Risk Reversal is unavailable in Backtest Mode — the composite automatically renormalizes over the remaining five components instead. On-chart zone painting and the SPX/QQQ ratio system are also skipped entirely in Backtest Mode; you get the three plain oscillator lines.

First time using it

  1. Start with all six weights at 1.0 and no inversions — the shipped default.
  2. Watch HP+ / HP− / Momentum against price for a session or two before changing anything.
  3. If a component consistently seems to move against the composite's overall read for your instrument, try its Invert checkbox rather than zeroing its weight — that keeps its magnitude contributing, just flipped.
  4. Leave the on-chart zones off until you're comfortable with the plain oscillator; they're a secondary, more experimental visualization on the same underlying data.

Good to know

This is the most heavily live-tested indicator in the suite — several real bugs (zone flicker, SPX/QQQ ratio silently resetting, settings not persisting across reload) were found and fixed through direct replay testing, and the fixes (shadow ratio fields, a local per-alias settings file, a redraw safety net) are all shipped. Momentum is time-based, not poll-count-based, so widening the window takes effect immediately without a reload.

Hedging Pressure Combo

The Hedging Pressure Oscillator's composite, plus three concrete on-chart price levels — Gamma Flip, GEX+ Wall, GEX- Wall — in a single indicator, with the ladder as the visual centerpiece.

Classic tierState tierBacktest ModePRIMARY + BOTTOM pane
hedging-pressure-combo/
BookmapHedgingPressureComboIndicator.java

What it shows

Six lines total. Three on the price chart itself (PRIMARY): the computed Gamma Flip level, the nearest GEX+ Wall, and the nearest GEX- Wall. Three in the bottom pane, identical in construction to the standalone Oscillator: HP+ / HP− / HP Momentum. No zone-painting or heatmap modes — this project deliberately dropped those in favor of making the three price-chart lines the focal point.

What it may imply

Gamma Flip

The pivot where dealer gamma changes sign — often read as separating a lower-volatility, mean-reverting regime above it from a higher-volatility, trending regime below it.

GEX+ Wall

The nearest large call-side gamma concentration — a candidate resistance / pin level.

GEX- Wall

The nearest large put-side gamma concentration — a candidate support level, or a downside accelerant if price breaks through it.

HP+/HP−/Momentum

Same read as the standalone Oscillator — use it here to see whether the composite's directional lean agrees with which side of the flip/walls price currently sits on.

Key settings

SettingDefaultWhat it does
GEXbot API Key / Poll Interval (s)— / 12Live-mode polling.
Combine 0DTE + 1DTE / Normalization Lookback / Momentum WindowOn / 30 / 15Same semantics as the standalone Oscillator.
Six component Weights + Inverts1.0 / OffIdentical GEX/DEX/Vanna/Charm/Gamma Flip/Risk Reversal blend as the Oscillator.
Use SPX / QQQ (auto or manual ratio)OffRescales the three on-chart price levels; the bottom-pane composite needs no conversion.
Positive-Dominant / Negative-Dominant ColorAzure / CoralShared by the HP+/HP− lines and the GEX+/GEX- Wall lines — one color pair covers both.
Gamma Flip Line Color / ThicknessAmber / 2pxDeliberately distinct from the wall pair so the flip level reads as its own thing.
Wall Line Thickness2pxShared by both wall lines.
Wall Search Window (Strikes Each Side)15How many strikes each side of spot to search when locating the nearest wall.
[Backtest Mode] Enable / Historical Data File PathOff / —See caveat below.
Backtest Mode caveat. Same as the Oscillator — runs on State-tier historical data only, so Risk Reversal is inactive and the composite renormalizes over five components. The SPX/QQQ ratio is fixed at 1.0 in Backtest Mode and the ticker-override checkboxes have no effect on a loaded file.

First time using it

  1. If you already know the standalone Oscillator, the bottom pane here behaves identically — the new thing to get used to is the three PRIMARY lines on the chart itself.
  2. Widen or narrow Wall Search Window if the located GEX+/GEX- walls look too close to or too far from the current session's actual gamma concentration.
  3. Use the flip/wall levels as context for the composite, not the other way around — e.g. a positive composite while price sits below the flip level is a different read than the same composite above it.

Good to know

The user has confirmed this one working well in real replay testing ("really an awesome indicator by what the testing is telling me now"). It was built by combining two already-tested siblings rather than new logic, so most of its behavior inherits directly from the standalone Oscillator and the earlier hedging-pressure-ladder project.

Level Ladder EOD

Eleven static, once-per-day reference levels derived from GEXbot's Classic gamma-by-strike data — the closest thing in this suite to a traditional GEX "levels" indicator.

Classic tierBacktest-only, no live modePRIMARY (on-chart)
gexbot-level-ladder/
BookmapGexLevelLadderIndicator.java

What it shows

Eleven lines, each frozen to one snapshot per calendar day (that day's closing record, not continuously recalculated) so they read as clean static reference levels rather than a jittery stream:

LevelSource fieldReads as
HVL / HVL 0DTEzero_gammaThe zero-gamma level ("high volatility line").
Call Resistance / CR 0DTEmajor_pos_oiLargest call-side gamma strike, by open interest.
Put Support / PS 0DTEmajor_neg_oiLargest put-side gamma strike, by open interest.
GEX 1 – GEX 5ranked strikes[]Next five largest strikes by |OI-weighted gamma|, excluding the four levels above — secondary walls.

What it may imply

The same style of structural framework other GEX tools show: Call Resistance / Put Support / HVL are meant to describe the next session's likely range based on options positioning as of the prior close, and GEX 1–5 flag additional secondary strikes worth watching as minor support/resistance beyond the two main walls.

Validated where it counts most. Call Resistance and Put Support were cross-checked against an independent vendor's reference ladder for the same day/ticker and land within a fraction of a point — the strongest validation in this suite. GEX 1–3 match that same reference to within ~3 points.
Still open. GEX 4–5 are shipped but not verified against a reference (the literal top-5-by-magnitude ranking doesn't always land on the exact ranks that match). HVL, HVL 0DTE, and Call Resistance 0DTE remain meaningfully off from the reference even after correction — flagged as unresolved rather than papered over. Separately: the underlying data represents the NDX cash index, not the NQ futures contract, even though the file is organized under an "NQ_NDX" ticker — worth knowing if you trade NQ futures and expect an exact futures-basis match.

Key settings

SettingDefaultWhat it does
[Backtest Mode] Enable Backtest ModeOnThis indicator has no live-polling mode at all — it only ever reads a historical file.
[Backtest Mode] Historical Data File PathPoint at a downloaded eod_report_*.zip day-bundle — no extraction needed.
Color + Thickness, per level pairsee swatchesHVL pair / CR pair / PS pair / GEX 1–5 each get their own color and width.
Tag Label Horizontal Offset (px)0One shared offset for all eleven on-chart tags — nudge sideways if labels overlap. Manual, not automatic collision avoidance.
HVL · azure Call Resistance · coral Put Support · mint GEX 1–5 · purple

First time using it

  1. No API key needed — download one day's eod_report_*.zip and point Historical Data File Path straight at it.
  2. With up to eleven levels potentially close together (several GEX slots can cluster near spot), expect some label overlap at first — use the horizontal offset setting to spread them out.
  3. Trust Call Resistance / Put Support / GEX 1–3 first; treat HVL, HVL 0DTE, Call Resistance 0DTE, and GEX 4–5 as directional rather than exact until further validated.
  4. Despite "Backtest" in the name, nothing stops you from loading the most recent day's bundle and treating these as today's reference levels on a live (non-replay) chart.

Flow/Structure Divergence

The simplest indicator in the suite: a single three-state oscillator asking one question — do volume flow and open-interest positioning agree on gamma's sign?

Classic tierBacktest ModeBOTTOM pane
classic-divergence-oscillator/
BookmapClassicDivergenceOscillatorIndicator.java

What it shows

One step-line, one of exactly three values, from GEXbot Classic's net_gex_vol (volume-weighted net gamma) and net_gex_oi (open-interest-weighted net gamma):

+1 — agree positive

Both today's trading flow and existing open-interest positioning read net-positive gamma. Flow and structure telling the same bullish-leaning story.

−1 — agree negative

Both agree net-negative. Flow and structure aligned the other way.

0 — disagree

Volume says one sign, open interest says the other — a structural mismatch. Persistent 0 can flag a transitional or uncertain regime; a flip from 0 into a firm +1/−1 can flag flow and structure newly aligning.

Key settings

SettingDefaultWhat it does
GEXbot API KeyRequired for live mode.
Line Color / Thickness / OpacityLavender #AA8CD2 / 2px / 1.0Standard line appearance controls.
Use SPX Ticker / Use QQQ TickerOff (mutually exclusive)No ratio field needed — this line is a discrete state, not a price level.
[Backtest Mode] Enable / Historical Data File PathOff / —See caveat below.
Backtest Mode caveat. GEXbot's historical day-bundle doesn't carry the live /majors endpoint's own net_gex_vol/net_gex_oi field names — the base snapshot's sum_gex_vol/sum_gex_oi are used as the equivalent quantities instead. Confirmed to compile and load against real data, but not yet independently cross-checked with a live-endpoint comparison.

First time using it

  1. Fast to read at a glance — good as a secondary confirmation layer next to a price-level tool like Level Ladder EOD or Hedging Pressure Combo, rather than a standalone primary signal.
  2. Watch for a sustained 0 (disagreement) reading around a level you're watching on another indicator — it's a flag to wait for flow and structure to align before trusting that level.

Classic Strike Heatmap

Four tagged gamma "majors" plus a two-column background heatmap board — the same Classic gamma data as Level Ladder EOD, shown visually rather than as reference lines.

Classic tierBacktest ModeScreen-space overlay
classic-strike-heatmap/
BookmapClassicStrikeHeatmapIndicator.java

What it shows

Four tagged major strikes — Long Gamma (OI), Short Gamma (OI), Long Gamma (Volume), Short Gamma (Volume) — each the single largest call-/put-side gamma strike by that metric. Alongside them, a background heatmap board split into two columns (OI on the left half, Volume on the right half of one strip) shows the next five largest-magnitude strikes per metric as fainter, intensity-scaled bands — the top two (already covered by the tagged majors) are skipped.

What it may imply

The four tagged majors are the persistent "big" walls, one per side per lens. The heatmap board's fainter bands show secondary concentration nearby — useful for spotting a second layer of support/resistance beyond the single biggest strike. If the OI-based and Volume-based views cluster at different strikes, that's a flow-vs-positioning divergence in visual/spatial form — the same underlying idea as the Divergence Oscillator's single number, just spread across the chart instead of collapsed to one line.

Key settings

SettingDefaultWhat it does
GEXbot API KeyRequired for live mode.
Show Long/Short Gamma (OI) / (Volume)All OnFour independent show/hide toggles for the tagged majors.
Positive/Negative Color (O/I) & (Volume)Azure / CoralTwo independent color pairs — one for OI, one for Volume — shared by majors and the background board.
Overall Opacity1.0Global opacity multiplier.
Heatmap Width (%)25%How much of the chart's width the background board covers, 10–50%.
Line Width (px)2pxThickness of the full-width major lines (not the background band height).
Label Horizontal Offset (px)0Nudges tag labels sideways.
Use SPX / QQQ (auto or manual ratio)OffSame ratio system as Gamma Centroid.
Majors Category: 0DTEOff (All Expiries)Switches the tagged majors between all-expiry and 0DTE-only gamma.
[Backtest Mode] Enable / Historical Data File PathOff / —Live-tested and confirmed working against real historical data.

First time using it

  1. Tags show label + gamma-exposure value, not the price — read the actual price off where the horizontal line sits, not the tag text.
  2. The Heatmap Width slider trades off board coverage against clean price action — start near the 25% default and widen only if the secondary strikes feel too cramped.
  3. Toggle Majors Category to 0DTE if you specifically want same-day expiry gamma rather than the all-expiries blend.

State Strike Heatmap

Everything in Classic Strike Heatmap, plus an independent DEX (delta exposure) layer on the same chart — the busiest indicator in the suite.

Classic tierState tierBacktest ModeScreen-space overlay
state-strike-heatmap/
BookmapStateStrikeHeatmapIndicator.java

What it shows

A strict superset of Classic Strike Heatmap: the same gamma majors and OI/Volume background board, plus a second, independent DEX layer — Long DEX / Short DEX tagged majors and its own background board, sourced from GEXbot's State-tier delta data. A separate Combine 0DTE + 1DTE (DEX) toggle blends the DEX layer's expiries independently of whatever the gamma side's Majors Category is set to.

Both the OI and Volume boards (gamma side) show the top 5 strikes by magnitude, ranked independently per metric, with the two already-tagged majors excluded and the remaining three shown as unlabeled, intensity-only highlights — the same redesign as Classic Strike Heatmap's board.

What it may imply

Layering GEX (gamma — hedging flow tied to price level and volatility) and DEX (delta — hedging flow that exists independent of a vol move) on one chart lets you see whether gamma-implied pinning levels and delta-implied directional levels agree or diverge. A strike that shows up heavy in both lenses is a stronger structural level than one that only appears in gamma or only in delta.

Key settings

SettingDefaultWhat it does
Everything from Classic Strike Heatmapsee aboveGamma majors, OI/Volume colors, opacity, heatmap width, line width, label offset, SPX/QQQ ratio, Majors Category.
Show Long DEX / Show Short DEXBoth OnIndependent show/hide for the two DEX tagged majors.
Combine 0DTE + 1DTE (DEX)OnBlends DEX's own 0DTE and next-expiry data — independent of the gamma side's expiry setting.
Positive/Negative Color (DEX)Azure / CoralIts own color pair, separate from the gamma OI and Volume pairs — three independent pairs total on this indicator.
[Backtest Mode] Enable / Historical Data File PathOff / —See caveat below.
DEX is optional, soft-fail. If a historical bundle or your GEXbot plan lacks delta data, the DEX layer just shows empty rather than breaking anything else on the chart — the gamma half keeps working on its own.

First time using it

  1. Comfortable with Classic Strike Heatmap already? Everything there works identically here — the only new thing is the DEX layer and its own color pair / combine toggle.
  2. Good next indicator to try once you're used to the Classic-only heatmap, since it's a strict superset rather than a different design.
  3. If DEX doesn't appear, check your GEXbot plan includes State-tier delta data before assuming something's broken.

TEACH Demo

A live-API-free build of all seven indicators — no GEXbot subscription, no API key, no live polling anywhere in the code. Load a downloaded historical file and learn the tools cold.

No GEXbot subscription neededgextex_TEACH
GEXBOT-Teaching/<name>/
com.example.teaching.*

What it is

Every one of the seven Backtest-Mode indicators on this site has a second, parallel copy that lives in its own GEXBOT-Teaching/ folder, repackaged under com.example.teaching.* and suffixed (Backtest Demo) in Bookmap's add-on list so it's never confused with the live version. The live-polling code isn't just hidden behind a checkbox here — the API key field, the live pollers, the GEXbot HTTP clients, the ticker resolver, and the SPX/QQQ ratio auto-fetch machinery are all removed from the source entirely. There is no way to run a TEACH build against live GEXbot data, by design — it only ever reads a downloaded historical file.

That makes this the version to hand to someone learning the tools, demoing them, or just trying them out without paying for a GEXbot plan first. The underlying math — centroids, the hedging composite, divergence, the heatmaps, the level ladder — is identical to the live siblings; only the data source and a handful of live-only settings differ.

Still needs Bookmap replay. "No subscription needed" here means no GEXbot subscription — you still need Bookmap itself, on a plan that includes replay, since that's what actually drives the clock these indicators sync to.

How it's different from the live indicators

No API key, ever

The GEXbot API Key field doesn't exist in the TEACH build — there's nothing to enter and nothing that phones home to GEXbot.

Backtest Mode isn't a toggle, it's the only mode

No live/backtest checkbox — every TEACH indicator boots straight into reading a historical file.

A few settings are hardcoded, not removed silently

Combine 0DTE + 1DTE and Majors Category: 0DTE are fixed at their sensible live defaults (combined, all-expiries) on the indicators that have them, rather than exposed as dead checkboxes that look like they do something in Backtest Mode but don't.

Hedging Pressure's tuning knobs are fixed too

On the TEACH copies of Hedging Pressure Oscillator and Combo, the six component weights/inverts and the Momentum Window are locked at their defaults (1.0 weight, no inversion, 15-minute window) rather than left adjustable — a deliberate simplification, not a bug.

Why hardcode instead of just hide?

Several of these settings only actually take effect through a live re-poll or a full reinitialize. A couple of the live siblings' own Backtest Mode branches had this exact bug (a setting looked live but was silently baked in once at load and never revisited) before being fixed — see each indicator's own page. Rather than ship the same trap in a build meant for people new to these tools, the TEACH copies remove the setting outright and hardcode the value that already made sense.

Getting set up

  1. On gexbot.com, sign in and open the ☰ menu (top right) → Historical Data.
  2. On the My Library tab, pick a ticker from the dropdown (e.g. NDX⇒NQ) and click Download EOD Report to get that day's eod_report_<TICKER>.zip. Your account includes the latest available report for both Classic and State; today's isn't included until after 5:00 PM ET.
  3. Need an older session instead of the latest one? Use the Get Archives tab next to My Library to pull a specific past date.
  4. Load a gextex-demo-<name> jar (one indicator) or the combined gextex_TEACH bundle jar (all seven at once) into Bookmap.
  5. Paste the full absolute path to the downloaded .zip into Historical Data File Path — pasting just the filename silently fails to load (it resolves relative to the wrong folder with no error shown).
  6. Open a matching Bookmap replay session for that ticker and day, and scrub or play as normal.

Good to know

Loading the Classic and State Strike Heatmap (Backtest Demo) indicators together used to visually overlap — both painted their bands at the same screen position. Fixed with a Heatmap Horizontal Offset (px) setting on each (Classic defaults to 0px, State to 400px), so the two separate cleanly out of the box at typical chart widths; nudge the slider if a very narrow or very wide chart still overlaps them.

Test & replay data

Sample GEXbot day-bundles (.zip) and Bookmap replay data files (.bmf) so you can try the TEACH demo without downloading your own GEXbot export first.

FileTickerDateFormatNotes
No sample files posted yet — check back soon.
Coming via Discord. Sample .zip / .bmf files are planned to be hosted on a Discord server rather than through this page directly — artifact pages like this one can't actually serve click-to-download files, so an outbound link here is the plan once the server's set up. This table will get real rows and a Discord link as soon as that's ready.