hedge_math
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-28, from how-many-puts-to-hedge-a-portfolio.
| product | priced_from | reference_level | notional_per_contract_k | contracts_needed | exposure_covered_multiple |
|---|---|---|---|---|---|
| SPX put (cash settled) | Sep 28, 2026 | 7676.4 | 767.6 | 0.25 | 4.06 |
| SPY put (delivers shares) | Sep 28, 2026 | 767.64 | 76.8 | 2.46 | 0.41 |
| XSP put (cash settled) | Sep 28, 2026 | 767.64 | 76.8 | 2.46 | 0.41 |
- Rows × columns
- 3 × 6
- 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 |
|---|---|---|---|
product |
text | 3 distinct values | |
priced_from |
text | 1 distinct value (Sep 28, 2026) | |
reference_level |
number | 767.64 to 7,676.4 | |
notional_per_contract_k |
number | 76.8 to 767.6 | |
contracts_needed |
number | 0.25 to 2.46 | count |
exposure_covered_multiple |
number | 0.41 to 4.06 |
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
p.product AS product,
s.asof_label AS priced_from,
round(s.px * p.index_units, 2) AS reference_level,
round(s.px * p.index_units * 100 / 1000, 1) AS notional_per_contract_k,
round(189000 / (s.px * p.index_units * 100), 2) AS contracts_needed,
round(s.px * p.index_units * 100 / 189000, 2) AS exposure_covered_multiple
FROM
(
SELECT 'SPX put (cash settled)' AS product, 10 AS index_units
UNION ALL
SELECT 'SPY put (delivers shares)' AS product, 1 AS index_units
UNION ALL
SELECT 'XSP put (cash settled)' AS product, 1 AS index_units
) AS p
CROSS JOIN
(
SELECT
argMax(toFloat64(close), date) AS px,
formatDateTime(max(date), '%b %e, %Y') AS asof_label
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= today() - 30
) AS s
ORDER BY notional_per_contract_k DESC, product
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.