rueckblick
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 itm-vs-otm-leaps.
| strike_type | basispreis | verfall | spy_start | spy_ende | spy_veraenderung_pct | praemie_start | praemie_ende | praemie_veraenderung_pct | delta_start | delta_ende | zeitwert_anteil_start_pct | zeitwert_anteil_ende_pct | stichtag_ende |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ITM (Delta ~0,80) | 610 | 17.12.2027 | 657.25 | 757.5286 | 15.3 | 119.75 | 188.5 | 57.4 | 0.8 | 0.89 | 60.5 | 21.7 | 10.09.2026 |
| ATM (Delta ~0,50) | 730 | 17.12.2027 | 657.25 | 764.48 | 16.3 | 50.17 | 105.01 | 109.3 | 0.52 | 0.71 | 100 | 67.2 | 11.09.2026 |
| OTM (Delta ~0,30) | 805 | 17.12.2027 | 657.25 | 764.48 | 16.3 | 21.4 | 55.74 | 160.5 | 0.31 | 0.53 | 100 | 100 | 11.09.2026 |
- Rows × columns
- 3 × 14
- 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 |
|---|---|---|---|
strike_type |
text | 3 distinct values | |
basispreis |
number | 610 to 805 | |
verfall |
text | 1 distinct value (17.12.2027) | |
spy_start |
number | every row is 657.25 | |
spy_ende |
number | 757.5286 to 764.48 | |
spy_veraenderung_pct |
number | 15.3 to 16.3 | percent |
praemie_start |
number | 21.4 to 119.75 | |
praemie_ende |
number | 55.74 to 188.5 | |
praemie_veraenderung_pct |
number | 57.4 to 160.5 | percent |
delta_start |
number | 0.31 to 0.8 | |
delta_ende |
number | 0.53 to 0.89 | |
zeitwert_anteil_start_pct |
number | 60.5 to 100 | percent |
zeitwert_anteil_ende_pct |
number | 21.7 to 100 | percent |
stichtag_ende |
text | 2 distinct values (10.09.2026, 11.09.2026) |
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
a.strike_type AS strike_type,
a.basispreis AS basispreis,
formatDateTime(a.verfall, '%d.%m.%Y') AS verfall,
a.spy_start AS spy_start,
b.spy_ende AS spy_ende,
round((b.spy_ende / a.spy_start - 1) * 100, 1) AS spy_veraenderung_pct,
a.praemie_start AS praemie_start,
b.praemie_ende AS praemie_ende,
round((b.praemie_ende / a.praemie_start - 1) * 100, 1) AS praemie_veraenderung_pct,
round(a.delta_start, 2) AS delta_start,
round(b.delta_ende, 2) AS delta_ende,
round(a.zeitwert_anteil_start, 1) AS zeitwert_anteil_start_pct,
round((b.praemie_ende - greatest(b.spy_ende - a.basispreis, 0)) / b.praemie_ende * 100, 1) AS zeitwert_anteil_ende_pct,
formatDateTime(b.end_datum, '%d.%m.%Y') AS stichtag_ende
FROM
(
SELECT
['ITM (Delta ~0,80)', 'ATM (Delta ~0,50)', 'OTM (Delta ~0,30)'][i] AS strike_type,
[0.80, 0.50, 0.30][i] AS ziel_delta,
argMin(tuple(ticker, toFloat64(strike_price), toFloat64(option_close), toFloat64(underlying_close),
toFloat64(delta), expiration_date),
abs(toFloat64(delta) - [0.80, 0.50, 0.30][i])) AS best,
tupleElement(best, 1) AS kontrakt,
tupleElement(best, 2) AS basispreis,
tupleElement(best, 3) AS praemie_start,
tupleElement(best, 4) AS spy_start,
tupleElement(best, 5) AS delta_start,
tupleElement(best, 6) AS verfall,
(praemie_start - greatest(spy_start - basispreis, 0)) / praemie_start * 100 AS zeitwert_anteil_start
FROM global_markets.options_greeks
ARRAY JOIN [1, 2, 3] AS i
WHERE underlying_symbol = 'SPY'
AND option_type IN ('call', 'C', 'CALL')
AND date = '2025-09-12'
AND iv_converged = 1
AND volume > 0
AND option_close > 0
AND expiration_date =
(
SELECT max(expiration_date)
FROM
(
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND option_type IN ('call', 'C', 'CALL')
AND date = '2025-09-12'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry >= 365
GROUP BY expiration_date
HAVING count() >= 15
)
)
GROUP BY i
) AS a
INNER JOIN
(
SELECT
ticker,
argMax(toFloat64(option_close), date) AS praemie_ende,
argMax(toFloat64(underlying_close), date) AS spy_ende,
argMax(toFloat64(delta), date) AS delta_ende,
max(date) AS end_datum
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND option_type IN ('call', 'C', 'CALL')
AND date BETWEEN '2026-09-01' AND '2026-09-11'
AND expiration_date >= '2026-12-01'
AND option_close > 0
GROUP BY ticker
) AS b ON b.ticker = a.kontrakt
ORDER BY a.ziel_delta DESC