Zero-DTE (0DTE) Analytics API - Real-Time Same-Day Expiration Data - FlashAlpha Lab API
Lab API Zero-DTE Analytics

Zero-DTE (0DTE) Analytics API

Real-time 0DTE analytics for intraday options trading. Gamma regime, expected move, pin risk scoring, dealer hedging estimates, theta decay acceleration, and per-strike breakdown — all for same-day expiration contracts.

Endpoint

GET /v1/exposure/zero-dte/{symbol}
Auth required (X-Api-Key) Rate Limited: Yes Growth+

Parameters

Name In Required Default Description
symbol path yes Underlying symbol (e.g. SPY, QQQ, SPX)
strike_range query no 0.03 Fraction of spot to include in strikes array (0.001–0.10). Aggregates always use full chain.
Requires Growth plan or higher. SPY has 0DTE on Mon/Wed/Fri. SPX (SPXW) has daily 0DTE.
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/exposure/zero-dte/SPY"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/exposure/zero-dte/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"0DTE GEX: ${data['exposures']['net_gex']:,.0f}")
print(f"Pin Score: {data['pin_risk']['pin_score']}/100")
print(f"Expected Move: ±${data['expected_move']['remaining_1sd_dollars']:.2f}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/exposure/zero-dte/SPY",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`0DTE GEX: $${data.exposures.net_gex.toLocaleString()}`);
console.log(`Pin Score: ${data.pin_risk.pin_score}/100`);
console.log(`Expected Move: +/-$${data.expected_move.remaining_1sd_dollars.toFixed(2)}`);

Response

{
  "symbol": "SPY",
  "underlying_price": 590.42,
  "expiration": "2026-03-19",
  "as_of": "2026-03-19T14:45:12Z",
  "market_open": true,
  "time_to_close_hours": 1.25,
  "time_to_close_pct": 80.8,
  "regime": {
    "label": "positive_gamma",
    "description": "Dealers long gamma — moves dampened, mean reversion likely",
    "gamma_flip": 588.50,
    "spot_vs_flip": "above",
    "spot_to_flip_pct": 0.33
  },
  "exposures": {
    "net_gex": 1842000000,
    "net_dex": 48200000000,
    "net_vex": -320000000,
    "net_chex": 95000000,
    "pct_of_total_gex": 62.4,
    "total_chain_net_gex": 2952000000
  },
  "expected_move": {
    "implied_1sd_dollars": 2.18,
    "implied_1sd_pct": 0.37,
    "remaining_1sd_dollars": 1.05,
    "remaining_1sd_pct": 0.18,
    "upper_bound": 591.47,
    "lower_bound": 589.37,
    "straddle_price": 1.62,
    "atm_iv": 0.123
  },
  "pin_risk": {
    "magnet_strike": 590,
    "magnet_gex": 580000000,
    "distance_to_magnet_pct": 0.07,
    "pin_score": 82,
    "max_pain": 590,
    "oi_concentration_top3_pct": 41.2,
    "description": "Strong pin at 590. 82/100 pin score with 41% of OI in top 3 strikes."
  },
  "hedging": {
    "spot_up_half_pct": { "dealer_shares_to_trade": -156100, "direction": "sell", "notional_usd": -92158000 },
    "spot_down_half_pct": { "dealer_shares_to_trade": 156100, "direction": "buy", "notional_usd": 92158000 },
    "spot_up_1pct": { "dealer_shares_to_trade": -312200, "direction": "sell", "notional_usd": -184316000 },
    "spot_down_1pct": { "dealer_shares_to_trade": 312200, "direction": "buy", "notional_usd": 184316000 }
  },
  "decay": {
    "net_theta_dollars": -4820000,
    "theta_per_hour_remaining": -3856000,
    "charm_regime": "time_decay_dealers_buy",
    "charm_description": "Time decay pushing dealers to buy — supportive into close",
    "gamma_acceleration": 2.4,
    "description": "0DTE theta bleeding $3,856/hr. Gamma 2.4x higher than equivalent 7DTE."
  },
  "vol_context": {
    "zero_dte_atm_iv": 12.3,
    "seven_dte_atm_iv": 14.8,
    "iv_ratio_0dte_7dte": 0.83,
    "vix": 16.2,
    "vanna_exposure": -320000000,
    "vanna_interpretation": "vol_up_dealers_sell",
    "description": "0DTE IV at 12.3% vs 7DTE at 14.8%. Negative vanna — vol spike triggers dealer selling."
  },
  "flow": {
    "total_volume": 842000,
    "call_volume": 520000,
    "put_volume": 322000,
    "total_oi": 1240000,
    "call_oi": 680000,
    "put_oi": 560000,
    "pc_ratio_volume": 0.619,
    "pc_ratio_oi": 0.824,
    "volume_to_oi_ratio": 0.679
  },
  "levels": {
    "call_wall": 595,
    "call_wall_gex": 420000000,
    "put_wall": 585,
    "put_wall_gex": -380000000,
    "highest_oi_strike": 590,
    "highest_oi_total": 48200,
    "max_positive_gamma": 592,
    "max_negative_gamma": 586
  },
  "strikes": [
    {
      "strike": 590,
      "call_gex": 450000000, "put_gex": -380000000, "net_gex": 70000000,
      "call_dex": 12500000, "put_dex": -15000000, "net_dex": -2500000,
      "call_oi": 25000, "put_oi": 30000,
      "call_volume": 15000, "put_volume": 12000,
      "call_iv": 0.18, "put_iv": 0.19,
      "call_delta": 0.50, "put_delta": -0.50,
      "call_gamma": 0.025, "put_gamma": 0.025,
      "call_theta": -1.0, "put_theta": -1.0
    }
  ]
}

Key Response Fields

Field Type Description
time_to_close_hoursnumberHours until 4:00 PM ET. The single most important 0DTE context variable.
time_to_close_pctnumberPercentage of trading day elapsed (0=open, 100=close)
regime.labelstringpositive_gamma, negative_gamma, or undetermined
regime.gamma_flipnumber0DTE-specific gamma flip (separate from full-chain)
exposures.pct_of_total_gexnumber0DTE GEX as % of full-chain GEX. >50% = 0DTE dominates intraday
expected_move.remaining_1sd_*numberShrinks in real-time as close approaches
expected_move.straddle_pricenumberATM 0DTE straddle mid — direct market-implied expected move
pin_risk.pin_scorenumber0–100 composite: OI concentration (30%), magnet proximity (25%), time remaining (25%), gamma magnitude (20%)
pin_risk.max_painnumberStrike where total option holder intrinsic value is minimized
hedging.spot_*_half_pctobjectDealer hedging for ±0.5% moves — more relevant for 0DTE than ±1%
decay.theta_per_hour_remainingnumbernet_theta_dollars / time_to_close_hours — accelerates as denominator shrinks
decay.gamma_accelerationnumber0DTE ATM gamma / 7DTE ATM gamma. Typically 2–5x, can hit 10x+ near close
vol_context.iv_ratio_0dte_7dtenumber<1.0 = 0DTE is “cheap” vs term structure; >1.0 = event premium
flow.volume_to_oi_rationumber>1.0 = heavy day-trading (intraday flow exceeds overnight positioning)
levels.call_wallnumber0DTE strike with highest call GEX — intraday resistance
levels.put_wallnumber0DTE strike with highest put GEX — intraday support

No 0DTE Expiry

If the symbol has no 0DTE expiry today (e.g. SPY on Tuesday/Thursday):

{
  "symbol": "SPY",
  "underlying_price": 590.42,
  "expiration": null,
  "as_of": "2026-03-17T15:30:00Z",
  "market_open": true,
  "no_zero_dte": true,
  "message": "No 0DTE expiry for SPY today (Tuesday). Next expiry: 2026-03-18.",
  "next_zero_dte_expiry": "2026-03-18"
}

Errors

Status Description
403Requires Growth plan or higher
404Symbol not found or no data

Notes

  • SPY has 0DTE on Mon/Wed/Fri. SPX (SPXW) has daily 0DTE.
  • theta_per_hour_remaining is null when time_to_close_hours is 0 (market closed)
  • Near close (<5 minutes), a warnings array is included noting potential greek instability
  • strike_range only filters the strikes array — all aggregate calculations use the full 0DTE chain
  • All calculations are pure static (no external calls beyond the initial data fetch)

What Is 0DTE Trading?

Zero days to expiration (0DTE) options expire on the same day they are traded. These contracts have extreme gamma — small moves in the underlying produce outsized changes in delta, forcing dealers into aggressive hedging activity. 0DTE options now account for over 40% of total SPX options volume on many trading days, making them the single largest driver of intraday price action.

Because 0DTE gamma is typically 2–5x higher than equivalent 7DTE gamma, dealer hedging flows are amplified. When 0DTE dominates total GEX (>50%), intraday support/resistance levels, pin risk, and expected move are all driven primarily by same-day expiration positioning.

Common Use Cases

  • Intraday gamma regime detection — know whether 0DTE dealers are dampening or amplifying moves
  • Pin risk assessment — identify strikes where OI concentration creates magnetic price attraction near close
  • Expected move calibration — real-time remaining expected move that shrinks as close approaches
  • Dealer hedging flow estimation — ±0.5% and ±1% hedging scenarios for intraday position sizing
  • Theta decay timing — accelerating time decay curve for premium selling strategies
  • Vol context — compare 0DTE IV vs 7DTE to gauge relative cheapness or event premium
  • Algo trading signals — feed pin score, gamma regime, and expected move into intraday models
FlashAlpha
© FlashAlpha. All rights reserved.