Why 0DTE Data Matters
Zero days to expiration options have fundamentally changed intraday market microstructure. When 0DTE gamma dominates total GEX — often exceeding 50% of the full chain — dealer hedging flows become the primary driver of intraday support, resistance, and mean reversion. Without real-time 0DTE analytics, you are trading blind during the most volatile hours of the session.
The problem is that 0DTE data is expensive to compute and changes every second. Greeks explode near expiration — gamma can be 2-5x higher than equivalent 7DTE contracts, and theta decay accelerates non-linearly into the close. Most data providers either don't offer 0DTE-specific analytics, or bundle them into general exposure endpoints that obscure the intraday signal.
The FlashAlpha Zero-DTE Endpoint
The /v1/exposure/zero-dte/{symbol} endpoint returns a comprehensive 0DTE analytics view in a single call. Everything an intraday trader needs — regime, expected move, pin risk, hedging, decay, vol context, flow, levels, and per-strike breakdown — is computed on-demand from live options data.
Quick Start
Get your free API key from flashalpha.com/pricing, then:
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/exposure/zero-dte/SPY"
Python Example
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/exposure/zero-dte/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
# Key intraday metrics
print(f"Regime: {data['regime']['label']}")
print(f"0DTE GEX: ${data['exposures']['net_gex']:,.0f}")
print(f"% of Total GEX: {data['exposures']['pct_of_total_gex']}%")
print(f"Pin Score: {data['pin_risk']['pin_score']}/100")
print(f"Expected Move (remaining): +/-${data['expected_move']['remaining_1sd_dollars']:.2f}")
print(f"Theta/hr: ${data['decay']['theta_per_hour_remaining']:,.0f}")
print(f"Time to Close: {data['time_to_close_hours']:.1f}h")
What the Response Contains
The zero-dte endpoint returns nine top-level sections, each designed for a specific intraday use case:
| Section | What It Tells You | Trading Use |
| regime | 0DTE gamma regime (positive/negative), gamma flip, spot-to-flip distance | Mean reversion vs trend-following bias |
| exposures | Net GEX/DEX/VEX/CHEX, % of total chain | How much 0DTE dominates intraday flows |
| expected_move | Full-day and remaining 1SD, straddle price, ATM IV | Range estimation, stop placement |
| pin_risk | Magnet strike, pin score (0-100), max pain, OI concentration | Near-close price magnet identification |
| hedging | Dealer shares/notional at ±0.5% and ±1% moves | Intraday liquidity and flow estimation |
| decay | Net theta, theta/hour, charm regime, gamma acceleration | Premium selling timing, acceleration curve |
| vol_context | 0DTE vs 7DTE IV, VIX, vanna interpretation | Relative cheapness, vol event detection |
| flow | Volume, OI, put/call ratios, volume-to-OI ratio | Day-trading intensity, directional bias |
| levels | Call/put walls, highest OI, max gamma strikes | Intraday support/resistance from 0DTE positioning |
Key Fields Explained
Pin Score
The pin_score is a 0-100 composite that estimates how likely the underlying is to pin at the magnet strike into the close. The weighting is:
- OI concentration (30%) — top 3 strikes' share of total 0DTE OI
- Magnet proximity (25%) — how close spot is to the highest-GEX strike
- Time remaining (25%) — pin risk increases as expiration approaches
- Gamma magnitude (20%) — higher gamma = stronger hedging force toward the pin
Expected Move (Remaining)
Unlike full-day expected move, remaining_1sd_dollars shrinks in real-time as the close approaches. At 9:31 AM it equals the full-day move; at 3:30 PM it's roughly 27.7% of the full day. This is the number to use for intraday range estimation and stop placement.
Gamma Acceleration
The gamma_acceleration field shows how much more sensitive 0DTE gamma is compared to 7DTE. A value of 2.4x means every dollar move in the underlying produces 2.4x more dealer hedging flow from 0DTE contracts than from equivalent weekly contracts. Near the close, this can spike to 10x+.
When There Is No 0DTE Expiry
Not every symbol has a 0DTE expiry every day. SPY has 0DTE on Mon/Wed/Fri. SPX (SPXW) has daily 0DTE. When there is no same-day expiry, the response includes:
{
"symbol": "SPY",
"no_zero_dte": true,
"message": "No 0DTE expiry for SPY today (Tuesday). Next expiry: 2026-03-18.",
"next_zero_dte_expiry": "2026-03-18"
}
Plan Requirements
| Plan | Daily Requests | 0DTE Access |
| Free | 10 | No |
| Basic | 250 | No |
| Growth | 2,500 | Yes |
| Alpha | Unlimited | Yes |
The zero-dte endpoint requires the Growth plan or higher ($299/mo). View pricing.
Building a 0DTE Trading Dashboard
Here's a minimal Python loop that polls the endpoint every 60 seconds and prints the key intraday metrics:
import requests, time
API_KEY = "YOUR_API_KEY"
SYMBOL = "SPY"
while True:
resp = requests.get(
f"https://lab.flashalpha.com/v1/exposure/zero-dte/{SYMBOL}",
headers={"X-Api-Key": API_KEY}
)
d = resp.json()
if d.get("no_zero_dte"):
print(d["message"])
break
print(f"\n--- {d['as_of']} ---")
print(f"Regime: {d['regime']['label']} | Flip: {d['regime']['gamma_flip']}")
print(f"0DTE GEX: ${d['exposures']['net_gex']:,.0f} ({d['exposures']['pct_of_total_gex']}% of total)")
print(f"Pin: {d['pin_risk']['magnet_strike']} (score {d['pin_risk']['pin_score']}/100)")
print(f"Range: {d['expected_move']['lower_bound']:.2f} - {d['expected_move']['upper_bound']:.2f}")
print(f"Theta/hr: ${d['decay']['theta_per_hour_remaining']:,.0f}")
print(f"Close in: {d['time_to_close_hours']:.1f}h")
time.sleep(60)
Next Steps