{"slug":"buying-puts-vs-buying-calls","qid":"parity_ladder","label":"parity_ladder","post_title":"buying-puts-vs-buying-calls","post_url":"/blog/buying-puts-vs-buying-calls#q-parity_ladder","columns":["ticker","put_pct_of_spot","call_pct_of_spot","put_minus_call_pct_of_spot"],"rows":[{"ticker":"XOM","put_pct_of_spot":3.691,"call_pct_of_spot":3.506,"put_minus_call_pct_of_spot":0.185},{"ticker":"KO","put_pct_of_spot":2.34,"call_pct_of_spot":2.503,"put_minus_call_pct_of_spot":-0.162},{"ticker":"SPY","put_pct_of_spot":1.601,"call_pct_of_spot":1.891,"put_minus_call_pct_of_spot":-0.291},{"ticker":"NVDA","put_pct_of_spot":4.634,"call_pct_of_spot":4.983,"put_minus_call_pct_of_spot":-0.349},{"ticker":"MSFT","put_pct_of_spot":4.025,"call_pct_of_spot":4.39,"put_minus_call_pct_of_spot":-0.366},{"ticker":"AAPL","put_pct_of_spot":2.99,"call_pct_of_spot":3.431,"put_minus_call_pct_of_spot":-0.441}],"shape":"ranking","sql":"WITH\nputs AS\n(\n    SELECT\n        underlying_symbol,\n        date,\n        strike_price,\n        expiration_date,\n        toFloat64(option_close)                                     AS put_close,\n        toFloat64(underlying_close)                                 AS spot\n    FROM global_markets.options_greeks\n    WHERE lower(option_type) LIKE 'p%'\n      AND underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')\n      AND date >= '2026-06-01'\n      AND date <  '2026-09-01'\n      AND volume > 0\n      AND days_to_expiry BETWEEN 25 AND 45\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.005\n),\ncalls AS\n(\n    SELECT\n        underlying_symbol,\n        date,\n        strike_price,\n        expiration_date,\n        toFloat64(option_close)                                     AS call_close\n    FROM global_markets.options_greeks\n    WHERE lower(option_type) NOT LIKE 'p%'\n      AND underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO', 'XOM')\n      AND date >= '2026-06-01'\n      AND date <  '2026-09-01'\n      AND volume > 0\n      AND days_to_expiry BETWEEN 25 AND 45\n)\nSELECT\n    p.underlying_symbol                                             AS ticker,\n    round(avg(p.put_close / p.spot) * 100, 3)                       AS put_pct_of_spot,\n    round(avg(c.call_close / p.spot) * 100, 3)                      AS call_pct_of_spot,\n    round(avg((p.put_close - c.call_close) / p.spot) * 100, 3)      AS put_minus_call_pct_of_spot\nFROM puts AS p\nINNER JOIN calls AS c\n    ON  p.underlying_symbol = c.underlying_symbol\n    AND p.date              = c.date\n    AND p.strike_price      = c.strike_price\n    AND p.expiration_date   = c.expiration_date\nGROUP BY ticker\nORDER BY put_minus_call_pct_of_spot DESC","computed_at":"2026-09-30T15:04:04.033862+00:00","elapsed":0.004651074}