horizon_cost
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-04, from what-is-hedging.
| dte_bucket | cost_pct_of_position | cost_pct_per_30_days | avg_iv_pct |
|---|---|---|---|
| 7-14 days | 0.08 | 0.23 | 19.4 |
| 15-30 days | 0.27 | 0.36 | 18.3 |
| 31-60 days | 0.58 | 0.41 | 17.9 |
| 61-120 days | 1.2 | 0.42 | 17.9 |
| 121-240 days | 2.07 | 0.39 | 18.4 |
| 241-400 days | 3.49 | 0.33 | 19.5 |
- Rows × columns
- 6 × 4
- 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 |
|---|---|---|---|
dte_bucket |
text | 6 distinct values (121-240 days, 15-30 days, 241-400 days…) | |
cost_pct_of_position |
number | 0.08 to 3.49 | percent |
cost_pct_per_30_days |
number | 0.23 to 0.42 | percent |
avg_iv_pct |
number | 17.9 to 19.5 | 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
dte_bucket,
round(avg(premium_pct), 2) AS cost_pct_of_position,
round(avg(premium_pct) / avg(dte) * 30, 2) AS cost_pct_per_30_days,
round(avg(iv) * 100, 1) AS avg_iv_pct
FROM
(
SELECT
multiIf(days_to_expiry <= 14, '7-14 days',
days_to_expiry <= 30, '15-30 days',
days_to_expiry <= 60, '31-60 days',
days_to_expiry <= 120, '61-120 days',
days_to_expiry <= 240, '121-240 days',
'241-400 days') AS dte_bucket,
toFloat64(option_close) / toFloat64(underlying_close) * 100 AS premium_pct,
days_to_expiry AS dte,
implied_volatility AS iv
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND lower(option_type) LIKE 'p%'
AND iv_converged = 1
AND volume > 0
AND date >= '2026-09-01'
AND date < '2026-10-01'
AND days_to_expiry BETWEEN 7 AND 400
AND underlying_close > 0
AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.94 AND 0.96
)
GROUP BY dte_bucket
ORDER BY min(dte)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.