{"slug":"how-many-puts-to-hedge-a-portfolio","qid":"put_cost_curve","label":"put_cost_curve","post_title":"how-many-puts-to-hedge-a-portfolio","post_url":"/blog/how-many-puts-to-hedge-a-portfolio#q-put_cost_curve","columns":["strike_distance","premium_pct_of_notional","annualised_pct"],"rows":[{"strike_distance":"within 2% of spot","premium_pct_of_notional":1.36,"annualised_pct":13.7},{"strike_distance":"2% to 5% below spot","premium_pct_of_notional":0.79,"annualised_pct":8.1},{"strike_distance":"5% to 10% below spot","premium_pct_of_notional":0.39,"annualised_pct":4},{"strike_distance":"10% to 20% below spot","premium_pct_of_notional":0.16,"annualised_pct":1.6}],"shape":"ranking","sql":"WITH puts AS\n(\n    SELECT\n        days_to_expiry                                       AS dte,\n        toFloat64(strike_price) / toFloat64(underlying_close) AS moneyness,\n        toFloat64(option_close) / toFloat64(underlying_close) AS premium_share\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND lower(toString(option_type)) LIKE 'p%'\n      AND days_to_expiry BETWEEN 20 AND 60\n      AND underlying_close > 0\n      AND option_close > 0\n      AND date >= (SELECT max(date) - 180 FROM global_markets.options_greeks WHERE underlying_symbol = 'SPY')\n      AND date <= (SELECT max(date) FROM global_markets.options_greeks WHERE underlying_symbol = 'SPY')\n)\nSELECT\n    strike_distance,\n    round(100 * avg(premium_share), 2)                  AS premium_pct_of_notional,\n    round(100 * avg(premium_share) * 365 / avg(dte), 1) AS annualised_pct\nFROM\n(\n    SELECT\n        premium_share,\n        dte,\n        moneyness,\n        multiIf(moneyness >= 0.98, 'within 2% of spot',\n                moneyness >= 0.95, '2% to 5% below spot',\n                moneyness >= 0.90, '5% to 10% below spot',\n                '10% to 20% below spot')                AS strike_distance\n    FROM puts\n    WHERE moneyness >= 0.80\n      AND moneyness <  1.00\n)\nGROUP BY strike_distance\nHAVING count() > 5\nORDER BY avg(moneyness) DESC","computed_at":"2026-09-28T15:14:56.781903+00:00","elapsed":0.002417828}