STRASMORE/EXPLORE 2,401 QUERIES

desk_rr

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.

as of table 3×6read in context →
desk_rr — 3 rows by 6 columns, computed from US exchange, SIP and OPRA data.
symbolpriced_onexpiryput_25d_iv_pctcall_25d_iv_pctrisk_reversal_pct
SPYSeptember 17, 2026October 16, 202615.3110.324.99
AAPLSeptember 17, 2026October 16, 202624.0623.390.67
TSLASeptember 17, 2026October 16, 202640.9242.12-1.2
Rows × columns
3 × 6
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for desk_rr, derived from the stored result.
ColumnTypeRangeNotes
symbol text 3 distinct values (AAPL, SPY, TSLA)
priced_on text 1 distinct value (September 17, 2026)
expiry text 1 distinct value (October 16, 2026)
put_25d_iv_pct number 15.31 to 40.92 percent
call_25d_iv_pct number 10.32 to 42.12 percent
risk_reversal_pct number -1.2 to 4.99 percent

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
    symbol,
    priced_on,
    expiry,
    round(100 * put_iv_25d, 2)                     AS put_25d_iv_pct,
    round(100 * call_iv_25d, 2)                    AS call_25d_iv_pct,
    round(100 * (put_iv_25d - call_iv_25d), 2)     AS risk_reversal_pct
FROM
(
    SELECT
        underlying_symbol                                                                  AS symbol,
        concat(monthName(any(date)), ' ', toString(toDayOfMonth(any(date))), ', ',
               toString(toYear(any(date))))                                                AS priced_on,
        concat(monthName(expiration_date), ' ', toString(toDayOfMonth(expiration_date)), ', ',
               toString(toYear(expiration_date)))                                          AS expiry,
        any(days_to_expiry)                                                                AS dte,
        maxIf(-delta, delta < 0 AND -delta <= 0.25)                                        AS p_lo_d,
        argMaxIf(implied_volatility, -delta, delta < 0 AND -delta <= 0.25)                 AS p_lo_iv,
        minIf(-delta, delta < 0 AND -delta >= 0.25)                                        AS p_hi_d,
        argMinIf(implied_volatility, -delta, delta < 0 AND -delta >= 0.25)                 AS p_hi_iv,
        maxIf(delta, delta > 0 AND delta <= 0.25)                                          AS c_lo_d,
        argMaxIf(implied_volatility, delta, delta > 0 AND delta <= 0.25)                   AS c_lo_iv,
        minIf(delta, delta > 0 AND delta >= 0.25)                                          AS c_hi_d,
        argMinIf(implied_volatility, delta, delta > 0 AND delta >= 0.25)                   AS c_hi_iv,
        if(p_hi_d = p_lo_d, p_lo_iv,
           p_lo_iv + (p_hi_iv - p_lo_iv) * (0.25 - p_lo_d) / (p_hi_d - p_lo_d))           AS put_iv_25d,
        if(c_hi_d = c_lo_d, c_lo_iv,
           c_lo_iv + (c_hi_iv - c_lo_iv) * (0.25 - c_lo_d) / (c_hi_d - c_lo_d))           AS call_iv_25d
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'TSLA')
      AND date = (
          SELECT max(date)
          FROM global_markets.options_greeks
          WHERE underlying_symbol = 'SPY'
            AND date >= today() - 14
      )
      AND iv_converged = 1
      AND volume > 0
      AND abs(delta) BETWEEN 0.05 AND 0.5
    GROUP BY underlying_symbol, expiration_date
    HAVING countIf(delta < 0 AND -delta <= 0.25) > 0
       AND countIf(delta < 0 AND -delta >= 0.25) > 0
       AND countIf(delta > 0 AND delta <= 0.25) > 0
       AND countIf(delta > 0 AND delta >= 0.25) > 0
       AND dte BETWEEN 20 AND 45
    ORDER BY symbol, abs(dte - 30)
    LIMIT 1 BY symbol
)
ORDER BY indexOf(['SPY', 'AAPL', 'TSLA'], symbol)

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 payoff table 11×5 structure 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 →