Zero-DTE Strategy API - Same-Day Range Compression Score - FlashAlpha Lab API
Lab API Zero-DTE

Zero-DTE Strategy API

Same-day (0DTE) range-compression read: combines pin/positioning with intraday time-of-day context (minutes to close, expected-move consumed, theta acceleration) and proposes an iron fly when the pin is strong enough.

Endpoint

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

Also requires 0DTE access (entitled separately from the plan tier). Defaults to today's expiry when expiry is omitted.

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol
expiry query no today (same-day expiry) yyyy-MM-dd. Overrides the same-day default.
minOpenInterest query no 500 Minimum OI a leg must have to be selected.
wingWidth query no 5.0 Iron-fly wing width, in strike points.
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/strategies/zero-dte/SPY"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/strategies/zero-dte/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"{data['decision']} (score {data['score']}, regime {data['regime']})")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/strategies/zero-dte/SPY",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`${data.decision} (score ${data.score}, regime ${data.regime})`);

Response

Returns the standard strategy decision envelope. The metrics and regime fields are specific to this strategy (see below).

{
  "strategy": "zero_dte",
  "symbol": "SPY",
  "timestamp": "2026-06-05T14:32:11Z",
  "decision": "candidate",
  "score": 72,
  "confidence": 0.83,
  "regime": "range_compression",
  "best_structures": [
    {
      "rank": 1,
      "structure": "iron_fly",
      "expiry": "2026-06-05",
      "legs": [
        { "action": "sell", "type": "put", "strike": 588, "delta": -0.25, "premium": 1.42, "quantity": 1 },
        { "action": "buy",  "type": "put", "strike": 578, "delta": -0.12, "premium": 0.72, "quantity": 1 }
      ],
      "credit": 0.70,
      "debit": null,
      "max_profit": 0.70,
      "max_loss": 9.30,
      "breakevens": [587.30],
      "edge_score": 72,
      "liquidity_score": 0.88
    }
  ],
  "metrics": {
    "minutes_to_close": 142,
    "underlying_price": 589.12
  },
  "risk_flags": [],
  "why": ["Most of the day's expected move is consumed and gamma is positive into the close."],
  "avoid_if": ["A late-session catalyst breaks the range or theta has not yet accelerated."],
  "data_quality": { "score": 90, "warnings": [] }
}

Notable Metrics

Key
max_pain_strike
distance_to_pain_pct
oi_concentration_score
total_open_interest
gamma_flip
call_wall
put_wall
distance_to_flip_pct
spot_position_label
minutes_to_close
session_open_spot
expected_move_today
expected_move_consumed_pct
theta_acceleration
underlying_price

Regime Values

  • pin_risk_positive_gamma
  • range_compression
  • trend_risk_or_no_setup
  • no_same_day_expiry / no_expiry_chain (returned with decision: insufficient_data when no chain exists for the selected expiry)

Errors

Status error When
400invalid_expiryexpiry is present but not yyyy-MM-dd.
403tier_restrictedCaller is below the Growth plan (or lacks 0DTE access).
404symbol_not_foundNo market data for the symbol.

About

Zero-DTE extends the pin/positioning read with same-day timing context. On top of max-pain, OI concentration, and dealer levels, it factors in minutes to the close, how much of the day's expected move has already been consumed, and theta acceleration to judge whether the range is likely to compress into the bell.

When the pin is strong enough, it proposes an iron fly on the same-day expiry. Access is gated both by the Growth plan and a separate 0DTE entitlement, and the analysis defaults to today's expiry unless expiry overrides it.

Common Use Cases

  • Time same-day entries - act when decision is candidate and regime reads compression, against minutes-to-close and theta acceleration
  • Drop in the proposed structure - pull best_structures[] for an iron-fly centred where the data says price will pin
  • Stand aside on trend risk - skip premium sales when regime reads trend or decision is no_setup
  • Drive intraday alerts - fire only when score and confidence clear a threshold and the pin and timing both line up
  • Size on conviction - scale the same-day clip by score and confidence rather than a fixed lot
  • Respect the guardrails - honor risk_flags[] and require a clean data_quality before selling into the close

Related reading

Complementary endpoints

Ready to build?

Get your free API key and start pulling live options data in 30 seconds.