STRASMORE/EXPLORE 3,022 QUERIES

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.

as of ranking 6×4read in context →
horizon_cost — 6 rows by 4 columns, computed from US exchange, SIP and OPRA data.
dte_bucketcost_pct_of_positioncost_pct_per_30_daysavg_iv_pct
7-14 days0.080.2319.4
15-30 days0.270.3618.3
31-60 days0.580.4117.9
61-120 days1.20.4217.9
121-240 days2.070.3918.4
241-400 days3.490.3319.5
Rows × columns
6 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for horizon_cost, derived from the stored result.
ColumnTypeRangeNotes
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)
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.