STRASMORE/EXPLORE 2,648 QUERIES

smile_spy

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-26, from what-is-the-skew-stickiness-ratio.

as of ranking 11×3read in context →
smile_spy — 11 rows by 3 columns, computed from US exchange, SIP and OPRA data.
moneynessput_iv_pctcall_iv_pct
-10 %24.7726.32
-8 %23.1623.36
-6 %21.1120.59
-4 %19.3618.59
-2 %17.5516.75
0 %16.0315.13
+2 %15.4113.64
+4 %15.2412.52
+6 %18.7512.14
+8 %22.0112.6
+10 %26.3213.39
Rows × columns
11 × 3
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 smile_spy, derived from the stored result.
ColumnTypeRangeNotes
moneyness text 11 distinct values (+10 %, +2 %, +4 %…)
put_iv_pct number 15.24 to 26.32 percent
call_iv_pct number 12.14 to 26.32 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.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH contrats AS (
    SELECT
        toInt32(round((toFloat64(strike_price) / toFloat64(underlying_close) - 1) * 50)) * 2 AS bucket,
        option_type,
        toFloat64(implied_volatility) * 100 AS iv_pct
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date BETWEEN '2026-04-01' AND '2026-06-30'
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 20 AND 45
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.10
)
SELECT
    concat(if(bucket > 0, '+', ''), toString(bucket), ' %')          AS moneyness,
    round(avgIf(iv_pct, lower(option_type) LIKE 'p%'), 2)            AS put_iv_pct,
    round(avgIf(iv_pct, lower(option_type) LIKE 'c%'), 2)            AS call_iv_pct
FROM contrats
GROUP BY bucket
HAVING countIf(lower(option_type) LIKE 'p%') > 0
   AND countIf(lower(option_type) LIKE 'c%') > 0
ORDER BY bucket
⌘/Ctrl + Enter

Travaillez ces données dans votre assistant IA

S'ouvre prêt à interroger, avec les données de cette page. Gratuit, sans compte.