SOAP2Docs ← Website
SOAP2 top banner

Reading Skew and Term Structure: A Trader's Field Guide

Option prices contain the market's view of how uncertain the future is, which direction it fears, and when it expects trouble. SOAP2's VSkew (across strikes, one expiry) and HSkew (across expiries) tabs measure these. This guide shows how to read them, how to tell what changed since the previous run, and how to turn them into ranges and scenarios. It needs no mathematics and no knowledge of the Greeks.

For the definitions behind RR25 and BF25, the user-level page is OA Risk Reversal & Skew. This page is the practical companion, in the same family as Reading the Hedging Picture (GEX / VEX). A section for an AI assistant (§8) uses the real field names of the get_skew_read call.

Read this first. Skew describes how options are priced, which reflects demand for protection and upside as well as expectations. It is not a forecast, and a "steep" or "flat" skew has no fixed threshold. SOAP2 reports facts and sign words; judging whether a change is meaningful is yours. Nothing here is a trade signal.


1. The four dials

Every option has an implied volatility (IV): the uncertainty its price implies, quoted as an annual percentage. Different strikes and expiries carry different IVs. Four simple readings summarise the pattern:

DialQuestionMeasured by
LevelHow uncertain is the market, overall?ATM IV (the IV of the at-the-money option)
TiltWhich direction does it fear more, down or up?Risk reversal (RR25): call IV minus put IV at the same distance (25 delta)
WingsHow much does it pay for extreme moves, either way?Butterfly (BF25): the average wing IV minus ATM IV
TimeIs the uncertainty now, or later?Term structure: ATM IV across expiries, and its slope

On equity indices the normal picture is: puts cost more than calls (negative RR: investors pay for protection), wings above the middle (positive BF), and far expiries above near ones (contango). Trading skew means watching for departures from "normal" and for changes in how far it is from normal.


2. The vocabulary

Names in code are those the AI bridge returns. IVs are decimals (0.152 = 15.2%); changes are in vol points when multiplied by 100 (0.003 = 0.3 vol points).

OutputPlain meaning
ATM IV (atm_iv)The level dial.
Risk reversal (risk_reversal, skew_side)Call IV minus put IV at the target delta. Negative = put skew (downside protection richer), normal for indices; positive = call skew. More negative = more put skew.
Butterfly (butterfly)Wing premium over ATM: curvature, or how much tail risk is priced. Higher = fatter tails priced.
Ratios to ATM (rr_to_atm_iv, bf_to_atm_iv)RR or BF divided by ATM IV. Lets you compare skew across days with different volatility levels.
Target delta (target_delta, delta_used, not_bracketed)The delta RR and BF are solved at (0.25 gives RR25 and BF25). If the strike ladder does not reach it, SOAP2 uses the nearest reachable delta and says so (delta_used); if the solve fails, not_bracketed. RR and BF at different deltas are not comparable.
Wings (wings)VSkew: the call and put strikes the target delta landed on, their IVs, distance from spot in points, percent and standard deviations, the strike ladder's limits and headroom (how close the solved strike is to the edge of what SOAP2 could price; small headroom means the least robust RR/BF).
Term curve (term_curve, term_slope, term_shape)HSkew: ATM IV by expiry. Slope = longest minus shortest expiry. Positive = contango (normal); negative = backwardation (front above back: stress or an event priced near).
History columns (vs_history, columns)Current compared with the same clock time 1, 2 or 5 trading days earlier (1D, 2D, 1W), when selected in settings. Built from sparse 30-minute bars.
Change since Previous (change)Changes in ATM IV, RR, BF and slope, with sign words (more_put_skew, wings_richer, more_backwardation and their opposites) and changes_in_evidence.

3. The five-step reading routine

Step 1: Is it comparable and fresh?

Step 2: Level (ATM IV)

Is uncertainty high or low for this market? Compare with the history columns and with your own experience of the symbol. Convert it into a plain range with the expected move (§5). A level on its own says nothing about direction.

Step 3: Tilt (RR) and wings (BF)

  1. Sign and size of RR: how much extra is the market paying for downside over upside?
  2. Divide by ATM IV (rr_to_atm_iv) before comparing with other days: the same RR means more when ATM IV is low.
  3. BF: are tails priced richly? A rising BF with a stable ATM IV means more is being paid for the extremes specifically.

Step 4: Term structure

Step 5: Context, then invalidation


4. Reading change: previous run and history columns

There are two kinds of comparison, and they must not be mixed:

Latest versus PreviousCurrent versus history column (1D, 2D, 1W)
What it isThe run before the latest, kept only when it is a distinct earlier run (tool left and re-entered, or 30+ minutes apart)The same clock time N trading days earlier, within one run
Use it for"What changed since I last looked?""Is this high or low compared with recent days?"
WarningAlways state elapsed time and whether it is the same sessionIts reference moves from run to run by design: never compare a history column between two runs

Separate the three kinds of move

  1. The level moved (ATM IV): everything repriced together.
  2. The shape moved: RR or BF changed relative to ATM. Use the ratios to ATM to tell.
  3. Time passed: shorter time to expiry changes the numbers even with no market move. Over a session boundary this is always part of the change.

Patterns and what they may suggest

You seePossible readingCheck
ATM IV up, RR more negativeA fear premium: uncertainty rising and the market paying for downside.Did price fall? In falling markets this is the usual pairing.
ATM IV down, RR less negative, BF lowerRelief: uncertainty and tail premium both fading (the "volatility crush" after an event).Was there a scheduled event?
ATM IV flat, RR more negativeDemand for protection rising without a change in the overall level: more selective hedging.Ratio rr_to_atm_iv; same delta in both runs?
ATM IV flat, BF upMore is being paid for extreme moves in both directions.Headroom: is the wing near the ladder edge?
Slope turns negative (more backwardation)The market prices trouble sooner than later: stress, or an event near.0DTE point at the front? Read the curve.
Slope more positiveThe front is calming relative to the back.Common term (below).
Change is a few tenths of a vol point onlyProbably noise, especially in history columns built from sparse bars.Judge materiality yourself; SOAP2's sign words have no threshold.

Like for like. For HSkew, the slope change is taken on the expiries both runs share (common_term); what was left out is listed. RR and BF changes are left empty when the two runs solved at different deltas. Always read changes_in_evidence and columns (including its advice about which history offsets to keep ticked so the next comparison is like for like).


5. From the picture to ranges and scenarios

Skew does not give support and resistance. It gives ranges and how the market weights each side.

The expected-move range

SOAP2 defines one standard deviation to expiry as sd = spot × ATM IV ÷ 16 × √(trading days left): the one-day move (the Risk Graph's 1-sigma line) scaled by the square root of the sessions remaining. Example: spot 5,000, ATM IV 16%, 21 trading days: sd = 5,000 × 0.16 ÷ 16 × √21 ≈ 229 points. The market's pricing implies roughly a two-in-three chance of finishing within ±1 sd (risk-neutral pricing, not a forecast).

The 25-delta strikes

In VSkew, wings gives the strikes where the 25-delta call and put sit, with their distance from spot in points, percent and standard deviations. They mark, roughly, the "one-in-four" ends of the market's pricing. Use them to see how asymmetric the market is: if the put strike is 1.0 sd away and the call strike 0.8 sd, the market treats the downside as farther and costlier to reach.

Weighing the two sides


6. Five situations

A. Calm contango, mild put skew

The normal state. Ranges implied by ATM IV are narrow; shocks are priced modestly. The question is what would break it: an event, or a sudden steepening of RR.

B. Steepening put skew into an event

RR becomes more negative and the front end lifts (a bump on the curve). Participants are buying protection ahead of the date. Expect IV to fall after the event unless it surprises; the drop is the "volatility crush", whose hedging effect is the Vanna story in the theory primer.

C. Backwardation

Front IV above back IV: the market is paying for uncertainty now. Typically a stress state. Read the term curve to see whether it is a single event date or the whole front end.

D. After an event (the crush)

ATM IV, BF and RR all drop. Compare with the history columns: are you back to the pre-event level, or merely lower than the peak? Remember that comparing Latest with Previous across the event includes a session boundary or the event itself.

E. 0DTE day

The front point is a same-day expiry and its IV varies with the clock. Slope can swing during the session; read the curve, and compare like times only.


7. A worked example (illustrative numbers)

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

SPX, expiry in 30 daysPrevious (60 min ago, same session)Latest
Spot5,0125,000
ATM IV15.6%16.0%
RR25−3.2−3.9
BF25+0.7+0.8
RR25 / ATM IV−0.21−0.24
Term slope (common expiries)+1.1+0.8
  1. Comparable? Same session, both solved at 25 delta, same expiry set: a clean comparison.
  2. Level. ATM IV +0.4 vol points while spot fell 12 points: a modest rise, typical for a down move.
  3. Tilt. RR25 moved 0.7 vol points more negative, and the ratio to ATM moved from −0.21 to −0.24: not just the level; the shape tilted toward put skew. Verdict by SOAP2: more_put_skew.
  4. Wings. BF barely changed: no sign of more tail premium.
  5. Term. Slope down 0.3: slightly flatter, still contango.
  6. Range. sd ≈ 5,000 × 0.16 ÷ 16 × √21 ≈ 229 points: the market treats 4,771–5,229 as the ±1 sd band for the month.
  7. Reading (derived). "Demand for downside protection edged up as spot slipped; the overall level and tail premium barely changed and the term structure is still normal. This is a mild risk-off tilt, not stress. Invalidation: RR reverting, or the slope turning negative (which would mean stress)."

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

The call is get_skew_read with optional symbol (default: the symbol selected in SOAP2) and expiry (yyyy-MM-dd, a VSkew tab). The response has two blocks: hskew (term structure) and vskew (one entry per stored expiry, nearest few by default). It reads stored results built by Options Analysis windows in HSkew and VSkew mode; if nothing is stored, the block's hint says which OA mode to open. Premium (or trial) and the AI bridge are required; a denied call answers NOT_LICENSED.

The answering routine

  1. Primer, if the user needs one (one or two sentences): RR25 is the call IV minus the put IV at 25 delta, normally negative on indices (more negative means more put skew); BF25 is the wings' premium over ATM; the term slope is long-dated minus short-dated ATM IV (negative means backwardation).
  2. Freshness and comparability: computed_at/age, crossed_session, the quality note, delta_used, not_bracketed and wings headroom.
  3. Level now: atm_iv, risk_reversal with skew_side, butterfly, the ratios rr_to_atm_iv and bf_to_atm_iv, and for HSkew term_shape and the term_curve.
  4. Change since Previous, only with elapsed_s and same_session, and every changes_in_evidence item. Separate a move in skew from a move in the vol level (use the RR/ATM ratio) and from the passage of time (DTE). Quote the sign words but judge materiality yourself.
  5. History comparison (vs_history): compare Current with each history column of one run, never a history column between two runs. State the reference time (reference.as_of) and as_of_session/bar_lag_min when it rests on the previous close.
  6. Relay columns.advice when present (which History offsets to keep or re-tick so the next comparison is like for like).
  7. Tie to other reads: ATM IV term, VIX term and expected move in get_market_read; GEX (get_cboe_gex); sticky skew (get_sticky_skew); and outside information such as the event calendar.
  8. Derived reading, labelled as derived, with an invalidation; no trade recommendation.

Rules that must not be broken

A response template

Data: SPX, expiry 2026-11-20, VSkew stored at 15:40 UTC (3 min ago), same session; 25-delta solved on both runs.
Level now: ATM IV 16.0%; RR25 −3.9 vol points (put skew), ratio −0.24; BF25 +0.8.
Change vs previous (60 min): ATM IV +0.4, RR25 −0.7 (more put skew), BF25 +0.1; spot −12. The shape tilted, not just the level.
Versus recent days: compared with yesterday's same time, RR25 is 0.5 more negative.
Term: contango, slope +0.8 (common expiries), slightly flatter than before.
Range: ±1 sd to expiry ≈ 229 points (4,771 to 5,229).
Reading (derived): mild risk-off tilt with a normal term structure. Invalidation: RR reverting or the slope turning negative.
Caveats: skew is a price, not a forecast; no materiality threshold; history columns come from sparse bars.

9. What you cannot conclude


10. One-page checklist

  1. Right expiry, fresh, same session, same delta in both runs? Any headroom warning?
  2. Level: ATM IV, converted into an expected-move range.
  3. Tilt: RR sign and size; use the ratio to ATM to compare.
  4. Wings: BF, and whether the 25-delta strikes are asymmetric.
  5. Term: slope sign and the shape of the curve; any event bump; 0DTE at the front?
  6. Change: level, shape or time? Read changes_in_evidence; never compare a history column across runs.
  7. Cross-check with GEX, VIX term and the calendar. Write the invalidation.

Related


Go back to the main help page: SOAP2 Help Guide

⬅ Back