SOAP2Docs ← Website
SOAP2 top banner

Reading TRACE: A Trader's Field Guide

TRACE draws a heatmap of estimated dealer hedging pressure across strikes and time. This guide shows how to turn that picture into a view: where positioning is likely to build, which levels may act as pins or as accelerators as expiry approaches, and what changed since the previous run. It needs no mathematics and no knowledge of the Greeks. It is the companion of Reading the Hedging Picture (GEX / VEX): read that one first if you have not, because TRACE reuses its ideas.

Like the GEX guide, it has a section for an AI assistant answering through the SOAP2 bridge (§8), using the real field names of the get_trace call.

Read this first. TRACE rests on the same assumption as GEX: that dealers are positioned the way open interest and the standard convention suggest, and hedge accordingly. SOAP2 cannot see their books. TRACE adds a second assumption of its own: it answers "what would the picture look like closer to expiry if positions stayed as they are". Positions do change. Treat what you read as zones where a hedging effect is plausible, not barriers and not predictions. Nothing here is a trade signal.


1. What TRACE adds to GEX

GEX answers: "how strongly would dealers lean with or against a move, right now, strike by strike?" TRACE answers: "how would that same positioning express itself as the days run down to expiry?"

The reason this matters: the hedging effect of an option grows sharply as expiry approaches, and it is strongest at strikes near the market. A strike that looks modest today can dominate on expiry day. TRACE shows that build-up before it happens, as one picture:

Two features of the picture to remember:


2. The vocabulary

Names in code are those the AI bridge returns (get_trace, block trace, field digest).

OutputPlain meaningTrader's question it answers
Sign at spot (sign_at_spot)Whether call-side (positive) or put-side (negative) pressure dominates at the strike nearest the current price, for that day.Which way does the local regime lean?
Net near spot (net_near_spot_bn)Total net pressure within 1% of the price on either side. Sign and size.How strong is the local lean?
Share near spot (share_of_abs_heat_near_spot)What share of all the pressure (ignoring sign) lies within 1% of the price. A high share means the action is close; a low share means it is spread out or far away.Is the pressure concentrated around me, or elsewhere?
Zero-cross below / above (zero_cross_below_spot, zero_cross_above_spot)The nearest strikes on each side of the price where the net sign changes.How wide is the corridor of this regime around me?
Flip level (flip_level, flip_from_spot, flip_from_spot_em1d)The single sign change nearest the price, on either side (ties go below), with its distance in points and in one-day expected moves. One number per day to track.Where is the regime boundary, and is it moving toward or away from me as the days pass?
Expected move (atm_iv, expected_move_1d, and the _em1d distances)One day of typical movement in points (price × ATM implied vol ÷ 16, the same convention as the expected move elsewhere in SOAP2). Every node and the flip level also carry their distance in these units (from_spot_em1d): 0.5 is close, 1 is about a day away, 3 or more is far. Present only when the run knew its ATM IV. A yardstick, not a probability.Is that node near or far, in terms of how far the market usually moves?
Positive / negative nodes (positive_nodes, negative_nodes)Up to three local peaks of each sign, each at least a quarter of the day's largest. Each has a strike, a size (bn) and the distance from price in points and percent.Where are the pin candidates (positive) and acceleration zones (negative)?
Peak positive / peak negative (peak_positive, peak_negative)The single strongest node of each sign that day.What is the dominant pin or accelerator?
Snapshots (snapshots, day)The digest describes the first day ("now"), the last, and up to two in between.How does the picture evolve?
Migration (migration)How the peaks move from the first to the last snapshot: strike shift and size change, and the change in net pressure near the price.Does the pin strengthen or weaken, and does it move toward or away from price?
Change since previous (change, first_day)For the first day: peak strike shifts, size changes, net-near-spot change, sign before and after, shift of the zero-crossings, plus changes_in_evidence.What moved since the last run, and is the comparison fair?

Index points, not futures points. Levels are for the cash index. If you trade futures, add the current futures-to-cash difference.


3. The five-step reading routine

Step 1: Which TRACE is it, and is it fresh?

There are two different datasets, and they must never be mixed or compared with each other:

Live IB TRACE (in an OA window)CDN TRACE (Data Chart menu)
DataYour IB feed, live open interestCBOE's delayed whole-chain snapshot, previous-session open interest, static for the day
Window per expiry± a number of standard deviations of that expiry's own expected moveA flat percentage of price for every expiry
Which expiriesOnly those within Max DTE (and Max expiries)Every expiry in the chain; a contract counts in every swept day up to its own expiry
SymbolsSPX, RUTSPX, RUT, NDX

Judge CDN freshness by data_as_of (the newest trade inside the file), not by the file stamp. For the live version, the result is as current as the streaming that built it at computed_at.

Step 2: Is the local regime clear?

  1. Read sign_at_spot for the first day and net_near_spot_bn.
  2. Read the two zero-crossings: the nearest sign changes below and above the price. Their distance tells you how wide the corridor around you is. A tight corridor means a small move changes the regime; a wide one means you have room.
  3. Compare with GEX's Flip level. They are two views of the same idea and should broadly agree (see §5).

Step 3: Find the nodes

List the positive and negative nodes on the first day with their distance from price. As in the GEX guide, the role of each depends on the regime: a positive node is a pin or magnet candidate in a brake regime; a negative node is a zone where moves can speed up. A single dominant node matters more than a flat cluster.

Step 4: Watch the build over days

This is what only TRACE shows. Compare the first and last snapshots (migration):

You seePossible reading
Peak positive node grows from the first to the last day, staying at about the same strikeA pin that intensifies into expiry: the level matters more the closer you get.
Peak node grows and its strike moves toward price (peak_positive_strike_shift toward spot)The pin is converging on the market. Expect more pull.
Peak node moves away from price over the daysThe pressure ends up somewhere else: today's nearby node is a today-only phenomenon.
Net pressure near price (net_near_spot_bn_change) grows more positiveThe brake builds around the market. Expect a calmer approach to expiry, if positions hold.
Net pressure near price turns negative toward the last dayAn accelerator builds near the market as expiry nears. Expect a more fragile approach.
Share near spot rises across the daysThe action gathers around the price.
Little change across the daysNo big build-up: today's picture is roughly the picture to expiry.

Remember that later columns are hypothetical: they assume the same open interest, the same volatilities and the same price. Positions will change, so the further right you look, the more it is a sketch.

Step 5: Add context and write down what would change your mind


4. Reading the change since the previous run

Each dataset keeps a Latest and a Previous run. Previous is only kept when it is a distinct earlier run, 30 or more minutes before the latest. The comparison is always between runs of the same dataset; the response never diffs live IB against CDN.

Mechanical versus positioning change

As with GEX, open interest updates once per session. So:

Patterns for the first day

You seePossible readingCheck
peak_positive_strike_shift non-zeroThe dominant pin moved. If it is the same expiry set, a roll of the strongest strike, or the price changed enough to re-weight it.Same session? Same settings?
peak_positive_bn_change upThe pin got stronger (in TRACE units).Closer to expiry raises it mechanically; look at elapsed_s.
peak_negative_* changesThe same for the accelerator zone.Same.
net_near_spot_bn_change positiveMore brake near the price.Did the price move toward a positive node?
sign_at_spot_before differs from sign_at_spot_nowThe local regime flipped. This is also added to changes_in_evidence.Did the price just cross a zero-crossing? Then it is the corridor edge being crossed.
zero_cross_below_shift / zero_cross_above_shiftThe corridor edges moved. A shift of the lower edge upward, with the price flat, means the cushion below is shrinking.Compare with spot_change.

Rule of thumb: decompose any change into price moved (spot_change), time and volatility (same session) and positions changed (new session).


5. Using TRACE and GEX together

GEX is the sharp picture of today; TRACE is the soft picture of how it develops. Use GEX for the regime and the Flip, TRACE for the build-up and for which levels will matter later.

GEX saysTRACE saysReading
Brake regime, comfortable cushionPositive node near price grows over the daysStrong case for a pinned approach to expiry; fade excursions toward the node, with the usual caveats.
Brake regime, comfortable cushionNegative node builds close below price toward expiryThe cushion is real today but the picture deteriorates into expiry. Be careful with long-dated assumptions of calm.
Price near the FlipCorridor tight (zero-crossings close on both sides)The regime is fragile at every horizon. Wait for a decisive move, or trade the edge with explicit invalidation.
Accelerator regimePositive node a short distance beyond price, growingA possible stopping point for a move, getting stronger with time. A target to test, not to assume.
GEX and TRACE disagree (different sign at price)Check the datasets: GEX from IB versus TRACE from CBOE, or different expiries? A disagreement is a reason to look at the inputs before choosing a view.

6. Four situations

A. Early in an expiry week, looking at Friday

The question is which level will matter by Friday. Compare the first column with the last: a node that grows and stays near price is your pin candidate; one that fades is today-only. Revisit each day, because open interest rolls overnight.

B. Expiry day (0DTE)

Almost all the pressure sits in the first columns and close to price. Read share_of_abs_heat_near_spot and the first-day nodes. TRACE adds little beyond GEX here; use it to check whether nearby later-dated pressure backs up or fights the same-day levels.

C. Corridor trading

If the two zero-crossings bracket price closely and the net near price is small, you are in a narrow band between regimes. Expect behaviour to change quickly on a break of either edge, and treat the edges as triggers.

D. After an expiry (the reset)

A large part of the exposure disappears at once. The next session's TRACE can look very different (same_session false), and a node that mattered yesterday may be gone. Do not read that as a change of mind by the market; it is expiry removing the contracts.


7. A worked example (illustrative numbers)

Made-up numbers to show the method. Not a forecast, not a real session.

CDN TRACE, SPX, price 5,000, run at 15:30 UTC; Previous run 60 minutes earlier, same CBOE snapshot.

Day 0 (now)Last day (+4)
Sign at spotpositivepositive
Net near spot+6.0+11.5
Peak positive node5,050, +9.0 (+50 pts, +1.0%)5,040, +14.0
Peak negative node4,900, −5.04,900, −3.5
Zero-cross below / above4,960 / none4,950 / none
  1. Dataset and freshness. CDN, SPX; judge by data_as_of. The two runs share a CBOE snapshot, so any difference is price or settings, not new positioning.
  2. Local regime. Positive at price, with the sign change 40 points below at 4,960. Corridor: from 4,960 upward with no change above. Net near price is +6.0.
  3. Nodes. Pin candidate at 5,050 (50 points above); accelerator zone at 4,900, below the corridor's lower edge.
  4. Build. By the last day the positive node is stronger (+9.0 to +14.0), a little closer to price (5,050 to 5,040), and the near-price total almost doubles. The negative node weakens. If positions hold, the pin strengthens into expiry.
  5. Reading (derived). "Positive local regime with a pin that builds toward 5,040–5,050 and a thinning accelerator zone at 4,900. The lower corridor edge is 4,960 (moving to 4,950 by the last day). Acceptance below it would put price in the negative zone and make 4,900 the next relevant level."
  6. Levels. Trigger 4,960; pin/fade target 5,040–5,050; downside zone 4,900; invalidation: acceptance below 4,960, or the 5,050 node weakening at the next open-interest roll.

8. For the AI assistant: how to answer from get_trace

The call is get_trace with symbol (SPX | RUT | NDX, default SPX), source (auto | ib | cdn, default auto) and refresh (default true; for the CDN dataset it downloads a fresh CBOE snapshot and recomputes). Premium (or trial) and the AI bridge are required; a denied call answers NOT_LICENSED.

The answering routine

  1. Say which dataset. Read the TRACE_SOURCE notice and source. In auto, the live IB result is chosen only if one is stored from this session, is under two hours old and IB is connected; otherwise CDN. The reason is in the notice.
  2. Freshness. CDN: data_as_of and its age, cboe_timestamp, spot_source. IB: computed_at and age. Report fetch problems (TRACE_FETCH_FAILED, TRACE_REFRESH_BUSY) and say that the stored state is not fresh.
  3. Local regime from the first snapshot of digest.snapshots: sign_at_spot, net_near_spot_bn, share_of_abs_heat_near_spot, the two zero-crossings.
  4. Flip level: flip_level and its distance (flip_from_spot, flip_from_spot_em1d) on each snapshot, and whether it moves toward or away from the price over the days.
  5. Nodes: positive_nodes and negative_nodes with from_spot and, when present, from_spot_em1d (distance in one-day expected moves: say "about 1.8 days of typical movement away", not just points). Give each node's role in the current regime, not a fixed support/resistance label.
  6. Build: digest.migration and the later snapshots. State the horizon (from_day to to_day) and that later days are hypothetical.
  7. Change: only with elapsed_s, same_session and every changes_in_evidence item. Decompose into price, time/volatility and (new session only) positioning.
  8. Derived reading, labelled as derived: trigger, pin/accelerator zones, invalidation.
  9. Caveats: assumed dealer positioning, positions held fixed across the days, delayed data (CDN), zones not lines, no recommendation.

Rules that must not be broken

A response template

Data: CDN TRACE, SPX, data as of 15:44 UTC (age 2 min), spot 5,000 (watchlist price). Chosen automatically: no live IB TRACE stored.
Local regime: positive at the price; net near price +6.0 (TRACE units); lower sign change at 4,960, none above.
Nodes: positive node around 5,050 (+50 pts); negative node around 4,900 (−100 pts).
Build to the last swept day (+4): the positive node strengthens (+9.0 to +14.0) and moves a little toward price (5,040); net near price rises to +11.5. Assuming positions are unchanged.
Change vs previous (60 min, same session, same CBOE snapshot): no new market data; differences are price only.
Reading (derived): pin strengthening into expiry around 5,040–5,050; trigger 4,960; downside zone 4,900; invalidation: acceptance below 4,960 or the node weakening at the next roll.
Caveats: positions assumed, held fixed over the swept days, delayed data, units not dollars, no recommendation.

9. What you cannot conclude


10. One-page checklist

  1. Which dataset (live IB or CDN)? Fresh by data_as_of or computed_at?
  2. Local regime: sign at price, net near price, the corridor between the zero-crossings.
  3. Nodes: pin candidates (positive) and accelerator zones (negative), as zones.
  4. Build: do the peaks strengthen, converge on price or drift away over the days?
  5. Change: same session? Same settings? Price, time/volatility, or positioning?
  6. Cross-check with GEX (Flip), Hedging Flow and your own breakevens.
  7. Write trigger, target and invalidation. Remember that the right-hand columns assume nothing changes.

Related


Go back to the main help page: SOAP2 Help Guide

⬅ Back