STRASMORE/EXPLORE 2,173 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,173 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

Selling Mutual Funds at a Loss: How Basis Works
Daily tracking difference against SPY: broad US equity funds, first half of 2026ranking · 2026-08-01 · 4×3Preview: 4 ranked values, smallest first. The same monthly lots ranked by per share result at the December 2022 priceranking · 2026-08-01 · 18×3Preview: 16 ranked values, largest first. Distribution cadence: index and income funds, twelve months to June 30, 2026ranking · 2026-08-01 · 9×4Preview: 9 ranked values, largest first. A monthly buyer's lot prices and running average cost: VTI, July 2021 to December 2022series · 2026-08-01 · 18×4Preview: a 16-point series, ending lower.
Daily tracking difference against SPY: broad US equity funds, first half of 2026

Daily tracking difference against SPY: broad US equity funds, first half of 2026

most recentas of ranking 4×3read in context →
Daily tracking difference against SPY: broad US equity funds, first half of 2026 — 4 rows by 3 columns, computed from US exchange, SIP and OPRA data.
tickeravg_daily_gap_bpsmax_daily_gap_bps
VOO1.4432
IVV1.5727
VTI6.4835
RSP40.88138
the exact SQL behind every number
WITH daily AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'VOO', 'IVV', 'SPLG', 'VTI', 'RSP')
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2026-01-02')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker, session_date
),
with_prior AS (
    SELECT ticker,
           session_date,
           close_price,
           lagInFrame(close_price) OVER (PARTITION BY ticker ORDER BY session_date) AS prior_close
    FROM daily
),
moves AS (
    SELECT ticker, session_date, close_price / prior_close - 1 AS daily_move
    FROM with_prior
    WHERE prior_close > 0
),
benchmark AS (
    SELECT session_date, daily_move
    FROM moves
    WHERE ticker = 'SPY'
)
SELECT m.ticker AS ticker,
       round(avg(abs(m.daily_move - b.daily_move)) * 10000, 2) AS avg_daily_gap_bps,
       round(max(abs(m.daily_move - b.daily_move)) * 10000, 2) AS max_daily_gap_bps
FROM moves AS m
INNER JOIN benchmark AS b ON m.session_date = b.session_date
WHERE m.ticker != 'SPY'
GROUP BY m.ticker
ORDER BY avg_daily_gap_bps ASC
$