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
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_gammarange_compressiontrend_risk_or_no_setupno_same_day_expiry/no_expiry_chain(returned withdecision: insufficient_datawhen no chain exists for the selected expiry)
Errors
| Status | error |
When |
|---|---|---|
400 | invalid_expiry | expiry is present but not yyyy-MM-dd. |
403 | tier_restricted | Caller is below the Growth plan (or lacks 0DTE access). |
404 | symbol_not_found | No 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
decisioniscandidateandregimereads 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
regimereads trend ordecisionisno_setup - Drive intraday alerts - fire only when
scoreandconfidenceclear a threshold and the pin and timing both line up - Size on conviction - scale the same-day clip by
scoreandconfidencerather than a fixed lot - Respect the guardrails - honor
risk_flags[]and require a cleandata_qualitybefore selling into the close
Related
Related reading
- 0DTE SPY: the complete intraday playbook - the same-day mechanics behind the signal
- ML on options data: a quant guide - feed the 0DTE envelope into a systematic model
- Alpha decay: which signals erode - how fast an intraday edge decays
Complementary endpoints
- Strategy Signals overview - the shared decision envelope across every strategy
- Zero-DTE - the raw same-day flow and gamma the signal is built on
- Flow Anomaly - confirm the same-day pin with directional flow tilt
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.