Strategy Signals API - Uniform Decision Envelope - FlashAlpha Lab API
Lab API Strategy Signals

Strategy Signals API

Decision-support endpoints that fold the chain, exposure, and flow primitives into a single uniform decision envelope: each scores one trading idea on a 0-100 scale, classifies a regime, and returns ranked structure candidates.

One Envelope, Many Strategies

The strategy-signal endpoints read the same chain, exposure, and flow primitives that power the rest of the API and fold them into a single, uniform decision envelope. Each endpoint scores one trading idea (flow imbalance, pin risk, dealer gamma regime, vol carry, yield, surface/skew/term/tail richness) on a 0-100 scale, classifies a regime, and - where the strategy expresses a trade - returns ranked structure candidates with legs, credit/debit, and breakevens.

Every endpoint in this group returns the same StrategyDecisionResponse shape regardless of strategy, so a client can deserialize and rank results from any of them without strategy-specific handling. Only metrics and regime vary per strategy: metrics is an open string-keyed bag of strategy-specific numbers, and regime is a short label drawn from a strategy-specific vocabulary. Both are documented on each endpoint page.

All endpoints are GET, take the symbol in the path, accept optional tuning parameters on the query string, and require an API key via the X-Api-Key header.

The Decision Envelope

The score maps to decision through fixed bands: >= 70candidate, >= 40neutral, otherwise avoid. insufficient_data is emitted when inputs are missing - for example when the symbol is outside historical coverage (regime: symbol_not_covered_historically). Always gate on data_quality before acting on a read.

{
  "strategy": "flow_anomaly",
  "symbol": "SPY",
  "timestamp": "2026-06-05T14:32:11Z",
  "decision": "candidate",
  "score": 72,
  "confidence": 0.83,
  "regime": "bullish_flow_imbalance",
  "best_structures": [
    {
      "rank": 1,
      "structure": "short_put_spread",
      "expiry": "2026-06-19",
      "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": {
    "call_put_volume_ratio": 1.84,
    "underlying_price": 589.12
  },
  "risk_flags": [
    { "severity": "medium", "code": "EARNINGS_BEFORE_EXPIRY", "message": "An earnings event falls between today and the target expiry." }
  ],
  "why": ["Call volume outweighs put volume by 1.84x."],
  "avoid_if": ["Volume imbalance fades intraday or flow turns from sweep-driven to block-driven."],
  "data_quality": { "score": 90, "warnings": [] }
}

Shared Fields

Field Type Description
strategystringThe strategy that produced the result (e.g. flow_anomaly, vol_carry).
symbolstringResolved, upper-cased underlying symbol.
timestampstring (ISO 8601 UTC)When the decision was built.
decisionstringOne of insufficient_data, avoid, neutral, candidate. Derived from score via the decision bands.
scoreinteger0-100 strategy score.
confidencenumber0-1 weight reflecting input quality / sample size.
regimestringStrategy-specific regime label. The vocabulary differs per endpoint.
best_structuresarrayRanked candidate structures. Empty when no tradeable structure clears the filters (pure-signal endpoints always return an empty array). Each item carries rank, structure, expiry, legs[] (action, type, strike, delta, premium, quantity), credit, debit, max_profit, max_loss, breakevens[], edge_score, liquidity_score.
metricsobjectStrategy-specific key/value bag. Keys vary per endpoint; underlying_price is always present.
risk_flagsarrayOptional risk callouts, each with severity (low/medium/high), code, and message.
whyarray of stringHuman-readable rationale for the decision.
avoid_ifarray of stringConditions under which the read should be discarded.
data_qualityobjectscore (0-100) and warnings[]. Gate on this before acting.

Strategy Endpoints

Ten strategies, all returning the same envelope. Tier requirements are per strategy.

GET /v1/strategies/flow-anomaly/{symbol} Growth plan+

Scores directional options-flow imbalance (call vs put volume) and proposes the matching short vertical spread when flow is one-sided.

View docs →
GET /v1/strategies/expiry-positioning/{symbol} Basic+

Scores OPEX pin risk for a single expiry from max-pain, OI concentration, and dealer levels, and proposes an iron fly when a pin is likely.

View docs →
GET /v1/strategies/zero-dte/{symbol} Growth plan+

Same-day (0DTE) range-compression read combining pin/positioning with intraday time-of-day context; proposes an iron fly when the pin is strong.

View docs →
GET /v1/strategies/dealer-regime/{symbol} Growth plan+

Classifies the dealer gamma regime (positive-gamma compression vs negative-gamma acceleration) and proposes an iron condor in compressive regimes.

View docs →
GET /v1/strategies/vol-carry/{symbol} Alpha plan+

Volatility risk-premium carry: scores implied vol richness against realized vol using historical VRP percentile/z-score, with skew, term, and earnings context.

View docs →
GET /v1/strategies/yield-enhancement/{symbol} Growth plan+

Income overlay selection: finds the best covered call or cash-secured put at a target delta, with annualized yield, assignment probability, and an earnings filter.

View docs →
GET /v1/strategies/surface-anomaly/{symbol} Alpha plan+

Compares observed IVs against the calibrated SVI fit to find rich/cheap wings, and proposes the vertical-credit sale on a rich wing.

View docs →
GET /v1/strategies/skew/{symbol} Growth plan+

Pure-signal read of 25-delta skew (put vs call wing richness and the risk reversal) for one expiry. No structure is selected.

View docs →
GET /v1/strategies/term-structure/{symbol} Growth plan+

Pure-signal read of the ATM implied-vol term structure across all upcoming expiries (contango vs backwardation, front/back IV, slope).

View docs →
GET /v1/strategies/tail-pricing/{symbol} Growth plan+

Pure-signal read of downside-tail pricing for one expiry: 10-delta put IV vs ATM, tail asymmetry, and whether the crash tail is rich or cheap.

View docs →

Common Use Cases

  • Rank ideas across strategies by reading the shared score and decision off every endpoint, then act only on candidate reads
  • Pull ready-to-trade legs from best_structures[] (legs, credit/debit, breakevens) instead of constructing spreads by hand
  • Gate execution on data_quality.score and confidence so thin-coverage symbols never reach the order stage
  • Branch logic on regime to route, for example, dealer-regime compression to condors and one-sided flow to short verticals
  • Surface the risk_flags[] (e.g. EARNINGS_BEFORE_EXPIRY) and avoid_if conditions to a human or risk check before sizing
  • Fan one symbol across multiple strategy endpoints and deserialize each StrategyDecisionResponse with the same handler for a uniform signal sheet

Related reading

Complementary endpoints

  • Vol Carry - scores implied-vs-realized vol richness via historical VRP percentile
  • Skew - pure-signal read of 25-delta put/call wing richness and the risk reversal
  • Dealer Regime - classifies gamma compression vs acceleration and proposes a matching structure
  • Flow Anomaly - scores directional call/put volume imbalance and the matching vertical

Ready to build?

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