Dealer Premium API - Net Dealer Premium Roll-up - FlashAlpha Lab API
Lab API Dealer Premium

Dealer Premium API

Full-tape Net Dealer Premium roll-up over a configurable window, summing each side of the customer-flow tape weighted by VWAP per minute bucket.

Endpoint

GET /v1/flow/options/{symbol}/dealer-premium
Auth required (X-Api-Key) Rate Limited: Yes Alpha plan+

Parameters

Name In Required Default Description
symbol path yes - Underlying symbol
windowMinutes query no 240 Clamped to [1, 10080]
expiry query no all Filter to a single expiry, yyyy-MM-dd
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/flow/options/SPY/dealer-premium?windowMinutes=240"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/flow/options/SPY/dealer-premium",
    headers={"X-Api-Key": "YOUR_API_KEY"},
    params={"windowMinutes": 240}
)
data = resp.json()
print(f"Net dealer premium: {data['net_dealer_premium']:,.0f}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/flow/options/SPY/dealer-premium?windowMinutes=240",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("Net dealer premium: " + data.net_dealer_premium.toLocaleString());

Response

{
  "symbol": "SPY",
  "as_of": "2026-05-30T15:30:00Z",
  "window_minutes": 240,
  "expiry": null,
  "dealer_buy_premium": 12450000.0,
  "dealer_write_premium": 18200000.0,
  "net_dealer_premium": -5750000.0,
  "total_premium": 30650000.0,
  "trade_count": 18420,
  "bucket_count": 240
}

Key Response Fields

Field Description
dealer_buy_premiumΣ (sellVolume × vwap × 100) across minute buckets - dealer is the BUYER when customer hits the bid.
dealer_write_premiumΣ (buyVolume × vwap × 100) - dealer is the WRITER when customer lifts the ask.
net_dealer_premiumdealer_buy_premium − dealer_write_premium. Positive ⇒ dealers net long premium in the window.
total_premiumdealer_buy_premium + dealer_write_premium - total directional premium traded (excludes mid prints).
trade_countSum of tradeCount across buckets.
bucket_countNumber of minute buckets that fed the aggregate.

Errors

Status Description
400 invalid_expiryBad expiry format.
502 upstream_unavailableFlow ingest didn't respond.
502 upstream_invalidFlow ingest response couldn't be parsed.

About

Net Dealer Premium aggregates the full customer-flow tape over a configurable window, weighting each side by per-minute VWAP. Dealer-buy premium accrues when customers hit the bid; dealer-write premium accrues when customers lift the ask. The signed difference, net_dealer_premium, indicates whether dealers are net long or net short premium across the window.

This is distinct from /v1/flow/signals/{symbol}/summary, which only rolls up block-sized signal prints. Per-bucket premium uses the bucket's VWAP, a minute-resolution approximation; for trade-by-trade exact premium, drive from /v1/flow/options/{symbol}/recent.

Common Use Cases

  • Read the sign of net_dealer_premium - positive flags dealers net long premium (likely to dampen moves), negative flags dealers net short (likely to chase), driving whether you fade or follow the tape
  • Compare dealer_buy_premium versus dealer_write_premium to see which side of customer flow dominates and infer the dealer hedging bias that will hit the underlying
  • Track intraday shifts by re-polling with a rolling windowMinutes - a flip in net_dealer_premium through zero marks a regime change to act on
  • Isolate a single expiry to study dealer positioning around a key date such as an earnings or OPEX print
  • Rank flow intensity across names by total_premium to focus attention on the symbols with the most directional dealer activity
  • Sanity-check coverage with bucket_count and trade_count - thin buckets mean the aggregate is noisy and the read should be discounted

Related reading

Complementary endpoints

Ready to build?

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