{"slug":"what-is-max-pain","qid":"strike_ladder","label":"SPY contracts traded by strike, July 17 2026 expiry","post_title":"What Is Max Pain in Options? The Real Math","post_url":"/blog/what-is-max-pain#q-strike_ladder","columns":["strike","call_contracts_k","put_contracts_k"],"rows":[{"strike":"736","call_contracts_k":8,"put_contracts_k":113.2},{"strike":"737","call_contracts_k":8.3,"put_contracts_k":168.9},{"strike":"738","call_contracts_k":9.5,"put_contracts_k":222.8},{"strike":"739","call_contracts_k":10.8,"put_contracts_k":235.1},{"strike":"740","call_contracts_k":99.8,"put_contracts_k":843.7},{"strike":"741","call_contracts_k":45.6,"put_contracts_k":430.9},{"strike":"742","call_contracts_k":114.8,"put_contracts_k":606.3},{"strike":"743","call_contracts_k":235.4,"put_contracts_k":728.4},{"strike":"744","call_contracts_k":401.6,"put_contracts_k":762.7},{"strike":"745","call_contracts_k":649.6,"put_contracts_k":800.4},{"strike":"746","call_contracts_k":549.4,"put_contracts_k":488.7},{"strike":"747","call_contracts_k":626.6,"put_contracts_k":263.8},{"strike":"748","call_contracts_k":467.1,"put_contracts_k":238.5},{"strike":"749","call_contracts_k":323.4,"put_contracts_k":162.1},{"strike":"750","call_contracts_k":598,"put_contracts_k":493.5},{"strike":"751","call_contracts_k":305.7,"put_contracts_k":151.3},{"strike":"752","call_contracts_k":331.9,"put_contracts_k":154.6},{"strike":"753","call_contracts_k":257,"put_contracts_k":131.5},{"strike":"754","call_contracts_k":210.8,"put_contracts_k":86.2},{"strike":"755","call_contracts_k":361.8,"put_contracts_k":94.4},{"strike":"756","call_contracts_k":148.2,"put_contracts_k":13.3},{"strike":"757","call_contracts_k":131.7,"put_contracts_k":8.1}],"shape":"ranking","sql":"SELECT toString(strike_usd) AS strike,\n       round(sumIf(contracts, opt_type = 'C') / 1e3, 1) AS call_contracts_k,\n       round(sumIf(contracts, opt_type = 'P') / 1e3, 1) AS put_contracts_k\nFROM (\n    SELECT intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) AS strike_usd,\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      AND intDiv(toUInt32OrZero(substring(ticker, length(ticker) - 7, 8)), 1000) BETWEEN 736 AND 757\n    GROUP BY strike_usd, opt_type\n)\nGROUP BY strike_usd, strike\nORDER BY strike_usd","computed_at":"2026-07-31T08:40:52.629438+00:00","elapsed":0.003377933}