{"slug":"put-credit-spread-win-rate-and-breakeven","qid":"outcomes","label":"outcomes","post_title":"put-credit-spread-win-rate-and-breakeven","post_url":"/blog/lang/de/put-credit-spread-win-rate-and-breakeven#q-outcomes","columns":["outcome_bucket","entry_count","share_pct"],"rows":[{"outcome_bucket":"maximaler Verlust","entry_count":122,"share_pct":10.6},{"outcome_bucket":"teilweise im Geld","entry_count":86,"share_pct":7.4},{"outcome_bucket":"voll aus dem Geld","entry_count":947,"share_pct":82}],"shape":"ranking","sql":"WITH\nexpiries AS\n(\n    SELECT\n        date                                              AS entry_date,\n        argMin(expiration_date, abs(days_to_expiry - 45)) AS expiry\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'SPY'\n      AND lower(option_type) IN ('put', 'p')\n      AND iv_converged = 1\n      AND volume > 0\n      AND days_to_expiry BETWEEN 38 AND 52\n      AND date >= '2021-08-01'\n    GROUP BY date\n),\nshort_leg AS\n(\n    SELECT\n        e.entry_date                                                AS entry_date,\n        e.expiry                                                    AS expiry,\n        argMin(toFloat64(g.strike_price), abs(abs(g.delta) - 0.30)) AS short_strike,\n        argMin(toFloat64(g.option_close), abs(abs(g.delta) - 0.30)) AS short_mark\n    FROM global_markets.options_greeks AS g\n    INNER JOIN expiries AS e\n        ON g.date = e.entry_date AND g.expiration_date = e.expiry\n    WHERE g.underlying_symbol = 'SPY'\n      AND lower(g.option_type) IN ('put', 'p')\n      AND g.iv_converged = 1\n      AND g.volume > 0\n      AND g.date >= '2021-08-01'\n      AND abs(g.delta) BETWEEN 0.20 AND 0.40\n    GROUP BY e.entry_date, e.expiry\n),\nlong_leg AS\n(\n    SELECT\n        s.entry_date                                                                             AS entry_date,\n        argMin(toFloat64(g.strike_price), abs(toFloat64(g.strike_price) - (s.short_strike - 10))) AS long_strike,\n        argMin(toFloat64(g.option_close), abs(toFloat64(g.strike_price) - (s.short_strike - 10))) AS long_mark\n    FROM global_markets.options_greeks AS g\n    INNER JOIN short_leg AS s\n        ON g.date = s.entry_date AND g.expiration_date = s.expiry\n    WHERE g.underlying_symbol = 'SPY'\n      AND lower(g.option_type) IN ('put', 'p')\n      AND g.iv_converged = 1\n      AND g.date >= '2021-08-01'\n      AND toFloat64(g.strike_price) BETWEEN s.short_strike - 12 AND s.short_strike - 8\n    GROUP BY s.entry_date\n),\nsettled AS\n(\n    SELECT\n        s.short_strike                 AS short_strike,\n        l.long_strike                  AS long_strike,\n        s.short_strike - l.long_strike AS width,\n        s.short_mark - l.long_mark     AS credit,\n        toFloat64(d.close)             AS settle_close\n    FROM short_leg AS s\n    INNER JOIN long_leg AS l ON s.entry_date = l.entry_date\n    INNER JOIN\n    (\n        SELECT date, close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n          AND date >= '2021-08-01'\n    ) AS d ON d.date = s.expiry\n    WHERE l.long_strike < s.short_strike\n      AND s.short_mark > l.long_mark\n      AND s.short_strike - l.long_strike BETWEEN 9 AND 11\n),\ntotals AS\n(\n    SELECT count() AS all_entries FROM settled\n)\nSELECT\n    multiIf(settle_close >= short_strike, 'voll aus dem Geld',\n            settle_close <= long_strike,  'maximaler Verlust',\n                                          'teilweise im Geld') AS outcome_bucket,\n    count()                                                     AS entry_count,\n    round(100 * count() / any(t.all_entries), 1)                AS share_pct\nFROM settled AS s\nCROSS JOIN totals AS t\nGROUP BY outcome_bucket\nORDER BY outcome_bucket","computed_at":"2026-10-01T15:49:13.769417+00:00","elapsed":0.008627582}