SOAP2Docs ← Website
SOAP2 top banner

Reading the Volatility Backdrop: A Trader's Field Guide

Before reading dealer positioning (GEX, TRACE) or the shape of skew, it helps to know the volatility backdrop: how uncertain the market is, how far it expects prices to travel, when it expects the trouble, and whether volatility is cheap or dear compared with its own history. This guide covers the tools that answer those questions: the ATM IV term structure, the VIX term structure, the expected move, the IV rank and percentile in the distribution statistics, and the volatility surface. It needs no mathematics and no knowledge of the Greeks.

It sits upstream of Reading Skew and Term Structure and Reading the Hedging Picture (GEX / VEX). A section for an AI assistant (§8) uses the real field names of the get_market_read call and the on-demand VIX forward curve.

Read this first. Volatility is the price of uncertainty. It is not a forecast of direction, and "high" or "low" is always relative: to the symbol's own past, to the calendar, to other expiries. SOAP2 reports facts with no verdicts; the judgement is yours. Nothing here is a trade signal.


1. Why start with volatility

Every other tool in the family is sized by volatility. The strikes GEX cares about, the corridor TRACE shows, the wings skew prices: all scale with how uncertain the market is. Read volatility first and you know the size of the stage before looking at the actors.

Three questions cover it:

  1. How big? The overall level (ATM IV, or the VIX for the S&P 500), and the range it implies for a day or until an expiry.
  2. When? Which expiries carry the uncertainty: the term structure of ATM IV, and the VIX futures curve.
  3. Compared with what? Rank and percentile against the symbol's own history, and against recent days.

2. The vocabulary

Names in code are those returned by get_market_read (block vol and block expected_move). IVs are decimals (0.152 = 15.2%).

OutputPlain meaning
ATM IV term (vol.atm_iv_term)The ATM implied volatility of every expiry the option analysis has: expiry, days to expiry (dte), atm_iv, the ATM strike, and whether it is a monthly. The shape across expiries is the term structure.
Contango / backwardationFar expiries above near ones is contango (normal, calm). Near above far is backwardation (stress, or an event close). A bump at one expiry is an event premium.
VIX term (vol.vix_term)The VIX index (spot), plus VX/VXM futures when SOAP2 has them (futures: contract, expiry, days, price). m1m2_spread = second future minus first, in points (positive = rising front of the curve). spot_m1_spread = first future minus spot. m1m2_spread_pct is the first as a fraction of the first future.
Expected move (block expected_move)The range the ATM IV implies. one_day_move = spot × ATM IV ÷ 16. to_expiry_move = one-day move × √(trading days to expiry). move_range is spot minus and plus that move. The method is named in the block.
IV rank and percentile (vol.stat_calcs: iv_rank_total, iv_pct_total, iv_rank100, iv_pct100)Where today's IV sits in its own history: rank is its position between the history's low and high; percentile is, in the usual definition, the share of past days on which IV was lower. "Total" is the whole history, "100" the last 100 days.
Distribution statistics (vol.stat_calcs)Skewness and kurtosis of returns (skew_total, kurt_total, and the 100-day versions), correlation, annualised return and volatility, and 95% value-at-risk and expected shortfall. They describe how returns have been distributed, to compare with what options price.
Volatility surface (vol.vol_surface)A fitted surface of IV across strikes and expiries (degree of the polynomial, rmse and r_squared of the fit). It tells you how well the surface describes the market, not what the market will do. The Risk Graph can price with it ("Use VolSurface").
Skew and regimesHSkew, VSkew, Sticky Skew and Dispersion also sit in this block. See the skew guide and the Sticky Skew and Dispersion pages.

A note on the expected move. The market read, the Risk Graph's 1-sigma line and the skew call's wing distances all use one convention: spot × ATM IV ÷ 16 per trading day, scaled by √trading days. The one exception is the trade-probabilities call, whose sigma is that of the distribution its odds are computed from (ATM IV × √(days ÷ 360)), so it differs a little; say which you quote.


3. The five-step reading routine

Step 1: Freshness and coverage

Step 2: Level and range

  1. Read ATM IV (or the VIX) and its rank and percentile: high or low for this market?
  2. Convert to a range with expected_move: one_day_move and to_expiry_move for the expiry you trade. This is the stage size.
  3. Ask whether the range is consistent with what has actually been happening. If realised moves have been much smaller or larger than the one-day move, the market is pricing something different from what it is delivering.

Step 3: Term structure

Step 4: The VIX curve

Step 5: Context and invalidation


4. Reading change

The stored volatility items are mostly updating series, not Latest-versus-Previous pairs, so the change you read is the change over time and against history:

You seePossible reading
ATM IV up, front end up more than the backA near-term fear or event premium is building. Backwardation is approaching if it continues.
ATM IV down, front end down mostEvent or stress premium leaving: the post-event "volatility crush".
Whole curve shifts up in parallelA general rise in uncertainty, not tied to a date.
VIX up with the futures not followingA short-lived spike: the curve is pricing a return to normal.
VIX curve flips from contango to backwardationStress. The state of the market has changed, not just its level.
Rank or percentile high while realised moves are smallThe market pays for uncertainty that has not appeared. Why: an event ahead, or a hedging bid.

Within a session, wait for confirmation: an IV change of a few tenths of a point is often noise, especially in thinly quoted expiries.


5. Turning volatility into ranges

The expected move is the most practical output of this page.

Use the range as a scenario frame:


6. Five situations

A. Quiet contango, low rank

Normal and calm. Ranges are narrow. The risk is complacency: what is not priced. Check the calendar.

B. Event ahead, bump in the front

The curve has a hump at the expiry that spans the date. Premium sellers are paid for the event, and the premium leaves quickly afterwards. Compare the size of the bump with the move you consider plausible.

C. Stress: backwardation

Near IV above far IV, VIX above its futures. The market is paying for uncertainty now. Expect wide ranges and fast conditions; verify with skew (put side) and GEX (accelerator regime).

D. After the event

IV falls, curve normalises, rank drops. The directional effect, if any, is the vanna story in the theory primer. Compare with the pre-event level to see how much premium has left.

E. High rank, calm realised moves

The market is pricing more uncertainty than it is delivering. Possible reasons: an event on the horizon, a hedging bid, or a regime that has not caught up. A mismatch is a question to ask, not a signal.


7. A worked example (illustrative numbers)

Invented numbers to show the method. Not a forecast, not a real session.

Value
SPX spot5,000
ATM IV by expiry1 day 14.0%, 7 days 16.5%, 30 days 17.0%, 90 days 18.5%
VIX / futuresVIX 16.0; first future 17.2; second future 18.0
IV rank / percentile (100 days)0.35 / 0.40
Annualised realised volatility11%
  1. Level. ATM IV 16.5% at one week; rank 0.35: moderate, below the middle of its recent range.
  2. Range. One-day move: 5,000 × 0.165 ÷ 16 ≈ 52 points. To a one-week expiry (5 trading days): 52 × √5 ≈ 116 points, a band of about 4,884 to 5,116.
  3. Term. ATM IV rises from 14.0% at one day to 18.5% at 90 days: clean contango; the same-day point is lower because it is a very short horizon.
  4. VIX. The first future (17.2) is above the index (16.0), the second (18.0) above the first: contango.
  5. Against reality. Realised volatility is 11% against 16.5% implied: the market is pricing more movement than it has been delivering. Not unusual; it is the normal volatility premium.
  6. Reading (derived). "A calm, normal backdrop: moderate IV, clean contango in both ATM IV and the VIX curve, implied volatility above realised. For the week, the market prices roughly a ±116-point band. Invalidation: the front end lifting above the back, or the VIX moving above its first future."

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

Which call for which question

QuestionCallNotes
The overall backdrop (level, term, expected move, rank)get_market_read (blocks vol and expected_move; optional symbol)Stored items, each with its own age. Hints say what to open when something is missing.
The VIX forward curve without VIX futures in the watchlistrun_analysis with name="vix_term_structure"Needs SOAP2 running; own in-flight gate (already_running); stored source plus on-demand forwards.
A broad statistical briefingrun_analysis with name="comprehensive" (size 250, 500 or 1000; bar_size daily or hourly)Large payload: tell the user it uses significant AI credits and context. Daily or hourly, never both.
Skew detailget_skew_readSee the skew guide.

The answering routine

  1. Plain primer, if needed: implied volatility is the uncertainty an option price implies; term structure shows when; the expected move turns it into a range.
  2. Freshness of each item you use (age, crossed_session), and any hint such as VIX_TERM_NEVER_COMPUTED or ATM_TERM_NEVER_COMPUTED.
  3. Level and range: atm_iv for the expiry in question, one_day_move, to_expiry_move and move_range; state the method and the spot_source.
  4. Term: describe contango, backwardation or an event bump from atm_iv_term points. Do not infer a shape from one point.
  5. VIX curve: spot_m1_spread and m1m2_spread with their signs (first future minus spot; second minus first).
  6. History: rank and percentile from stat_calcs, and say which window (total or last 100 days).
  7. Derived reading, labelled as derived, with an invalidation; no trade recommendation.

Rules that must not be broken

A response template

Data: SPX, ATM IV term stored at 15:40 UTC (3 min ago); VIX term at 15:40; spot 5,000 (live).
Level and range: ATM IV 16.5% at 7 days; rank 0.35 over 100 days. One-day move ≈ 52 points; to expiry ≈ 116 points, a band of 4,884 to 5,116 (ATM IV ÷ 16 per trading day, scaled by the square root of 5 trading days).
Term: contango from 14.0% at one day to 18.5% at 90 days.
VIX curve: index 16.0, first future +1.2, second +0.8 over the first: contango.
Against realised: annualised realised volatility 11%.
Reading (derived): a calm, normal backdrop. Invalidation: the front end rising above the back, or the VIX above its first future.
Caveats: implied volatility is a price, not a forecast; ranges are pricing statements; stored items have their own ages.

9. What you cannot conclude


10. One-page checklist

  1. Each item fresh? Spot source stated?
  2. Level and rank: high or low relative to what?
  3. Range for the horizon you trade (and which convention).
  4. Term: contango, backwardation, or an event bump? Where?
  5. VIX curve: signs of the spreads; derived forwards flagged as a proxy.
  6. Implied versus realised.
  7. Calendar and cross-checks with skew and GEX. Write the invalidation.

Related


Go back to the main help page: SOAP2 Help Guide

⬅ Back