parity_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-25, from leaps-vs-margin-loan-financing-cost.
| strike | stock_price | call_price | put_price | net_debit | amount_financed | term_label | expiry_label | priced_on |
|---|---|---|---|---|---|---|---|---|
| $250 | 336.86 | 107.5 | 7.51 | 99.99 | 236.87 | 450 calendar days | Dec 2027 | Sep 23, 2026 |
| $300 | 336.86 | 71.96 | 18.48 | 53.48 | 283.38 | 450 calendar days | Dec 2027 | Sep 23, 2026 |
| $310 | 336.86 | 66.27 | 21.5 | 44.77 | 292.09 | 450 calendar days | Dec 2027 | Sep 23, 2026 |
| $320 | 336.86 | 60 | 26.45 | 33.55 | 303.31 | 450 calendar days | Dec 2027 | Sep 23, 2026 |
- Rows × columns
- 4 × 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 |
|---|---|---|---|
strike |
text | 4 distinct values ($250, $300, $310…) | |
stock_price |
number | every row is 336.86 | US dollars |
call_price |
number | 60 to 107.5 | US dollars |
put_price |
number | 7.51 to 26.45 | US dollars |
net_debit |
number | 33.55 to 99.99 | |
amount_financed |
number | 236.87 to 303.31 | |
term_label |
text | 1 distinct value (450 calendar days) | |
expiry_label |
text | 1 distinct value (Dec 2027) | |
priced_on |
text | 1 distinct value (Sep 23, 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
concat('$', toString(toUInt32(strike_price))) AS strike,
round(avg(toFloat64(underlying_close)), 2) AS stock_price,
round(avgIf(toFloat64(option_close), leg = 'call'), 2) AS call_price,
round(avgIf(toFloat64(option_close), leg = 'put'), 2) AS put_price,
round(avgIf(toFloat64(option_close), leg = 'call')
- avgIf(toFloat64(option_close), leg = 'put'), 2) AS net_debit,
round(avg(toFloat64(underlying_close))
- avgIf(toFloat64(option_close), leg = 'call')
+ avgIf(toFloat64(option_close), leg = 'put'), 2) AS amount_financed,
concat(toString(max(days_to_expiry)), ' calendar days') AS term_label,
formatDateTime(max(expiration_date), '%b %Y') AS expiry_label,
formatDateTime(max(date), '%b %e, %Y') AS priced_on
FROM
(
SELECT
strike_price,
underlying_close,
option_close,
days_to_expiry,
expiration_date,
date,
if(lower(toString(option_type)) LIKE 'c%', 'call', 'put') AS leg
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
)
AND expiration_date = (
SELECT expiration_date
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
)
AND days_to_expiry >= 200
AND toDayOfWeek(expiration_date) = 5
GROUP BY expiration_date
ORDER BY abs(toInt32(max(days_to_expiry)) - 450) ASC
LIMIT 1
)
AND toFloat64(option_close) > 0
AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.50 AND 0.95
AND modulo(toUInt32(strike_price), 10) = 0
)
GROUP BY strike_price
HAVING countIf(leg = 'call') > 0
AND countIf(leg = 'put') > 0
ORDER BY strike_price
LIMIT 12
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.