pinned_trace
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-01, from put-credit-spread-win-rate-and-breakeven.
| date | spy_close | short_strike | breakeven |
|---|---|---|---|
| 2022-08-16 | 429.7 | 415 | 412.86 |
| 2022-08-17 | 426.65 | 415 | 412.86 |
| 2022-08-18 | 427.89 | 415 | 412.86 |
| 2022-08-19 | 422.14 | 415 | 412.86 |
| 2022-08-22 | 413.35 | 415 | 412.86 |
| 2022-08-23 | 412.35 | 415 | 412.86 |
| 2022-08-24 | 413.67 | 415 | 412.86 |
| 2022-08-25 | 419.51 | 415 | 412.86 |
| 2022-08-26 | 405.31 | 415 | 412.86 |
| 2022-08-29 | 402.63 | 415 | 412.86 |
| 2022-08-30 | 398.21 | 415 | 412.86 |
| 2022-08-31 | 395.18 | 415 | 412.86 |
| 2022-09-01 | 396.42 | 415 | 412.86 |
| 2022-09-02 | 392.24 | 415 | 412.86 |
| 2022-09-06 | 390.76 | 415 | 412.86 |
| 2022-09-07 | 397.78 | 415 | 412.86 |
| 2022-09-08 | 400.38 | 415 | 412.86 |
| 2022-09-09 | 406.6 | 415 | 412.86 |
| 2022-09-12 | 410.97 | 415 | 412.86 |
| 2022-09-13 | 393.1 | 415 | 412.86 |
| 2022-09-14 | 394.6 | 415 | 412.86 |
| 2022-09-15 | 390.12 | 415 | 412.86 |
| 2022-09-16 | 385.56 | 415 | 412.86 |
| 2022-09-19 | 388.55 | 415 | 412.86 |
| 2022-09-20 | 384.09 | 415 | 412.86 |
| 2022-09-21 | 377.39 | 415 | 412.86 |
| 2022-09-22 | 374.22 | 415 | 412.86 |
| 2022-09-23 | 367.95 | 415 | 412.86 |
| 2022-09-26 | 364.31 | 415 | 412.86 |
| 2022-09-27 | 363.38 | 415 | 412.86 |
| 2022-09-28 | 370.53 | 415 | 412.86 |
| 2022-09-29 | 362.79 | 415 | 412.86 |
| 2022-09-30 | 357.18 | 415 | 412.86 |
- Rows × columns
- 33 × 4
- Period covered
- to
- 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 |
|---|---|---|---|
date |
date | 2022-08-16 to 2022-09-30 | |
spy_close |
number | 357.18 to 429.7 | US dollars |
short_strike |
number | every row is 415 | US dollars |
breakeven |
number | every row is 412.86 |
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
pin AS
(
SELECT
date AS entry_date,
argMin(expiration_date, abs(days_to_expiry - 45)) AS expiry
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND lower(option_type) IN ('put', 'p')
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 38 AND 52
AND date = '2022-08-16'
GROUP BY date
),
short_leg AS
(
SELECT
p.entry_date AS entry_date,
p.expiry AS expiry,
argMin(toFloat64(g.strike_price), abs(abs(g.delta) - 0.30)) AS short_strike,
argMin(toFloat64(g.option_close), abs(abs(g.delta) - 0.30)) AS short_mark
FROM global_markets.options_greeks AS g
INNER JOIN pin AS p
ON g.date = p.entry_date AND g.expiration_date = p.expiry
WHERE g.underlying_symbol = 'SPY'
AND lower(g.option_type) IN ('put', 'p')
AND g.iv_converged = 1
AND g.volume > 0
AND g.date = '2022-08-16'
AND abs(g.delta) BETWEEN 0.20 AND 0.40
GROUP BY p.entry_date, p.expiry
),
long_leg AS
(
SELECT
s.entry_date AS entry_date,
argMin(toFloat64(g.option_close), abs(toFloat64(g.strike_price) - (s.short_strike - 10))) AS long_mark
FROM global_markets.options_greeks AS g
INNER JOIN short_leg AS s
ON g.date = s.entry_date AND g.expiration_date = s.expiry
WHERE g.underlying_symbol = 'SPY'
AND lower(g.option_type) IN ('put', 'p')
AND g.iv_converged = 1
AND g.date = '2022-08-16'
AND toFloat64(g.strike_price) BETWEEN s.short_strike - 12 AND s.short_strike - 8
GROUP BY s.entry_date
),
spread AS
(
SELECT
s.entry_date AS entry_date,
s.expiry AS expiry,
s.short_strike AS short_strike,
s.short_strike - (s.short_mark - l.long_mark) AS breakeven
FROM short_leg AS s
INNER JOIN long_leg AS l ON s.entry_date = l.entry_date
)
SELECT
toString(d.date) AS date,
round(toFloat64(d.close), 2) AS spy_close,
round(p.short_strike, 2) AS short_strike,
round(p.breakeven, 2) AS breakeven
FROM global_markets.stocks_daily_aggs AS d
CROSS JOIN spread AS p
WHERE d.ticker = 'SPY'
AND d.date >= p.entry_date
AND d.date <= p.expiry
ORDER BY d.date
Arbeiten Sie mit diesen Daten in Ihrem KI-Assistenten
Öffnet sich abfragebereit, mit den Daten dieser Seite. Kostenlos, ohne Konto.