payoff
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-19, from what-is-a-risk-reversal.
| stock_at_expiry | short_put_pnl | long_call_pnl | risk_reversal_pnl | stock_only_pnl |
|---|---|---|---|---|
| $244 (-25%) | -60.25 | -4.6 | -64.85 | -81.5 |
| $261 (-20%) | -43.95 | -4.6 | -48.55 | -65.2 |
| $277 (-15%) | -27.65 | -4.6 | -32.25 | -48.9 |
| $293 (-10%) | -11.35 | -4.6 | -15.95 | -32.6 |
| $310 (-5%) | 4.95 | -4.6 | 0.35 | -16.3 |
| $326 (+0%) | 5.25 | -4.6 | 0.65 | 0 |
| $342 (+5%) | 5.25 | -4.6 | 0.65 | 16.3 |
| $359 (+10%) | 5.25 | 6.5 | 11.75 | 32.6 |
| $375 (+15%) | 5.25 | 22.8 | 28.05 | 48.9 |
| $391 (+20%) | 5.25 | 39.1 | 44.35 | 65.2 |
| $408 (+25%) | 5.25 | 55.4 | 60.65 | 81.5 |
- Rows × columns
- 11 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
stock_at_expiry |
text | 11 distinct values ($244 (-25%), $261 (-20%), $277 (-15%)…) | |
short_put_pnl |
number | -60.25 to 5.25 | |
long_call_pnl |
number | -4.6 to 55.4 | |
risk_reversal_pnl |
number | -64.85 to 60.65 | |
stock_only_pnl |
number | -81.5 to 81.5 |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
the exact SQL behind every number
SELECT
concat('$', toString(round(px, 0)), ' (', if(step >= 0, '+', ''), toString(step), '%)') AS stock_at_expiry,
round(put_premium - greatest(put_strike - px, 0), 2) AS short_put_pnl,
round(greatest(px - call_strike, 0) - call_premium, 2) AS long_call_pnl,
round(short_put_pnl + long_call_pnl, 2) AS risk_reversal_pnl,
round(px - spot, 2) AS stock_only_pnl
FROM
(
SELECT
arrayJoin([-25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25]) AS step,
spot * (1 + step / 100) AS px,
put_strike, put_premium, call_strike, call_premium, spot
FROM
(
SELECT
anyIf(strike, side = 'put') AS put_strike,
anyIf(premium, side = 'put') AS put_premium,
anyIf(strike, side = 'call') AS call_strike,
anyIf(premium, side = 'call') AS call_premium,
any(spot) AS spot
FROM
(
SELECT
if(delta < 0, 'put', 'call') AS side,
toFloat64(strike_price) AS strike,
toFloat64(option_close) AS premium,
toFloat64(underlying_close) AS spot
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = '2026-07-20'
AND expiration_date = '2026-08-21'
AND iv_converged = 1
AND volume > 0
ORDER BY abs(abs(delta) - 0.25)
LIMIT 1 BY side
)
)
)
ORDER BY step
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysiswhat-is-a-risk-reversal
chain
table 28×5
→
structure
table 3×6
→
desk_rr
table 3×6
→
The 2s10s spread, every print of the half
table 124×2
→
The 2s10s spread, every print of the half
table 124×2
→
Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print
table 100×7
→
See all 2,401 queries →