{"slug":"reading-an-event-contract-ladder","qid":"ladder_audit","label":"ladder_audit","post_title":"reading-an-event-contract-ladder","post_url":"/blog/reading-an-event-contract-ladder#q-ladder_audit","columns":["expiry_date","band_prob_pct","leg_count","non_monotone_pairs"],"rows":[{"expiry_date":"2026-06-12","band_prob_pct":96.7,"leg_count":10,"non_monotone_pairs":0},{"expiry_date":"2026-06-26","band_prob_pct":92.4,"leg_count":12,"non_monotone_pairs":0},{"expiry_date":"2026-07-10","band_prob_pct":85.5,"leg_count":10,"non_monotone_pairs":0},{"expiry_date":"2026-07-17","band_prob_pct":82.9,"leg_count":12,"non_monotone_pairs":0},{"expiry_date":"2026-07-31","band_prob_pct":70.1,"leg_count":12,"non_monotone_pairs":0}],"shape":"series","sql":"WITH\n    pinned AS\n    (\n        SELECT max(date) AS as_of\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n          AND date <= '2026-05-29'\n    ),\n    chain AS\n    (\n        SELECT\n            expiration_date,\n            strike_price,\n            option_close,\n            underlying_close\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n          AND date = (SELECT as_of FROM pinned)\n          AND iv_converged = 1\n          AND volume > 0\n          AND delta > 0.01\n          AND delta < 0.99\n          AND days_to_expiry BETWEEN 10 AND 75\n          AND toDayOfWeek(expiration_date) = 5\n    ),\n    legs AS\n    (\n        SELECT\n            expiration_date                          AS expiry,\n            toUInt32(round(toFloat64(strike_price))) AS strike,\n            round(avg(toFloat64(option_close)), 4)   AS call_price\n        FROM chain\n        WHERE abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.08\n          AND modulo(toUInt32(round(toFloat64(strike_price))), 10) = 0\n        GROUP BY expiry, strike\n    ),\n    ranked AS\n    (\n        SELECT\n            expiry,\n            strike,\n            call_price,\n            row_number() OVER (PARTITION BY expiry ORDER BY strike) AS rn\n        FROM legs\n    ),\n    pairs AS\n    (\n        SELECT\n            a.expiry                                                                AS expiry,\n            a.rn                                                                    AS rn,\n            greatest((a.call_price - b.call_price) / (b.strike - a.strike), 0)       AS p,\n            if(b.call_price > a.call_price, 1, 0)                                    AS bad\n        FROM ranked AS a\n        INNER JOIN ranked AS b ON b.expiry = a.expiry AND b.rn = a.rn + 1\n    )\nSELECT\n    toString(expiry)                                  AS expiry_date,\n    round(100 * (argMin(p, rn) - argMax(p, rn)), 1)   AS band_prob_pct,\n    toUInt32(count() + 1)                             AS leg_count,\n    toUInt32(sum(bad))                                AS non_monotone_pairs\nFROM pairs\nGROUP BY expiry\nHAVING count() >= 4\nORDER BY expiry","computed_at":"2026-10-01T15:25:00.167820+00:00","elapsed":0.005519486}