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 with FlashAlpha?

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

No credit card required Setup in 60 seconds Secure & reliable