Trade Signals

Get Tape Flow Bias Signal

Signed option-tape premium imbalance — continuous order-flow bias.

Answers: right now, is the tape aggressively buying calls and selling puts (bullish) or the reverse (bearish)? The ingestion layer Lee-Ready-classifies every print into buy_premium / sell_premium; this signal nets them and scores the per-side imbalance. Unlike smart_money (discrete "large premium" events), this watches the continuous tape — gives an earlier read on directional conviction.

Logic highlights (src/signals/basic/tape_flow_bias.py):

  • call_net = call_buy_premium − call_sell_premium (aggressor side).
  • put_net = put_buy_premium − put_sell_premium.
  • directional = call_net − put_net (call buying = bullish; put buying = bearish).
  • ratio = directional / (|call_net| + |put_net|) in [-1, +1].
  • score = clip(ratio / SIGNAL_TAPE_FLOW_SATURATION, [-1, 1]) (default saturation 0.6).
  • Abstains (score=0) if |call_net| + |put_net| < SIGNAL_TAPE_FLOW_MIN_PREMIUM (default $250K). Treat abstention as "no data," not neutral conviction.

Params:

  • symbol (default SPY). Returns 404 if no row exists yet.

Returns:

{
  "underlying": "SPY",
  "timestamp": "2026-04-22T18:55:00Z",
  "clamped_score": 0.28, "score": 28.0, "direction": "bullish",
  "weighted_score": 0.0, "weight": 0.0,
  "call_net_premium": 312000.0,
  "put_net_premium": -85000.0,
  "source": "flow_by_type",
  "context_values": {
    "call_net_premium": 312000.0, "put_net_premium": -85000.0,
    "call_buy_premium": 450000.0, "call_sell_premium": 138000.0,
    "put_buy_premium": 120000.0, "put_sell_premium": 205000.0,
    "source": "flow_by_type"
  },
  "score_history": [{"score": 12.4, "timestamp": "..."}, "...up to 90"]
}
  • score / clamped_score — [-100, +100] / [-1, +1]. + = calls bought / puts sold.
  • direction — "bullish" | "bearish" | "neutral" (sign of score).
  • call_net_premium / put_net_premium — USD, signed. + = net aggressor buying.
  • source — "flow_by_type" (data present) | "unavailable" (abstained).
  • context_values — the four per-side premium totals plus source.
  • score_history — up to 90 recent {score, timestamp} points, newest→oldest.

Trader interpretation.

  • score > +50 with flat price → early bullish accumulation; potential breakout.
  • score < −50 with flat price → early distribution; watch for breakdown.
  • Score sign-flips while price keeps trending → exhaustion warning.
  • Score ≈ 0 during market hours with source="unavailable" → thin tape, not neutral.

Page design. Horizontal bidirectional bar (−100 → +100) with center needle, green right / red left. Below: stacked bar of the four premium components so the trader sees which side drives the imbalance. Sparkline of score_history (90 pts) beneath. Footer chip shows source.

get/api/signals/basic/tape-flow-bias

Request

  • Base URL: https://api.zerogex.io (the document declares no server; this is the origin it was published from)
  • URL: https://api.zerogex.io/api/signals/basic/tape-flow-bias
  • Auth: HTTP bearer

Query parameters

symbolstring

Response

Successful Response

unknown required

Changes

No recorded changes to this operation across all 1 revision of this API.