STRASMORE/EXPLORE 2,648 QUERIES

monthly_tracking

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 spy-vs-voo-vs-splg.

as of series 11×5read in context →
monthly_tracking — 11 rows by 5 columns, computed from US exchange, SIP and OPRA data.
monthspy_pctvoo_pctsplg_pctspread_pct
2025-102.852.842.550.3
2025-11-0.33-0.3200.01
2025-120.460.4700.02
2026-010.910.8900.03
2026-02-0.52-0.500.03
2026-03-4.18-4.2700.09
2026-049.99.900
2026-054.884.8900
2026-06-1.14-1.1100.02
2026-070.270.2800.01
2026-082.352.3300.02
Rows × columns
11 × 5
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 monthly_tracking, derived from the stored result.
ColumnTypeRangeNotes
month text 11 distinct values (2025-10, 2025-11, 2025-12…)
spy_pct number -4.18 to 9.9 percent
voo_pct number -4.27 to 9.9 percent
splg_pct number 0 to 2.55 percent
spread_pct number 0 to 0.3 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 monthly AS
(
    SELECT
        ticker,
        toStartOfMonth(date)           AS m,
        argMin(toFloat64(open), date)  AS first_open,
        argMax(toFloat64(close), date) AS last_close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN ('SPY', 'VOO', 'SPLG')
      AND date >= '2025-10-01'
      AND date <  '2026-09-01'
    GROUP BY ticker, m
),
pct AS
(
    SELECT
        ticker,
        m,
        (last_close / first_open - 1) * 100 AS chg
    FROM monthly
)
SELECT
    formatDateTime(m, '%Y-%m')            AS month,
    round(maxIf(chg, ticker = 'SPY'), 2)  AS spy_pct,
    round(maxIf(chg, ticker = 'VOO'), 2)  AS voo_pct,
    round(maxIf(chg, ticker = 'SPLG'), 2) AS splg_pct,
    round(max(chg) - min(chg), 2)         AS spread_pct
FROM pct
GROUP BY m
ORDER BY m
⌘/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 analysisspy-vs-voo-vs-splg
options_market ranking 3×3 → distribution_lag table 3×5 → quoted_spreads ranking 2×4 → fund_liquidity ranking 2×4 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → See all 2,648 queries →