{"slug":"buffer-etfs-defined-outcome","qid":"payoff_grid","label":"A 15% cap and 9% buffer, seen from three entry points","post_title":"How Buffer ETFs Work: Caps and Resets","post_url":"/blog/buffer-etfs-defined-outcome#q-payoff_grid","columns":["index_return_pct","bought_at_reset_pct","bought_after_drop_pct","bought_after_rally_pct"],"rows":[{"index_return_pct":-30,"bought_at_reset_pct":-21,"bought_after_drop_pct":-18.6,"bought_after_rally_pct":-24},{"index_return_pct":-27,"bought_at_reset_pct":-18,"bought_after_drop_pct":-15.5,"bought_after_rally_pct":-21.2},{"index_return_pct":-24,"bought_at_reset_pct":-15,"bought_after_drop_pct":-12.4,"bought_after_rally_pct":-18.3},{"index_return_pct":-21,"bought_at_reset_pct":-12,"bought_after_drop_pct":-9.3,"bought_after_rally_pct":-15.4},{"index_return_pct":-18,"bought_at_reset_pct":-9,"bought_after_drop_pct":-6.2,"bought_after_rally_pct":-12.5},{"index_return_pct":-15,"bought_at_reset_pct":-6,"bought_after_drop_pct":-3.1,"bought_after_rally_pct":-9.6},{"index_return_pct":-12,"bought_at_reset_pct":-3,"bought_after_drop_pct":0,"bought_after_rally_pct":-6.7},{"index_return_pct":-9,"bought_at_reset_pct":0,"bought_after_drop_pct":3.1,"bought_after_rally_pct":-3.8},{"index_return_pct":-6,"bought_at_reset_pct":0,"bought_after_drop_pct":3.1,"bought_after_rally_pct":-3.8},{"index_return_pct":-3,"bought_at_reset_pct":0,"bought_after_drop_pct":3.1,"bought_after_rally_pct":-3.8},{"index_return_pct":0,"bought_at_reset_pct":0,"bought_after_drop_pct":3.1,"bought_after_rally_pct":-3.8},{"index_return_pct":3,"bought_at_reset_pct":3,"bought_after_drop_pct":6.2,"bought_after_rally_pct":-1},{"index_return_pct":6,"bought_at_reset_pct":6,"bought_after_drop_pct":9.3,"bought_after_rally_pct":1.9},{"index_return_pct":9,"bought_at_reset_pct":9,"bought_after_drop_pct":12.4,"bought_after_rally_pct":4.8},{"index_return_pct":12,"bought_at_reset_pct":12,"bought_after_drop_pct":15.5,"bought_after_rally_pct":7.7},{"index_return_pct":15,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6},{"index_return_pct":18,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6},{"index_return_pct":21,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6},{"index_return_pct":24,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6},{"index_return_pct":27,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6},{"index_return_pct":30,"bought_at_reset_pct":15,"bought_after_drop_pct":18.6,"bought_after_rally_pct":10.6}],"shape":"ranking","sql":"SELECT\n    index_return_pct,\n    round(fund_nav - 100, 1)              AS bought_at_reset_pct,\n    round((fund_nav / 97.0 - 1) * 100, 1) AS bought_after_drop_pct,\n    round((fund_nav / 104.0 - 1) * 100, 1) AS bought_after_rally_pct\nFROM\n(\n    SELECT\n        index_return_pct,\n        100 + multiIf(index_return_pct >  15.0, 15.0,\n                      index_return_pct >=  0.0, index_return_pct,\n                      index_return_pct >= -9.0, 0.0,\n                      index_return_pct + 9.0) AS fund_nav\n    FROM\n    (\n        SELECT toFloat64(arrayJoin(range(21))) * 3 - 30 AS index_return_pct\n    )\n)\nORDER BY index_return_pct","computed_at":"2026-08-12T15:42:18.134254+00:00","elapsed":0.01000243}