{"slug":"the-rule-of-16-in-options","qid":"iv_vs_realized","label":"Implied volatility divided by 16, next to the realized daily move","post_title":"The Rule of 16 in Options, and When It Breaks","post_url":"/blog/the-rule-of-16-in-options#q-iv_vs_realized","columns":["symbol","annual_iv_pct","implied_daily_pct","realized_daily_pct"],"rows":[{"symbol":"NVDA","annual_iv_pct":41.3,"implied_daily_pct":2.58,"realized_daily_pct":2.4},{"symbol":"AMZN","annual_iv_pct":35.5,"implied_daily_pct":2.22,"realized_daily_pct":2.33},{"symbol":"MSFT","annual_iv_pct":33.3,"implied_daily_pct":2.08,"realized_daily_pct":2.36},{"symbol":"AAPL","annual_iv_pct":26.8,"implied_daily_pct":1.68,"realized_daily_pct":1.73},{"symbol":"KO","annual_iv_pct":20.4,"implied_daily_pct":1.27,"realized_daily_pct":1.31},{"symbol":"SPY","annual_iv_pct":16.5,"implied_daily_pct":1.03,"realized_daily_pct":0.88}],"shape":"ranking","sql":"SELECT\n    iv.symbol                AS symbol,\n    round(iv.iv_pct, 1)      AS annual_iv_pct,\n    round(iv.iv_pct / 16, 2) AS implied_daily_pct,\n    round(rv.sigma_pct, 2)   AS realized_daily_pct\nFROM\n(\n    SELECT\n        underlying_symbol             AS symbol,\n        avg(implied_volatility) * 100 AS iv_pct\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')\n      AND date >= today() - 190\n      AND date <  today() - 1\n      AND iv_converged = 1\n      AND volume > 0\n      AND underlying_close > 0\n      AND days_to_expiry BETWEEN 20 AND 45\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05\n    GROUP BY symbol\n) AS iv\nINNER JOIN\n(\n    SELECT\n        symbol,\n        stddevPop(daily_return) * 100 AS sigma_pct\n    FROM\n    (\n        SELECT\n            symbol,\n            close_px / lagInFrame(close_px) OVER (PARTITION BY symbol ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1 AS daily_return\n        FROM\n        (\n            SELECT\n                ticker                AS symbol,\n                date                  AS session_date,\n                toFloat64(max(close)) AS close_px\n            FROM global_markets.stocks_daily_aggs\n            WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')\n              AND date >= today() - 190\n              AND date <  today() - 1\n            GROUP BY symbol, session_date\n        )\n    )\n    WHERE isFinite(daily_return)\n    GROUP BY symbol\n) AS rv ON iv.symbol = rv.symbol\nORDER BY annual_iv_pct DESC","computed_at":"2026-08-22T04:23:08.292375+00:00","elapsed":1.693750678}