Complete Guide to Options Spreads & Iron Condors | FlashAlpha

Complete Guide to Options Spreads & Iron Condors

Credit spreads, iron condors, calendars — full mechanics, KaTeX payoffs, directional VRP decomposition, skew-guided strike selection, worked SPY examples, and every kink that costs spread traders money.

T
Tomasz Dobrowolski Quant Engineer
Jun 7, 2026
34 min read
Spreads IronCondors CreditSpreads Options VRP Skew TradingStrategies SPY
SPREAD & CONDOR SCORING — LIVE
Score today's structure on SPY — condor or one-sided spread?
Directional VRP, skew, and key levels in one view. Switch to any ticker to see whether the put or call side has the edge right now.
Open Spreads Tool →

1. The structures: credit spreads, iron condors, calendars, and diagonals

All spread strategies sell optionality at one strike and buy cheaper optionality at another to cap the loss. The structures differ in how many legs they use, which expiration(s) they span, and therefore what kinds of edge they express.

Put credit spread (bull put spread)

Sell a put at strike Kshort, buy a put at a lower strike Klong, same expiry. You collect net credit C upfront. The spread is profitable if the underlying stays above Kshort at expiry.

Put Credit Spread — Payoff at Expiry $$ \Pi_{\text{PCS}}(S_T) = \begin{cases} C & S_T \geq K_{\text{short}} \\ C - (K_{\text{short}} - S_T) & K_{\text{long}} \leq S_T < K_{\text{short}} \\ C - (K_{\text{short}} - K_{\text{long}}) & S_T < K_{\text{long}} \end{cases} $$
  • Max gain: $C$ (net credit) — achieved when $S_T \geq K_{\text{short}}$
  • Max loss: $(K_{\text{short}} - K_{\text{long}}) - C$ — achieved at or below $K_{\text{long}}$
  • Breakeven: $K_{\text{short}} - C$
Breakeven — Put Credit Spread $$ \text{BE}_{\text{PCS}} = K_{\text{short}} - C $$

Call credit spread (bear call spread)

Sell a call at $K_{\text{short}}$, buy a call at higher $K_{\text{long}}$, same expiry. You collect credit $C$. Profitable if underlying stays below the short call.

Call Credit Spread — Max Gain / Loss / Breakeven $$ \text{Max gain} = C \qquad \text{Max loss} = (K_{\text{long}} - K_{\text{short}}) - C \qquad \text{BE} = K_{\text{short}} + C $$

Iron condor

An iron condor is a put credit spread plus a call credit spread on the same underlying and expiry. You collect combined credit $C = C_{\text{put}} + C_{\text{call}}$ and profit if the underlying stays within the inner strikes.

Iron Condor — Payoff at Expiry $$ \Pi_{\text{IC}}(S_T) = \begin{cases} C & K_{P,\text{short}} \leq S_T \leq K_{C,\text{short}} \\ C - (K_{P,\text{short}} - S_T) & K_{P,\text{long}} \leq S_T < K_{P,\text{short}} \\ C - (S_T - K_{C,\text{short}}) & K_{C,\text{short}} < S_T \leq K_{C,\text{long}} \\ C - W & \text{otherwise (max loss)} \end{cases} $$

where $W = K_{P,\text{short}} - K_{P,\text{long}} = K_{C,\text{long}} - K_{C,\text{short}}$ (assuming equal wing widths, the typical case).

  • Max gain: $C$ — underlying expires inside the short strikes
  • Max loss: $W - C$ — full breach of either wing
  • Lower breakeven: $K_{P,\text{short}} - C$ (where $C = C_{\text{put}} + C_{\text{call}}$, the total combined credit)
  • Upper breakeven: $K_{C,\text{short}} + C$ (same $C$ — the full combined credit widens both breakevens)
  • Profit range width: $(K_{C,\text{short}} - K_{P,\text{short}}) + C$ — the condor is wider than the short strikes alone because the credit extends both breakevens
Return on Capital — Iron Condor $$ \text{RoC} = \frac{C}{W - C} $$

Calendar spread

Sell a near-expiry option (typically ATM) and buy the same strike in a further expiry. The position is long vega (wants IV to rise in the back month) and long theta (wants the near-month to decay faster). The P&L depends on the spread between near and far implied volatility, not just the level.

Calendar — Approximate Edge $$ \text{Edge} \approx \Theta_{\text{near}} - \Theta_{\text{far}} > 0 \quad \text{(near decays faster by } T^{-1/2} \text{ law)} $$

Diagonal spread

A diagonal combines a different expiry and a different strike — e.g., sell a nearer 30-delta put and buy a further 20-delta put. It adds a directional bias to the calendar's time-spread edge. Diagonals are popular when the term structure is in backwardation (near vol premium over far) and you have a mild directional view.

StructureLegsPrimary edgeVegaWhen to use
Put credit spread2 (same expiry)Put-side VRP, bullish/neutralShortPut side rich, mild bullish bias
Call credit spread2 (same expiry)Call-side VRP, bearish/neutralShortCall side rich, mild bearish bias
Iron condor4 (same expiry)Both sides VRP, neutralShortBoth sides rich and symmetric
Calendar2 (two expiries)Term-structure VRP, vol mean-reversionLongNear vol cheap vs far, pinned price expected
Diagonal2 (different expiry + strike)Term-structure + directionalMixedBackwardation + mild directional view

2. Why structure selection matters: directional VRP and skew

Choosing a structure by shape alone — "the market looks range-bound, let's sell an iron condor" — ignores the most important question: where is the edge? The volatility risk premium (VRP) is the systematic excess of implied volatility over realized volatility, and it is almost never symmetric.

Directional VRP decomposition

VRP can be decomposed into a put-side VRP and a call-side VRP by separating the implied vol of OTM puts from that of OTM calls and comparing each to realized vol:

Directional VRP Decomposition $$ \text{VRP}_{\text{put}} = \sigma_{\text{IV, put side}} - \sigma_{\text{RV}} \qquad \text{VRP}_{\text{call}} = \sigma_{\text{IV, call side}} - \sigma_{\text{RV}} $$

For SPY, $\text{VRP}_{\text{put}}$ is consistently larger than $\text{VRP}_{\text{call}}$ — often 2-3× larger. Put implied vol carries a structural premium because institutional hedgers pay up for downside protection. When directional.downside_vrp = 3.6 and directional.upside_vrp = 1.4, a symmetric iron condor sells $3.6$ units of premium on the put side and only $1.4$ units on the call side. The call wing contributes margin, gamma risk, and complexity — for a fraction of the credit. The analysis is covered in depth in Directional VRP: why iron condors are often wrong.

Skew's role in structure selection

Volatility skew — the difference in implied vol between OTM puts and OTM calls at the same delta — is the market's term-by-term pricing of tail risk. Skew tells you both how much premium the put side carries above the call side and whether it is currently wider or narrower than its historical average.

Skew — 25-Delta Definition $$ \text{Skew}_{25\Delta} = \sigma_{\text{IV}}(25\Delta \text{ put}) - \sigma_{\text{IV}}(25\Delta \text{ call}) $$

When skew is elevated (put vol well above call vol), selling puts is relatively more attractive. When skew is compressed — for example, before a known upside catalyst — the call side may temporarily become the richer wing. The volatility skew trading strategies guide covers live skew signals in detail.

3. Reading the data: VRP, skew, term structure, levels, and max pain

Placing a spread without reading the live data is like quoting a bid-ask without looking at the book. Four data layers fully frame the trade: VRP decomposition, skew and term structure, gamma/GEX levels, and max pain.

Layer 1 — VRP decomposition (/v1/vrp)

The VRP endpoint returns the overall VRP z-score and percentile, plus the directional split. A vrp.z_score above +1.5 indicates premium is statistically rich (above the 90th percentile); directional shows whether that richness is concentrated on the put side, the call side, or both. The VRP strategy scoring guide explains how to map these numbers to structure suitability scores.

import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/vrp/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
d = resp.json()

print(f"VRP (20d): {d['vrp']['vrp_20d']:.1f}  z-score: {d['vrp']['z_score']:.2f}  percentile: {d['vrp']['percentile']}th")
print(f"Put-side VRP: {d['directional']['downside_vrp']:.1f}")
print(f"Call-side VRP: {d['directional']['upside_vrp']:.1f}")
put_score = d['strategy_scores']['short_put_spread']
ic_score  = d['strategy_scores']['iron_condor']
print(f"Strategy scores  —  PCS: {put_score:.2f}  IC: {ic_score:.2f}")

Layer 2 — Skew and term structure (/v1/volatility)

The volatility endpoint returns IV rank, realized vol, and the full skew profile across strikes and expiries. Check skew_slope (steepness of the put wing) and term_structure_slope (whether near-term IV is higher or lower than further expiries). Steep put skew combined with low term-structure slope (flat or normal) favors put credit spreads; calendar traders look for the opposite — near-term IV elevated above the back months.

Layer 3 — Key levels and dealer walls (/v1/exposure/levels)

GEX levels give you the call wall, put wall, and gamma flip for the full chain. These are the mechanically significant strikes where dealer hedging creates the most friction. Placing short strikes just inside these walls has two benefits: the walls tend to act as natural resistance/support (dealers buy dips at the put wall, sell rallies at the call wall), and they frame a defensible range where your spread profits.

Key metrics from the levels endpoint for a condor trader:

  • call_wall — natural resistance; place short call at or just below this strike
  • put_wall — natural support; place short put at or just above this strike
  • gamma_flip — where the regime changes; condors placed with the gamma flip inside the profit zone benefit from additional mean-reversion force
resp_levels = requests.get(
    "https://lab.flashalpha.com/v1/exposure/levels/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
lv = resp_levels.json()["levels"]

call_wall  = lv["call_wall"]
put_wall   = lv["put_wall"]
gamma_flip = lv["gamma_flip"]
print(f"Call wall: ${call_wall}  |  Put wall: ${put_wall}  |  Gamma flip: ${gamma_flip}")
print(f"Natural condor range: ${put_wall} — ${call_wall}  (${call_wall - put_wall:.0f} wide)")

Layer 4 — Max pain and pin risk (/v1/maxpain)

Max pain is the strike where aggregate OI losses for option holders are maximized at expiry — historically, expiration-day settlement gravitates toward this strike. The max pain guide details how to use this as an expiry target for butterflies and near-expiry condors: Max pain trading strategies and pin risk setups.

resp_mp = requests.get(
    "https://lab.flashalpha.com/v1/maxpain/SPY",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
mp = resp_mp.json()

max_pain  = mp["max_pain_strike"]
pin_prob  = mp["pin_probability"]
print(f"Max pain: ${max_pain}  |  Pin probability: {pin_prob}/100")
# pin_probability above 60 = strong pin risk on short strike; manage or roll

4. The playbook: choosing condor vs one-sided spread

The decision tree is systematic, not intuitive. Work through three checkpoints before touching a structure.

Checkpoint 1 — Is VRP rich enough to sell?

A VRP z-score below +0.5 means premium is near or below fair value. Selling in this environment gives you gamma and vega risk without statistical edge. Wait for the z-score to reach at least +1.0, with a preference for entries above +1.5 (roughly the 85th percentile). The historical edge of VRP-timed put credit spreads versus untimed entries is documented in the SPY put-credit-spread 8-year backtest.

Checkpoint 2 — Which side is rich?

ConditionPreferred structureWhy
Put-side VRP >> call-side VRP (ratio > 1.8×)Put credit spreadAll the edge is on the put wing; call wing adds risk for no reward
Call-side VRP >> put-side VRP (ratio > 1.8×)Call credit spreadRare; usually near a known upside catalyst or in falling-vol environment
Both sides rich and near-symmetric (ratio < 1.4×)Iron condorBoth wings contribute meaningful credit
Near IV elevated, far IV flatCalendar (short near, long far)Harvest the near-term premium collapse; long far vol is cheap insurance

Checkpoint 3 — Strike, width, and expiry selection

Strike selection: For credit spreads and condors, place the short strikes at levels supported by the dealer wall analysis. A short put at or just above the put wall benefits from dealer bid-support; a short call at or just below the call wall benefits from dealer ask-pressure. Avoid placing short strikes at the gamma flip — if the regime shifts across the flip, hedging flows turn pro-directional and your short strike is suddenly in motion.

Width selection: Width ($W$) determines both max loss and the capital at risk. For a given short-strike delta, wider spreads provide more "insurance" distance between short and long but cost more margin per unit of credit. A common starting point:

Minimum Width Rule $$ W \geq 1.5 \times \text{EM}_{1\sigma, \text{remaining}} $$

where $\text{EM}_{1\sigma}$ is the one-standard-deviation expected move remaining in the contract. This ensures the long wing actually hedges a realistic adverse move rather than sitting so far OTM it provides no protection.

Expiry selection: The theta-to-vega ratio is best in the 21–45 DTE window for most credit structures. Below 14 DTE, gamma risk accelerates sharply (particularly in the last week); beyond 60 DTE, vega dominates and the spread behaves more like an outright volatility bet. Calendars work best when you can sell the nearest liquid expiry and buy 30–45 days further out.

Management and rolling

Spread management is not passive. The core rule: take profits at 50% of max credit (a well-documented result from systematic premium-selling studies — capturing 50% profit early reduces the probability of a late-expiry blowout). For losses, define a max-loss stop at 2× the initial credit received before entry. Do not wait for full loss on a defined-risk spread "because it's capped" — the capital is better redeployed when a setup fails.

Rolling: When a short strike is tested within 1 standard deviation remaining move, three choices exist: (1) close the spread and take the loss, (2) roll down/out to a new short strike and wider expiry for additional credit, or (3) convert to a butterfly by buying back the short strike and selling two new strikes centered at spot. Rolling is only appropriate if the VRP signal still supports the trade — if VRP has collapsed, rolling in is adding risk without edge.

5. Risk and sizing: defined risk, tail risk, and assignment

Defined-risk advantage

The central appeal of spreads over naked options is that the maximum loss is known before the trade is placed. For a $5-wide put credit spread collecting $1.20, the worst case is $3.80 per share ($380 per contract) — regardless of a flash crash. This makes position sizing tractable.

Kelly-Scaled Position Size $$ f^* = \frac{p \cdot (C / W) - (1-p)}{(C / W) + 1} $$

where $p$ is the probability of max gain (estimated from delta of the short strike), $C/W$ is the credit-to-width ratio (reward-to-risk). For a 70% probability put credit spread with 25% credit-to-width, Kelly suggests risking approximately 10-15% of capital — which most systematic traders then half-Kelly to account for estimation error in $p$.

Tail risk in "defined-risk" structures

Defined-risk does not mean zero tail risk in practice. Gap risk — an overnight or intraday gap through both the short and long strikes — can result in the full max loss with no opportunity to manage. Earnings, macro surprises (CPI, FOMC), and geopolitical events can produce 3–8 sigma moves in a single session. Always check whether an earnings date falls inside your expiry window using the API's earnings calendar, and avoid holding single-stock spreads through earnings unless that is the specific thesis.

Assignment risk (American-style underlyings)

SPY and individual stock options are American-style — they can be exercised early. The main scenario that triggers early assignment on a spread is when the short put goes deep ITM and the remaining extrinsic value is less than the cost of carry. If your short put is assigned, you become long 100 shares per contract at the strike price, and your long put provides the hedge. The net exposure is equivalent to holding the spread to expiry, but it ties up margin suddenly. To avoid surprise assignments, monitor the extrinsic value of the short leg in the final two weeks — if it falls below $0.05, consider closing or rolling rather than carrying to expiry.

SPX (SPXW) options are European-style and cash-settled — no assignment risk. If you are selling premium primarily to harvest VRP rather than for directional reasons, SPX/SPXW spreads eliminate this operational risk entirely.

6. The kinks and common mistakes

This section covers the non-obvious errors that cost spread traders money year after year. These are not edge cases — they are structural features of spread trading that the textbook payoff diagrams do not reveal.

Kink 1: Symmetric iron condors sell cheap call premium

The most common condor mistake: building a symmetric condor (equal-width wings, equal-delta short strikes) when the put-side VRP is 2–3× the call-side VRP. The call wing contributes margin requirement and gamma risk for a credit that does not compensate. The strategy_scores.iron_condor field in the VRP API will be materially lower than strategy_scores.short_put_spread whenever directional VRP is asymmetric. Trust the score, not the symmetry of the payoff diagram.

Kink 2: Ignoring skew when selecting the short strike delta

A 30-delta put does not carry the same implied vol as a 30-delta call — because skew shifts the vol curve. When skew is steep, the 30-delta put may be priced at 22 vol while the 30-delta call is at 16 vol. For the same probability of being tested, the put short strike generates significantly more premium. But the flip side is that the put wing also carries more premium on the long (protective) leg, which partially offsets the credit. Use the vol surface from /v1/volatility to confirm the net credit per unit of width for each wing before treating delta alone as a proxy for strike selection.

Kink 3: Walls drifting your short strikes

GEX walls are not static. Dealer hedging positions evolve throughout the day as options trade and spot moves. A put wall at $560 in the morning might migrate to $558 by mid-afternoon as OI shifts. If your short put is at $560 and the put wall drifts to $558, your short strike is now above the wall — the mechanical support you were relying on has moved under your position. Check /v1/exposure/levels intraday for any spread you are actively managing, particularly in the final week before expiry when OI rotates aggressively.

Kink 4: Pin risk into expiry

Pin risk is the danger that the underlying closes exactly at your short strike on expiry day. If your short put is at $580 and SPY settles at $579.95, you have been assigned but your $575 long put expired worthless (it was OTM). Now you are long 100 shares of SPY at $580 with no hedge — a full-notional directional position. The pin_probability field from /v1/maxpain/{symbol} quantifies the probability that the settlement gravitates toward the magnet strike (0–100 composite). If pin_probability is above 60 and your short strike is near the max pain strike, close the spread before the final 30 minutes of trading or roll the short strike away from the magnet.

Kink 5: Gamma risk in the final week

Gamma scales as $1/\sqrt{T}$ — it doubles when time to expiry quarters. A spread that felt safe at 30 DTE can move 4× faster per dollar of underlying movement at 7 DTE. The Greeks you checked at entry are not the Greeks you live with at expiry. Many spread traders use a rule of 21 DTE as a hard exit for losing positions: if the short strike has not been tested and you are at 50% profit by 21 DTE, close it. If you are still at a loss at 21 DTE, evaluate whether the gamma risk of holding another three weeks is worth the remaining theta.

Kink 6: Liquidity and fills — the fill model is the edge

A spread that looks like a 0.30 credit on the mid may collect only 0.10–0.18 when you actually work the order. For a $2-wide spread, that is the difference between a 15% and 9% return on capital — a 40% difference in edge before commissions. The bid-ask spread on a 4-leg iron condor is the sum of the individual spreads, and each leg's bid-ask compounds. This is covered in detail in the fill model is the edge: VRP backtests analysis. Practical rules: work orders at or near the mid, never pay the ask to enter a credit spread, and check the underlying's average bid-ask spread on option legs — wide underlying spreads (small or illiquid stocks) make iron condors economically impractical.

Kink 7: Earnings landmines

IV crush after earnings is real, but it destroys your credit if you are short premium into the event and the stock moves further than the implied move. A 10% implied move with 15% realized move means you collected $X premium and lost $1.5X on the position — a net loss even though you were technically right that the stock moved less than historically average. The rule: do not carry a short-vega spread through an earnings date unless your thesis specifically accounts for post-earnings IV crush and the position's vega is clearly positive (i.e., a calendar or diagonal). Check the earnings date against expiry before every entry. The API's earnings endpoint surfaces this check automatically.

7. Worked examples on SPY

Example A: Put credit spread — VRP-timed entry

Context: SPY is trading at $591.40. VRP z-score is +1.9 (92nd percentile). Directional VRP shows put side at 3.8, call side at 1.3. Put wall is at $583. 30-delta put is at $586. Expiry is 18 days out (Friday monthly). Skew is steep (25Δ skew = 6.5 vol points).

Structure selected: Put credit spread (not iron condor — call VRP at 1.3 does not justify the call wing).

Trade: Sell 1x SPY $586 put, buy 1x SPY $581 put. Width = $5. Credit collected = $1.45. Max loss = $3.55. Breakeven = $584.55. The short strike is $3 above the put wall — the wall provides a buffer of dealer support before the short strike is tested.

Example A — P&L Summary $$ \text{Max gain} = \$145 \quad \text{Max loss} = \$355 \quad \text{RoC} = \frac{145}{355} = 40.8\% \quad \text{BE} = \$584.55 $$

Management: Target exit at $0.72 (50% of credit = $72 profit per contract). If SPY drops below $584 (short strike – $2), re-evaluate: check whether the put wall has held and whether VRP z-score is still elevated. If both hold, roll down to a new $580/$575 spread at a credit of at least $0.50 to maintain positive expected value. If VRP has compressed or the put wall has moved below $581, close the full spread and accept the partial loss.

Example B: Iron condor — symmetric VRP environment

Context: SPY at $591.00. VRP z-score is +1.6 (88th percentile). Directional VRP: put side = 2.2, call side = 1.7 (ratio 1.3× — near-symmetric, condor is justified). Call wall at $598, put wall at $583. 30-delta put at $586, 30-delta call at $597. Expiry is 22 days out.

Trade: Sell 1x SPY $586 put, buy 1x SPY $581 put (put credit spread leg). Sell 1x SPY $597 call, buy 1x SPY $602 call (call credit spread leg). Combined credit = $1.80. Width = $5. Max loss = $3.20.

Example B — Iron Condor P&L Summary $$ \text{Max gain} = \$180 \quad \text{Max loss} = \$320 \quad \text{RoC} = \frac{180}{320} = 56.3\% $$ $$ \text{Lower BE} = \$584.20 \quad \text{Upper BE} = \$598.80 \quad \text{Profit range} = \$14.60 $$

Note: short call at $597 is $1 below the call wall at $598. Short put at $586 is $3 above the put wall. Gamma flip is at $590 — inside the profit range, which means in positive gamma regime the underlying has mechanical mean-reversion support staying inside the condor body.

Management: Close at 50% of total credit ($90 profit). If either wing is tested (SPY at or below $587 or at or above $596), close the tested wing immediately and hold the profitable wing another 5–7 days. Never wait for both wings to blow up simultaneously.

8. Tooling: API endpoints and MCP connector

All of the above analysis can be systematized through five core API endpoints. Each call can be made directly or via the MCP connector for AI-assisted workflow.

VRP and structure scoring

# Full VRP decomposition and structure scores
GET https://lab.flashalpha.com/v1/vrp/{ticker}

# Key fields for spread traders:
# vrp.z_score               — is premium rich enough to sell?
# vrp.percentile            — historical context (aim for > 80th)
# directional.downside_vrp  — put-side richness (put-wing IV minus downside RV)
# directional.upside_vrp    — call-side richness (call-wing IV minus upside RV)
# strategy_scores           — short_put_spread, iron_condor suitability (0–100)
# regime.vrp_regime         — "harvestable" / "event_only" / "toxic_short_vol" / etc.

Skew and implied volatility

# Realized vol, IV/RV spread, skew profile, term structure
GET https://lab.flashalpha.com/v1/volatility/{ticker}

# Key fields for spread traders:
# atm_iv                     — ATM implied vol (%)
# iv_rv_spreads.vrp_20d/30d  — IV minus RV; positive = IV rich
# iv_rv_spreads.assessment   — premium regime label
# skew_profiles[].skew_25d   — 25-delta risk reversal (put-skew steepness)
# term_structure.state       — contango / backwardation (calendar signal)
# realized_vol.rv_20d/rv_30d — realized vol windows (for the VRP check)

Key levels and dealer walls

# GEX levels: call wall, put wall, gamma flip
GET https://lab.flashalpha.com/v1/exposure/levels/{ticker}

# Use call_wall for short call placement (place short call at or below)
# Use put_wall for short put placement (place short put at or above)
# Use gamma_flip to check regime — inside the profit range is favorable

Max pain and pin risk

# Max pain strike, pain curve, dealer alignment, and pin probability
GET https://lab.flashalpha.com/v1/maxpain/{ticker}

# Use max_pain_strike as expiry anchor for butterflies / near-expiry condors
# Use pin_probability: above 60 = strong pin risk on short strike; manage or roll

# Full per-strike GEX/DEX/VEX/CHEX sheet + LIS inflection + gamma peaks
GET https://lab.flashalpha.com/v1/exposure/sheet/{ticker}

# Use lis.strike as the key inflection point in the gamma profile
# Use peaks[] to see all gamma walls (not just the single call/put wall)

Structure P&L and Greeks

# Compute at-expiry P&L curve + breakevens for any defined structure
# Pure math — no market lookup; pass the premiums you collected/paid
POST https://lab.flashalpha.com/v1/structures/pnl
{
  "legs": [
    {"action": "sell", "type": "put", "strike": 586, "premium": 2.05, "quantity": 1},
    {"action": "buy",  "type": "put", "strike": 581, "premium": 0.60, "quantity": 1}
  ],
  "minUnderlying": 570,
  "maxUnderlying": 600,
  "points": 61
}
# Returns: pnl_curve[], breakevens[], max_profit, max_loss

# Compute aggregate BSM Greeks for the structure at a given spot/IV
# Each leg carries its own expiry and impliedVol (so calendars aggregate correctly)
POST https://lab.flashalpha.com/v1/structures/greeks
{
  "legs": [
    {"action": "sell", "type": "put", "strike": 586, "expiry": "2026-06-27", "impliedVol": 0.19, "quantity": 1},
    {"action": "buy",  "type": "put", "strike": 581, "expiry": "2026-06-27", "impliedVol": 0.18, "quantity": 1}
  ],
  "spot": 591.40,
  "today": "2026-06-07",
  "rate": 0.045
}
# Returns: positionGreeks { delta, gamma, theta, vega, rho, vanna, charm }

MCP connector for AI-assisted spread analysis

The spreads MCP connector exposes all of the above endpoints to AI clients (Claude, Cursor, etc.) for conversational spread analysis. Connect via:

MCP endpoint: https://lab.flashalpha.com/mcp-oauth/spreads
Auth: OAuth (see /docs/mcp-oauth for token setup)

Once connected, you can ask questions like "Is SPY's put-side VRP rich enough to sell a put credit spread this week?" and the AI will call the relevant endpoints, interpret directional VRP and skew, check the wall levels, and return a reasoned structure recommendation with suggested strikes. For setup details, see the MCP + OAuth setup guide.

Score your next spread in seconds

Directional VRP, skew, and GEX levels — all in one call. Try the Spreads Condors tool or connect via MCP.

Open Spreads Tool →

9. FAQ

Related reading

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!