STRASMORE/EXPLORE 2,433 QUERIES

spy_monthly

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-20, from what-is-spy-etf.

as of series 13×5read in context →
spy_monthly — 13 rows by 5 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelmonth_end_closemonth_highmonth_low
2025-09Sep 2025666.18667.34634.92
2025-10Oct 2025682.06689.7652.84
2025-11Nov 2025683.39685.8650.85
2025-12Dec 2025681.92691.66671.2
2026-01Jan 2026691.97697.84676.57
2026-02Feb 2026685.99697.14675.78
2026-03Mar 2026650.34688.62629.28
2026-04Apr 2026718.66719.79645.11
2026-05May 2026756.48758.08714.99
2026-06Jun 2026746.77760.4716.58
2026-07Jul 2026747.03755.58729.1
2026-08Aug 2026767.05779.37748.8
2026-09Sep 2026761.69774.03749.6
Rows × columns
13 × 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 spy_monthly, derived from the stored result.
ColumnTypeRangeNotes
month text 13 distinct values (2025-09, 2025-10, 2025-11…)
month_label text 13 distinct values (Apr 2026, Aug 2026, Dec 2025…)
month_end_close number 650.34 to 767.05 US dollars
month_high number 667.34 to 779.37 US dollars
month_low number 629.28 to 749.6 US dollars

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
    formatDateTime(toStartOfMonth(date), '%Y-%m')   AS month,
    formatDateTime(toStartOfMonth(date), '%b %Y')   AS month_label,
    round(toFloat64(argMax(close, date)), 2)        AS month_end_close,
    round(toFloat64(max(high)), 2)                  AS month_high,
    round(toFloat64(min(low)), 2)                   AS month_low
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
  AND date >= toStartOfMonth(today() - 365)
  AND date <= today()
GROUP BY toStartOfMonth(date)
ORDER BY month
⌘/Ctrl + Enter