Skip to main content

Scenario Grids from zero

1/5

Why stress test?

Greeks tell you what happens when one input moves a little. But markets do not move one input at a time by a little.

Delta says your position loses $5 for a 1% spot drop. Vega says you gain $3 for a 1-point vol increase. So if spot drops 1% and vol rises 1 point, you might guess: net -$2. For small moves, that is reasonable.

Now suppose spot crashes 20% and vol spikes 30% at the same time. The Greeks approximation says maybe -$100 + $90 = -$10. But the actual PnL might be -$45. Why? Because Greeks are local derivatives. They are accurate for infinitesimal moves. For large moves, the curvature (gamma), the cross-effects (vanna), and higher-order terms all compound. The linear approximation breaks.

A scenario grid solves this by repricing your position from scratch under each hypothetical move. No approximation. Full Black-Scholes recomputation at the shocked spot and shocked vol.

Spot \ Vol
-30%
+0%
+30%
-20%
-$9.27
-$8.73
-$7.74
-10%
-$8.12
-$6.37
-$4.29
+0%
-$2.72
+$0.00
+$2.64
+10%
+$2.46
+$4.42
+$6.75
+20%
+$11.30
+$12.26
+$13.77
Worst-case: Spot -20%, Vol -30% -$9.27

The grid above is a long call. Hover over any cell to see the exact PnL. Notice the corners: a simultaneous spot drop and vol drop is brutal. That combination is where the Greeks linear estimate breaks hardest.

Greeks answer: "If one thing changes slightly, what happens?" The scenario grid answers: "If two things change a lot, what actually happens?" Both matter. The grid is for risk management; Greeks are for hedging.

Building the grid

Rows are spot shocks. Columns are vol shocks. Each cell is a full repricing.

Pick a range of spot moves (say -30% to +30%) and a range of vol moves (say -50% to +50%). The grid has one row per spot shock, one column per vol shock. Each cell reprices the position using Black-Scholes with the shocked inputs:

Cell PnL formula
PnL = BS(S × (1+Δs), K, T, r, σ × (1+Δv)) − BS(S, K, T, r, σ)
For a long position. Short positions flip the sign. Vol shocks are multiplicative: "+30% vol shock" means σ×1.3, not σ+0.3.

Adjust the inputs below and watch the entire grid recompute. The red-bordered cell is the worst-case scenario.

Base price: $9.39
Spot \ Vol
-50%
-30%
-15%
+0%
+15%
+30%
+50%
-30%
-$9.39
-$9.38
-$9.36
-$9.30
-$9.19
-$9.00
-$8.65
-20%
-$9.38
-$9.27
-$9.06
-$8.73
-$8.28
-$7.74
-$6.87
-10%
-$8.95
-$8.12
-$7.30
-$6.37
-$5.36
-$4.29
-$2.78
-5%
-$7.71
-$6.22
-$5.00
-$3.74
-$2.45
-$1.13
+$0.65
+0%
-$4.59
-$2.72
-$1.35
+$0.00
+$1.33
+$2.64
+$4.37
+5%
-$2.44
-$0.93
+$0.31
+$1.60
+$2.94
+$4.30
+$6.15
+10%
+$1.52
+$2.46
+$3.38
+$4.42
+$5.55
+$6.75
+$8.42
+20%
+$11.05
+$11.30
+$11.70
+$12.26
+$12.96
+$13.77
+$15.01
+30%
+$21.01
+$21.06
+$21.19
+$21.44
+$21.83
+$22.33
+$23.18
Worst-case: Spot -30%, Vol -50% -$9.39

Reading the heatmap

Green is profit. Red is loss. The reddest cell with the red border is the one that matters most.

The color intensity maps to PnL magnitude. Deeper green means more profit; deeper red means more loss. Hover over any cell to see the exact dollar value.

The worst-case cell determines your margin. If your worst cell shows -$50, your margin requirement is at least $50. It does not matter if 90% of the grid is green. The exchange cares about the single worst outcome.

Try switching between long/short and call/put in the grid above. Notice the patterns:

  • Long call: worst case is bottom-left (spot down, vol down). You lose your premium.
  • Short call: worst case is top-right (spot up, vol up). Loss is theoretically unlimited.
  • Long put: worst case is top-right (spot up, vol down). You lose your premium.
  • Short put: worst case is bottom-left (spot down, vol up). Loss can be very large.

These patterns are not arbitrary. They follow from the option payoff structure. Short options have their worst case where the option gains value: in-the-money movement plus vol expansion.

Portfolio effects

A single leg is predictable. A portfolio has non-obvious worst cases and natural hedges.

When you have multiple legs, the scenario grid sums the PnL across all legs for each cell. Hedges reduce the worst-case loss. Spreads cap maximum exposure. The grid captures all of this automatically — no special rules needed.

Try the presets below. Click Bull Call Spread and compare its grid to a naked long call. The spread has a tighter PnL range because the short leg offsets the long leg. Click Iron Condor and notice the worst case appears at the edges, while the center is profitable.

Legs
Spot \ Vol
-50%
-30%
-15%
+0%
+15%
+30%
+50%
-30%
-$9.39
-$9.38
-$9.36
-$9.30
-$9.19
-$9.00
-$8.65
-20%
-$9.38
-$9.27
-$9.06
-$8.73
-$8.28
-$7.74
-$6.87
-10%
-$8.95
-$8.12
-$7.30
-$6.37
-$5.36
-$4.29
-$2.78
-5%
-$7.71
-$6.22
-$5.00
-$3.74
-$2.45
-$1.13
+$0.65
+0%
-$4.59
-$2.72
-$1.35
+$0.00
+$1.33
+$2.64
+$4.37
+5%
-$2.44
-$0.93
+$0.31
+$1.60
+$2.94
+$4.30
+$6.15
+10%
+$1.52
+$2.46
+$3.38
+$4.42
+$5.55
+$6.75
+$8.42
+20%
+$11.05
+$11.30
+$11.70
+$12.26
+$12.96
+$13.77
+$15.01
+30%
+$21.01
+$21.06
+$21.19
+$21.44
+$21.83
+$22.33
+$23.18
Margin requirement (worst-case loss)
$9.39
Worst cell: Spot -30%, Vol -50% -$9.39

The margin box below the grid shows the worst-case loss — that is your margin requirement. Notice how:

  • A bull call spread requires far less margin than a naked short call, even though both involve selling a call.
  • An iron condor has capped risk because the long wings protect the short body.
  • A short straddle has large margin because both the call and put can lose in different scenarios, and no leg hedges the other in the tails.

Portfolio margin (as opposed to per-position margin) gives you credit for hedges. The scenario grid is the mechanism. It does not "know" you have a spread — it just reprices all legs together, and the offsets emerge from the math.

Margin and position sizing

The worst-case loss across the grid is your margin requirement. Scale it by position size to hit your capital constraint.

Margin is linear in position size. If one short call requires $50 in margin, ten short calls require $500. The grid shape does not change — every cell just multiplies by the number of contracts.

This gives you a direct way to size positions: decide how much capital you want to allocate, divide by the per-contract margin, and that is your maximum position.

Position sizing
Max contracts = floor(Capital / Margin per contract)
Where "Margin per contract" is the absolute value of the worst-case cell for a single contract.

Adjust the contract count and capital below. Watch the utilization bar and the grid update together.

Position: Short 1 ATM Call
S=$100, K=$100, DTE=29, IV=60%
Spot \ Vol
-50%
-30%
-15%
+0%
+15%
+30%
+50%
-30%
+$9.39
+$9.38
+$9.36
+$9.30
+$9.19
+$9.00
+$8.65
-20%
+$9.38
+$9.27
+$9.06
+$8.73
+$8.28
+$7.74
+$6.87
-10%
+$8.95
+$8.12
+$7.30
+$6.37
+$5.36
+$4.29
+$2.78
-5%
+$7.71
+$6.22
+$5.00
+$3.74
+$2.45
+$1.13
-$0.65
+0%
+$4.59
+$2.72
+$1.35
+$0.00
-$1.33
-$2.64
-$4.37
+5%
+$2.44
+$0.93
-$0.31
-$1.60
-$2.94
-$4.30
-$6.15
+10%
-$1.52
-$2.46
-$3.38
-$4.42
-$5.55
-$6.75
-$8.42
+20%
-$11.05
-$11.30
-$11.70
-$12.26
-$12.96
-$13.77
-$15.01
+30%
-$21.01
-$21.06
-$21.19
-$21.44
-$21.83
-$22.33
-$23.18
Worst-case loss per contract-$23.18
Total margin (1 contract)$23.18
Capital utilization4.6%
Max contracts at this capital21

Where to go next:

Scenario Grid reference — full grid with all 17 production scenarios

Portfolio Margin — how the grid feeds into margin calculations

Greeks reference — the local sensitivities that the grid complements