{"slug":"what-is-max-pain","qid":"pain_rank","label":"The six lowest-payout candidate strikes, SPY July 17 2026 expiry","post_title":"What Is Max Pain in Options? The Real Math","post_url":"/blog/what-is-max-pain#q-pain_rank","columns":["candidate_strike","holder_payout_usd_mm"],"rows":[{"candidate_strike":"$746","holder_payout_usd_mm":1898.2},{"candidate_strike":"$747","holder_payout_usd_mm":1940.2},{"candidate_strike":"$745","holder_payout_usd_mm":1960},{"candidate_strike":"$748","holder_payout_usd_mm":2071.2},{"candidate_strike":"$744","holder_payout_usd_mm":2166.9},{"candidate_strike":"$749","holder_payout_usd_mm":2272.8}],"shape":"ranking","sql":"WITH chain AS (\n    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike,\n           substring(ticker, length(ticker) - 8, 1)                              AS opt_type,\n           sum(toFloat64(volume))                                                AS contracts\n    FROM global_markets.options_minute_aggs\n    WHERE window_start >= toDateTime('2026-06-18 08:00:00')\n      AND window_start <  toDateTime('2026-07-18 04:00:00')\n      AND startsWith(ticker, 'O:SPY260717')\n    GROUP BY strike, opt_type\n),\ncandidates AS (\n    SELECT DISTINCT strike AS settle FROM chain WHERE strike BETWEEN 730 AND 765\n)\nSELECT concat('$', toString(candidates.settle)) AS candidate_strike,\n       round(sum(multiIf(chain.opt_type = 'C' AND chain.strike < candidates.settle,\n                         chain.contracts * (candidates.settle - chain.strike),\n                         chain.opt_type = 'P' AND chain.strike > candidates.settle,\n                         chain.contracts * (chain.strike - candidates.settle),\n                         0)) * 100 / 1e6, 1) AS holder_payout_usd_mm\nFROM candidates CROSS JOIN chain\nGROUP BY candidate_strike\nORDER BY holder_payout_usd_mm ASC\nLIMIT 6","computed_at":"2026-07-31T08:40:52.825308+00:00","elapsed":0.003718656}