rounding_residual
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.
| portfolio_size | exact_contracts | contracts_rounded_down | unhedged_usd_thousands | unhedged_pct | overhedge_pct |
|---|---|---|---|---|---|
| $60k | 0.82 | 0 | 63 | 105 | 22.94 |
| $120k | 1.64 | 1 | 49.2 | 41.03 | 22.94 |
| $180k | 2.46 | 2 | 35.5 | 19.71 | 22.94 |
| $300k | 4.1 | 4 | 7.9 | 2.65 | 22.94 |
| $500k | 6.84 | 6 | 64.4 | 12.88 | 2.47 |
| $700k | 9.57 | 9 | 44.1 | 6.3 | 4.66 |
| $900k | 12.31 | 12 | 23.8 | 2.65 | 5.88 |
- Rows × columns
- 7 × 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 |
|---|---|---|---|
portfolio_size |
text | 7 distinct values ($120k, $180k, $300k…) | |
exact_contracts |
number | 0.82 to 12.31 | count |
contracts_rounded_down |
number | 0 to 12 | count |
unhedged_usd_thousands |
number | 7.9 to 64.4 | US dollars |
unhedged_pct |
number | 2.65 to 105 | percent |
overhedge_pct |
number | 2.47 to 22.94 | percent |
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
portfolio_size,
round(exact_raw, 2) AS exact_contracts,
toUInt16(floor(exact_raw)) AS contracts_rounded_down,
round((beta_notional - floor(exact_raw) * contract_notional) / 1000, 1) AS unhedged_usd_thousands,
round(100 * (beta_notional - floor(exact_raw) * contract_notional) / portfolio, 2) AS unhedged_pct,
round(100 * (ceil(exact_raw) * contract_notional - beta_notional) / portfolio, 2) AS overhedge_pct
FROM
(
SELECT
v.portfolio AS portfolio,
concat('$', toString(intDiv(v.portfolio, 1000)), 'k') AS portfolio_size,
v.portfolio * 1.05 AS beta_notional,
s.px * 100 AS contract_notional,
v.portfolio * 1.05 / (s.px * 100) AS exact_raw
FROM
(
SELECT arrayJoin([60000, 120000, 180000, 300000, 500000, 700000, 900000]) AS portfolio
) AS v
CROSS JOIN
(
SELECT argMax(toFloat64(close), date) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= today() - 30
) AS s
)
ORDER BY exact_contracts
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.