{"slug":"how-much-money-do-you-need-to-trade-options","qid":"spread_ladder","label":"spread_ladder","post_title":"how-much-money-do-you-need-to-trade-options","post_url":"/blog/how-much-money-do-you-need-to-trade-options#q-spread_ladder","columns":["spread","max_loss_usd","max_profit_usd"],"rows":[{"spread":"210/215","max_loss_usd":227,"max_profit_usd":273},{"spread":"212.5/217.5","max_loss_usd":190,"max_profit_usd":310},{"spread":"215/220","max_loss_usd":152,"max_profit_usd":348},{"spread":"217.5/222.5","max_loss_usd":135,"max_profit_usd":365},{"spread":"220/225","max_loss_usd":110,"max_profit_usd":390},{"spread":"222.5/227.5","max_loss_usd":79,"max_profit_usd":421},{"spread":"225/230","max_loss_usd":57,"max_profit_usd":443},{"spread":"227.5/232.5","max_loss_usd":42,"max_profit_usd":458}],"shape":"ranking","sql":"SELECT\n    concat(toString(a.strike), '/', toString(b.strike))   AS spread,\n    toUInt32(round((a.px - b.px) * 100))                  AS max_loss_usd,\n    toUInt32(round((5 - (a.px - b.px)) * 100))            AS max_profit_usd\nFROM\n(\n    SELECT\n        toFloat64(strike_price)                                AS strike,\n        toInt32(round(toFloat64(strike_price) * 100) + 500)    AS k_plus_5,\n        toFloat64(max(option_close))                           AS px,\n        toFloat64(max(underlying_close))                       AS spot\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'AAPL'\n      AND toDate(date) = '2025-05-19'\n      AND toDate(expiration_date) = '2025-06-20'\n      AND lower(toString(option_type)) IN ('c', 'call')\n      AND iv_converged = 1\n      AND volume > 0\n    GROUP BY strike_price\n) AS a\nINNER JOIN\n(\n    SELECT\n        toFloat64(strike_price)                                AS strike,\n        toInt32(round(toFloat64(strike_price) * 100))          AS k,\n        toFloat64(max(option_close))                           AS px\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'AAPL'\n      AND toDate(date) = '2025-05-19'\n      AND toDate(expiration_date) = '2025-06-20'\n      AND lower(toString(option_type)) IN ('c', 'call')\n      AND iv_converged = 1\n      AND volume > 0\n    GROUP BY strike_price\n) AS b ON a.k_plus_5 = b.k\nWHERE a.strike >= a.spot\n  AND a.px > b.px\n  AND a.px - b.px < 5\nORDER BY a.strike\nLIMIT 8","computed_at":"2026-09-18T15:22:56.659008+00:00","elapsed":0.004946147}