{"slug":"how-to-roll-an-option-position","qid":"itm_extrinsic","label":"Time value left in an in-the-money KO call as expiry approaches","post_title":"How to Roll an Option Position: Up and Out","post_url":"/blog/how-to-roll-an-option-position#q-itm_extrinsic","columns":["dte_bucket","avg_time_value_dollars","time_value_pct_of_spot","sample_count"],"rows":[{"dte_bucket":"0-2 days","avg_time_value_dollars":0.34,"time_value_pct_of_spot":0.43,"sample_count":203},{"dte_bucket":"3-5 days","avg_time_value_dollars":0.29,"time_value_pct_of_spot":0.37,"sample_count":204},{"dte_bucket":"6-10 days","avg_time_value_dollars":0.46,"time_value_pct_of_spot":0.58,"sample_count":439},{"dte_bucket":"11-21 days","avg_time_value_dollars":0.65,"time_value_pct_of_spot":0.82,"sample_count":669},{"dte_bucket":"22-45 days","avg_time_value_dollars":1.05,"time_value_pct_of_spot":1.31,"sample_count":1200}],"shape":"ranking","sql":"SELECT\n    dte_bucket,\n    round(avg(extrinsic_dollars), 2) AS avg_time_value_dollars,\n    round(avg(extrinsic_pct), 2)     AS time_value_pct_of_spot,\n    count()                          AS sample_count\nFROM\n(\n    SELECT\n        multiIf(days_to_expiry <=  2, '0-2 days',\n                days_to_expiry <=  5, '3-5 days',\n                days_to_expiry <= 10, '6-10 days',\n                days_to_expiry <= 21, '11-21 days',\n                                      '22-45 days')  AS dte_bucket,\n        days_to_expiry                               AS dte,\n        greatest(toFloat64(option_close)\n                 - (toFloat64(underlying_close) - toFloat64(strike_price)), 0) AS extrinsic_dollars,\n        greatest(toFloat64(option_close)\n                 - (toFloat64(underlying_close) - toFloat64(strike_price)), 0)\n            / toFloat64(underlying_close) * 100                                AS extrinsic_pct\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'KO'\n      AND lower(option_type) IN ('call', 'c')\n      AND iv_converged = 1\n      AND volume > 0\n      AND date >= '2026-02-01'\n      AND date <  '2026-08-01'\n      AND days_to_expiry BETWEEN 0 AND 45\n      AND underlying_close > 0\n      AND toFloat64(strike_price) / toFloat64(underlying_close) BETWEEN 0.90 AND 0.99\n)\nGROUP BY dte_bucket\nORDER BY min(dte)","computed_at":"2026-08-07T15:40:38.073568+00:00","elapsed":0.003212201}