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.
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.
- 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. - Open the indicator's settings in Bookmap and check Enable Backtest Mode.
- Paste the absolute path to that
.zipinto Historical Data File Path (quotes picked up from dragging a file into Terminal are fine — they're stripped automatically). - 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.
Where to start
A rough easy-to-advanced order if you're picking these up for the first time:
All seven at a glance
Gamma Centroid
Weighted-average strike price(s) from net gamma exposure — dual wall, magnitude, and signed modes.
Hedging Pressure Oscillator
GEX + DEX + Vanna + Charm + Gamma Flip + Risk Reversal blended into one bounded composite, plus momentum.
Hedging Pressure Combo
The oscillator's composite lines plus on-chart Gamma Flip / GEX+ Wall / GEX- Wall price levels, together.
Level Ladder EOD
Eleven static end-of-day reference levels — HVL, Call Resistance, Put Support, and five secondary GEX strikes.
Flow/Structure Divergence
Three-state oscillator: do volume-weighted and open-interest-weighted net gamma agree in sign?
Classic Strike Heatmap
Tagged long/short gamma majors plus a two-column OI/Volume background board of secondary strikes.
State Strike Heatmap
Everything in Classic Strike Heatmap, plus an independent DEX (delta exposure) layer on the same chart.
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.
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:
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.
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.
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
| Setting | Default | What it does |
|---|---|---|
| GEXbot API Key | — | Required for live mode; not needed in Backtest Mode. |
| Combine 0DTE + 1DTE | On | Merges today's and tomorrow's expiry gamma into one all-near-term view. |
| Show Dual Wall Centroids / Show Magnitude Centroid / Show Signed Centroid | On / Off / Off | Independent toggles — any combination can run at once to compare modes against price together. |
| Per-line Color + Thickness | see swatches | Each of the four lines has its own color picker and 1–10px width. |
| Use SPX / QQQ (auto or manual ratio) | Off | Rescales GEXbot's strike prices onto an SPX or QQQ-denominated chart instead of the native ticker. |
| [Backtest Mode] Enable Backtest Mode | Off | Switches from live polling to a loaded historical file. |
| [Backtest Mode] Historical Data File Path | — | Absolute path to a downloaded eod_report_*.zip day-bundle or an extracted folder. |
First time using it
- Enter a GEXbot API key (State tier) for live use, or skip straight to Backtest Mode with a downloaded day-bundle.
- Leave Dual Wall Centroids on by default — it's the most directly interpretable mode and the one every other setting was tuned against.
- 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.
- 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.
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
Dealer hedging flow across gamma/delta/vanna/charm is net skewed toward a pattern that has historically correlated with upward price pressure or support.
The opposite skew — hedging flow net-aligned with downward pressure.
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.
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
| Setting | Default | What it does |
|---|---|---|
| GEXbot API Key / Poll Interval (s) | — / 12 | Live-mode polling; range 5–300s. |
| Combine 0DTE + 1DTE | On | Merges today's and tomorrow's expiry into the State-tier reads. |
| Normalization Lookback (polls) | 30 | Window each component's rolling z-score is computed over. Requires a reload to change. |
| Momentum Window (minutes) | 15 | How far back the composite's slope looks; adjustable live, no reload. |
| GEX / DEX / Vanna / Charm / Gamma Flip / Risk Reversal Weight | 1.0 each | 0–5 per-component weight in the blend. |
| Invert GEX / DEX / Vanna / Charm / Gamma Flip / Risk Reversal | Off each | Flips 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) | Off | Only 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 Zone | Off (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 Opacity | 40px / 800px / 15 / 50% / 100% | Sizing for whichever zone mode is active. |
| [Backtest Mode] Enable / Historical Data File Path | Off / — | See Backtest Mode note below. |
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
- Start with all six weights at 1.0 and no inversions — the shipped default.
- Watch HP+ / HP− / Momentum against price for a session or two before changing anything.
- 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.
- 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.
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
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.
The nearest large call-side gamma concentration — a candidate resistance / pin level.
The nearest large put-side gamma concentration — a candidate support level, or a downside accelerant if price breaks through it.
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
| Setting | Default | What it does |
|---|---|---|
| GEXbot API Key / Poll Interval (s) | — / 12 | Live-mode polling. |
| Combine 0DTE + 1DTE / Normalization Lookback / Momentum Window | On / 30 / 15 | Same semantics as the standalone Oscillator. |
| Six component Weights + Inverts | 1.0 / Off | Identical GEX/DEX/Vanna/Charm/Gamma Flip/Risk Reversal blend as the Oscillator. |
| Use SPX / QQQ (auto or manual ratio) | Off | Rescales the three on-chart price levels; the bottom-pane composite needs no conversion. |
| Positive-Dominant / Negative-Dominant Color | Azure / Coral | Shared by the HP+/HP− lines and the GEX+/GEX- Wall lines — one color pair covers both. |
| Gamma Flip Line Color / Thickness | Amber / 2px | Deliberately distinct from the wall pair so the flip level reads as its own thing. |
| Wall Line Thickness | 2px | Shared by both wall lines. |
| Wall Search Window (Strikes Each Side) | 15 | How many strikes each side of spot to search when locating the nearest wall. |
| [Backtest Mode] Enable / Historical Data File Path | Off / — | See caveat below. |
First time using it
- 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.
- 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.
- 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.
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:
| Level | Source field | Reads as |
|---|---|---|
| HVL / HVL 0DTE | zero_gamma | The zero-gamma level ("high volatility line"). |
| Call Resistance / CR 0DTE | major_pos_oi | Largest call-side gamma strike, by open interest. |
| Put Support / PS 0DTE | major_neg_oi | Largest put-side gamma strike, by open interest. |
| GEX 1 – GEX 5 | ranked 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.
Key settings
| Setting | Default | What it does |
|---|---|---|
| [Backtest Mode] Enable Backtest Mode | On | This indicator has no live-polling mode at all — it only ever reads a historical file. |
| [Backtest Mode] Historical Data File Path | — | Point at a downloaded eod_report_*.zip day-bundle — no extraction needed. |
| Color + Thickness, per level pair | see swatches | HVL pair / CR pair / PS pair / GEX 1–5 each get their own color and width. |
| Tag Label Horizontal Offset (px) | 0 | One shared offset for all eleven on-chart tags — nudge sideways if labels overlap. Manual, not automatic collision avoidance. |
First time using it
- No API key needed — download one day's
eod_report_*.zipand point Historical Data File Path straight at it. - 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.
- 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.
- 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?
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):
Both today's trading flow and existing open-interest positioning read net-positive gamma. Flow and structure telling the same bullish-leaning story.
Both agree net-negative. Flow and structure aligned the other way.
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
| Setting | Default | What it does |
|---|---|---|
| GEXbot API Key | — | Required for live mode. |
| Line Color / Thickness / Opacity | Lavender #AA8CD2 / 2px / 1.0 | Standard line appearance controls. |
| Use SPX Ticker / Use QQQ Ticker | Off (mutually exclusive) | No ratio field needed — this line is a discrete state, not a price level. |
| [Backtest Mode] Enable / Historical Data File Path | Off / — | See caveat below. |
/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
- 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.
- 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.
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
| Setting | Default | What it does |
|---|---|---|
| GEXbot API Key | — | Required for live mode. |
| Show Long/Short Gamma (OI) / (Volume) | All On | Four independent show/hide toggles for the tagged majors. |
| Positive/Negative Color (O/I) & (Volume) | Azure / Coral | Two independent color pairs — one for OI, one for Volume — shared by majors and the background board. |
| Overall Opacity | 1.0 | Global opacity multiplier. |
| Heatmap Width (%) | 25% | How much of the chart's width the background board covers, 10–50%. |
| Line Width (px) | 2px | Thickness of the full-width major lines (not the background band height). |
| Label Horizontal Offset (px) | 0 | Nudges tag labels sideways. |
| Use SPX / QQQ (auto or manual ratio) | Off | Same ratio system as Gamma Centroid. |
| Majors Category: 0DTE | Off (All Expiries) | Switches the tagged majors between all-expiry and 0DTE-only gamma. |
| [Backtest Mode] Enable / Historical Data File Path | Off / — | Live-tested and confirmed working against real historical data. |
First time using it
- Tags show label + gamma-exposure value, not the price — read the actual price off where the horizontal line sits, not the tag text.
- 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.
- 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.
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
| Setting | Default | What it does |
|---|---|---|
| Everything from Classic Strike Heatmap | see above | Gamma majors, OI/Volume colors, opacity, heatmap width, line width, label offset, SPX/QQQ ratio, Majors Category. |
| Show Long DEX / Show Short DEX | Both On | Independent show/hide for the two DEX tagged majors. |
| Combine 0DTE + 1DTE (DEX) | On | Blends DEX's own 0DTE and next-expiry data — independent of the gamma side's expiry setting. |
| Positive/Negative Color (DEX) | Azure / Coral | Its own color pair, separate from the gamma OI and Volume pairs — three independent pairs total on this indicator. |
| [Backtest Mode] Enable / Historical Data File Path | Off / — | See caveat below. |
First time using it
- 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.
- 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.
- 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.
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.
How it's different from the live indicators
The GEXbot API Key field doesn't exist in the TEACH build — there's nothing to enter and nothing that phones home to GEXbot.
No live/backtest checkbox — every TEACH indicator boots straight into reading a historical file.
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.
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
- On gexbot.com, sign in and open the ☰ menu (top right) → Historical Data.
- On the My Library tab, pick a ticker from the dropdown (e.g.
NDX⇒NQ) and click Download EOD Report to get that day'seod_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. - Need an older session instead of the latest one? Use the Get Archives tab next to My Library to pull a specific past date.
- Load a
gextex-demo-<name>jar (one indicator) or the combinedgextex_TEACHbundle jar (all seven at once) into Bookmap. - Paste the full absolute path to the downloaded
.zipinto Historical Data File Path — pasting just the filename silently fails to load (it resolves relative to the wrong folder with no error shown). - 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.
| File | Ticker | Date | Format | Notes |
|---|---|---|---|---|
| No sample files posted yet — check back soon. | ||||
.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.