How Buffer ETFs Work: Caps and Resets
Buffer ETFs absorb the first slice of index losses and cap your upside to pay for it. Here is the payoff math, and why mid period buyers get a different deal.
A buffer ETF absorbs the first slice of an index decline over a fixed outcome period, usually twelve months, and in exchange it hands back nothing above a fixed cap on the upside. The buffer is bought, and the cap is what pays for it. Both numbers are struck on one date, the reset, which is why the fund someone buys in month seven behaves differently from the fund on the fact sheet.
What is a buffer ETF?
A buffer ETF, also sold as a defined outcome ETF, holds a package of options on a stock index rather than the index shares themselves. The package is assembled on the reset date and expires on the last day of the outcome period. Everything the fund advertises is measured between those two dates and nowhere in between.
There are four legs, and they read as one trade:
- A long call struck near zero on the index. It moves point for point with the index and stands in for owning it.
- A long put struck at the index level on the reset date. It starts gaining value the moment the index drops below that level.
- A short put struck 9% below the reset level, in a fund advertising a 9% buffer. It cancels the long put once the decline runs past that mark.
- A short call struck above the reset level. Its premium covers the cost of the two puts, and its strike is exactly where the cap sits.
The two puts together form a put spread, which pays the first 9 points of a decline and nothing after it. The cap is not picked by the manager. It is whatever strike makes the sold call cover that put spread on the reset date. Caps move from period to period with option prices, and option prices move with volatility and interest rates, so two funds carrying the same 9% buffer can print very different caps in different years.
If the shape feels familiar, it should. A buffer ETF is a collar built with a put spread in place of the single put, wrapped in a fund. It is worth reading next to covered call ETFs, which sell the same upside without buying any protection with the proceeds.
How does the buffer and cap payoff work?
The panel below is arithmetic rather than market history: a 15% cap and a 9% buffer applied to index outcomes from -30% to +30%, before fees. The first column is the index return over the whole outcome period, measured from the reset level. Three lines sit on it, one per entry point. Start with the reset line.
The exact SQL behind every number
SELECT
index_return_pct,
round(fund_nav - 100, 1) AS bought_at_reset_pct,
round((fund_nav / 97.0 - 1) * 100, 1) AS bought_after_drop_pct,
round((fund_nav / 104.0 - 1) * 100, 1) AS bought_after_rally_pct
FROM
(
SELECT
index_return_pct,
100 + multiIf(index_return_pct > 15.0, 15.0,
index_return_pct >= 0.0, index_return_pct,
index_return_pct >= -9.0, 0.0,
index_return_pct + 9.0) AS fund_nav
FROM
(
SELECT toFloat64(arrayJoin(range(21))) * 3 - 30 AS index_return_pct
)
)
ORDER BY index_return_pctThat line has four zones. Above the cap it flattens, at 15% for an index outcome of 30%. Between zero and the cap it tracks the index one for one. Between zero and the buffer floor it runs flat, the put spread paying out what the index gives up. Below the floor the extra loss passes through untouched, and a -30% index outcome leaves the reset buyer at -21%.
What happens if you buy a buffer ETF mid-period?
The strikes are fixed against the index level on the reset date, and they do not move when the index does. Anyone stepping in three months later inherits strikes set for somebody else. The panel below holds the fund fixed and varies the entry point. Remaining buffer is how far the index can fall from the entry level before losses reach the holder. Remaining cap is how much further the index can rise before the payoff stops growing.
The exact SQL behind every number
SELECT
entry_index_move_pct,
round(greatest((index_level - 91.0) / index_level, 0.0) * 100, 1) AS remaining_buffer_pct,
round(greatest((115.0 - index_level) / index_level, 0.0) * 100, 1) AS remaining_cap_pct
FROM
(
SELECT
entry_index_move_pct,
100.0 + entry_index_move_pct AS index_level
FROM
(
SELECT toFloat64(arrayJoin(range(11))) * 3 - 12 AS entry_index_move_pct
)
)
ORDER BY entry_index_move_pctOnly at the reset itself do the two read 9% and 15%, the pair printed on the sheet. With the index 6% under the reset level, the cushion left is 3.2% of further decline and the room to the cap has widened to 22.3%. With the index 6% above it the picture inverts: 14.2% of cushion sitting well below the market, and only 8.5% of upside left to collect for a full period of holding.
Strikes are half the story. The other half is the entry price. The two remaining lines in the first panel take the same terminal outcomes and run them through two illustrative entry marks: a fund at 97 after the index fell 6%, and a fund at 104 after it rose 6%. At the top of that grid the reset buyer collects 15%, the buyer at 97 collects 18.6%, and the buyer at 104 collects 10.6%. If the index finishes exactly where it reset, at 0%, the reset buyer is at 0% and the buyer at 104 is at -3.8%.
Notice which way each entry cuts. Buying at a discount lifts every outcome along that line while leaving only 3.2% of cushion underneath it. Buying after a rally does the reverse. Neither one is the fund described on the sheet. Real entry marks come from the option package valued daily, and issuers publish the current remaining buffer and remaining cap. On top of that sits whatever premium or discount to NAV the share price carries at the moment of the trade.
What would a 15% cap and 9% buffer have delivered?
A rule is easier to judge against real outcomes. The panel below takes SPY, the oldest S&P 500 tracker, measures its price return from the first close of each calendar year to the last, and applies the same 15/9 rule to each of those outcome periods, before fees. Dividends sit outside the calculation, which matches the structure: these funds hold options on a price index, and index dividends never reach the shareholder.
The exact SQL behind every number
SELECT
outcome_year,
index_return_pct,
multiIf(index_return_pct > 15.0, 15.0,
index_return_pct >= 0.0, index_return_pct,
index_return_pct >= -9.0, 0.0,
index_return_pct + 9.0) AS fund_return_pct
FROM
(
SELECT
toString(toYear(date)) AS outcome_year,
round((toFloat64(argMax(close, date)) / toFloat64(argMin(close, date)) - 1) * 100, 1) AS index_return_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2014-01-01'
AND date < '2026-01-01'
GROUP BY toYear(date)
)
ORDER BY outcome_yearIn 2019 the index returned 28.7% and the fund line reads 15%. Everything above the cap belonged to whoever bought that call. In 2018 the index finished at -7%, inside the buffer, and the fund line reads 0%. 2022 shows both what the buffer covers and where it stops: the index at -19.9% against the fund at -10.899999999999999%, nine points absorbed and the remainder passed straight through.
How do fees and repeated outcome periods add up?
One outcome period is a straight rule. A decade of them is a different question. Every reset restarts the cap, and the fee comes off in every period whatever the index does. The panel below compounds the same yearly outcomes two ways: the index on its own, and the buffered payoff after an annual fee of 0.79%.
The exact SQL behind every number
WITH yearly AS
(
SELECT
toString(toYear(date)) AS outcome_year,
round((toFloat64(argMax(close, date)) / toFloat64(argMin(close, date)) - 1) * 100, 1) AS index_return_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2014-01-01'
AND date < '2026-01-01'
GROUP BY toYear(date)
),
outcomes AS
(
SELECT
outcome_year,
1.0 + (index_return_pct / 100) AS index_growth,
(1.0 + (multiIf(index_return_pct > 15.0, 15.0,
index_return_pct >= 0.0, index_return_pct,
index_return_pct >= -9.0, 0.0,
index_return_pct + 9.0) / 100)) * (1.0 - 0.0079) AS fund_growth
FROM yearly
)
SELECT
outcome_year,
round((exp(sum(log(index_growth)) OVER (ORDER BY outcome_year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) - 1) * 100, 1) AS index_cum_pct,
round((exp(sum(log(fund_growth)) OVER (ORDER BY outcome_year ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) - 1) * 100, 1) AS fund_net_cum_pct
FROM outcomes
ORDER BY outcome_yearOver 12 outcome periods the index line reaches 276.8% while the buffered line, net of the fee, reaches 169.3%. The gap opens in the capped years and never closes. A year that gives up a chunk of index return to the cap also lowers the base that every later year compounds from, and the fee comes off flat years and buffered years alike. This is the path dependence readers already meet in leveraged ETFs, running on a yearly clock instead of a daily one.
What about distributions and return of capital?
These funds hold options and collateral rather than dividend paying shares, so a regular income stream is not part of the design, and many pay nothing at all across an outcome period. When a payment does arrive, its character matters. Part of it can be classified as return of capital, which lowers the holder's cost basis instead of counting as income for the year. A distribution weighted toward return of capital is a portion of the original investment coming back, and NAV drops by the payment on the pay date exactly as it would for any other distribution.
FAQ
What is a buffer ETF?
A buffer ETF, also called a defined outcome ETF, holds index options that absorb the first several percent of an index decline over a set outcome period, usually a year, in exchange for a cap on the gain. Both figures are struck on the reset date and hold until the next reset.
Do buffer ETFs protect against a crash?
They cover the first slice of a decline, and only as measured at the end of the outcome period. An index down 30% against a 9% buffer leaves the fund down about 21% before fees. Part way through a period the fund can trade below its buffered value, since the options still carry time value until expiry.
What happens if I buy a buffer ETF mid-period?
The strikes were set at the reset, so the remaining buffer and remaining cap are rarely the advertised pair. After a decline the cushion is smaller and the distance to the cap is larger. After a rally the reverse holds. Issuers publish both figures daily.
Is a buffer ETF cap the same every year?
No. The cap is whatever strike lets the sold call pay for the put spread on the reset date, which moves with option prices and interest rates. Caps struck in calm markets have generally been lower than caps struck after volatile stretches.
Do buffer ETFs pay dividends?
Generally little or nothing. They hold options on a price index alongside collateral, so index dividends do not pass through to shareholders, and any distribution that is paid can include return of capital, which lowers the cost basis.
The verdict fits in one line: the buffer is bought, not granted, and the cap is the price. Whether that trade suits a given portfolio is a separate question from whether the arithmetic is understood, and the arithmetic is fixed on the reset date. Every panel above ships with the SQL underneath it. Change the cap, change the buffer, and run the same grid against any stretch of index history on the Strasmore terminal.