Flow Anomaly Strategy API - Directional Flow Imbalance Score - FlashAlpha Lab API
Lab API Flow Anomaly

Flow Anomaly Strategy API

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

Endpoint

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

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol (e.g. SPY)
expiry query no full chain (all upcoming expiries) yyyy-MM-dd. Restricts the analysis to a single expiry.
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/strategies/flow-anomaly/SPY"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/strategies/flow-anomaly/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/flow-anomaly/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": "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": {
    "bias": "bullish",
    "call_put_volume_ratio": 1.84,
    "call_put_oi_ratio": 1.12,
    "total_volume": 412300,
    "total_open_interest": 1875400,
    "underlying_price": 589.12,
    "dominant_premium_usd": 38420000,
    "dominant_premium_pct": 0.63,
    "top3_strikes_volume_pct": 0.41
  },
  "risk_flags": [],
  "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": [] }
}

Notable Metrics

Key
bias
call_put_volume_ratio
call_put_oi_ratio
total_volume
total_open_interest
dominant_premium_usd
dominant_premium_pct
top3_strikes_volume_pct
underlying_price

Regime Values

  • bullish_flow_imbalance
  • bearish_flow_imbalance
  • neutral_flow

Errors

Status error When
400invalid_expiryexpiry is present but not yyyy-MM-dd.
403tier_restrictedCaller is below the Growth plan.
404symbol_not_foundNo market data for the symbol.

About

Flow anomaly reads the live chain and measures how lopsided directional options flow is, comparing call versus put volume alongside open-interest ratios and premium concentration. A strongly one-sided tape pushes the score toward candidate and sets a bullish or bearish regime.

When the imbalance is decisive, the strategy proposes the matching short vertical spread (a short put spread on bullish flow, a short call spread on bearish flow) so the signal arrives as a ranked, tradeable structure rather than just a number.

Common Use Cases

  • Surface the tilt - read regime to find names where directional flow has decisively gone call- or put-heavy
  • Trade only clean signals - act when decision is candidate and skip no_setup reads where the tilt is noise
  • Drop in the proposed structure - pull best_structures[] for a ready short vertical aligned with the flow direction
  • Rank the watchlist - sort by score to find the cleanest flow setups across a universe
  • Size on conviction - scale the directional clip by score and confidence rather than a fixed lot
  • Respect the guardrails - honor risk_flags[] and require a clean data_quality before acting on the tilt

Related reading

Complementary endpoints

Ready to build?

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