STRASMORE/EXPLORE 3,293 QUERIES

decay_trace

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-16, from soxl-and-soxs-volatility-decay.

as of series 21×6read in context →
decay_trace — 21 rows by 6 columns, computed from US exchange, SIP and OPRA data.
session_dateday_labelindex_rebasedsoxl_rebasedsoxs_rebasedpair_rebased
2025-04-012025年4月1日100.110099.9199.9
2025-04-022025年4月2日100.7101.997.8199.8
2025-04-032025年4月3日90.571.5127198.5
2025-04-042025年4月4日83.854.7157211.8
2025-04-072025年4月7日85.757.4146.1203.5
2025-04-082025年4月8日82.351.7162.2213.9
2025-04-092025年4月9日97.680.171.4151.5
2025-04-102025年4月10日89.660.487.8148.2
2025-04-112025年4月11日91.564.182.3146.4
2025-04-142025年4月14日92.265.680.8146.5
2025-04-152025年4月15日92.566.579.6146.1
2025-04-162025年4月16日8958.689147.6
2025-04-172025年4月17日88.557.790.7148.3
2025-04-212025年4月21日8754.695.4150
2025-04-222025年4月22日88.757.690147.6
2025-04-232025年4月23日9264.579.7144.2
2025-04-242025年4月24日97.375.265.8141.1
2025-04-252025年4月25日98.277.464.1141.5
2025-04-282025年4月28日9877.164.6141.6
2025-04-292025年4月29日9774.466.6141
2025-04-302025年4月30日97.776.265.1141.3
Rows × columns
21 × 6
Period covered
to
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_trace, derived from the stored result.
ColumnTypeRangeNotes
session_date date 2025-04-01 to 2025-04-30
day_label text 21 distinct values (2025年4月10日, 2025年4月11日, 2025年4月14日…)
index_rebased number 82.3 to 100.7
soxl_rebased number 51.7 to 101.9
soxs_rebased number 64.1 to 162.2
pair_rebased number 141 to 213.9

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
daily AS
(
    SELECT
        ticker,
        date,
        anyLast(toFloat64(close)) AS c
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('SOXX', 'SOXL', 'SOXS')
      AND date >= '2021-12-15'
      AND date <  '2026-09-01'
    GROUP BY ticker, date
),
lagged AS
(
    SELECT
        ticker,
        date,
        c,
        lagInFrame(c, 1) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS prev_c
    FROM daily
),
rets AS
(
    SELECT
        ticker,
        date,
        c / prev_c - 1 AS r
    FROM lagged
    WHERE prev_c > 0
      AND abs(c / prev_c - 1) < 0.75
      AND date >= '2022-01-01'
      AND (ticker, date) NOT IN
      (
          SELECT ticker, toDate(execution_date)
          FROM global_markets.stocks_splits
          WHERE ticker IN ('SOXX', 'SOXL', 'SOXS')
      )
),
monthly AS
(
    SELECT
        toStartOfMonth(date)                        AS m,
        exp(sumIf(log(1 + r), ticker = 'SOXX')) - 1 AS soxx,
        exp(sumIf(log(1 + r), ticker = 'SOXL')) - 1 AS soxl,
        exp(sumIf(log(1 + r), ticker = 'SOXS')) - 1 AS soxs
    FROM rets
    GROUP BY m
    HAVING countIf(ticker = 'SOXX') >= 15
       AND countIf(ticker = 'SOXL') >= 15
       AND countIf(ticker = 'SOXS') >= 15
),
picked AS
(
    SELECT argMin(m, soxl + soxs) AS pm
    FROM monthly
    WHERE abs(soxx) < 0.025
),
by_day AS
(
    SELECT
        date,
        anyIf(r, ticker = 'SOXX') AS r_index,
        anyIf(r, ticker = 'SOXL') AS r_soxl,
        anyIf(r, ticker = 'SOXS') AS r_soxs
    FROM rets
    WHERE toStartOfMonth(date) IN (SELECT pm FROM picked)
    GROUP BY date
)
SELECT
    toString(date) AS session_date,
    concat(toString(toYear(date)), '年', toString(toMonth(date)), '月', toString(toDayOfMonth(date)), '日') AS day_label,
    round(100 * exp(sum(log(1 + r_index)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)), 1) AS index_rebased,
    round(100 * exp(sum(log(1 + r_soxl)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)), 1)  AS soxl_rebased,
    round(100 * exp(sum(log(1 + r_soxs)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)), 1)  AS soxs_rebased,
    round(100 * exp(sum(log(1 + r_soxl)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))
        + 100 * exp(sum(log(1 + r_soxs)) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)), 1)  AS pair_rebased
FROM by_day
ORDER BY date
⌘/Ctrl + Enter

このデータをAIアシスタントで使う

このページのデータで、すぐにクエリできる状態で開きます。無料、アカウント不要。