fx_vs_equity
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-10-09, from most-volatile-us-stocks-in-euros.
| month | vol_spy_pct | vol_eur_usd_pct | correlation_pct |
|---|---|---|---|
| 2023-09 | 12 | 6 | -7 |
| 2023-10 | 14 | 7 | 29 |
| 2023-11 | 11 | 9 | 54 |
| 2023-12 | 10 | 8 | 69 |
| 2024-01 | 11 | 6 | 38 |
| 2024-02 | 12 | 5 | 26 |
| 2024-03 | 10 | 5 | 30 |
| 2024-04 | 13 | 7 | 38 |
| 2024-05 | 9 | 4 | 69 |
| 2024-06 | 7 | 5 | 20 |
| 2024-07 | 14 | 4 | 24 |
| 2024-08 | 19 | 7 | -7 |
| 2024-09 | 14 | 5 | 29 |
| 2024-10 | 11 | 5 | -1 |
| 2024-11 | 12 | 10 | -35 |
| 2024-12 | 14 | 7 | 53 |
| 2025-01 | 14 | 9 | 35 |
| 2025-02 | 13 | 8 | 40 |
| 2025-03 | 21 | 9 | 1 |
| 2025-04 | 52 | 14 | -39 |
| 2025-05 | 17 | 9 | -56 |
| 2025-06 | 10 | 6 | 21 |
| 2025-07 | 7 | 7 | 22 |
| 2025-08 | 12 | 8 | 16 |
| 2025-09 | 7 | 7 | 32 |
| 2025-10 | 14 | 5 | -29 |
| 2025-11 | 15 | 4 | 1 |
| 2025-12 | 8 | 3 | 37 |
| 2026-01 | 10 | 9 | -23 |
| 2026-02 | 13 | 5 | 20 |
| 2026-03 | 18 | 8 | 55 |
| 2026-04 | 12 | 5 | 59 |
| 2026-05 | 10 | 4 | 66 |
| 2026-06 | 18 | 5 | 62 |
| 2026-07 | 12 | 5 | 27 |
| 2026-08 | 10 | 5 | 5 |
| 2026-09 | 11 | 4 | 47 |
- Rows × columns
- 37 × 4
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
month |
text | 37 distinct values (2023-09, 2023-10, 2023-11…) | |
vol_spy_pct |
number | 7 to 52 | percent |
vol_eur_usd_pct |
number | 3 to 14 | percent |
correlation_pct |
number | -56 to 69 | 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
px AS (
SELECT
date,
ticker,
toFloat64(close) AS c
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'FXE')
AND date >= today() - 1130
AND date < today()
AND close > 0
),
rets AS (
SELECT
ticker,
date,
log(c / lagInFrame(c) OVER (PARTITION BY ticker ORDER BY date
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)) AS ret
FROM px
),
paired AS (
SELECT
date,
anyIf(ret, ticker = 'SPY') AS r_spy,
anyIf(ret, ticker = 'FXE') AS r_fx
FROM rets
WHERE isFinite(ret)
GROUP BY date
HAVING countIf(ticker = 'SPY') = 1
AND countIf(ticker = 'FXE') = 1
)
SELECT
formatDateTime(toStartOfMonth(date), '%Y-%m') AS month,
toUInt32(round(stddevSamp(r_spy) * sqrt(252) * 100)) AS vol_spy_pct,
toUInt32(round(stddevSamp(r_fx) * sqrt(252) * 100)) AS vol_eur_usd_pct,
toInt32(round(corr(r_spy, r_fx) * 100)) AS correlation_pct
FROM paired
GROUP BY month
HAVING count() >= 10
ORDER BY month
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.