GEX
Last verified
Auto-generated. This article is rebuilt from
app/signals/config/signal_definitions.jsonbyscripts/build_signals_kb.py. Edit the registry entry and re-run the script β do not edit this file directly.
GEX
What it is
GEX β registry key gex.
Classifier metric. See the bands table below for the band-by-band reading.
Data-pyramid tier
T1 β Signal. This metric sits at the signal layer of the platformβs six-tier data pyramid (T0 raw inputs β T5 actionable read). The tier reflects how far the value is from a raw measurement β not how strongly it is validated. Abstraction and validation are separate axes: a higher tier is not a claim of stronger evidence.
Horizon & validation
Horizon: 10-20d β the window this metricβs measured skill speaks to. A horizon stamp is an evidence claim, not a trading signal.
Evidence: Drawdown-lens gamma leg (via net_gex_rank 252d percentile): 15y re-validation (U2 2026-07-13) non-OL rank-IC +0.10/+0.11 vs forward 10-20d max-drawdown (halved from the two-episode discovery +0.25); quintile tail-lift ~5-6x monotone, sign transfers to 2011-2020; leg weight re-sized 2x -> 1.5x. INDEX LANE only - all25 ~1.0x (R7).
Source
Source module: darkpool
Data source: back_fillable
Fetched directly from app/sources/darkpool.py; see source code for the upstream API call and any provider-specific handling.
How itβs computed
Raw aggregate dealer gamma exposure from the dealer-gamma analytics daily CSV (same pull as dix), normalised to $B notional per 1% SPX move. Positive = dealers are net long gamma (dampening realised vol); negative = net short (amplifying moves). The fetch divides the raw column by 1e9 when the value exceeds 1e6 (app/sources/darkpool.py:31). Daily cadence. See app/sources/darkpool.py:28 (_fetch_dix_gex). The classifier bands (Strong suppression / Vol dampening / Mild amplification / Vol amplification / Severe amplification) are applied downstream via signal_defs.band_for('gex', value).
Where it surfaces
- API field:
signals.gexonGET /api/v1/signals/latest - Surface:
daily_signalsrow (daily-cadence persistence) - Surface:
intraday_signalsrow (per-cycle snapshot) - Surface:
/signals/sparklines(UI sparklines)
Bands / thresholds
Classifier direction: higher_is_better.
| Range | Label | Dot | Implication | Points |
|---|---|---|---|---|
| β | Strong suppression | favorable | BULLISH | 10 |
| β | Vol dampening | leaning | BULLISH | 7 |
| β | Mild amplification | neutral | NEUTRAL | 3 |
| β | Vol amplification | cautionary | BEARISH | 1 |
| β | Severe amplification | adverse | BEARISH | 0 |
Health-score / alignment role
- Health score component:
gex(weight + math inapp/signals/config/score_weights.jsonandapp/signals/score.py). - Alignment category:
gamma, default weight 1.5 (see/kb/alignmentfor the 11-category framework). - Contributes to:
health_score.GEX,implication.gamma,alignment.gamma,transition.gex_sign
Release cadence
- Publishes:
daily - Approximate time (ET):
16:30 - Lag days:
0
_Shares the dealer-gamma analytics EOD CSV publish with DIX; during the live session the most recent row is the prior close. Mapped to freshness_class=prior_close by routes.PUBLISH_TO_FRESHNESS_CLASS.
See also
/kb/gexβ narrative-style article on this metric.- /kb/alignment β Alignment framework β 11-category implication vs. price.
- /kb/health-score β Health score β 0-100 composite.
- /kb/api/get-signals-latest β API endpoint that serves this field.