STRASMORE/EXPLORE 2,648 QUERIES

annual_gap

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 rsp-vs-spy-equal-weight-sp-500.

as of ranking 15×4read in context →
annual_gap — 15 rows by 4 columns, computed from US exchange, SIP and OPRA data.
yearrsp_price_pctspy_price_pctrsp_minus_spy_pp
201213.511.71.8
201330.426.44
201413.412.41
2015-4.2-0.8-3.5
201614.311.23.1
201715.718.5-2.8
2018-10.2-7-3.2
201926.528.7-2.1
20209.915.1-5.2
202129.528.80.7
2022-13.3-19.96.7
202311.824.8-13
20241124-13
20259.616.6-7
20269.512.9-3.4
Rows × columns
15 × 4
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 annual_gap, derived from the stored result.
ColumnTypeRangeNotes
year text 15 distinct values (2012, 2013, 2014…)
rsp_price_pct number -13.3 to 30.4 percent
spy_price_pct number -19.9 to 28.8 percent
rsp_minus_spy_pp number -13 to 6.7

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
    toString(toYear(date)) AS year,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'RSP')
               / argMinIf(toFloat64(close), date, ticker = 'RSP') - 1), 1) AS rsp_price_pct,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'SPY')
               / argMinIf(toFloat64(close), date, ticker = 'SPY') - 1), 1) AS spy_price_pct,
    round(100 * (argMaxIf(toFloat64(close), date, ticker = 'RSP')
               / argMinIf(toFloat64(close), date, ticker = 'RSP')
               - argMaxIf(toFloat64(close), date, ticker = 'SPY')
               / argMinIf(toFloat64(close), date, ticker = 'SPY')), 1)     AS rsp_minus_spy_pp
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('RSP', 'SPY')
  AND date >= toDate('2012-01-01')
  AND date <  today()
GROUP BY year
ORDER BY year
⌘/Ctrl + Enter

Work with this data in your AI assistant

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

More from this analysisrsp-vs-spy-equal-weight-sp-500
paths series 92×5 → rebalance_volume series 11×6 → size_spread series 10×5 → Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays ranking 25×4 → Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years) ranking 25×3 → SPY options median spread by expiration date, near-the-money strikes only ranking 25×4 → See all 2,648 queries →