Hedging Flow is the tool in the family that tries to answer the question traders actually care about: is options-driven hedging pushing the market up or down right now? GEX, VEX and TRACE describe how large the hedging pressure could be (exposure). Hedging Flow estimates how much of it is happening (flow). This guide shows how to read the chart and the findings, how to judge them against price, and what you can and cannot conclude. It needs no mathematics and no knowledge of the Greeks.
It is the companion of Reading the Hedging Picture (GEX / VEX) and Reading TRACE. A section for an AI assistant (§8) uses the real field names the bridge returns.
Read this first. Hedging Flow is the least validated tool of the family. Each trade's direction is inferred from where it printed against the quote, the dealer's hedge is assumed from the standard convention, and no path has been checked against an independent reference. Treat it as a hypothesis about the direction of pressure, not a measurement, and never as a trade signal. The Limitations of the user guide apply to everything below.
Think of a river. GEX and TRACE measure the size of the channel: how much hedging pressure the market could generate if it moved. Hedging Flow measures the current: how much water is actually moving, and in which direction.
The idea is simple. When customers trade options, the dealers on the other side usually hedge by trading the underlying. So a stream of option trades implies a stream of stock buying or selling:
| Customer does | Dealer ends up | Dealer hedges by | Pressure on the underlying |
|---|---|---|---|
| Buys a call | short a call | buying the underlying | up |
| Sells a call | long a call | selling the underlying | down |
| Buys a put | short a put | selling the underlying | down |
| Sells a put | long a put | buying the underlying | up |
The size of each hedge scales with the trade size and with how far in the money the option is. SOAP2 adds these up through the session into cumulative lines. A rising line is net estimated dealer buying; a falling line is net estimated selling. In SOAP2's bridge a positive notional means the dealer buys the underlying.
The flow is only one source of buying and selling. It adds to, or fights, everything else happening in the market. That is why the useful question is not "which way is the flow?" but "is the flow moving price, or is price ignoring it?"
| Item | Plain meaning |
|---|---|
| Total | Net estimated dealer hedging: calls and puts together. Up = net buying, down = net selling. |
| Calls | The part from call trades. Up means customers are net buying calls; down, net selling calls. |
| Puts | The part from put trades. Up means customers are net selling puts (the dealer buys the underlying); down means customers are net buying puts (protection; the dealer sells). It is easy to read this one backwards. |
| Blocks | Large individual prints (trade-tape backtest only). Flat on the live path. |
| Price overlay | The underlying, to compare with the flow. |
The units are dollars in the terms of the symbol shown (a substitute such as SPY has its own dollar scale). The caption under the chart names the data path used.
| Finding | What it is | How SOAP2 decides |
|---|---|---|
| Print finding | A single large trade: time, call or put, strike, size in lots, price, estimated hedge notional, direction (buying or selling), the underlying at that moment, and a note on whether the underlying moved after it. | A print is flagged when it stands out against the session's own distribution of print sizes (no fixed dollar threshold). |
| Drift finding | A gradual, sustained one-way accumulation of many small prints, which a single-print test would miss. At most one episode is shown. | Net change of the Total over a rolling 15-minute window, scored against the session's own range of such changes; flagged at 3 robust standard deviations or more, and only after 10 usable windows (about 30 minutes of history). |
| Lead / lag note | Whether the underlying moved after the flow started (consistent with the flow leading), was already moving and stalled (the flow followed), kept trending (cannot separate cause from continuation) or did not move. | A 5-minute look-before and look-during comparison, with a small "flat" tolerance. |
| "Nothing significant" | No print or drift stood out. The box still says how many points are plotted, over what span, the net flow and why no drift was judged (for example "needs 30 min of history"). | Not a failure: it often means the session is young or quiet. |
Because every test is against the session's own distribution, a finding is "large for today", not "large in absolute terms". On a quiet day a modest print can be flagged; on a busy one it may not.
| Path | What it uses | How much weight |
|---|---|---|
| Live IB (OA toolbar) | Real trade prints on a band of strikes near the money, added the instant they occur, after a seed of the last couple of hours | The most responsive. Limited to the band. The seed classifies direction more crudely than the live portion. |
| Trade-tape backtest (Data Chart menu) | A CBOE trades file you imported, for a past day | Every print on every strike; side still inferred. |
| CDN snapshot (Data Chart menu) | Open-interest change between two fetches | Weakest. Open interest changes once a day on that feed, so this is a same-day-versus-yesterday comparison, not a live read. |
| Calls line | Puts line | Plain reading |
|---|---|---|
| Up | Up | Customers buying calls and selling puts: bullish positioning, dealers buying the underlying on both. |
| Up | Down | Customers buying calls and buying puts: two-way demand (protection plus upside). Net effect depends on sizes; look at the Total. |
| Down | Up | Customers selling both: supply of options (for example yield-seeking). Net effect depends on sizes. |
| Down | Down | Customers selling calls and buying puts: bearish positioning, dealers selling the underlying on both. |
| Total and price | Possible reading |
|---|---|
| Both rising | Agreement: hedging pressure is in the direction of the move. It does not prove the flow caused it. Check the lead/lag note. |
| Total rising, price flat or falling | The estimated buying is being absorbed, or other sellers are bigger, or the classification is off. A divergence worth watching, not a signal. |
| Total falling, price flat or rising | The mirror image. |
| Both flat | No pressure either way. |
| Price moves first, flow follows | The flow looks like a result of the move (dealers re-hedging), not a cause. |
| Flow moves first, price follows | Consistent with flow leading. One instance is not evidence. |
Unlike GEX and TRACE, Hedging Flow does not have a "Previous run" to diff. It is a running series for the session, so the change you read is the change along the line:
Within a session the open interest used by the exposure tools does not change, but trades do. That is exactly why Hedging Flow is the tool to watch intraday while GEX and TRACE hold their picture until the next open-interest update. Read it as the live check on whether the exposure they describe is being acted on.
| GEX / TRACE say | Hedging Flow says | Reading |
|---|---|---|
| Brake regime, strong pin above | Total rising toward the pin | The pull and the flow agree: a stronger case for a drift toward the pin. Still a zone, not a target. |
| Brake regime | Total falling hard, price falling | The brake may be giving way. Watch the Flip and the corridor edges. |
| Accelerator regime (below the Flip) | Total falling, price falling | The accelerating case in action: flow and regime point the same way. |
| Accelerator regime | Total rising, price not following | Flow is fighting the regime and price is not responding. Fragile; the picture may be about to change. |
| Large exposure at a strike (GEX / TRACE) | Large prints at that strike | Fresh activity on an existing wall: the wall is being added to or traded. Check whether the prints are customer buys or sells. |
| Little exposure anywhere near price | Strong flow | Flow without a lever: the pressure may not move price much. |
The most common reading is "not enough data yet". Check the status line and the "why no drift" explanation before drawing any conclusion. Do not mistake silence for neutrality.
A drift finding says a sustained accumulation stood out against today's range. Read the lead/lag note: if price only moved once the flow started, the flow may be leading; if price was already moving, the flow looks like a follower. In both cases wait for confirmation from price.
A single block can dominate the Total. Look at the strike and whether it sits on a GEX or TRACE level. A large print at a wall is more informative than one in empty space. One print is a hypothesis about one participant.
If the Total keeps rising while price does not respond, either the buying is being absorbed or the estimate is wrong. Do not extrapolate; reduce reliance on the flow until price agrees.
Activity changes character: more closing trades, more hedge adjustments. The same trade can mean something different (opening versus closing), and the model cannot tell. Weight the flow less than usual and the exposure tools more.
Invented numbers to show the method. Not a forecast, not a real session.
Live IB path, SPX, 90 minutes of history so far.
| Value | |
|---|---|
| Total, last 90 minutes | −$180 million overall; −$140 million of that in the last 30 minutes |
| Calls line | −$40 million (customers net sellers of calls) |
| Puts line | −$140 million (customers net buyers of puts) |
| Price | 5,010 to 4,995 over the same stretch |
| Findings | Drift finding: −$95 million in 15 minutes, 3.8 robust sigma; "underlying was already moving that way and kept going". One put print: 4,950 put, 1,200 lots, selling pressure. |
There is no dedicated Hedging Flow call. The stored result comes through get_market_read in the
positioning block, field hedging_flow. It is stored only once the tool has completed its seed in
an Options Analysis window in Hedging Flow mode with live data, so it may be absent or from an earlier session.
| Field | Meaning |
|---|---|
summary | The findings box text. |
findings_count | How many flagged prints are stored. |
largest_findings | The largest flagged prints: at (UTC), right (C or P), strike, size in lots, notional (dealer hedge in dollars; positive = dealer buys the underlying, negative = sells). |
cum_total_last | The last value of the cumulative Total, in dollars of the symbol shown. It resets each session. |
drift_findings | The drift episode text, when one was flagged. |
Hint HEDGING_FLOW_NEVER_COMPUTED | No stored result: needs a regular session's option tape. |
The bridge does not return the series (Calls, Puts, price) or a Previous run. Do not describe slopes or a calls/puts split that you cannot see; say what is available.
computed_at and age. If it crossed a session boundary, say it is from an earlier session and that the cumulative total is not today's.cum_total_last sign and size. Judge size only against what the summary says about today, never against an absolute dollar figure.get_cboe_gex, positioning.gex) and the TRACE nodes (get_trace).Data: Hedging Flow for SPX, stored at 15:40 UTC (3 min ago), live IB path, same session.
Direction: cumulative Total −$180 million (estimated dealer selling), most of it in the last 30 minutes.
Findings: drift −$95 million over 15 minutes (3.8 robust sigma; the underlying was already moving that way and kept going). Largest print: 4,950 put, 1,200 lots, selling pressure, 14:52 UTC.
Against levels: the 4,950 print is 45 points below spot; compare with the GEX Flip (4,968) and the TRACE node at 4,900.
Reading (derived): sustained put-driven hedging pressure accompanying a drift lower; the flow looks like a continuation rather than a lead. Invalidation: the Total reversing back through its recent range.
Caveats: trade sides are inferred, dealer hedging is assumed, only a band of strikes is tracked, and the tool is unvalidated; this is not a recommendation.
Go back to the main help page: SOAP2 Help Guide