qqq_en_euros
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-04, from buying-qqq-from-spain-and-mexico.
| month | qqq_usd_index | qqq_eur_index | fx_gap_pct |
|---|---|---|---|
| 2021-10 | 100 | 100 | 0 |
| 2021-11 | 102 | 104.1 | 2 |
| 2021-12 | 103 | 104.9 | 1.8 |
| 2022-01 | 94 | 97 | 3.1 |
| 2022-02 | 89.8 | 92.9 | 3.4 |
| 2022-03 | 93.9 | 98.5 | 4.9 |
| 2022-04 | 81.1 | 89.3 | 10.1 |
| 2022-05 | 79.8 | 86.5 | 8.3 |
| 2022-06 | 72.6 | 80.6 | 11.1 |
| 2022-07 | 81.7 | 93.1 | 14 |
| 2022-08 | 77.5 | 89.9 | 16 |
| 2022-09 | 69.2 | 82.4 | 19 |
| 2022-10 | 72 | 84.9 | 18 |
| 2022-11 | 76 | 85.2 | 12.1 |
| 2022-12 | 69 | 75.1 | 8.9 |
| 2023-01 | 76.3 | 81.9 | 7.3 |
| 2023-02 | 76 | 83.8 | 10.2 |
| 2023-03 | 83.1 | 89.3 | 7.4 |
| 2023-04 | 83.5 | 88.3 | 5.7 |
| 2023-05 | 90.1 | 98.3 | 9 |
| 2023-06 | 95.7 | 102.2 | 6.8 |
| 2023-07 | 99.4 | 105.3 | 5.9 |
| 2023-08 | 97.9 | 105.1 | 7.4 |
| 2023-09 | 92.8 | 102.2 | 10.2 |
| 2023-10 | 90.9 | 100 | 10.1 |
| 2023-11 | 100.7 | 107.7 | 7 |
| 2023-12 | 106.1 | 111.9 | 5.5 |
| 2024-01 | 108 | 116.4 | 7.8 |
| 2024-02 | 113.7 | 122.6 | 7.8 |
| 2024-03 | 115 | 124.1 | 8 |
| 2024-04 | 110 | 120 | 9.1 |
| 2024-05 | 116.7 | 125.3 | 7.3 |
| 2024-06 | 124.1 | 135 | 8.8 |
| 2024-07 | 122 | 131.3 | 7.6 |
| 2024-08 | 123.4 | 129.9 | 5.3 |
| 2024-09 | 126.4 | 132.3 | 4.6 |
| 2024-10 | 125.3 | 134.2 | 7.1 |
| 2024-11 | 132 | 145.6 | 10.3 |
| 2024-12 | 132.4 | 149 | 12.5 |
| 2025-01 | 135.3 | 151.9 | 12.3 |
| 2025-02 | 131.6 | 147.8 | 12.3 |
| 2025-03 | 121.4 | 130.9 | 7.7 |
| 2025-04 | 123.1 | 126.7 | 2.9 |
| 2025-05 | 134.4 | 138 | 2.6 |
| 2025-06 | 142.9 | 141.4 | -1.1 |
| 2025-07 | 146.3 | 149.6 | 2.2 |
| 2025-08 | 147.7 | 147.2 | -0.3 |
| 2025-09 | 155.5 | 154.4 | -0.7 |
| 2025-10 | 162.9 | 164.9 | 1.2 |
| 2025-11 | 160.4 | 161.2 | 0.5 |
| 2025-12 | 159.1 | 157.9 | -0.8 |
| 2026-01 | 161.1 | 158.4 | -1.7 |
| 2026-02 | 157.3 | 155.2 | -1.3 |
| 2026-03 | 149.5 | 150.8 | 0.9 |
| 2026-04 | 172.9 | 171.9 | -0.6 |
| 2026-05 | 191.2 | 191.1 | -0.1 |
| 2026-06 | 190.7 | 194.7 | 2.1 |
| 2026-07 | 178.2 | 180.1 | 1.1 |
| 2026-08 | 185.6 | 186.3 | 0.4 |
| 2026-09 | 191.6 | 197.3 | 3 |
- Rows × columns
- 60 × 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 | 60 distinct values (2021-10, 2021-11, 2021-12…) | |
qqq_usd_index |
number | 69 to 191.6 | US dollars |
qqq_eur_index |
number | 75.1 to 197.3 | |
fx_gap_pct |
number | -1.7 to 19 | 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
qqq AS
(
SELECT
toStartOfMonth(date) AS m,
argMax(toFloat64(close), date) AS usd_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'QQQ'
AND date >= addMonths(toStartOfMonth(today()), -60)
AND date < toStartOfMonth(today())
GROUP BY m
),
eur AS
(
SELECT
toStartOfMonth(date) AS m,
argMax(toFloat64(close), date) AS eur_unit
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'FXE'
AND date >= addMonths(toStartOfMonth(today()), -60)
AND date < toStartOfMonth(today())
GROUP BY m
),
paired AS
(
SELECT
qqq.m AS m,
qqq.usd_close AS in_usd,
qqq.usd_close / eur.eur_unit AS in_eur
FROM qqq
INNER JOIN eur ON qqq.m = eur.m
),
base AS
(
SELECT
argMin(in_usd, m) AS base_usd,
argMin(in_eur, m) AS base_eur
FROM paired
)
SELECT
formatDateTime(paired.m, '%Y-%m') AS month,
round(100 * paired.in_usd / base.base_usd, 1) AS qqq_usd_index,
round(100 * paired.in_eur / base.base_eur, 1) AS qqq_eur_index,
round(100 * (((paired.in_eur / base.base_eur) / (paired.in_usd / base.base_usd)) - 1), 1) AS fx_gap_pct
FROM paired
CROSS JOIN base
ORDER BY paired.m
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.