STRASMORE/EXPLORE 2,595 QUERIES

decay_curve

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-25, from when-to-adjust-a-short-straddle.

as of series 10×3read in context →
decay_curve — 10 rows by 3 columns, computed from US exchange, SIP and OPRA data.
dte_labelstraddle_theta_per_daystraddle_delta_per_move
10 DTE0.6240.391
9 DTE0.6710.407
8 DTE0.6960.443
7 DTE0.7290.486
6 DTE0.7660.544
5 DTE0.7930.634
4 DTE0.8640.712
3 DTE1.0940.762
2 DTE1.5410.785
1 DTE2.1671.062
Rows × columns
10 × 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 decay_curve, derived from the stored result.
ColumnTypeRangeNotes
dte_label text 10 distinct values (1 DTE, 10 DTE, 2 DTE…)
straddle_theta_per_day number 0.624 to 2.167
straddle_delta_per_move number 0.391 to 1.062

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.

SELECT
    concat(toString(dte), ' DTE')                                           AS dte_label,
    round(-1 * (avgIf(theta, opt LIKE 'c%') + avgIf(theta, opt LIKE 'p%')), 3) AS straddle_theta_per_day,
    round((avgIf(gamma, opt LIKE 'c%') + avgIf(gamma, opt LIKE 'p%'))
          * avg(spot) * 0.01, 3)                                            AS straddle_delta_per_move
FROM
(
    SELECT
        days_to_expiry                     AS dte,
        lower(option_type)                 AS opt,
        theta,
        gamma,
        toFloat64(underlying_close)        AS spot
    FROM global_markets.options_greeks
    WHERE underlying_symbol = 'SPY'
      AND date >= today() - 120
      AND iv_converged = 1
      AND volume > 0
      AND days_to_expiry BETWEEN 0 AND 10
      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.005
)
GROUP BY dte
HAVING countIf(opt LIKE 'c%') > 0 AND countIf(opt LIKE 'p%') > 0
ORDER BY dte DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.