Flow Alerts
Flow alerts are rule based aggregations on the full tape of option trades.
While there are quite a few different rules and alerts the most used one is the repeated hit family: RepeatedHits, RepeatedHitsAscendingFill, RepeatedHitsDescendingFill
Each of those represent an alert when there have been multiple transactions on the same option contract within a few milliseconds. This can be mean that a single order is being matched across multiple other orders and creating multiple transactions. It can also just mean that there are multiple buyers/sellers at the same time.
Trades usually use the repeated hits with other data points to form a picture on whether there is some urgency in entering/exiting a position in a contract/ticker.
The full current options tape including trades that do not form a RepeatedHits alert can be accessed through the Option Trades endpoint.
For CBOE index tickers such as SPX or VIX the index price is returned as null and the row is marked missing_periscope. If the request filters with min_underlying_price, max_underlying_price, min_stock_price, max_stock_price, min_diff, max_diff, min_implied_move, max_implied_move, min_return_on_capital, max_return_on_capital, min_return_on_capital_perc or max_return_on_capital_perc, rows for these index tickers are left out of the response. CBOE index prices require provisioned access and CBOE approval. Contact [email protected], [email protected] or [email protected] to request access.
The difference between the 3 repeated hits alerts are:
- DescendingFill: Each transaction that comes after another in chronological order has either the same fill price as or a lower fill price than the previous transaction. The last transaction must be lower than the first transaction.
- AscendingFill: The opposite of DescendingFill. The fill prices increase instead of decreasing.
- RepeatedHits (neither ascending nor descending): When it does not fit into one of the first two categories.
To express ascending and descending in a mathmatical notion. Let p₁, p₂, …, pₙ be the fill prices of n transactions ordered chronologically:
- DescendingFill: pᵢ ≥ pᵢ₊₁ for all i ∈ [1, n−1], and pₙ < p₁.
- AscendingFill: pᵢ ≤ pᵢ₊₁ for all i ∈ [1, n−1], and pₙ > p₁.
For the individual flow alert rules and how the aggregation is based on you can checkout out https://unusualwhales.com/option-flow-alerts/rules.
For any given flow alert you can take a look at the individual trades that are making up the alert by taking the alert’s id and use https://api.unusualwhales.com/docs/operations/PublicApi.OptionTradeController.flow_alert to retrieve the individual transactions.
For real time streaming of flow alerts, subscribe to the flow-alerts websocket channel, see https://api.unusualwhales.com/docs/websocket/flow-alerts.
Without newer_than, the endpoint returns alerts from the 7 days before older_than (default: now).
Authorizations
Query Parameters
Convenience preset for "unusual" flow, matching the live options flow default criteria: volume>OI, size>OI, all-opening, OTM, single-leg, DTE≤60, ask-side≥50%, premium≥$10k, size≥5, issue types ADR/Common Stock/ETF. Applied as defaults, so any of those filters you pass explicitly (e.g. min_ask_perc=0.9, max_dte=40) overrides the preset.
The minimum premium on that alert. Min: 0.
x >= 012500.5
The maximum premium on that alert. Min: 0.
x >= 012500.5
Boolean flag whether all transactions are opening transactions based on OI, Size & Volume. Since Flow Alerts with rule_name values of RepeatedHits, RepeatedHitsAscendingFill, and RepeatedHitsDescendingFill are composed of many individual transactions, it is extremely unlikely that the all_opening value will be true, so if you are interested in these Flow Alerts you should not set this query param to true.
true
The minimum ratio of contract volume to contract open interest. If the open interest of a contract is zero, then this ratio is evaluated as if the open interest of the contract was one (to avoid divide by zero errors). For example, if you set this ratio to 10, then a contract with zero open interest and 7 volume will NOT be included in your results.
x >= 00.32
The maximum ratio of contract volume to contract open interest. If the open interest of a contract is zero, then this ratio is evaluated as if the open interest of the contract was one (to avoid divide by zero errors). For example, if you set this ratio to 50, then a contract with zero open interest and 75 volume will NOT be included in your results.
x >= 01.58
Minimum value of (contract_expiry_date - underlying_next_earnings_date) in days. Negative = contract expires BEFORE earnings; zero = same day; positive = AFTER earnings. Use together with max_days_between_expiry_and_earnings to target a window around the next earnings announcement. Examples: to exclude contracts that expire after the next earnings, set max_days_between_expiry_and_earnings=-1. To target contracts that expire the same week as (and after) earnings, set min_days_between_expiry_and_earnings=1&max_days_between_expiry_and_earnings=6. Contracts whose underlying has no known next earnings date are excluded whenever this filter is used.
1
Maximum value of (contract_expiry_date - underlying_next_earnings_date) in days. Negative = contract expires BEFORE earnings; zero = same day; positive = AFTER earnings. Use together with min_days_between_expiry_and_earnings to target a window around the next earnings announcement. Examples: to exclude contracts that expire after the next earnings, set max_days_between_expiry_and_earnings=-1. To target contracts that expire the same week as (and after) earnings, set min_days_between_expiry_and_earnings=1&max_days_between_expiry_and_earnings=6. Contracts whose underlying has no known next earnings date are excluded whenever this filter is used.
6
Response
Representation of a flow alert.
