margin_spread_ladder
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-17, from how-to-get-approved-for-options-trading.
| short_strike | long_strike | short_put_price | long_put_price | net_credit_dollars | margin_requirement_dollars | credit_pct_of_requirement | cash_vs_margin_ratio | spy_close |
|---|---|---|---|---|---|---|---|---|
| 740 | 735 | 12.37 | 10.6 | 177 | 323 | 54.8 | 229.1 | 742.45 |
| 735 | 730 | 10.6 | 8.96 | 164 | 336 | 48.8 | 218.8 | 742.45 |
| 730 | 725 | 8.96 | 7.71 | 125 | 375 | 33.3 | 194.7 | 742.45 |
| 725 | 720 | 7.71 | 6.58 | 113 | 387 | 29.2 | 187.3 | 742.45 |
| 720 | 715 | 6.58 | 5.72 | 86 | 414 | 20.8 | 173.9 | 742.45 |
| 715 | 710 | 5.72 | 4.87 | 85 | 415 | 20.5 | 172.3 | 742.45 |
| 710 | 705 | 4.87 | 4.19 | 68 | 432 | 15.7 | 164.4 | 742.45 |
| 705 | 700 | 4.19 | 3.59 | 60 | 440 | 13.6 | 160.2 | 742.45 |
| 700 | 695 | 3.59 | 3.18 | 41 | 459 | 8.9 | 152.5 | 742.45 |
- Rows × columns
- 9 × 9
- 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 |
|---|---|---|---|
short_strike |
number | 700 to 740 | US dollars |
long_strike |
number | 695 to 735 | US dollars |
short_put_price |
number | 3.59 to 12.37 | US dollars |
long_put_price |
number | 3.18 to 10.6 | US dollars |
net_credit_dollars |
number | 41 to 177 | |
margin_requirement_dollars |
number | 323 to 459 | |
credit_pct_of_requirement |
number | 8.9 to 54.8 | percent |
cash_vs_margin_ratio |
number | 152.5 to 229.1 | ratio or rate |
spy_close |
text | 1 distinct value (742.45) |
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.
the exact SQL behind every number
SELECT
s.strike AS short_strike,
l.strike AS long_strike,
s.put_price AS short_put_price,
l.put_price AS long_put_price,
toInt32(round((s.put_price - l.put_price) * 100)) AS net_credit_dollars,
toInt32(round((s.strike - l.strike) * 100)) - net_credit_dollars AS margin_requirement_dollars,
round(net_credit_dollars / margin_requirement_dollars * 100, 1) AS credit_pct_of_requirement,
round(s.strike * 100 / margin_requirement_dollars, 1) AS cash_vs_margin_ratio,
s.spy_close AS spy_close
FROM
(
SELECT
toInt32(round(toFloat64(strike_price))) AS strike,
strike - 5 AS long_strike,
round(any(toFloat64(option_close)), 2) AS put_price,
toString(round(any(toFloat64(underlying_close)), 2)) AS spy_close
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND toDate(date) = toDate('2026-06-12')
AND toDate(expiration_date) = toDate('2026-07-17')
AND lower(toString(option_type)) LIKE 'p%'
AND iv_converged = 1
AND volume > 0
AND toFloat64(underlying_close) > 0
AND toFloat64(strike_price) < toFloat64(underlying_close)
AND toFloat64(strike_price) >= toFloat64(underlying_close) * 0.94
AND toInt32(round(toFloat64(strike_price))) % 5 = 0
AND abs(toFloat64(strike_price) - round(toFloat64(strike_price))) < 0.001
GROUP BY strike_price
) AS s
INNER JOIN
(
SELECT
toInt32(round(toFloat64(strike_price))) AS strike,
round(any(toFloat64(option_close)), 2) AS put_price
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND toDate(date) = toDate('2026-06-12')
AND toDate(expiration_date) = toDate('2026-07-17')
AND lower(toString(option_type)) LIKE 'p%'
AND iv_converged = 1
AND volume > 0
AND toFloat64(underlying_close) > 0
AND toFloat64(strike_price) < toFloat64(underlying_close)
AND toFloat64(strike_price) >= toFloat64(underlying_close) * 0.90
AND toInt32(round(toFloat64(strike_price))) % 5 = 0
AND abs(toFloat64(strike_price) - round(toFloat64(strike_price))) < 0.001
GROUP BY strike_price
) AS l ON l.strike = s.long_strike
ORDER BY short_strike DESC
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysishow-to-get-approved-for-options-trading
cash_account_ladder
table 9×5
→
The 2s10s spread, every print of the half
table 124×2
→
The 2s10s spread, every print of the half
table 124×2
→
Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print
table 100×7
→
SPY at one-minute resolution, 2:00–3:30 pm ET on May 6, 2010
table 90×4
→
Executed volume by price level: the traded ladder (KO, 30 minutes)
table 63×3
→
See all 2,309 queries →