GEX
GEX pinning
Returns derived pinning intelligence per coin per near-term expiration. One row per (timestamp, coin, expiry) for expirations within 72 hours. Contains top 3 magnetic strikes, pinning zones, breakout levels with acceleration factors, Stability/Persistence/Confidence scores built from 9 proprietary strike-surface Greeks, max pain comparison, pin score (uncalibrated), magnet tracking, vol surface confirmation from fixed-strike IV momentum, GEX-skew cross-system bridge reading ORIA intelligence, gamma flip level with regime classification, and scenario detection with trade structure recommendations. 87 columns across 3 intelligence layers. No public platform offers anything comparable for crypto derivatives.
/v1/gex/pinningproalphaQuery Parameters
coinstringrequiredUnderlying asset. Required.
BTCETHSOLexpirationstringoptionalFilter to specific expiration (ISO 8601).
2026-03-14T08:00:00ZfromstringoptionalStart of time range, UTC. Default: latest snapshot.
2026-03-08T00:00:00ZtostringoptionalEnd of time range, UTC. Default: now.
2026-03-09T00:00:00ZlimitintegeroptionalMax rows returned. Default 500, max 5000.
100Response Schema
Fields marked pro require a Pro subscription. Fields marked alpha require Alpha.
| Field | Type | Tier | Description |
|---|---|---|---|
timestamp | datetime | pro | Snapshot time in UTC. Aligned to 10-minute boundary. |
coin | string | pro | Underlying asset (BTC, ETH, SOL, XRP, AVAX, TRX). |
expiration_timestamp | datetime | pro | Option expiration time in UTC. Only expirations within 72 hours. |
hours_to_expiry | float | pro | Hours to expiration (decimal). Always <= 72 (pinning territory). |
underlying_price | float | pro | Spot price at snapshot time. |
expiry_type | string | pro | Expiry classification: DAILY, WEEKLY, MONTHLY, or QUARTERLY. |
magnetic_strike_1 | float | pro | Strongest magnetic strike (highest |net_gex_usd|). The primary price magnet. |
magnetic_strike_1_gex_usd | float | pro | Net GEX in USD at the magnetic strike. Positive = pinning. Negative = trending. |
magnetic_strike_1_concentration_pct | float | pro | Concentration: this strike as pct of total |GEX|. Above 30 = strong, above 50 = dominant. |
magnetic_strike_1_distance_pct | float | pro | Distance from current spot to magnetic strike as pct. |
magnetic_strike_2 | float | pro | Second strongest strike. |
magnetic_strike_2_gex_usd | float | pro | Net GEX at second strike. |
magnetic_strike_2_concentration_pct | float | pro | Concentration at second strike. |
magnetic_strike_3 | float | pro | Third strongest strike. |
magnetic_strike_3_gex_usd | float | pro | Net GEX at third strike. |
magnetic_strike_3_concentration_pct | float | pro | Concentration at third strike. |
magnet_dominance | string | pro | DOMINANT (top > 2x second), CONTESTED (1.3-2x), or DISPERSED (< 1.3x). DOMINANT = strong pinning expected. CONTESTED = price may oscillate between magnets. |
prev_magnetic_strike | float | alpha | Magnetic strike from previous snapshot. Used to detect magnet shifts. |
magnet_changed | boolean | alpha | TRUE if the magnetic strike shifted since previous snapshot. Alert trigger. |
max_pain_strike | float | pro | Max pain strike (OI-weighted, argmin of total intrinsic value). The industry-standard reference. Our magnetic strike is the improvement. |
max_pain_distance_pct | float | pro | Distance from spot to max pain as pct. |
pinning_zone_lower | float | pro | Lower bound of the contiguous pinning zone around the magnetic strike. |
pinning_zone_upper | float | pro | Upper bound of pinning zone. |
pinning_zone_width_pct | float | pro | Zone width as pct of spot. Narrow zone = sharp pin. Wide zone = diffuse pin. |
price_in_pinning_zone | boolean | pro | TRUE if current spot is inside the pinning zone. |
upper_breakout_level | float | pro | First strike above pinning zone where GEX drops off. If price clears this, pinning collapses. |
upper_breakout_surface_vanna | float | alpha | Surface vanna at upper breakout. High value = breakout accelerates (vol spike feeds itself). |
upper_breakout_lightning | float | alpha | Lightning (3rd strike derivative) at upper breakout. High value = chaotic price behavior beyond this level. |
lower_breakout_level | float | pro | First strike below pinning zone. |
lower_breakout_surface_vanna | float | alpha | Surface vanna at lower breakout. |
lower_breakout_lightning | float | alpha | Lightning at lower breakout. |
zero_gamma_level | float | pro | Price where aggregate net GEX crosses zero. Above = positive gamma (stabilizing). Below = negative gamma (destabilizing). |
price_above_zero_gamma | boolean | alpha | TRUE if spot is above zero gamma level (positive gamma territory, dealer hedging dampens moves). |
magnet_iv_current | float | alpha | Current IV (pct) at the magnetic strike. From gex_strikes.avg_iv_pct. |
magnet_iv_change_2h | float | alpha | IV change at magnetic strike over 2 hours (vol points). Negative = IV fading = wall holding. |
magnet_iv_change_6h | float | alpha | IV change at magnetic strike over 6 hours. |
magnet_call_iv_change_2h | float | alpha | Call-only IV change at magnet over 2h. Isolates directional flow (institutions chasing breakout vs fading). |
upper_breakout_iv_change_2h | float | alpha | IV change at upper breakout strike over 2h. Rising = demand for breakout protection. |
lower_breakout_iv_change_2h | float | alpha | IV change at lower breakout strike over 2h. Rising = demand for crash insurance. |
skew_expiry_bucket | string | alpha | ORIA expiry bucket matched (always DTE_7 for pinning territory). NULL if skew data unavailable. |
skew_risk_reversal_current | float | alpha | Current 25-delta risk reversal from ORIA cohort_iv_skew. Negative = bearish (put premium). Positive = bullish (call premium). |
skew_rr_change_2h | float | alpha | Risk reversal change over 2 hours (vol points). Becoming less negative during rally = SKEW_CONFIRMS_RALLY. |
skew_velocity_regime | string | alpha | Skew velocity from ORIA: RAPID_STEEPENING, RAPID_FLATTENING, etc. Triggers SKEW_REGIME_SHIFT override. |
skew_smile_asymmetry | float | alpha | Smile asymmetry from ORIA. Positive = steeper put wing (crash fear). Negative = steeper call wing (FOMO). |
skew_data_available | boolean | alpha | FALSE if ORIA cohort_iv_skew has no data for this coin/bucket. Common for SOL, XRP, AVAX, TRX. All other skew_ columns NULL when FALSE. |
gamma_flip_level | float | alpha | Interpolated strike where cumulative GEX crosses zero. The boundary between positive and negative gamma territory. |
gamma_flip_distance_pct | float | alpha | (spot - flip) / spot * 100. Positive = spot in positive gamma. Negative = spot in negative gamma. |
opt_liquidation_count_1h | integer | alpha | Option liquidation count in 1h window. DORMANT (always 0): Deribit portfolio margin produces near-zero liquidation events. |
opt_liquidation_usd_1h | float | alpha | Option liquidation USD volume in 1h. DORMANT (always 0). |
opt_liquidation_cluster | boolean | alpha | Option liquidation cluster detected. DORMANT (always FALSE). |
fut_liquidation_count_1h | integer | alpha | Futures liquidation count in 1h. DORMANT (always 0). |
fut_liquidation_usd_1h | float | alpha | Futures liquidation USD volume in 1h. DORMANT (always 0). |
fut_liquidation_cluster | boolean | alpha | Futures liquidation cluster detected. DORMANT (always FALSE). |
liquidation_cascade_active | boolean | alpha | TRUE when negative gamma + liquidation cluster. DORMANT (always FALSE). Retained for future Binance/Bybit feed. |
magnet_times_tested | integer | alpha | Count of spot touches within 0.5 pct of magnet in 24h. NULL until fully implemented. |
magnet_first_test | boolean | alpha | TRUE if magnet has never been tested. Untested magnets have stronger pull. NULL until implemented. |
magnet_untested_premium | float | alpha | Score boost for untested magnets. NULL until implemented. |
call_wall_strike | float | alpha | Highest positive GEX strike above spot. Resistance ceiling. NULL until implemented. |
call_wall_gex_usd | float | alpha | GEX at call wall strike. NULL until implemented. |
put_wall_strike | float | alpha | Highest positive GEX strike below spot. Support floor. NULL until implemented. |
put_wall_gex_usd | float | alpha | GEX at put wall strike. NULL until implemented. |
stability_score | integer | alpha | Will this magnet survive a vol shock? (0-100) See detail ↓ |
stability_component_surface_vanna | float | alpha | Surface vanna ratio component of Stability Score See detail ↓ |
stability_component_flare | float | alpha | Flare ratio component of Stability Score See detail ↓ |
stability_component_halo | float | alpha | Halo ratio component of Stability Score See detail ↓ |
persistence_score | integer | alpha | How long will this magnet hold before time decay kills it? (0-100) See detail ↓ |
persistence_component_surface_charm | float | alpha | Surface charm ratio component of Persistence Score See detail ↓ |
persistence_component_droplet | float | alpha | Droplet ratio component of Persistence Score See detail ↓ |
projected_half_life_hours | float | alpha | Estimated hours until the magnet loses half its gamma concentration See detail ↓ |
prediction_confidence | integer | alpha | Overall data quality and prediction reliability (0-100) See detail ↓ |
aurora_level | float | alpha | Meta-stability: how fast is the entire surface dynamics evolving? See detail ↓ |
pin_probability | float | alpha | Pin Score: composite pinning likelihood (0-100, UNCALIBRATED) See detail ↓ |
magnet_iv_momentum | string | alpha | IV regime at the magnetic strike See detail ↓ |
price_approach_direction | string | alpha | How is price moving relative to the magnet? See detail ↓ |
vol_surface_confirmation | string | alpha | Is the vol surface confirming or denying the GEX structure? See detail ↓ |
vol_confirmation_score | integer | alpha | Numeric score of vol surface confirmation (0-100) See detail ↓ |
skew_confirmation | string | alpha | Does the broad skew surface confirm or deny the GEX narrative? See detail ↓ |
gamma_regime | string | pro | Are dealers stabilizing or amplifying price right now? See detail ↓ |
coinbase_scenario | string | alpha | Scenario classification combining regime, structure, and flow See detail ↓ |
recommended_structure | string | alpha | Suggested options structure for the detected scenario See detail ↓ |
scenario_confidence | float | alpha | Confidence in scenario classification (0-100) See detail ↓ |
Derived Fields
stability_scoreintegeralphacollapseWill this magnet survive a vol shock? (0-100)
Measures how resilient the magnetic strike is to implied volatility changes. Proprietary weighted composite of multiple strike-surface Greek ratios. 100 = pure structural pinning, vol-proof. 0 = entirely vol-dependent, any IV spike destroys it. Below 30 = unreliable magnet. Above 70 = high-quality signal.
0-100. 100 = fortress. 0 = glass.stability_component_surface_vannafloatalphacollapseSurface vanna ratio component of Stability Score
Ratio of surface vanna exposure to dual gamma exposure at the magnetic strike. Low ratio = curvature dominates = stable. Primary component of Stability Score.
0 to 1.stability_component_flarefloatalphacollapseFlare ratio component of Stability Score
Ratio of flare exposure to dual gamma exposure. Captures how a vol spike reshapes curvature at this strike. Secondary component of Stability Score.
0 to 1.stability_component_halofloatalphacollapseHalo ratio component of Stability Score
Ratio of halo exposure to dual gamma exposure. Captures spot-vol-strike coupling. Tertiary component of Stability Score.
0 to 1.persistence_scoreintegeralphacollapseHow long will this magnet hold before time decay kills it? (0-100)
Measures how fast gamma at the magnetic strike decays with time. Proprietary weighted composite of time-decay sensitivity ratios with a dimensional correction for cross-coin comparability. 100 = ANCHORED, magnet strengthens into expiry. 50 = MODERATE, may shift in 6-12h. 0 = FLEETING, may shift next snapshot.
0-100. 100 = anchored. 0 = fleeting.persistence_component_surface_charmfloatalphacollapseSurface charm ratio component of Persistence Score
Ratio of surface charm exposure to dimensionally-corrected dual gamma at the magnetic strike. Primary component of Persistence Score.
0 to 1.persistence_component_dropletfloatalphacollapseDroplet ratio component of Persistence Score
Ratio of droplet exposure to dimensionally-corrected dual gamma. Captures acceleration of vol-sensitivity decay over time. Secondary component of Persistence Score.
0 to 1.projected_half_life_hoursfloatalphacollapseEstimated hours until the magnet loses half its gamma concentration
Rough linear extrapolation based on the persistence score and hours to expiry. Not a precise forecast: actual decay is nonlinear. Use as a shelf-life indicator: if half life < 4h, the signal is time-critical.
0 to hours_to_expiry.prediction_confidenceintegeralphacollapseOverall data quality and prediction reliability (0-100)
Composite of aurora level (meta-stability from 4th-order Greek), average reliability score across contributing instruments, and gamma concentration. High aurora = surface evolving fast = lower confidence. High reliability + high concentration = higher confidence.
0-100.aurora_levelfloatalphacollapseMeta-stability: how fast is the entire surface dynamics evolving?
Aggregated aurora (4th-order cross-derivative coupling spot, vol, strike, time) at the magnetic strike. High aurora means all predictions have shorter shelf life. Input to prediction_confidence.
pin_probabilityfloatalphacollapsePin Score: composite pinning likelihood (0-100, UNCALIBRATED)
Proprietary sigmoid-based composite score reflecting how strongly conditions favor pinning at expiry. Inputs: distance to magnet, gamma concentration, time to expiry, stability score, persistence score. Present as "Pin Score: XX/100". Not a calibrated probability. Will be upgraded to calibrated probability via logistic regression after 100+ outcome events.
0-100. Above 70 = strong pinning conditions. Below 30 = weak.magnet_iv_momentumstringalphacollapseIV regime at the magnetic strike
Classification of how implied volatility at the magnetic strike is evolving over the past 2 hours. SURGING: institutions chasing breakout, strong upward IV pressure. CRUSHING: nobody paying for protection, IV collapsing. RISING/FADING: moderate directional pressure. FLAT: stable. NULL for first 2-6 hours after an expiry enters the 72h window (no lookback history). Threshold values are proprietary and subject to periodic recalibration.
SURGING, RISING, FLAT, FADING, CRUSHINGprice_approach_directionstringalphacollapseHow is price moving relative to the magnet?
APPROACHING_FROM_BELOW: price below magnet and rising. APPROACHING_FROM_ABOVE: price above and falling. AT_MAGNET: within a proprietary distance threshold. MOVING_AWAY: diverging from magnet. NULL when magnet just changed (stale context).
APPROACHING_FROM_BELOW, APPROACHING_FROM_ABOVE, AT_MAGNET, MOVING_AWAYvol_surface_confirmationstringalphacollapseIs the vol surface confirming or denying the GEX structure?
Combines price approach direction with IV momentum to produce a confirmation verdict. STRONG_RESISTANCE: approaching + IV crushing = wall holds, fade the move. BREAKOUT_PRESSURE: approaching + IV surging = wall may break. PINNING_CONFIRMED: at magnet + IV flat = classic pin. PINNING_UNSTABLE: at magnet + IV rising = breakout imminent. This is the difference between a map and a weather report.
STRONG_RESISTANCE, RESISTANCE, BREAKOUT_PRESSURE, STRONG_SUPPORT, SUPPORT, BREAKDOWN_PRESSURE, PINNING_CONFIRMED, PINNING_UNSTABLE, PINNING_REINFORCED, DETACHEDORIA uses this to
Candidate feature for Pin Score logistic regression after calibration against 100+ outcomes.
vol_confirmation_scoreintegeralphacollapseNumeric score of vol surface confirmation (0-100)
Numeric mapping of vol_surface_confirmation to a 0-100 scale. Above 50 = vol surface confirms GEX wall/pin. Below 50 = vol surface disconfirms. 50 = neutral/detached. Exact mapping values are proprietary.
0-100. Above 50 = confirms. Below 50 = disconfirms.skew_confirmationstringalphacollapseDoes the broad skew surface confirm or deny the GEX narrative?
Cross-reads ORIA risk reversal dynamics with spot direction. SKEW_CONFIRMS_RALLY: RR rising + spot rising = options market agrees with rally. SKEW_DENIES_RALLY: RR flat/falling + spot rising = options market skeptical. SKEW_REGIME_SHIFT: rapid steepening/flattening overrides all other signals. The fourth layer of the confirmation matrix.
SKEW_CONFIRMS_RALLY, SKEW_DENIES_RALLY, SKEW_CONFIRMS_SELLOFF, SKEW_DENIES_SELLOFF, SKEW_REGIME_SHIFT, SKEW_NEUTRALORIA uses this to
Reads ORIA cohort_iv_skew risk_reversal_25d_pct and skew_velocity_regime. The GEX-ORIA cross-system bridge.
gamma_regimestringprocollapseAre dealers stabilizing or amplifying price right now?
Regime classification based on spot position relative to gamma flip level. POSITIVE_GAMMA: spot above flip, dealers buy dips and sell rips (stabilizing, pinning). NEGATIVE_GAMMA: spot below flip, dealers sell dips and buy rips (destabilizing, trending). NEAR_FLIP: close to flip level (transition zone, highly volatile). NO_FLIP: cumulative GEX never crosses zero. This is arguably more important than the exact GEX at any single strike.
POSITIVE_GAMMA, NEGATIVE_GAMMA, NEAR_FLIP, NO_FLIPcoinbase_scenariostringalphacollapseScenario classification combining regime, structure, and flow
Combines gamma regime, wall positioning, vol surface confirmation, and flow data into a scenario label per the Coinbase GEX framework. 5 active scenarios: REJECTION_AT_RESISTANCE, BREAKOUT_CONTINUATION, REGIME_SHIFT_DOWN, PINNING_RANGE, GAMMA_TRANSITION. NULL when gamma_regime not available. CASCADE_REVERSAL removed in v3.6 (liquidation dormant on Deribit).
REJECTION_AT_RESISTANCE, BREAKOUT_CONTINUATION, REGIME_SHIFT_DOWN, PINNING_RANGE, GAMMA_TRANSITIONrecommended_structurestringalphacollapseSuggested options structure for the detected scenario
Trade structure recommendation based on coinbase_scenario. SELL_STRADDLE_AT_MAGNET for pinning range. BEAR_PUT_SPREAD for rejection at resistance. CALL_SPREAD for breakout continuation. REDUCE_SIZE_WAIT for regime transitions. These are structures only, no win rates until 100+ outcomes are collected.
BEAR_PUT_SPREAD, CALL_SPREAD, CALL_SPREAD_AFTER_RECLAIM, SELL_STRADDLE_AT_MAGNET, REDUCE_SIZE_WAITscenario_confidencefloatalphacollapseConfidence in scenario classification (0-100)
How strongly the data supports the detected scenario. Based on gamma regime clarity, vol confirmation alignment, and data completeness. Low confidence = multiple scenarios plausible.
0-100.Suggested Calculations
Not included in the API response. Compute these client-side from the fields above. Formulas and context provided.
magnet_convergence_ratefloatclient-sideWill price reach the magnet before expiry?expandWill price reach the magnet before expiry?
Divide distance_pct by hours_to_expiry. This tells you how fast spot needs to move (pct per hour) to converge to the magnetic strike by expiry. If BTC needs to move 0.5 pct in 24 hours, that is normal drift. If it needs 2 pct in 3 hours, it needs a catalyst. Low convergence rate + price_in_pinning_zone = high probability pin.
magnetic_strike_1_distance_pcthours_to_expiryPct per hour needed
0 to ~1. Below 0.05 = easy convergence. Above 0.2 = needs catalyst.magnet_vs_max_pain_deltafloatclient-sideDo gamma and OI agree on where price should settle?expandDo gamma and OI agree on where price should settle?
Compare our magnetic_strike_1 (gamma-weighted) with max_pain_strike (OI-weighted). Small delta = high confidence, both methods agree. Large delta = investigate why they diverge. Our magnetic strike is the better predictor because it accounts for gamma concentration (how sharply dealers need to hedge), not just raw open interest. But when both agree, conviction doubles.
magnetic_strike_1max_pain_strikeunderlying_priceDistance as pct of spot
0 to ~10. Below 1 = strong agreement. Above 5 = significant divergence.simple_pin_checkstringclient-sideThe 3-question pinning checklist for beginnersexpandThe 3-question pinning checklist for beginners
Ask three questions: (1) Is price_in_pinning_zone TRUE? (2) Is distance to magnet < 1 pct? (3) Is hours_to_expiry < 24? If all three are yes, pinning conditions are active: the market is likely to stay near the magnetic strike until expiry. This is the simplest useful output from the pinning intelligence. Pro adds the structural context (zone width, breakout levels). Alpha adds confidence scoring.
magnetic_strike_1underlying_priceprice_in_pinning_zonehours_to_expirybreakout_risk_assessmentstringclient-sideHow close is price to breaking out of the pinning zone?expandHow close is price to breaking out of the pinning zone?
Compute distance to upper and lower breakout levels. Narrow pinning zone (width < 1 pct) = fragile pin, small move breaks it. Wide zone (> 3 pct) = robust pin. If price is closer to a breakout level than to the magnet, the pin is at risk. Combine with gamma_regime: breakout in negative gamma territory cascades.
upper_breakout_levellower_breakout_levelunderlying_pricepinning_zone_width_pctfour_layer_confirmationstringclient-sideThe 4-Layer Confirmation Matrix: maximum conviction signalexpandThe 4-Layer Confirmation Matrix: maximum conviction signal
Combine all four intelligence layers to produce a conviction reading. Layer 1 (GEX Structure): stability/persistence scores. Layer 2 (IV Momentum): is vol at the magnet rising or falling? Layer 3 (Vol Cross-Read): does the price-IV relationship confirm? Layer 4 (Skew): does the broad options surface agree? All four aligned = maximum conviction. Conflicting layers = reduce size or wait.
stability_scoremagnet_iv_momentumvol_surface_confirmationskew_confirmationhit_rate_analysisfloatclient-sideHistorical accuracy of pinning predictionsexpandHistorical accuracy of pinning predictions
Track how often the magnetic strike was within 2 pct of settlement price. Requires collecting outcomes over time. This is the credibility foundation of the entire GEX system.
Or use the pre-computed endpointalpha
Pre-computed at /v1/gex/outcomes with outcome_accuracy classification (HIT_EXACT, HIT_CLOSE, HIT_ZONE, MISS_NEAR, MISS_FAR) across 4 lookback windows.